Difference for arch/win32/scene.cpp from version 1.1 to 1.2


version 1.1 version 1.2
Line 23
 
Line 23
 extern CD3DFramework* g_pFramework;  extern CD3DFramework* g_pFramework;
 extern BOOL           g_bWindowed;  extern BOOL           g_bWindowed;
   
   extern "C" {
   #include "d3dhelp.h"
   }
   
 //-----------------------------------------------------------------------------  //-----------------------------------------------------------------------------
 // Declare the application globals for use in WinMain.cpp  // Declare the application globals for use in WinMain.cpp
 //-----------------------------------------------------------------------------  //-----------------------------------------------------------------------------
   void   Win32_SetupColor(void);
   BOOL   g_TrueColor;
   int    g_RShift, g_GShift, g_BShift;
   int    g_RBits6, g_GBits6, g_BBits6;
   
 TCHAR* g_strAppTitle       = TEXT( "Direct3D Descent" );  TCHAR* g_strAppTitle       = TEXT( "Direct3D Descent" );
 BOOL   g_bAppUseZBuffer    = FALSE;  BOOL   g_bAppUseZBuffer    = FALSE;
 BOOL   g_bAppUseBackBuffer = TRUE;  BOOL   g_bAppUseBackBuffer = TRUE;
Line 152
 
Line 160
  g_bTransparentLast = FALSE;   g_bTransparentLast = FALSE;
  g_pd3dtLast = NULL;   g_pd3dtLast = NULL;
   
    Win32_SetupColor();
   
     return S_OK;      return S_OK;
 }  }
   
Line 185
 
Line 195
     D3DTextr_InvalidateAllTextures();      D3DTextr_InvalidateAllTextures();
   
  g_setTextures.Uninitialize ();   g_setTextures.Uninitialize ();
   
    Win32_InvalidatePages();
   
    Win32_SetupColor();
 }  }
   
   
Line 234
 
Line 248
 #include "..\main\object.h"  #include "..\main\object.h"
 #include "..\3d\globvars.h"  #include "..\3d\globvars.h"
 #include "3d.h"  #include "3d.h"
   #include "palette.h"
 }  }
   
 #undef __BOGUS1  #undef __BOGUS1
Line 268
 
Line 283
  return hResult;   return hResult;
 }  }
   
   extern "C" RGBQUAD w32lastrgb[256];
   
 extern "C" void Win32_DoSetPalette (PALETTEENTRY *rgpe)  extern "C" void Win32_DoSetPalette (PALETTEENTRY *rgpe)
 {  {
  g_setTextures.SetPaletteEntries (rgpe);   g_setTextures.SetPaletteEntries (rgpe);
    for (int i = 0; i < 256; i++) {
    w32lastrgb[i].rgbBlue = rgpe[i].peBlue;
    w32lastrgb[i].rgbGreen = rgpe[i].peGreen;
    w32lastrgb[i].rgbRed = rgpe[i].peRed;
    }
 }  }
   
 extern "C" void Win32_DoGetPalette (PALETTEENTRY *rgpe)  extern "C" void Win32_DoGetPalette (PALETTEENTRY *rgpe)
Line 474
 
