|
|
| version 1.2, 2003/10/18 10:00:29 | version 1.5, 2003/10/26 11:51:46 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include <ddraw.h> | #include <ddraw.h> |
| #ifndef __GNUC__ | |
| #include <winnls32.h> | #include <winnls32.h> |
| #endif | |
| #include "resource.h" | #include "resource.h" |
| #include "np2.h" | #include "np2.h" |
| #include "mousemng.h" | #include "mousemng.h" |
| #include "scrnmng.h" | #include "scrnmng.h" |
| #include "sysmng.h" | #include "sysmng.h" |
| #include "pccore.h" | |
| #include "scrndraw.h" | |
| #include "palettes.h" | |
| #include "dclock.h" | #include "dclock.h" |
| #include "menu.h" | #include "menu.h" |
| #include "scrndraw.h" | |
| #include "palettes.h" | |
| typedef struct { | typedef struct { |
| Line 30 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 216 static void clearoutscreen(void) { | Line 220 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 229 static void paletteinit(void) { | Line 239 static void paletteinit(void) { |
| GetSystemPaletteEntries(hdc, 0, 256, ddraw.pal); | GetSystemPaletteEntries(hdc, 0, 256, ddraw.pal); |
| ReleaseDC(hWndMain, hdc); | ReleaseDC(hWndMain, hdc); |
| for (i=0; i<4; i++) { | for (i=0; i<4; i++) { |
| ddraw.pal[i+START_PALORG].peBlue = dclock_pal[i].p.b; | ddraw.pal[i+START_PALORG].peBlue = dclockpal.pal32[i].p.b; |
| ddraw.pal[i+START_PALORG].peRed = dclock_pal[i].p.r; | ddraw.pal[i+START_PALORG].peRed = dclockpal.pal32[i].p.r; |
| ddraw.pal[i+START_PALORG].peGreen = dclock_pal[i].p.g; | ddraw.pal[i+START_PALORG].peGreen = dclockpal.pal32[i].p.g; |
| ddraw.pal[i+START_PALORG].peFlags = PC_RESERVED | PC_NOCOLLAPSE; | ddraw.pal[i+START_PALORG].peFlags = PC_RESERVED | PC_NOCOLLAPSE; |
| } | } |
| for (i=0; i<NP2PAL_TOTAL; i++) { | for (i=0; i<NP2PAL_TOTAL; i++) { |
| Line 320 BOOL scrnmng_create(BYTE scrnmode) { | Line 330 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 487 void scrnmng_destroy(void) { | Line 501 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 497 void scrnmng_querypalette(void) { | Line 512 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 513 void scrnmng_topwinui(void) { | Line 564 void scrnmng_topwinui(void) { |
| if (scrnmng.flag & SCRNFLAG_FULLSCREEN) { | if (scrnmng.flag & SCRNFLAG_FULLSCREEN) { |
| ddraw.primsurf->SetClipper(ddraw.clipper); | ddraw.primsurf->SetClipper(ddraw.clipper); |
| } | } |
| #ifndef __GNUC__ | |
| WINNLSEnableIME(hWndMain, TRUE); | WINNLSEnableIME(hWndMain, TRUE); |
| #endif | |
| } | } |
| } | } |
| void scrnmng_clearwinui(void) { | void scrnmng_clearwinui(void) { |
| if ((ddraw.cliping > 0) && (!(--ddraw.cliping))) { | if ((ddraw.cliping > 0) && (!(--ddraw.cliping))) { |
| #ifndef __GNUC__ | |
| WINNLSEnableIME(hWndMain, FALSE); | WINNLSEnableIME(hWndMain, FALSE); |
| #endif | |
| if (scrnmng.flag & SCRNFLAG_FULLSCREEN) { | if (scrnmng.flag & SCRNFLAG_FULLSCREEN) { |
| ddraw.primsurf->SetClipper(0); | ddraw.primsurf->SetClipper(0); |
| } | } |
| } | } |
| 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); |
| } | } |