--- np2/win9xc/scrnmng.cpp 2003/10/18 10:00:29 1.2 +++ np2/win9xc/scrnmng.cpp 2005/02/07 14:46:15 1.6 @@ -1,6 +1,8 @@ #include "compiler.h" #include +#ifndef __GNUC__ #include +#endif #include "resource.h" #include "np2.h" #include "mousemng.h" @@ -19,7 +21,8 @@ typedef struct { LPDIRECTDRAWSURFACE backsurf; LPDIRECTDRAWCLIPPER clipper; LPDIRECTDRAWPALETTE palette; - BYTE scrnmode; + UINT8 enable; + UINT8 scrnmode; int width; int height; int extend; @@ -28,9 +31,10 @@ typedef struct { RECT rect; #if defined(SUPPORT_16BPP) RGB32 pal16mask; - BYTE r16b; - BYTE l16r; - BYTE l16g; + UINT8 r16b; + UINT8 l16r; + UINT8 l16g; + UINT8 padding16; #endif #if defined(SUPPORT_8BPP) PALETTEENTRY pal[256]; @@ -245,14 +249,14 @@ static void paletteset(void) { #if defined(SUPPORT_16BPP) static void make16mask(DWORD bmask, DWORD rmask, DWORD gmask) { - BYTE sft; + UINT8 sft; sft = 0; while((!(bmask & 0x80)) && (sft < 32)) { bmask <<= 1; sft++; } - ddraw.pal16mask.p.b = (BYTE)bmask; + ddraw.pal16mask.p.b = (UINT8)bmask; ddraw.r16b = sft; sft = 0; @@ -260,7 +264,7 @@ static void make16mask(DWORD bmask, DWOR rmask >>= 1; sft++; } - ddraw.pal16mask.p.r = (BYTE)rmask; + ddraw.pal16mask.p.r = (UINT8)rmask; ddraw.l16r = sft; sft = 0; @@ -268,7 +272,7 @@ static void make16mask(DWORD bmask, DWOR gmask >>= 1; sft++; } - ddraw.pal16mask.p.g = (BYTE)gmask; + ddraw.pal16mask.p.g = (UINT8)gmask; ddraw.l16g = sft; } #endif @@ -285,7 +289,7 @@ void scrnmng_initialize(void) { setwindowsize(640, 400); } -BOOL scrnmng_create(BYTE scrnmode) { +BOOL scrnmng_create(UINT8 scrnmode) { DWORD winstyle; DWORD winstyleex; @@ -325,12 +329,21 @@ BOOL scrnmng_create(BYTE scrnmode) { ddraw.ddraw1->QueryInterface(IID_IDirectDraw2, (void **)&ddraw2); ddraw.ddraw2 = ddraw2; +#if defined(SUPPORT_PC9821) + scrnmode |= SCRNMODE_HIGHCOLOR; +#endif if (scrnmode & SCRNMODE_FULLSCREEN) { ddraw2->SetCooperativeLevel(hWndMain, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT); if (!(scrnmode & SCRNMODE_HIGHCOLOR)) { #if defined(SUPPORT_8BPP) bitcolor = 8; +#elif defined(SUPPORT_16BPP) + bitcolor = 16; +#elif defined(SUPPORT_32BPP) + bitcolor = 32; +#elif defined(SUPPORT_24BPP) + bitcolor = 24; #else goto scre_err; #endif @@ -443,8 +456,9 @@ BOOL scrnmng_create(BYTE scrnmode) { else { goto scre_err; } - scrnmng.bpp = (BYTE)bitcolor; + scrnmng.bpp = (UINT8)bitcolor; scrnsurf.bpp = bitcolor; + ddraw.enable = TRUE; ddraw.scrnmode = scrnmode; ddraw.width = 640; ddraw.height = 480; @@ -503,19 +517,23 @@ UINT16 scrnmng_makepal16(RGB32 pal32) { void scrnmng_topwinui(void) { - mouse_running(MOUSE_STOP); + mousemng_disable(MOUSEPROC_WINUI); if (!ddraw.cliping++) { // ver0.28 if (scrnmng.flag & SCRNFLAG_FULLSCREEN) { ddraw.primsurf->SetClipper(ddraw.clipper); } +#ifndef __GNUC__ WINNLSEnableIME(hWndMain, TRUE); +#endif } } void scrnmng_clearwinui(void) { if ((ddraw.cliping > 0) && (!(--ddraw.cliping))) { +#ifndef __GNUC__ WINNLSEnableIME(hWndMain, FALSE); +#endif if (scrnmng.flag & SCRNFLAG_FULLSCREEN) { ddraw.primsurf->SetClipper(0); } @@ -523,7 +541,7 @@ void scrnmng_clearwinui(void) { if (scrnmng.flag & SCRNFLAG_FULLSCREEN) { clearoutfullscreen(); } - mouse_running(MOUSE_CONT); + mousemng_enable(MOUSEPROC_WINUI); } void scrnmng_setwidth(int posx, int width) { @@ -553,18 +571,18 @@ const SCRNSURF *scrnmng_surflock(void) { return(NULL); } if (!(ddraw.scrnmode & SCRNMODE_ROTATE)) { - scrnsurf.ptr = (BYTE *)destscrn.lpSurface; + scrnsurf.ptr = (UINT8 *)destscrn.lpSurface; scrnsurf.xalign = scrnsurf.bpp >> 3; scrnsurf.yalign = destscrn.lPitch; } else if (!(ddraw.scrnmode & SCRNMODE_ROTATEDIR)) { - scrnsurf.ptr = (BYTE *)destscrn.lpSurface; + scrnsurf.ptr = (UINT8 *)destscrn.lpSurface; scrnsurf.ptr += (scrnsurf.width - 1) * destscrn.lPitch; scrnsurf.xalign = 0 - destscrn.lPitch; scrnsurf.yalign = scrnsurf.bpp >> 3; } else { - scrnsurf.ptr = (BYTE *)destscrn.lpSurface; + scrnsurf.ptr = (UINT8 *)destscrn.lpSurface; scrnsurf.ptr += (scrnsurf.height - 1) * (scrnsurf.bpp >> 3); scrnsurf.xalign = destscrn.lPitch; scrnsurf.yalign = 0 - (scrnsurf.bpp >> 3); @@ -622,3 +640,10 @@ void scrnmng_update(void) { } } +void scrnmng_restoresize(void) { + + if ((ddraw.enable) && (!(ddraw.scrnmode & SCRNMODE_FULLSCREEN))) { + renewalclientsize(); + } +} +