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

📄 gdkwindow-fb.c

📁 linux下电话本所依赖的一些图形库
💻 C
📖 第 1 页 / 共 4 页
字号:
{  gdk_fb_window_move_resize (window, x, y, width, height, TRUE);}voidgdk_window_reparent (GdkWindow *window,		     GdkWindow *new_parent,		     gint       x,		     gint       y){  GdkWindowObject *window_private;  GdkWindowObject *parent_private;  GdkWindowObject *old_parent_private;    g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  g_return_if_fail (new_parent != NULL);  g_return_if_fail (GDK_IS_WINDOW (new_parent));    if (!new_parent)    new_parent = _gdk_parent_root;  window_private = (GdkWindowObject*) window;  old_parent_private = (GdkWindowObject*)window_private->parent;  parent_private = (GdkWindowObject*) new_parent;    g_assert(GDK_DRAWABLE_IMPL_FBDATA (window_private)->colormap);  window_private->parent = (GdkWindowObject *)new_parent;    if (old_parent_private)    old_parent_private->children = g_list_remove (old_parent_private->children, window);  parent_private->children = g_list_prepend (parent_private->children, window);  if (GDK_WINDOW_IS_MAPPED (window_private))    {      GdkRectangle r;      GdkRegion *region;      r.x = GDK_DRAWABLE_IMPL_FBDATA (window)->llim_x;      r.y = GDK_DRAWABLE_IMPL_FBDATA (window)->llim_y;      r.width = GDK_DRAWABLE_IMPL_FBDATA (window)->lim_x - r.x;      r.height = GDK_DRAWABLE_IMPL_FBDATA (window)->lim_y - r.y;      region = gdk_region_rectangle (&r);      recompute_drawable ((GdkDrawable *)window);      r.x = GDK_DRAWABLE_IMPL_FBDATA (window)->llim_x;      r.y = GDK_DRAWABLE_IMPL_FBDATA (window)->llim_y;      r.width = GDK_DRAWABLE_IMPL_FBDATA (window)->lim_x - r.x;      r.height = GDK_DRAWABLE_IMPL_FBDATA (window)->lim_y - r.y;      gdk_region_union_with_rect (region, &r);      gdk_window_invalidate_region (_gdk_parent_root, region, TRUE);      gdk_region_destroy (region);    }}void_gdk_windowing_window_clear_area (GdkWindow *window,				  gint       x,				  gint       y,				  gint       width,				  gint       height){  GdkPixmap *bgpm;  GdkWindow *relto;  if (GDK_WINDOW_P (window)->input_only)    return;  bgpm = GDK_WINDOW_P (window)->bg_pixmap;  if (width == 0)    width = GDK_DRAWABLE_IMPL_FBDATA (window)->width - x;    if (height == 0)    height = GDK_DRAWABLE_IMPL_FBDATA (window)->height - y;    relto = window;  while ((bgpm == GDK_PARENT_RELATIVE_BG) && relto)    {      relto = (GdkWindow *)GDK_WINDOW_P(relto)->parent;      bgpm = GDK_WINDOW_P (relto)->bg_pixmap;    }    if (bgpm && bgpm != GDK_NO_BG)    {      int curx, cury;      int xstep, ystep;      int xtrans, ytrans;      GdkFBDrawingContext fbdc;      gdk_fb_drawing_context_init (&fbdc, GDK_DRAWABLE_IMPL (window), NULL, FALSE, TRUE);      xtrans = GDK_DRAWABLE_IMPL_FBDATA (window)->abs_x - GDK_DRAWABLE_IMPL_FBDATA (relto)->abs_x;      ytrans = GDK_DRAWABLE_IMPL_FBDATA (window)->abs_y - GDK_DRAWABLE_IMPL_FBDATA (relto)->abs_y;      for (cury = y; cury < (y + height); cury += ystep)	{	  int drawh = (cury + ytrans) % GDK_DRAWABLE_IMPL_FBDATA (bgpm)->height;	  ystep = GDK_DRAWABLE_IMPL_FBDATA (bgpm)->height - drawh;	  ystep = MIN (ystep, y + height - cury);	  for (curx = x; curx < (x + width); curx += xstep)	    {	      int draww = (curx + xtrans) % GDK_DRAWABLE_IMPL_FBDATA (bgpm)->width;	      xstep = GDK_DRAWABLE_IMPL_FBDATA (bgpm)->width - draww;	      xstep = MIN (xstep, x + width - curx);	      gdk_fb_draw_drawable_3 (GDK_DRAWABLE_IMPL (window),				      _gdk_fb_screen_gc,				      GDK_DRAWABLE_IMPL (bgpm),				      &fbdc,				      draww, drawh,				      curx, cury,				      xstep, ystep);	    }	}      gdk_fb_drawing_context_finalize (&fbdc);    }  else if (!bgpm)    {      if (relto == window)	gdk_draw_rectangle (window, _gdk_fb_screen_gc, TRUE, x, y, width, height);      else	{	  /* GDK_PARENT_RELATIVE_BG, but no pixmap, get the color from the parent window. */	  GdkGC *gc;	  GdkGCValues values;	  values.foreground = GDK_WINDOW_P (relto)->bg_color;	  gc = gdk_gc_new_with_values (window, &values, GDK_GC_FOREGROUND);	  gdk_draw_rectangle (window, gc, TRUE, x, y, width, height);	  gdk_gc_unref (gc);	}    }}/* What's the diff? */void_gdk_windowing_window_clear_area_e (GdkWindow *window,				    gint       x,				    gint       y,				    gint       width,				    gint       height){  _gdk_windowing_window_clear_area (window, x, y, width, height);}static voidgdk_fb_window_raise (GdkWindow *window){  GdkWindowObject *parent;  parent = GDK_WINDOW_OBJECT (window)->parent;  parent->children = g_list_remove (parent->children, window);  parent->children = g_list_prepend (parent->children, window);}static voidgdk_fb_window_lower (GdkWindow *window){  GdkWindowObject *parent;  parent = GDK_WINDOW_OBJECT (window)->parent;  parent->children = g_list_remove (parent->children, window);  parent->children = g_list_append (parent->children, window);}voidgdk_window_raise (GdkWindow *window){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  gdk_fb_window_raise (window);    if (GDK_WINDOW_OBJECT (window)->parent)    gdk_window_invalidate_rect (window, NULL, TRUE);}voidgdk_window_lower (GdkWindow *window){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));    gdk_fb_window_lower (window);    if (GDK_WINDOW_OBJECT (window)->parent)    gdk_window_invalidate_rect (window, NULL, TRUE);}voidgdk_window_set_hints (GdkWindow *window,		      gint       x,		      gint       y,		      gint       min_width,		      gint       min_height,		      gint       max_width,		      gint       max_height,		      gint       flags){}void gdk_window_set_geometry_hints (GdkWindow      *window,			       GdkGeometry    *geometry,			       GdkWindowHints  geom_mask){}voidgdk_window_set_title (GdkWindow   *window,		      const gchar *title){}void          gdk_window_set_role (GdkWindow   *window,		     const gchar *role){}void          gdk_window_set_transient_for (GdkWindow *window, 			      GdkWindow *parent){  GdkWindowObject *private = GDK_WINDOW_OBJECT (window);  GdkWindowObject *root = GDK_WINDOW_OBJECT (_gdk_parent_root);  int i;    g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));    g_return_if_fail (parent != NULL);  g_return_if_fail (GDK_IS_WINDOW (parent));    g_return_if_fail ((GdkWindow *)private->parent == _gdk_parent_root);  g_return_if_fail ((GdkWindow *)GDK_WINDOW_OBJECT (parent)->parent == _gdk_parent_root);    root->children = g_list_remove (root->children, window);  i = g_list_index (root->children, parent);  if (i<0)    root->children = g_list_prepend (root->children, window);  else     root->children = g_list_insert (root->children, window, i);}voidgdk_window_set_background (GdkWindow      *window,			   const GdkColor *color){  GdkWindowObject *private = (GdkWindowObject *)window;    g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));    private->bg_color = *color;  if (private->bg_pixmap &&      private->bg_pixmap != GDK_PARENT_RELATIVE_BG &&      private->bg_pixmap != GDK_NO_BG)    {      gdk_pixmap_unref (private->bg_pixmap);      private->bg_pixmap = NULL;    }}voidgdk_window_set_back_pixmap (GdkWindow *window,			    GdkPixmap *pixmap,			    gboolean   parent_relative){  GdkWindowObject *private = (GdkWindowObject *)window;  GdkPixmap *old_pixmap;  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  g_return_if_fail (pixmap == NULL || !parent_relative);  g_return_if_fail (pixmap == NULL || gdk_drawable_get_depth (window) == gdk_drawable_get_depth (pixmap));  old_pixmap = private->bg_pixmap;  if (parent_relative)    {      private->bg_pixmap = GDK_PARENT_RELATIVE_BG;    }  else    {      if (pixmap)	{	  gdk_pixmap_ref (pixmap);	  private->bg_pixmap = pixmap;	}      else	{	  private->bg_pixmap = GDK_NO_BG;	}    }  if (old_pixmap &&      old_pixmap != GDK_PARENT_RELATIVE_BG &&      old_pixmap != GDK_NO_BG)    gdk_pixmap_unref (old_pixmap);}voidgdk_window_set_cursor (GdkWindow *window,		       GdkCursor *cursor){  GdkCursor *old_cursor = GDK_WINDOW_IMPL_FBDATA(window)->cursor;  GdkRectangle window_reg;  GDK_WINDOW_IMPL_FBDATA (window)->cursor = cursor ? gdk_cursor_ref (cursor) : NULL;  if (old_cursor)    gdk_cursor_unref (old_cursor);  window_reg.x = GDK_DRAWABLE_IMPL_FBDATA (window)->llim_x;  window_reg.y = GDK_DRAWABLE_IMPL_FBDATA (window)->llim_y;  window_reg.width = GDK_DRAWABLE_IMPL_FBDATA (window)->lim_x - window_reg.x;  window_reg.height = GDK_DRAWABLE_IMPL_FBDATA (window)->lim_y - window_reg.y;  if (gdk_fb_cursor_need_hide (&window_reg))    gdk_fb_cursor_reset ();}voidgdk_window_get_geometry (GdkWindow *window,			 gint      *x,			 gint      *y,			 gint      *width,			 gint      *height,			 gint      *depth){  GdkWindowObject *private = (GdkWindowObject *)window;    g_return_if_fail (window == NULL || GDK_IS_WINDOW (window));    if (!window)    window = _gdk_parent_root;    if (!private->destroyed)    {      if (x)	*x = private->x;      if (y)	*y = private->y;      if (width)	*width = GDK_DRAWABLE_IMPL_FBDATA (window)->width;      if (height)	*height = GDK_DRAWABLE_IMPL_FBDATA (window)->height;      if (depth)	*depth = gdk_display->modeinfo.bits_per_pixel;    }}gbooleangdk_window_get_origin (GdkWindow *window,		       gint      *x,		       gint      *y){  g_return_val_if_fail (window != NULL, FALSE);    if (x)    *x = GDK_DRAWABLE_IMPL_FBDATA (window)->abs_x;  if (y)    *y = GDK_DRAWABLE_IMPL_FBDATA (window)->abs_y;  return TRUE;}gbooleangdk_window_get_deskrelative_origin (GdkWindow *window,				    gint      *x,				    gint      *y){  gint tx = 0;  gint ty = 0;  gboolean return_val;  g_return_val_if_fail (window != NULL, 0);    if (!GDK_WINDOW_DESTROYED (window))    {      tx = GDK_DRAWABLE_IMPL_FBDATA (window)->abs_x;      ty = GDK_DRAWABLE_IMPL_FBDATA (window)->abs_y;      return_val = TRUE;    }  else    return_val = FALSE;    if (x)    *x = tx;  if (y)    *y = ty;  return return_val;}voidgdk_window_get_root_origin (GdkWindow *window,			    gint      *x,			    gint      *y){  gdk_window_get_deskrelative_origin (window, x, y);}static GdkRegion*gdk_window_fb_get_visible_region (GdkDrawable *drawable){  GdkDrawableFBData *priv = GDK_DRAWABLE_FBDATA (drawable);  GdkRectangle result_rect;  GdkRectangle screen_rect;  result_rect.x = 0;  result_rect.y = 0;  result_rect.width = priv->width;  result_rect.height = priv->height;  screen_rect.x = -priv->abs_x;  screen_rect.y = -priv->abs_y;  screen_rect.width = gdk_display->fb_width;  screen_rect.height = gdk_display->fb_height;    gdk_rectangle_intersect (&result_rect, &screen_rect, &result_rect);    return gdk_region_rectangle (&result_rect);}GdkWindow *_gdk_windowing_window_get_pointer (GdkDisplay      *display,				   GdkWindow       *window,				   gint            *x,				   gint            *y,				   GdkModifierType *mask){  GdkWindow *return_val;  int winx = 0;  int winy = 0;  int x_int, y_int;  gint shape_dx, shape_dy;  GdkRegion *shape;  g_return_val_if_fail (window == NULL || GDK_IS_WINDOW (window), NULL);    gdk_window_get_root_origin (window, &x_int, &y_int);  gdk_fb_mouse_get_info (&winx, &winy, mask);  winx -= x_int;  winy -= y_int;  *x = winx;  *y = winy;    return_val = NULL;    shape = gdk_fb_window_peek_shape (window, &shape_dx, &shape_dy);  if ((winx >= 0) && (winx < GDK_DRAWABLE_IMPL_FBDATA (window)->width) &&      (winy >= 0) && (winy < GDK_DRAWABLE_IMPL_FBDATA (window)->height) &&      (!shape || gdk_region_point_in (shape, winx - shape_dx, winy - shape_dy)))    {      GdkWindowObject *private;      GdkWindowObject *sub;      int subx = winx, suby = winy;      for (private = sub = (GdkWindowObject *)window; sub; private = sub)	{	  GList *ltmp;	  for (ltmp = private->children; ltmp; ltmp = ltmp->next)	    {	      sub = ltmp->data;	      if (!GDK_WINDOW_IS_MAPPED (sub))		continue;	      shape = gdk_fb_window_peek_shape (GDK_WINDOW (sub),						&shape_dx, &shape_dy);	      if (subx >= sub->x &&		  (subx < (GDK_DRAWABLE_IMPL_FBDATA (sub)->width + sub->x)) &&		  (suby >= sub->y) &&		  (suby < (GDK_DRAWABLE_IMPL_FBDATA (sub)->height + sub->y)) &&		  (!shape || gdk_region_point_in (shape, subx - sub->x - shape_dx, suby - sub->y - shape_dy)))		{		  subx -= sub->x;		  suby -= sub->y;		  break;		}	    }	  if (!ltmp)	    {	      sub = NULL;	      break;	    }	}      return_val = (GdkWindow *)private;    }  if (!return_val)    return_val = _gdk_parent_root;  return return_val;}void_gdk_windowing_get_pointer (GdkDisplay       *display,			    GdkScreen       **screen,			    gint             *x,			    gint             *y,			    GdkModifierType  *mask){  GdkScreen *default_screen = gdk_display_get_default_screen (display);  GdkWindow *root_window = gdk_screen_get_root_window (default_screen);    *screen = default_screen;  _gdk_windowing_window_get_pointer (display, root_window, x, y, mask);}GdkWindow*_gdk_windowing_window_at_pointer (GdkDisplay *display,				  gint       *win_x,				  gint       *win_y){  gint rx, ry;  GdkWindow *retval = gdk_window_get_pointer (NULL, win_x, win_y, NULL);  if (retval)    {      gdk_window_get_origin (retval, &ry, &rx);      (*win_x) -= rx;      (*win_y) -= ry;    }  return retval;}GdkEventMask  gdk_window_get_events (GdkWindow *window){  g_return_val_if_fail (window != NULL, 0);  g_return_val_if_fail (GDK_IS_WINDOW (window), 0);  if (GDK_WINDOW_DESTROYED (window))    return 0;  else    return GDK_WINDOW_OBJECT (window)->event_mask;}void          gdk_window_set_events (GdkWindow       *window,		       GdkEventMask     event_mask){    g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  if (event_mask & GDK_BUTTON_MOTION_MASK)    event_mask |=      GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK |      GDK_BUTTON3_MOTION_MASK;    GDK_WINDOW_OBJECT (window)->event_mask = GDK_STRUCTURE_MASK | event_mask;}voidgdk_window_add_colormap_windows (GdkWindow *window){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));    /* N/A */}GdkRegion*gdk_fb_region_create_from_bitmap (GdkBitmap *bitmap){  GdkDrawableFBData *private;  GdkRegion *region;  GdkRectangle rect;  gboolean in_rect;

⌨️ 快捷键说明

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