diff options
author | Jason Rumney <jasonr@gnu.org> | 2004-02-16 00:54:02 +0000 |
---|---|---|
committer | Jason Rumney <jasonr@gnu.org> | 2004-02-16 00:54:02 +0000 |
commit | f3336ea4a16bb4a7612f527ab8ce510c7956c600 (patch) | |
tree | 24e04b023375017d69dfadf03cc6c24cebd4c66b /src/w32term.c | |
parent | 8d50508a88ff3aba8dd08209c00782d3e73a569e (diff) | |
download | emacs-f3336ea4a16bb4a7612f527ab8ce510c7956c600.tar.gz |
(w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
Diffstat (limited to 'src/w32term.c')
-rw-r--r-- | src/w32term.c | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/src/w32term.c b/src/w32term.c index 7fa3ca0fece..d2e8f8993b8 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -711,43 +711,33 @@ w32_draw_fringe_bitmap (w, row, p) HANDLE horig_obj; compat_hdc = CreateCompatibleDC (hdc); + SaveDC (hdc); horig_obj = SelectObject (compat_hdc, pixmap); SetTextColor (hdc, face->background); - SetBkColor (hdc, face->foreground); - -#if 0 /* TODO: fringe overlay_p and cursor_p */ - SetBkColor (hdc, (p->cursor_p - ? (p->overlay_p ? face->background + SetBkColor (hdc, p->cursor_p + ? (p->overlay_p ? face->background : f->output_data.w32->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 - - BitBlt (hdc, p->x, p->y, p->wd, p->h, - compat_hdc, 0, p->dh, - SRCCOPY); + : face->foreground); -#if 0 /* TODO: fringe overlay_p and cursor_p */ + /* Paint overlays transparently. */ if (p->overlay_p) { - gcv.clip_mask = (Pixmap) 0; - XChangeGC (display, gc, GCClipMask, &gcv); - XFreePixmap (display, clipmask); + BitBlt (hdc, p->x, p->y, p->wd, p->h, + compat_hdc, 0, p->dh, + DSTINVERT); + BitBlt (hdc, p->x, p->y, p->wd, p->h, + compat_hdc, 0, p->dh, + MERGEPAINT); + BitBlt (hdc, p->x, p->y, p->wd, p->h, + compat_hdc, 0, p->dh, + DSTINVERT); } -#endif + else + BitBlt (hdc, p->x, p->y, p->wd, p->h, + compat_hdc, 0, p->dh, + SRCCOPY); SelectObject (compat_hdc, horig_obj); DeleteDC (compat_hdc); |