⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdkwindow-fb.c

📁 linux下电话本所依赖的一些图形库
💻 C
📖 第 1 页 / 共 4 页
字号:
  gint x;  guchar bit_mask;  guchar *src;  g_return_val_if_fail(bitmap != NULL, NULL);  g_return_val_if_fail(GDK_IS_PIXMAP(bitmap), NULL);  private = GDK_DRAWABLE_IMPL_FBDATA (bitmap);  g_return_val_if_fail(private->depth == 1, NULL);  region = gdk_region_new();  rect.height = 1;  in_rect = FALSE; /* Haven't started a rectangle yet */  for (rect.y = 0; rect.y < private->height; (rect.y)++)    {      src = private->mem + rect.y * private->rowstride;      bit_mask = 1;      for (x = 0; x < private->width; x++)	{	  if ((*src & bit_mask) && !in_rect)	    {	      /* Start of rect */	      in_rect = TRUE;	      rect.x = x;	    }	  else if (!(*src & bit_mask) && in_rect)	    {	      /* End of rect */	      in_rect = FALSE;	      rect.width = x - rect.x;	      gdk_region_union_with_rect (region, &rect);	    }	  	  if (bit_mask == 1<<7)	    {	      bit_mask = 1;	      src++;	    }	  else	    bit_mask <<= 1;	}            if (in_rect)	{	  /* Past end of line */	  in_rect = FALSE;	  rect.width = x - rect.x;	  gdk_region_union_with_rect (region, &rect);	}    }  return region;}GdkRegion *gdk_fb_window_peek_shape (GdkDrawable *window, gint *dx, gint *dy){  gint x, y;    if (!GDK_IS_WINDOW (window))    return NULL;  if (GDK_WINDOW_IMPL_FBDATA (window)->shape == NULL)    return NULL;  x = y = 0;    while (GDK_WINDOW_IMPL_FBDATA (window)->shape == GDK_FB_USE_CHILD_SHAPE)    {      GList *children;      children = ((GdkWindowObject*)window)->children;      if (children)	{	  window = (GdkDrawable *)children->data;	  x += GDK_WINDOW_P(window)->x;	  y += GDK_WINDOW_P(window)->y;	}      else	return NULL;    }  *dx = x;  *dy = y;    return GDK_WINDOW_IMPL_FBDATA (window)->shape;}GdkRegion *gdk_fb_window_get_abs_shape (GdkDrawable *window){  GdkRegion *shape;    if (!GDK_IS_WINDOW (window))    return NULL;  if (GDK_WINDOW_IMPL_FBDATA (window)->shape == NULL)    return NULL;    if (GDK_WINDOW_IMPL_FBDATA (window)->shape == GDK_FB_USE_CHILD_SHAPE)    {      GList *children;      children = ((GdkWindowObject*)window)->children;      if (children)	return gdk_fb_window_get_abs_shape ((GdkDrawable *)children->data);      else	return NULL;    }  shape = gdk_region_copy (GDK_WINDOW_IMPL_FBDATA (window)->shape);  gdk_region_offset (shape,		     GDK_DRAWABLE_IMPL_FBDATA (window)->abs_x,		     GDK_DRAWABLE_IMPL_FBDATA (window)->abs_y);  return shape;}static void_gdk_window_shape_combine_region (GdkWindow *window,				  GdkRegion *shape,				  gint       x,				  gint       y){  GdkWindowFBData *private;  GdkDrawableFBData *drawable_private;  GdkRegion *old_region = NULL;  GdkRegion *new_region = NULL;  GdkRectangle rect;    g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  private = GDK_WINDOW_IMPL_FBDATA (window);  drawable_private = GDK_DRAWABLE_IMPL_FBDATA (window);  if (GDK_WINDOW_IS_MAPPED (window))    {      old_region = gdk_fb_window_get_abs_shape (window);      if (old_region == NULL)	{	  rect.x = drawable_private->llim_x;	  rect.y = drawable_private->llim_y;	  rect.width = drawable_private->lim_x - rect.x;	  rect.height = drawable_private->lim_y - rect.y;	  old_region = gdk_region_rectangle (&rect);	}    }  if (private->shape && private->shape != GDK_FB_USE_CHILD_SHAPE)    gdk_region_destroy (private->shape);  if (shape)    {      private->shape = shape;      if (shape != GDK_FB_USE_CHILD_SHAPE)	gdk_region_offset (private->shape, x, y);    }  else    private->shape = NULL;  if (GDK_WINDOW_IS_MAPPED (window))    {      new_region = gdk_fb_window_get_abs_shape (window);      if (new_region == NULL)	{	  rect.x = drawable_private->llim_x;	  rect.y = drawable_private->llim_y;	  rect.width = drawable_private->lim_x - rect.x;	  rect.height = drawable_private->lim_y - rect.y;	  new_region = gdk_region_rectangle (&rect);	}      gdk_region_subtract (old_region, new_region);      gdk_region_destroy (new_region);      gdk_window_invalidate_region (_gdk_parent_root, old_region, TRUE);      gdk_region_destroy (old_region);    }}voidgdk_window_shape_combine_mask (GdkWindow *window,			       GdkBitmap *mask,			       gint x, gint y){  _gdk_window_shape_combine_region (window,				    (mask == GDK_FB_USE_CHILD_SHAPE)?				    GDK_FB_USE_CHILD_SHAPE :				    mask ?				    gdk_fb_region_create_from_bitmap (mask) :				    NULL,				    x, y);}voidgdk_window_shape_combine_region (GdkWindow *window,                                 GdkRegion *shape,                                 gint       x,                                 gint       y){  _gdk_window_shape_combine_region (window,				    gdk_region_copy (shape),				    x, y);}voidgdk_window_set_override_redirect (GdkWindow *window,				  gboolean override_redirect){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  /* N/A */}voidgdk_window_set_accept_focus (GdkWindow *window,			     gboolean accept_focus){  GdkWindowObject *private;  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  private = (GdkWindowObject *)window;      accept_focus = accept_focus != FALSE;  if (private->accept_focus != accept_focus)    private->accept_focus = accept_focus;}voidgdk_window_set_focus_on_map (GdkWindow *window,			     gboolean focus_on_map){  GdkWindowObject *private;  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  private = (GdkWindowObject *)window;      focus_on_map = focus_on_map != FALSE;  if (private->focus_on_map != focus_on_map)    private->focus_on_map = focus_on_map;}void          gdk_window_set_icon (GdkWindow *window, 		     GdkWindow *icon_window,		     GdkPixmap *pixmap,		     GdkBitmap *mask){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  /* N/A */}void          gdk_window_set_icon_name (GdkWindow *window, 			  const gchar *    name){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  /* N/A */}void          gdk_window_set_group (GdkWindow *window, 		      GdkWindow *leader){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  g_return_if_fail (leader != NULL);  g_return_if_fail (GDK_IS_WINDOW (leader));  /* N/A */}voidgdk_fb_window_set_child_handler (GdkWindow             *window,				 GdkWindowChildChanged  changed,				 GdkWindowChildGetPos   get_pos,				 gpointer               user_data){  GdkWindowChildHandlerData *data;      g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  data = g_new (GdkWindowChildHandlerData, 1);  data->changed = changed;  data->get_pos = get_pos;  data->user_data = user_data;  g_object_set_data_full (G_OBJECT (window), "gdk-window-child-handler",			  data, (GDestroyNotify) g_free);}voidgdk_window_set_decorations (GdkWindow      *window,			    GdkWMDecoration decorations){  GdkWMDecoration *dec;      g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  dec = g_new (GdkWMDecoration, 1);  *dec = decorations;  g_object_set_data_full (G_OBJECT (window), "gdk-window-decorations",			  dec, (GDestroyNotify) g_free);}gbooleangdk_window_get_decorations(GdkWindow *window,			   GdkWMDecoration *decorations){  GdkWMDecoration *dec;      g_return_val_if_fail (window != NULL, FALSE);  g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);  dec = g_object_get_data (G_OBJECT (window), "gdk-window-decorations");  if (dec)    {      *decorations = *dec;      return TRUE;    }  return FALSE;}voidgdk_window_set_functions (GdkWindow    *window,			  GdkWMFunction functions){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  /* N/A */}voidgdk_window_set_child_shapes (GdkWindow *window){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  }voidgdk_window_merge_child_shapes (GdkWindow *window){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  }/************************************************************* * gdk_window_set_static_gravities: *     Set the bit gravity of the given window to static, *     and flag it so all children get static subwindow *     gravity. *   arguments: *     window: window for which to set static gravity *     use_static: Whether to turn static gravity on or off. *   results: *     Does the XServer support static gravity? *************************************************************/gboolean gdk_window_set_static_gravities (GdkWindow *window,				 gboolean   use_static){  g_return_val_if_fail (window != NULL, FALSE);  g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);    return TRUE;}void_gdk_windowing_window_get_offsets      (GdkWindow  *window,					gint       *x_offset,					gint       *y_offset){  *x_offset = *y_offset = 0;}gboolean_gdk_windowing_window_queue_antiexpose (GdkWindow  *window,					GdkRegion  *area){  return FALSE;}voidgdk_window_stick (GdkWindow *window){  g_return_if_fail (GDK_IS_WINDOW (window));}voidgdk_window_unstick (GdkWindow *window){  g_return_if_fail (GDK_IS_WINDOW (window));}voidgdk_window_maximize (GdkWindow *window){  g_return_if_fail (GDK_IS_WINDOW (window));  gdk_synthesize_window_state (window,			       0,			       GDK_WINDOW_STATE_MAXIMIZED);}voidgdk_window_unmaximize (GdkWindow *window){  g_return_if_fail (GDK_IS_WINDOW (window));  gdk_synthesize_window_state (window,			       GDK_WINDOW_STATE_MAXIMIZED,			       0);}voidgdk_window_iconify (GdkWindow *window){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  g_warning ("gdk_window_iconify() not implemented.\n");}voidgdk_window_deiconify (GdkWindow *window){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  /*  g_warning ("gdk_window_deiconify() not implemented.\n");*/}voidgdk_window_fullscreen (GdkWindow *window){  g_return_if_fail (GDK_IS_WINDOW (window));  g_warning ("gdk_window_fullscreen() not implemented.\n");}voidgdk_window_unfullscreen (GdkWindow *window){  g_return_if_fail (GDK_IS_WINDOW (window));  /*  g_warning ("gdk_window_unfullscreen() not implemented.\n");*/}voidgdk_window_set_keep_above (GdkWindow *window, gboolean setting){  g_return_if_fail (GDK_IS_WINDOW (window));  g_warning ("gdk_window_set_keep_above() not implemented.\n");}voidgdk_window_set_keep_below (GdkWindow *window, gboolean setting){  g_return_if_fail (GDK_IS_WINDOW (window));  g_warning ("gdk_window_set_keep_below() not implemented.\n");}voidgdk_window_focus (GdkWindow *window,                  guint32    timestamp){  g_return_if_fail (GDK_IS_WINDOW (window));  g_warning ("gdk_window_focus() not implemented.\n");}voidgdk_window_set_type_hint (GdkWindow        *window,			  GdkWindowTypeHint hint){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));}voidgdk_window_set_modal_hint (GdkWindow *window,			   gboolean   modal){  g_return_if_fail (GDK_IS_WINDOW (window));}voidgdk_window_set_skip_taskbar_hint (GdkWindow *window,				  gboolean   skips_taskbar){  g_return_if_fail (GDK_IS_WINDOW (window));}voidgdk_window_set_skip_pager_hint (GdkWindow *window,				gboolean   skips_pager){  g_return_if_fail (GDK_IS_WINDOW (window));}voidgdk_window_begin_resize_drag (GdkWindow     *window,                              GdkWindowEdge  edge,                              gint           button,                              gint           root_x,                              gint           root_y,                              guint32        timestamp){  g_return_if_fail (GDK_IS_WINDOW (window));  }voidgdk_window_begin_move_drag (GdkWindow *window,                            gint       button,                            gint       root_x,                            gint       root_y,                            guint32    timestamp){  g_return_if_fail (GDK_IS_WINDOW (window));}voidgdk_window_set_icon_list (GdkWindow *window,			  GList     *pixbufs){  /* We don't support icons right now */}/* No need to care about frames. Decoration is done by GtkWindow */voidgdk_window_get_frame_extents (GdkWindow    *window,                              GdkRectangle *rect){  g_return_if_fail (window != NULL);    rect->x = GDK_DRAWABLE_IMPL_FBDATA (window)->abs_x;  rect->y = GDK_DRAWABLE_IMPL_FBDATA (window)->abs_y;  rect->width = GDK_DRAWABLE_IMPL_FBDATA (window)->width;  rect->height = GDK_DRAWABLE_IMPL_FBDATA (window)->height;}GdkWindow*gdk_window_foreign_new_for_display (GdkDisplay      *display,				    GdkNativeWindow  anid){  return (GdkWindow*) gdk_drawable_ref ((GdkDrawable *)anid);}GdkWindow*gdk_window_lookup (GdkNativeWindow anid){  return (GdkWindow*) (anid);}GdkWindow *gdk_window_lookup_for_display (GdkDisplay *display, GdkNativeWindow anid){  g_return_val_if_fail (display == gdk_display_get_default(), NULL);  return (GdkWindow*) (anid);}voidgdk_window_enable_synchronized_configure (GdkWindow *window){}voidgdk_window_configure_finished (GdkWindow *window){}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -