Diff for /np2/macosx/scrnmng.cpp between versions 1.1 and 1.3

version 1.1, 2003/10/16 17:59:38 version 1.3, 2003/10/19 14:48:07
Line 12  typedef struct { Line 12  typedef struct {
 } _QDRAW, *QDRAW;  } _QDRAW, *QDRAW;
   
   
   #ifdef NP2GCC
   #define macosx_only
   #endif
   
 static  _QDRAW          qdraw;  static  _QDRAW          qdraw;
 static  GDHandle        hgd;  
 static  GWorldPtr       gwp;  
 static  SCRNSURF        scrnsurf;  static  SCRNSURF        scrnsurf;
   #if !defined(macosx_only)
   static  GWorldPtr       gwp;
   static  GDHandle        hgd;
   #endif
   
 #ifdef NP2GCC  #if defined(macosx_only)
 #define 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  #endif
   
 void scrnmng_initialize(void) {  void scrnmng_initialize(void) {
Line 30  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 64  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 89  void scrnmng_setheight(int posy, int hei Line 113  void scrnmng_setheight(int posy, int hei
 const SCRNSURF *scrnmng_surflock(void) {  const SCRNSURF *scrnmng_surflock(void) {
   
         QDRAW           qd;          QDRAW           qd;
         GDHandle        hgd;  
         GWorldPtr       gwp;  
   
 #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 105  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 134  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 169  void scrnmng_surfunlock(const SCRNSURF * Line 190  void scrnmng_surfunlock(const SCRNSURF *
 #endif  #endif
         }          }
 }  }
   

Removed from v.1.1  
changed lines
  Added in v.1.3


RetroPC.NET-CVS <cvs@retropc.net>