|
|
| version 1.3, 2003/10/21 11:22:05 | version 1.6, 2003/10/26 12:12:12 |
|---|---|
| Line 31 typedef struct { | Line 31 typedef struct { |
| BYTE r16b; | BYTE r16b; |
| BYTE l16r; | BYTE l16r; |
| BYTE l16g; | BYTE l16g; |
| BYTE menudisp; | |
| int menusize; | |
| HMENU menuhdl; | |
| RECT scrn; | RECT scrn; |
| RECT rect; | RECT rect; |
| PALETTEENTRY pal[256]; | PALETTEENTRY pal[256]; |
| Line 205 static void clearoutofrect(const RECT *t | Line 208 static void clearoutofrect(const RECT *t |
| static void clearoutscreen(void) { | static void clearoutscreen(void) { |
| RECT base; | RECT base; |
| POINT clipt; | |
| RECT target; | RECT target; |
| GetClientRect(hWndMain, &base); | GetClientRect(hWndMain, &base); |
| clipt.x = 0; | |
| clipt.y = 0; | |
| ClientToScreen(hWndMain, &clipt); | |
| base.left += clipt.x; | |
| base.top += clipt.y; | |
| base.right += clipt.x; | |
| base.bottom += clipt.y; | |
| target.left = base.left + ddraw.scrn.left; | target.left = base.left + ddraw.scrn.left; |
| target.top = base.top + ddraw.scrn.top; | target.top = base.top + ddraw.scrn.top; |
| target.right = base.left + ddraw.scrn.right; | target.right = base.left + ddraw.scrn.right; |
| Line 217 static void clearoutscreen(void) { | Line 228 static void clearoutscreen(void) { |
| static void clearoutfullscreen(void) { | static void clearoutfullscreen(void) { |
| clearoutofrect(&ddraw.scrn, &ddraw.rect); | RECT r; |
| r.left = 0; | |
| r.top = (ddraw.menuhdl)?0:ddraw.menusize; | |
| r.right = ddraw.width; // (+ ddraw.extend) | |
| r.bottom = ddraw.height; | |
| clearoutofrect(&ddraw.scrn, &r); | |
| dclock_redraw(); | dclock_redraw(); |
| } | } |
| Line 321 BOOL scrnmng_create(BYTE scrnmode) { | Line 338 BOOL scrnmng_create(BYTE scrnmode) { |
| winstyleex |= WS_EX_TOPMOST; | winstyleex |= WS_EX_TOPMOST; |
| CheckMenuItem(hmenu, IDM_WINDOW, MF_UNCHECKED); | CheckMenuItem(hmenu, IDM_WINDOW, MF_UNCHECKED); |
| CheckMenuItem(hmenu, IDM_FULLSCREEN, MF_CHECKED); | CheckMenuItem(hmenu, IDM_FULLSCREEN, MF_CHECKED); |
| ddraw.menudisp = 0; | |
| ddraw.menusize = GetSystemMetrics(SM_CYMENU); | |
| ddraw.menuhdl = GetMenu(hWndMain); | |
| SetMenu(hWndMain, NULL); | |
| } | } |
| else { | else { |
| scrnmng.flag = SCRNFLAG_HAVEEXTEND; | scrnmng.flag = SCRNFLAG_HAVEEXTEND; |
| Line 488 void scrnmng_destroy(void) { | Line 509 void scrnmng_destroy(void) { |
| if (ddraw.ddraw1) { | if (ddraw.ddraw1) { |
| ddraw.ddraw1->Release(); | ddraw.ddraw1->Release(); |
| } | } |
| scrnmng_enablemenubar(); | |
| ZeroMemory(&ddraw, sizeof(ddraw)); | ZeroMemory(&ddraw, sizeof(ddraw)); |
| } | } |
| Line 498 void scrnmng_querypalette(void) { | Line 520 void scrnmng_querypalette(void) { |
| } | } |
| } | } |
| UINT16 scrnmng_makepal16(RGB32 pal32) { | RGB16 scrnmng_makepal16(RGB32 pal32) { |
| RGB32 pal; | RGB32 pal; |
| pal.d = pal32.d & ddraw.pal16mask.d; | pal.d = pal32.d & ddraw.pal16mask.d; |
| return((UINT16)((pal.p.g << ddraw.l16g) + | return((RGB16)((pal.p.g << ddraw.l16g) + |
| (pal.p.r << ddraw.l16r) + (pal.p.b >> ddraw.r16b))); | (pal.p.r << ddraw.l16r) + (pal.p.b >> ddraw.r16b))); |
| } | } |
| void scrnmng_enablemenubar(void) { | |
| if (ddraw.menuhdl) { | |
| SetMenu(hWndMain, ddraw.menuhdl); | |
| ddraw.menuhdl = NULL; | |
| DrawMenuBar(hWndMain); | |
| } | |
| } | |
| void scrnmng_disablemenubar(void) { | |
| if (ddraw.menuhdl == NULL) { | |
| ddraw.menuhdl = GetMenu(hWndMain); | |
| SetMenu(hWndMain, NULL); | |
| } | |
| } | |
| void scrnmng_fullscrnmenu(int y) { | |
| BYTE menudisp; | |
| if (scrnmng.flag & SCRNFLAG_FULLSCREEN) { | |
| menudisp = ((y >= 0) && (y < ddraw.menusize))?1:0; | |
| if (ddraw.menudisp != menudisp) { | |
| ddraw.menudisp = menudisp; | |
| if (menudisp == 1) { | |
| scrnmng_enablemenubar(); | |
| } | |
| else { | |
| scrnmng_disablemenubar(); | |
| clearoutfullscreen(); | |
| } | |
| } | |
| } | |
| } | |
| void scrnmng_topwinui(void) { | void scrnmng_topwinui(void) { |
| mouse_running(MOUSE_STOP); | mouse_running(MOUSE_STOP); |
| Line 531 void scrnmng_clearwinui(void) { | Line 589 void scrnmng_clearwinui(void) { |
| } | } |
| } | } |
| if (scrnmng.flag & SCRNFLAG_FULLSCREEN) { | if (scrnmng.flag & SCRNFLAG_FULLSCREEN) { |
| scrnmng_disablemenubar(); | |
| clearoutfullscreen(); | clearoutfullscreen(); |
| ddraw.menudisp = 0; | |
| } | } |
| mouse_running(MOUSE_CONT); | mouse_running(MOUSE_CONT); |
| } | } |