Line 496
  return S_OK;   return S_OK;
 }  }
   
   extern "C" void BlitToPrimary(HDC hSrcDC)
   {
    RECT rectDest;
    rectDest.left = 0;
    rectDest.top = 0;
    rectDest.right = g_pFramework->m_dwRenderWidth;
    rectDest.bottom = g_pFramework->m_dwRenderHeight;
   
    if (g_bWindowed)
    {
    rectDest.left += g_pFramework->m_rcScreenRect.left;
    rectDest.right += g_pFramework->m_rcScreenRect.left;
    rectDest.top += g_pFramework->m_rcScreenRect.top;
    rectDest.bottom += g_pFramework->m_rcScreenRect.top;
    }
   
    HDC hDstDC;
    if (g_pFramework->GetFrontBuffer()->GetDC(&hDstDC) == DD_OK)
    {
    StretchBlt(hDstDC, rectDest.left, rectDest.top,
    rectDest.right - rectDest.left, rectDest.bottom - rectDest.top,
    hSrcDC, 0, 0, 320, 200, SRCCOPY);
    g_pFramework->GetFrontBuffer()->ReleaseDC(hDstDC);
    }
    return;
   }
   
   extern "C" void BlitToPrimaryRect(HDC hSrcDC, int x, int y, int w, int h,
    unsigned char *dst)
   {
    RECT rectDest;
    int destWidth = g_pFramework->m_dwRenderWidth;
    int destHeight = g_pFramework->m_dwRenderHeight;
   
    rectDest.left = (x * destWidth) / 320;
    rectDest.top = (y * destHeight) / 200;
    rectDest.right = ((x + w) * destWidth) / 320;
    rectDest.bottom = ((y + h) * destHeight) / 200;
   
    if (g_bWindowed && (int)dst == BM_D3D_DISPLAY)
    {
    rectDest.left += g_pFramework->m_rcScreenRect.left;
    rectDest.right += g_pFramework->m_rcScreenRect.left;
    rectDest.top += g_pFramework->m_rcScreenRect.top;
    rectDest.bottom += g_pFramework->m_rcScreenRect.top;
    }
   
    HDC hDstDC;
    IDirectDrawSurface4 *pddsDest = ((int)dst == BM_D3D_DISPLAY) ?
    g_pFramework->GetFrontBuffer() :
    g_pFramework->GetRenderSurface();
    if (pddsDest->GetDC(&hDstDC) == DD_OK)
    {
    StretchBlt(hDstDC, rectDest.left, rectDest.top,
    rectDest.right - rectDest.left, rectDest.bottom - rectDest.top,
    hSrcDC, x, y, w, h, SRCCOPY);
    pddsDest->ReleaseDC(hDstDC);
    }
    return;
   }
   
 HRESULT Blit (  HRESULT Blit (
  RECT &rectDest,   RECT &rectDest,
  LPDIRECTDRAWSURFACE4 pddsSrc,   LPDIRECTDRAWSURFACE4 pddsSrc,
Line 513
 
Line 596
  pddbltfx);   pddbltfx);
 }  }
   
   static void findmask6(int in_mask, int *shift, int *bits6)
   {
    int i;
   
    if (!in_mask) {
    *shift = 0;
    *bits6 = 6;
    return;
    }
    i = 0;
    while (!(in_mask & 1))
    {
    in_mask >>= 1;
    i++;
    }
    *shift = i;
    i = 0;
    while (in_mask & 1)
    {
    in_mask >>= 1;
    i++;
    }
    *bits6 = 6 - i;
   }
   
   void Win32_SetupColor(void)
   {
    DDPIXELFORMAT pf;
    pf.dwSize = sizeof(pf);
    g_pFramework->GetFrontBuffer ()->GetPixelFormat(&pf);
    g_TrueColor = pf.dwRGBBitCount == 24 || pf.dwRGBBitCount == 32;
    if (!g_TrueColor)
    {
    findmask6(pf.dwRBitMask, &g_RShift, &g_RBits6);
    findmask6(pf.dwGBitMask, &g_GShift, &g_GBits6);
    findmask6(pf.dwBBitMask, &g_BShift, &g_BBits6);
    }
   }
   
 extern "C" void Win32_Rect (  extern "C" void Win32_Rect (
  int left, int top, int right, int bot,   int left, int top, int right, int bot,
  int iSurf,   int iSurf,
Line 523
 
Line 645
  DDBLTFX ddbltfx;   DDBLTFX ddbltfx;
  ddbltfx.dwSize = sizeof (ddbltfx);   ddbltfx.dwSize = sizeof (ddbltfx);
   
    #if 0
  if (g_setTextures.HasPalette ())   if (g_setTextures.HasPalette ())
  {   {
  ddbltfx.dwFillColor = iCol;   ddbltfx.dwFillColor = iCol;
Line 532
 
Line 655
  PALETTEENTRY pe = g_setTextures.ReadPalette (iCol);   PALETTEENTRY pe = g_setTextures.ReadPalette (iCol);
  ddbltfx.dwFillColor = *(DWORD*) &pe;   ddbltfx.dwFillColor = *(DWORD*) &pe;
  }   }
    #else
    unsigned char *p = gr_current_pal + iCol * 3;
    if (g_TrueColor)
    ddbltfx.dwFillColor = (255 << 24) | (p[0] << 18) |
    (p[1] << 10) | (p[2] << 2);
    else
    ddbltfx.dwFillColor = (p[0] >> g_RBits6) << g_RShift |
    (p[1] >> g_GBits6) << g_GShift |
    (p[2] >> g_BBits6) << g_BShift;
    #endif
   
  HRESULT hr = Blit (   HRESULT hr = Blit (
  rectDest,   rectDest,

Legend:
line(s) removed in v.1.1 
line(s) changed
 line(s) added in v.1.2