|
|
| version 1.2, 2003/10/17 03:52:24 | version 1.3, 2003/10/19 14:48:07 |
|---|---|
| Line 23 static GWorldPtr gwp; | Line 23 static GWorldPtr gwp; |
| static GDHandle hgd; | static GDHandle hgd; |
| #endif | #endif |
| #if defined(macosx_only) | |
| #if defined(SUPPORT_16BPP) | |
| UINT16 scrnmng_makepal16(RGB32 pal32) { | |
| //win9xのをちょこっと改造(tk800) | |
| RGB32 pal; | |
| pal.d = pal32.d & 0xF8F8F8; | |
| return((UINT16)((pal.p.g << 2) + | |
| (pal.p.r << 7) + (pal.p.b >> 3))); | |
| } | |
| #else | |
| UINT16 scrnmng_makepal16(RGB32 pal32) { | |
| return(0); | |
| } | |
| #endif | |
| //ディスプレイの色深度を返す(tk800) | |
| int scrnmng_getbpp(void) { | |
| return(CGDisplayBitsPerPixel(kCGDirectMainDisplay)); | |
| } | |
| #else | |
| int scrnmng_getbpp(void) { | |
| return(32); | |
| } | |
| #endif | |
| void scrnmng_initialize(void) { | void scrnmng_initialize(void) { |
| } | } |
| Line 33 BOOL scrnmng_create(BYTE scrnmode) { | Line 58 BOOL scrnmng_create(BYTE scrnmode) { |
| qd = &qdraw; | qd = &qdraw; |
| SetRect(&qd->rect, 0, 0, 640, 480); | SetRect(&qd->rect, 0, 0, 640, 480); |
| #if defined(macosx_only) | #if defined(macosx_only) |
| //GWorldの代わりに直接ウィンドウバッファを設定(tk800) | //GWorldの代わりに直接ウィンドウバッファを設定(tk800) |
| GrafPtr dstport; | GrafPtr dstport; |
| dstport = GetWindowPort(hWndMain); | dstport = GetWindowPort(hWndMain); |
| if (dstport) { | if (dstport) { |
| LockPortBits(dstport);//こうしないと描画位置がおかしくなる | |
| qd->pm = GetPortPixMap(dstport); | qd->pm = GetPortPixMap(dstport); |
| qd->exist = TRUE; | qd->exist = TRUE; |
| qd->hWnd = hWndMain; | qd->hWnd = hWndMain; |
| Line 67 void scrnmng_destroy(void) { | Line 91 void scrnmng_destroy(void) { |
| qd->exist = FALSE; | qd->exist = FALSE; |
| DisposeGWorld(qd->gw); | DisposeGWorld(qd->gw); |
| } | } |
| #if defined(macosx_only) | |
| UnlockPortBits(GetWindowPort(hWndMain)); | |
| #endif | |
| } | } |
| void scrnmng_setwidth(int posx, int width) { | void scrnmng_setwidth(int posx, int width) { |
| Line 93 const SCRNSURF *scrnmng_surflock(void) { | Line 114 const SCRNSURF *scrnmng_surflock(void) { |
| QDRAW qd; | QDRAW qd; |
| #if 0 && defined(macosx_only) | |
| //色深度が32ビットじゃないときはさようなら(tk800) | |
| if (CGDisplayBitsPerPixel(kCGDirectMainDisplay)!=32) { | |
| return(NULL); | |
| } | |
| #endif | |
| qd = &qdraw; | qd = &qdraw; |
| if (!qd->exist) { | if (!qd->exist) { |
| return(NULL); | return(NULL); |
| Line 106 const SCRNSURF *scrnmng_surflock(void) { | Line 121 const SCRNSURF *scrnmng_surflock(void) { |
| #if defined(macosx_only) | #if defined(macosx_only) |
| //描画位置をウィンドウバーの下に設定(tk800) | //描画位置をウィンドウバーの下に設定(tk800) |
| LockPortBits(GetWindowPort(hWndMain));//こうしないと描画位置がおかしくなる(tk800) | |
| LockPixels(qd->pm); | LockPixels(qd->pm); |
| scrnsurf.ptr = (BYTE *)GetPixBaseAddr(qd->pm) + +640*4*22; | long rowbyte = GetPixRowBytes(qd->pm); |
| scrnsurf.ptr = (BYTE *)GetPixBaseAddr(qd->pm) + rowbyte*22; | |
| scrnsurf.xalign = rowbyte/640; | |
| scrnsurf.yalign = rowbyte; | |
| scrnsurf.bpp = rowbyte/640 * 8; | |
| #else | #else |
| GetGWorld(&gwp, &hgd); | GetGWorld(&gwp, &hgd); |
| LockPixels(qd->pm); | LockPixels(qd->pm); |
| SetGWorld(qd->gw, NULL); | SetGWorld(qd->gw, NULL); |
| scrnsurf.ptr = (BYTE *)GetPixBaseAddr(qd->pm); | scrnsurf.ptr = (BYTE *)GetPixBaseAddr(qd->pm); |
| #endif | |
| scrnsurf.xalign = 4; | scrnsurf.xalign = 4; |
| scrnsurf.yalign = ((*qd->pm)->rowBytes) & 0x3fff; | scrnsurf.yalign = ((*qd->pm)->rowBytes) & 0x3fff; |
| #endif | |
| scrnsurf.width = 640; | scrnsurf.width = 640; |
| scrnsurf.height = 400; | scrnsurf.height = 400; |
| scrnsurf.extend = 0; | scrnsurf.extend = 0; |
| Line 135 void scrnmng_surfunlock(const SCRNSURF * | Line 155 void scrnmng_surfunlock(const SCRNSURF * |
| GrafPtr dstport; | GrafPtr dstport; |
| dstport = GetWindowPort(hWndMain); | dstport = GetWindowPort(hWndMain); |
| QDAddRectToDirtyRegion(dstport, &qd->rect); | QDAddRectToDirtyRegion(dstport, &qd->rect); |
| QDFlushPortBuffer(dstport, NULL); | |
| UnlockPixels(qd->pm); | UnlockPixels(qd->pm); |
| UnlockPortBits(dstport); | |
| #else | #else |
| #if TARGET_API_MAC_CARBON | #if TARGET_API_MAC_CARBON |
| Line 170 void scrnmng_surfunlock(const SCRNSURF * | Line 190 void scrnmng_surfunlock(const SCRNSURF * |
| #endif | #endif |
| } | } |
| } | } |