Mercurial > emacs
changeset 14240:629d8f6813a3
(win32_palette_entry): New structure.
(has_palette, p_colors_in_use, n_colors_in_use, h_palette,
regen_palette): Declare variables.
(struct win32_output): New field.
(my_get_dc): Macro removed.
(GetFrameDC, ReleaseFrameDC): Declare functions.
author | Geoff Voelker <voelker@cs.washington.edu> |
---|---|
date | Sun, 21 Jan 1996 00:21:35 +0000 |
parents | 78ef3e237424 |
children | 70702a322fa9 |
files | src/w32term.h |
diffstat | 1 files changed, 46 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/w32term.h Sun Jan 21 00:20:52 1996 +0000 +++ b/src/w32term.h Sun Jan 21 00:21:35 1996 +0000 @@ -75,6 +75,23 @@ /* Record some info about this pixmap. */ int height, width, depth; }; + +/* Palette book-keeping stuff for mapping requested colors into the + system palette. Keep a ref-counted list of requested colors and + regenerate the app palette whenever the requested list changes. */ + +extern Lisp_Object Vwin32_enable_palette; + +struct win32_palette_entry { + struct win32_palette_entry * next; + PALETTEENTRY entry; +#if 0 + unsigned refcount; +#endif +}; + +extern void win32_regenerate_palette(struct frame *f); + /* For each display (currently only one on win32), we have a structure that records information about it. */ @@ -102,6 +119,15 @@ /* The cursor to use for vertical scroll bars. */ Cursor vertical_scroll_bar_cursor; + /* color palette information */ + int has_palette; + struct win32_palette_entry * p_colors_in_use; + unsigned n_colors_in_use; + HPALETTE h_palette; + + /* deferred action flags checked when starting frame update */ + int regen_palette; + /* A table of all the fonts we have already loaded. */ struct font_info *font_table; @@ -187,6 +213,9 @@ struct win32_output { + /* Original palette (used to deselect real palette after drawing) */ + HPALETTE h_old_palette; + /* Position of the Win32 window (x and y offsets in root window). */ int left_pos; int top_pos; @@ -548,10 +577,6 @@ extern XFontStruct *win32_load_font (); extern void win32_unload_font (); -extern HDC map_mode(); - -#define my_get_dc(hwnd) (map_mode (GetDC (hwnd))) - #define WM_EMACS_START (WM_USER + 1) #define WM_EMACS_KILL (WM_EMACS_START + 0x00) #define WM_EMACS_CREATEWINDOW (WM_EMACS_START + 0x01) @@ -578,11 +603,26 @@ RECT rect; } Win32Msg; +/* Identifiers for array of critical sections; we need one for + serializing access to hand-crafter message queue, and another + for preventing palette changes during GDI calls. */ +enum win32_critical_section { + CRIT_MSG, /* message queue */ + CRIT_GDI, /* GDI calls */ + CRIT_TOTAL /* num of critical sections */ +}; + +extern CRITICAL_SECTION critsect[CRIT_TOTAL]; + extern void init_crit (); -extern void enter_crit (); -extern void leave_crit (); extern void delete_crit (); +#define enter_crit(index) EnterCriticalSection (&critsect[index]) +#define leave_crit(index) LeaveCriticalSection (&critsect[index]) + +extern HDC GetFrameDC (struct frame * f); +extern int ReleaseFrameDC (struct frame * f, HDC hDC); + extern BOOL get_next_msg (); extern BOOL post_msg (); extern void wait_for_sync ();