?? gdkgc-x11.c
字號:
gdk_region_destroy (x11_gc->clip_region); x11_gc->clip_region = NULL; } x11_gc->have_clip_mask = values->clip_mask != NULL; } if (values_mask & GDK_GC_FOREGROUND) x11_gc->fg_pixel = values->foreground.pixel; if (values_mask & GDK_GC_BACKGROUND) { if (x11_gc->bg_pixel != values->background.pixel) { x11_gc->bg_pixel = values->background.pixel; if (x11_gc->fill == GDK_OPAQUE_STIPPLED) clear_fg_picture (gc); } } if (values_mask & GDK_GC_FILL) { if (x11_gc->fill != values->fill) { clear_fg_picture (gc); x11_gc->fill = values->fill; } } if (values_mask & GDK_GC_STIPPLE) { if (x11_gc->stipple != values->stipple) { if (x11_gc->fill == GDK_STIPPLED || x11_gc->fill == GDK_OPAQUE_STIPPLED) clear_fg_picture (gc); if (x11_gc->stipple) g_object_unref (x11_gc->stipple); x11_gc->stipple = values->stipple; if (x11_gc->stipple) g_object_ref (x11_gc->stipple); } } if (values_mask & GDK_GC_TILE) { if (x11_gc->tile != values->tile) { if (x11_gc->fill == GDK_TILED) clear_fg_picture (gc); if (x11_gc->tile) g_object_unref (x11_gc->tile); x11_gc->tile = values->tile; if (x11_gc->tile) g_object_ref (x11_gc->tile); } } gdk_x11_gc_values_to_xvalues (values, values_mask, &xvalues, &xvalues_mask); XChangeGC (GDK_GC_XDISPLAY (gc), GDK_GC_XGC (gc), xvalues_mask, &xvalues);}static voidgdk_x11_gc_set_dashes (GdkGC *gc, gint dash_offset, gint8 dash_list[], gint n){ g_return_if_fail (GDK_IS_GC (gc)); g_return_if_fail (dash_list != NULL); XSetDashes (GDK_GC_XDISPLAY (gc), GDK_GC_XGC (gc), dash_offset, dash_list, n);}static voidgdk_x11_gc_values_to_xvalues (GdkGCValues *values, GdkGCValuesMask mask, XGCValues *xvalues, unsigned long *xvalues_mask){ /* Optimization for the common case (gdk_gc_new()) */ if (values == NULL || mask == 0) return; if (mask & GDK_GC_FOREGROUND) { xvalues->foreground = values->foreground.pixel; *xvalues_mask |= GCForeground; } if (mask & GDK_GC_BACKGROUND) { xvalues->background = values->background.pixel; *xvalues_mask |= GCBackground; } if ((mask & GDK_GC_FONT) && (values->font->type == GDK_FONT_FONT)) { xvalues->font = ((XFontStruct *) (GDK_FONT_XFONT (values->font)))->fid; *xvalues_mask |= GCFont; } if (mask & GDK_GC_FUNCTION) { switch (values->function) { case GDK_COPY: xvalues->function = GXcopy; break; case GDK_INVERT: xvalues->function = GXinvert; break; case GDK_XOR: xvalues->function = GXxor; break; case GDK_CLEAR: xvalues->function = GXclear; break; case GDK_AND: xvalues->function = GXand; break; case GDK_AND_REVERSE: xvalues->function = GXandReverse; break; case GDK_AND_INVERT: xvalues->function = GXandInverted; break; case GDK_NOOP: xvalues->function = GXnoop; break; case GDK_OR: xvalues->function = GXor; break; case GDK_EQUIV: xvalues->function = GXequiv; break; case GDK_OR_REVERSE: xvalues->function = GXorReverse; break; case GDK_COPY_INVERT: xvalues->function = GXcopyInverted; break; case GDK_OR_INVERT: xvalues->function = GXorInverted; break; case GDK_NAND: xvalues->function = GXnand; break; case GDK_SET: xvalues->function = GXset; break; case GDK_NOR: xvalues->function = GXnor; break; } *xvalues_mask |= GCFunction; } if (mask & GDK_GC_FILL) { switch (values->fill) { case GDK_SOLID: xvalues->fill_style = FillSolid; break; case GDK_TILED: xvalues->fill_style = FillTiled; break; case GDK_STIPPLED: xvalues->fill_style = FillStippled; break; case GDK_OPAQUE_STIPPLED: xvalues->fill_style = FillOpaqueStippled; break; } *xvalues_mask |= GCFillStyle; } if (mask & GDK_GC_TILE) { if (values->tile) xvalues->tile = GDK_DRAWABLE_XID (values->tile); else xvalues->tile = None; *xvalues_mask |= GCTile; } if (mask & GDK_GC_STIPPLE) { if (values->stipple) xvalues->stipple = GDK_DRAWABLE_XID (values->stipple); else xvalues->stipple = None; *xvalues_mask |= GCStipple; } if (mask & GDK_GC_CLIP_MASK) { if (values->clip_mask) xvalues->clip_mask = GDK_DRAWABLE_XID (values->clip_mask); else xvalues->clip_mask = None; *xvalues_mask |= GCClipMask; } if (mask & GDK_GC_SUBWINDOW) { xvalues->subwindow_mode = values->subwindow_mode; *xvalues_mask |= GCSubwindowMode; } if (mask & GDK_GC_TS_X_ORIGIN) { xvalues->ts_x_origin = values->ts_x_origin; *xvalues_mask |= GCTileStipXOrigin; } if (mask & GDK_GC_TS_Y_ORIGIN) { xvalues->ts_y_origin = values->ts_y_origin; *xvalues_mask |= GCTileStipYOrigin; } if (mask & GDK_GC_CLIP_X_ORIGIN) { xvalues->clip_x_origin = values->clip_x_origin; *xvalues_mask |= GCClipXOrigin; } if (mask & GDK_GC_CLIP_Y_ORIGIN) { xvalues->clip_y_origin = values->clip_y_origin; *xvalues_mask |= GCClipYOrigin; } if (mask & GDK_GC_EXPOSURES) { xvalues->graphics_exposures = values->graphics_exposures; *xvalues_mask |= GCGraphicsExposures; } if (mask & GDK_GC_LINE_WIDTH) { xvalues->line_width = values->line_width; *xvalues_mask |= GCLineWidth; } if (mask & GDK_GC_LINE_STYLE) { switch (values->line_style) { case GDK_LINE_SOLID: xvalues->line_style = LineSolid; break; case GDK_LINE_ON_OFF_DASH: xvalues->line_style = LineOnOffDash; break; case GDK_LINE_DOUBLE_DASH: xvalues->line_style = LineDoubleDash; break; } *xvalues_mask |= GCLineStyle; } if (mask & GDK_GC_CAP_STYLE) { switch (values->cap_style) { case GDK_CAP_NOT_LAST: xvalues->cap_style = CapNotLast; break; case GDK_CAP_BUTT: xvalues->cap_style = CapButt; break; case GDK_CAP_ROUND: xvalues->cap_style = CapRound; break; case GDK_CAP_PROJECTING: xvalues->cap_style = CapProjecting; break; } *xvalues_mask |= GCCapStyle; } if (mask & GDK_GC_JOIN_STYLE) { switch (values->join_style) { case GDK_JOIN_MITER: xvalues->join_style = JoinMiter; break; case GDK_JOIN_ROUND: xvalues->join_style = JoinRound; break; case GDK_JOIN_BEVEL: xvalues->join_style = JoinBevel; break; } *xvalues_mask |= GCJoinStyle; }}/** * gdk_gc_set_clip_rectangle: * @gc: a #GdkGC. * @rectangle: the rectangle to clip to. * * Sets the clip mask for a graphics context from a * rectangle. The clip mask is interpreted relative to the clip * origin. (See gdk_gc_set_clip_origin()). **/voidgdk_gc_set_clip_rectangle (GdkGC *gc, GdkRectangle *rectangle){ GdkGCX11 *x11_gc; gboolean had_region = FALSE; g_return_if_fail (GDK_IS_GC (gc)); x11_gc = GDK_GC_X11 (gc); if (x11_gc->clip_region) { had_region = TRUE; gdk_region_destroy (x11_gc->clip_region); } if (rectangle) x11_gc->clip_region = gdk_region_rectangle (rectangle); else x11_gc->clip_region = NULL; /* Unset immediately, to make sure Xlib doesn't keep the * XID of an old clip mask cached */ if ((had_region && !rectangle) || x11_gc->have_clip_mask) { XSetClipMask (GDK_GC_XDISPLAY (gc), GDK_GC_XGC (gc), None); x11_gc->have_clip_mask = FALSE; } gc->clip_x_origin = 0; gc->clip_y_origin = 0; x11_gc->dirty_mask |= GDK_GC_DIRTY_CLIP;}/** * gdk_gc_set_clip_region: * @gc: a #GdkGC. * @region: the #GdkRegion. * * Sets the clip mask for a graphics context from a region structure. * The clip mask is interpreted relative to the clip origin. (See * gdk_gc_set_clip_origin()). **/voidgdk_gc_set_clip_region (GdkGC *gc, GdkRegion *region){ GdkGCX11 *x11_gc; gboolean had_region = FALSE; g_return_if_fail (GDK_IS_GC (gc)); x11_gc = GDK_GC_X11 (gc); if (x11_gc->clip_region) { had_region = TRUE; gdk_region_destroy (x11_gc->clip_region); } if (region) x11_gc->clip_region = gdk_region_copy (region); else x11_gc->clip_region = NULL; /* Unset immediately, to make sure Xlib doesn't keep the * XID of an old clip mask cached */ if ((had_region && !region) || x11_gc->have_clip_mask) { XSetClipMask (GDK_GC_XDISPLAY (gc), GDK_GC_XGC (gc), None); x11_gc->have_clip_mask = FALSE; } gc->clip_x_origin = 0; gc->clip_y_origin = 0; x11_gc->dirty_mask |= GDK_GC_DIRTY_CLIP;}/** * gdk_gc_copy: * @dst_gc: the destination graphics context. * @src_gc: the source graphics context. * * Copy the set of values from one graphics context * onto another graphics context. **/voidgdk_gc_copy (GdkGC *dst_gc, GdkGC *src_gc){ GdkGCX11 *x11_src_gc; GdkGCX11 *x11_dst_gc; g_return_if_fail (GDK_IS_GC_X11 (dst_gc)); g_return_if_fail (GDK_IS_GC_X11 (src_gc)); x11_dst_gc = GDK_GC_X11 (dst_gc); x11_src_gc = GDK_GC_X11 (src_gc); XCopyGC (GDK_GC_XDISPLAY (src_gc), GDK_GC_XGC (src_gc), ~((~1) << GCLastBit), GDK_GC_XGC (dst_gc)); dst_gc->clip_x_origin = src_gc->clip_x_origin; dst_gc->clip_y_origin = src_gc->clip_y_origin; dst_gc->ts_x_origin = src_gc->ts_x_origin; dst_gc->ts_y_origin = src_gc->ts_y_origin; if (src_gc->colormap) g_object_ref (src_gc->colormap); if (dst_gc->colormap) g_object_unref (dst_gc->colormap); dst_gc->colormap = src_gc->colormap; if (x11_dst_gc->clip_region) gdk_region_destroy (x11_dst_gc->clip_region); if (x11_src_gc->clip_region) x11_dst_gc->clip_region = gdk_region_copy (x11_src_gc->clip_region); else x11_dst_gc->clip_region = NULL; x11_dst_gc->dirty_mask = x11_src_gc->dirty_mask; x11_dst_gc->fg_pixel = x11_src_gc->fg_pixel; x11_dst_gc->fill = x11_src_gc->fill;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -