--- np2/macosx/scrnmng.cpp 2003/11/12 19:06:33 1.4 +++ np2/macosx/scrnmng.cpp 2004/02/03 15:58:34 1.6 @@ -16,53 +16,43 @@ typedef struct { GDHandle hgd; } _QDRAW, *QDRAW; - -#ifdef NP2GCC -#define macosx_only -#endif - static _QDRAW qdraw; static SCRNSURF scrnsurf; -#if !defined(macosx_only) -static GWorldPtr gwp; -static GDHandle hgd; -#endif + +#define WINDOWTITLEOFFSET 22 static void changeclientsize(int width, int height, BYTE mode) { QDRAW qd; - int scrnwidth, scrnheight; BYTE opentoolwin = np2oscfg.toolwin; qd = &qdraw; if (!qd->exist) { return; } - if (opentoolwin) { - toolwin_close(); - } - if (!(mode & SCRNMODE_ROTATE)) { - scrnwidth = width; - scrnheight = height; - } - else { - scrnwidth = height; - scrnheight = width; - } - if (mode & SCRNMODE_FULLSCREEN) { - GetWindowBounds(hWndMain, kWindowContentRgn, &qd->rect); + if (!(mode & SCRNMODE_FULLSCREEN)) { + if (opentoolwin) { + toolwin_close(); + } + if (!(mode & SCRNMODE_ROTATE)) { + qd->width = width; + qd->height = height; + } + else { + qd->width = height; + qd->height = width; + } + SizeWindow(qd->hWnd, qd->width, qd->height, TRUE); + SetRect(&qd->rect, 0, 0, qd->width, qd->height); + if (opentoolwin) { + toolwin_open(); + } } else { - SizeWindow(qd->hWnd, scrnwidth, scrnheight, TRUE); - SetRect(&qd->rect, 0, 0, scrnwidth, scrnheight); - } - if (opentoolwin) { - toolwin_open(); + GetWindowBounds(qd->hWnd, kWindowContentRgn, &qd->rect); } } - -#if defined(macosx_only) #if defined(SUPPORT_16BPP) UINT16 scrnmng_makepal16(RGB32 pal32) { //win9xのをちょこっと改造(tk800) @@ -82,11 +72,6 @@ UINT16 scrnmng_makepal16(RGB32 pal32) { int scrnmng_getbpp(void) { return(CGDisplayBitsPerPixel(kCGDirectMainDisplay)); } -#else -int scrnmng_getbpp(void) { - return(32); -} -#endif void scrnmng_initialize(void) { @@ -102,7 +87,6 @@ BOOL scrnmng_create(BYTE mode) { QDRAW qd; qd = &qdraw; -#if defined(macosx_only) //GWorldの代わりに直接ウィンドウバッファを設定(tk800) GrafPtr dstport; dstport = GetWindowPort(hWndMain); @@ -110,20 +94,9 @@ BOOL scrnmng_create(BYTE mode) { qd->pm = GetPortPixMap(dstport); qd->exist = TRUE; qd->hWnd = hWndMain; - if (!(mode & SCRNMODE_FULLSCREEN)) { - changeclientsize(qd->width, qd->height, mode); - } + changeclientsize(qd->width, qd->height, mode); return(SUCCESS); } -#else - SetRect(&qd->rect, 0, 0, 640, 480); - if (NewGWorld(&qd->gw, 32, &qd->rect, NULL, NULL, useTempMem) == noErr) { - qd->pm = GetGWorldPixMap(qd->gw); - qd->exist = TRUE; - qd->hWnd = hWndMain; - return(SUCCESS); - } -#endif else { (void)mode; return(FAILURE); @@ -137,9 +110,6 @@ void scrnmng_destroy(void) { qd = &qdraw; if (qd->exist) { qd->exist = FALSE; -#if defined(macosx_only) - DisposeGWorld(qd->gw); -#endif } } @@ -183,39 +153,31 @@ const SCRNSURF *scrnmng_surflock(void) { scrnsurf.width = qd->width; scrnsurf.height = qd->height; -#if defined(macosx_only) //描画位置をウィンドウバーの下に設定(tk800) LockPortBits(GetWindowPort(hWndMain));//こうしないと描画位置がおかしくなる(tk800) LockPixels(qd->pm); long rowbyte = GetPixRowBytes(qd->pm); scrnsurf.bpp = scrnmng_getbpp(); if (!(scrnmode & SCRNMODE_ROTATE)) { - scrnsurf.ptr = (BYTE *)GetPixBaseAddr(qd->pm) + rowbyte*22; + scrnsurf.ptr = (BYTE *)GetPixBaseAddr(qd->pm) + rowbyte*WINDOWTITLEOFFSET; scrnsurf.xalign = scrnsurf.bpp >> 3; scrnsurf.yalign = rowbyte; } else if (!(scrnmode & SCRNMODE_ROTATEDIR)) { - scrnsurf.ptr = (BYTE *)GetPixBaseAddr(qd->pm) + rowbyte*22; + scrnsurf.ptr = (BYTE *)GetPixBaseAddr(qd->pm) + rowbyte*WINDOWTITLEOFFSET; scrnsurf.ptr += (scrnsurf.width - 1) * rowbyte; scrnsurf.xalign = 0 - rowbyte; scrnsurf.yalign = scrnsurf.bpp >> 3; } else { - scrnsurf.ptr = (BYTE *)GetPixBaseAddr(qd->pm) + rowbyte*22; + scrnsurf.ptr = (BYTE *)GetPixBaseAddr(qd->pm) + rowbyte*WINDOWTITLEOFFSET; scrnsurf.ptr += (scrnsurf.height - 1) * (scrnsurf.bpp >> 3); scrnsurf.xalign = rowbyte; scrnsurf.yalign = 0 - (scrnsurf.bpp >> 3); } -#else - GetGWorld(&gwp, &hgd); - LockPixels(qd->pm); - SetGWorld(qd->gw, NULL); - - scrnsurf.ptr = (BYTE *)GetPixBaseAddr(qd->pm); - scrnsurf.xalign = 4; - scrnsurf.yalign = ((*qd->pm)->rowBytes) & 0x3fff; - scrnsurf.bpp = 32; -#endif + if (scrnmode & SCRNMODE_FULLSCREEN) { + scrnsurf.ptr += (CGDisplayPixelsWide(kCGDirectMainDisplay)-qd->width)/2*(scrnsurf.bpp >> 3); + } scrnsurf.extend = 0; return(&scrnsurf); } @@ -227,43 +189,11 @@ void scrnmng_surfunlock(const SCRNSURF * if (surf) { qd = &qdraw; -#if defined(macosx_only) //画面を更新するようWindow Serverに指示(tk800) GrafPtr dstport; - dstport = GetWindowPort(hWndMain); + dstport = GetWindowPort(qd->hWnd); QDAddRectToDirtyRegion(dstport, &qd->rect); UnlockPixels(qd->pm); UnlockPortBits(dstport); -#else - -#if TARGET_API_MAC_CARBON - { - GrafPtr thePort; - RgnHandle theVisibleRgn = NewRgn(); - - theVisibleRgn = NewRgn(); - if (!EmptyRgn(GetPortVisibleRegion(GetWindowPort(qd->hWnd), - theVisibleRgn))) { - LockPortBits(GetWindowPort(qd->hWnd)); - LockPixels(qd->pm); - GetPort(&thePort); - SetPortWindowPort(qd->hWnd); - CopyBits((BitMap*)(*qd->pm), - GetPortBitMapForCopyBits(GetWindowPort(qd->hWnd)), - &qd->rect, &qd->rect, srcCopy, theVisibleRgn); - SetPort(thePort); - UnlockPixels(qd->pm); - UnlockPortBits(GetWindowPort(qd->hWnd)); - } - DisposeRgn(theVisibleRgn); - } -#else - CopyBits((BitMap *)(*qd->pm), &(qd->hWnd->portBits), &qd->rect, - &qd->rect, srcCopy, qd->hWnd->visRgn); -#endif - - UnlockPixels(qd->pm); - SetGWorld(gwp, hgd); -#endif } }