# HG changeset patch # User Kim F. Storm # Date 1076318297 0 # Node ID e45e1fbbe83eec5fadfda87188a8cef0b0c5dc25 # Parent d9e22d65acd39628cd5aca486d9478f98685387d (mac_draw_bitmap): Add overlay_p arg. (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps; thanks to YAMAMOTO Mitsuharu for advice on how to do this. Use cursor color for displaying cursor in fringe. diff -r d9e22d65acd3 -r e45e1fbbe83e src/macterm.c --- a/src/macterm.c Mon Feb 09 09:17:22 2004 +0000 +++ b/src/macterm.c Mon Feb 09 09:18:17 2004 +0000 @@ -467,12 +467,13 @@ /* Mac replacement for XCopyArea. */ static void -mac_draw_bitmap (display, w, gc, x, y, bitmap) +mac_draw_bitmap (display, w, gc, x, y, bitmap, overlay_p) Display *display; WindowPtr w; GC gc; int x, y; BitMap *bitmap; + int overlay_p; { Rect r; @@ -491,11 +492,13 @@ LockPortBits (GetWindowPort (w)); pmh = GetPortPixMap (GetWindowPort (w)); - CopyBits (bitmap, (BitMap *) *pmh, &(bitmap->bounds), &r, srcCopy, 0); + CopyBits (bitmap, (BitMap *) *pmh, &(bitmap->bounds), &r, + overlay_p ? srcOr : srcCopy, 0); UnlockPortBits (GetWindowPort (w)); } #else /* not TARGET_API_MAC_CARBON */ - CopyBits (bitmap, &(w->portBits), &(bitmap->bounds), &r, srcCopy, 0); + CopyBits (bitmap, &(w->portBits), &(bitmap->bounds), &r, + overlay_p ? srcOr : srcCopy, 0); #endif /* not TARGET_API_MAC_CARBON */ } @@ -1345,39 +1348,16 @@ BitMap bitmap; mac_create_bitmap_from_bitmap_data (&bitmap, bits, p->wd, p->h); - gcv.foreground = face->foreground; - gcv.background = face->background; - -#if 0 /* TODO: fringe overlay_p and cursor_p */ + gcv.foreground = (p->cursor_p ? (p->overlay_p ? face->background : f->output_data.mac->cursor_pixel) - : face->foreground)); - - if (p->overlay_p) - { - clipmask = XCreatePixmapFromBitmapData (display, - FRAME_X_DISPLAY_INFO (f)->root_window, - bits, p->wd, p->h, - 1, 0, 1); - gcv.clip_mask = clipmask; - gcv.clip_x_origin = p->x; - gcv.clip_y_origin = p->y; - XChangeGC (display, gc, GCClipMask | GCClipXOrigin | GCClipYOrigin, &gcv); - } -#endif - - mac_draw_bitmap (display, window, &gcv, p->x, p->y, &bitmap); + : face->foreground); + gcv.background = face->background; + + mac_draw_bitmap (display, window, &gcv, p->x, p->y, &bitmap, + p->overlay_p); mac_free_bitmap (&bitmap); - -#if 0 /* TODO: fringe overlay_p and cursor_p */ - if (p->overlay_p) - { - gcv.clip_mask = (Pixmap) 0; - XChangeGC (display, gc, GCClipMask, &gcv); - XFreePixmap (display, clipmask); - } -#endif } mac_reset_clipping (display, window);