Diff for /xmil/win9x/Attic/ddrawbmp.cpp between versions 1.2 and 1.3

version 1.2, 2004/08/03 12:50:54 version 1.3, 2004/08/04 15:18:26
Line 105  void bmpsavefile(const OEMCHAR *filename Line 105  void bmpsavefile(const OEMCHAR *filename
         long    y;          long    y;
         BYTE    *p;          BYTE    *p;
         BYTE    bit;          BYTE    bit;
         BYTE    work[SCREEN_WIDTH];          BYTE    work[SURFACE_WIDTH];
   
         if (bmc->bmi.biClrImportant <= 2) {          if (bmc->bmi.biClrImportant <= 2) {
                 bmc->bmi.biBitCount = 1;                  bmc->bmi.biBitCount = 1;
Line 193  const OEMCHAR *f; Line 193  const OEMCHAR *f;
         OEMCHAR         *r;          OEMCHAR         *r;
   
         if ((hbmc = GlobalAlloc(GPTR, (DWORD)sizeof(BMP_CTRL) + 1 +          if ((hbmc = GlobalAlloc(GPTR, (DWORD)sizeof(BMP_CTRL) + 1 +
                                         ((DWORD)SCREEN_WIDTH * SCREEN_HEIGHT * 3L))) == NULL) {                                          ((DWORD)SURFACE_WIDTH * SURFACE_HEIGHT * 3L))) == NULL) {
                 return;                  return;
         }          }
         if ((bmc = (BMP_CTRL *)GlobalLock(hbmc)) == NULL) {          if ((bmc = (BMP_CTRL *)GlobalLock(hbmc)) == NULL) {
Line 203  const OEMCHAR *f; Line 203  const OEMCHAR *f;
         ZeroMemory(bmc, sizeof(BMP_CTRL));          ZeroMemory(bmc, sizeof(BMP_CTRL));
         ZeroMemory(remap, 256);          ZeroMemory(remap, 256);
         ZeroMemory(remapflg, 256);          ZeroMemory(remapflg, 256);
         bmc->bmi.biWidth = SCREEN_WIDTH;          bmc->bmi.biWidth = SURFACE_WIDTH;
         bmc->bmi.biHeight = SCREEN_HEIGHT;          bmc->bmi.biHeight = SURFACE_HEIGHT;
         p = screenmap;          p = screenmap;
         q = (BYTE *)bmc + sizeof(BMP_CTRL);          q = (BYTE *)bmc + sizeof(BMP_CTRL);
         for (y=0; y<SCREEN_HEIGHT; y++) {          for (y=0; y<SURFACE_HEIGHT; y++) {
                 switch(scrn.widthmode) {                  switch(scrn.widthmode) {
                         case SCRNWIDTHMODE_WIDTH80:                          case SCRNWIDTHMODE_WIDTH80:
                         default:                          default:
                                 for (x=0; x<SCREEN_WIDTH; x++) {                                  for (x=0; x<SURFACE_WIDTH; x++) {
                                         c = *p++;                                          c = *p++;
                                         if (!remapflg[c]) {                                          if (!remapflg[c]) {
                                                 remapflg[c] = 1;                                                  remapflg[c] = 1;
Line 223  const OEMCHAR *f; Line 223  const OEMCHAR *f;
                                 break;                                  break;
   
                         case SCRNWIDTHMODE_WIDTH40:                          case SCRNWIDTHMODE_WIDTH40:
                                 for (x=0; x<SCREEN_WIDTH/2; x++) {                                  for (x=0; x<SURFACE_WIDTH/2; x++) {
                                         c = *p++;                                          c = *p++;
                                         if (!remapflg[c]) {                                          if (!remapflg[c]) {
                                                 remapflg[c] = 1;                                                  remapflg[c] = 1;
Line 233  const OEMCHAR *f; Line 233  const OEMCHAR *f;
                                         *q++ = remap[c];                                          *q++ = remap[c];
                                         *q++ = remap[c];                                          *q++ = remap[c];
                                 }                                  }
                                 p += SCREEN_WIDTH/2;                                  p += SURFACE_WIDTH/2;
                                 break;                                  break;
   
                         case SCRNWIDTHMODE_4096:                          case SCRNWIDTHMODE_4096:
                                 for (x=0; x<SCREEN_WIDTH/2; x++) {                                  for (x=0; x<SURFACE_WIDTH/2; x++) {
                                         c = bmps_appal(&pals, bmc->pal,                                           c = bmps_appal(&pals, bmc->pal, 
                                                                                 x1z_pal32[(p[320] << 8) | p[0]].d);                                                                                  x1z_pal32[(p[320] << 8) | p[0]].d);
                                         p++;                                          p++;
                                         *q++ = c;                                          *q++ = c;
                                         *q++ = c;                                          *q++ = c;
                                 }                                  }
                                 p += SCREEN_WIDTH/2;                                  p += SURFACE_WIDTH/2;
                                 break;                                  break;
                 }                  }
                 if (pals > 256) {                  if (pals > 256) {
Line 257  const OEMCHAR *f; Line 257  const OEMCHAR *f;
                 f = bmpextstr[3];                  f = bmpextstr[3];
                 p = screenmap;                  p = screenmap;
                 q = (BYTE *)bmc + sizeof(BMP_CTRL);                  q = (BYTE *)bmc + sizeof(BMP_CTRL);
                 for (y=0; y<SCREEN_HEIGHT; y++) {                  for (y=0; y<SURFACE_HEIGHT; y++) {
                         switch(scrn.widthmode) {                          switch(scrn.widthmode) {
                                 case 0:                                  case 0:
                                 default:                                  default:
                                         for (x=0; x<SCREEN_WIDTH; x++) {                                          for (x=0; x<SURFACE_WIDTH; x++) {
                                                 *(DWORD *)q = x1n_pal32[*p++].d;                                                  *(DWORD *)q = x1n_pal32[*p++].d;
                                                 q += 3;                                                  q += 3;
                                         }                                          }
                                         break;                                          break;
   
                                 case 1:                                  case 1:
                                         for (x=0; x<SCREEN_WIDTH/2; x++) {                                          for (x=0; x<SURFACE_WIDTH/2; x++) {
                                                 *(DWORD *)q = x1n_pal32[*p].d;                                                  *(DWORD *)q = x1n_pal32[*p].d;
                                                 *(DWORD *)(q+3) = x1n_pal32[*p].d;                                                  *(DWORD *)(q+3) = x1n_pal32[*p].d;
                                                 p++;                                                  p++;
                                                 q += 6;                                                  q += 6;
                                         }                                          }
                                         p += SCREEN_WIDTH/2;                                          p += SURFACE_WIDTH/2;
                                         break;                                          break;
   
                                 case 2:                                  case 2:
                                         for (x=0; x<SCREEN_WIDTH/2; x++) {                                          for (x=0; x<SURFACE_WIDTH/2; x++) {
                                                 *(DWORD *)q = x1z_pal32[(p[320] << 8) | p[0]].d;                                                  *(DWORD *)q = x1z_pal32[(p[320] << 8) | p[0]].d;
                                                 *(DWORD *)(q+3) = x1z_pal32[(p[320] << 8) | p[0]].d;                                                  *(DWORD *)(q+3) = x1z_pal32[(p[320] << 8) | p[0]].d;
                                                 p++;                                                  p++;
                                                 q += 6;                                                  q += 6;
                                         }                                          }
                                         p += SCREEN_WIDTH/2;                                          p += SURFACE_WIDTH/2;
                                         break;                                          break;
                         }                          }
                 }                  }
Line 314  const OEMCHAR *f; Line 314  const OEMCHAR *f;
         OEMCHAR         *r;          OEMCHAR         *r;
   
         if ((hbmc = GlobalAlloc(GPTR, (DWORD)sizeof(BMP_CTRL) + 1 +          if ((hbmc = GlobalAlloc(GPTR, (DWORD)sizeof(BMP_CTRL) + 1 +
                                         ((DWORD)SCREEN_WIDTH * SCREEN_HEIGHT * 3L))) == NULL) {                                          ((DWORD)SURFACE_WIDTH * SURFACE_HEIGHT * 3L))) == NULL) {
                 return;                  return;
         }          }
         if ((bmc = (BMP_CTRL *)GlobalLock(hbmc)) == NULL) {          if ((bmc = (BMP_CTRL *)GlobalLock(hbmc)) == NULL) {
Line 322  const OEMCHAR *f; Line 322  const OEMCHAR *f;
                 return;                  return;
         }          }
         ZeroMemory(bmc, sizeof(BMP_CTRL));          ZeroMemory(bmc, sizeof(BMP_CTRL));
         bmc->bmi.biWidth = SCREEN_WIDTH/2;          bmc->bmi.biWidth = SURFACE_WIDTH/2;
         bmc->bmi.biHeight = SCREEN_HEIGHT/2;          bmc->bmi.biHeight = SURFACE_HEIGHT/2;
         p = screenmap;          p = screenmap;
         q = (BYTE *)bmc + sizeof(BMP_CTRL);          q = (BYTE *)bmc + sizeof(BMP_CTRL);
         for (y=0; y<SCREEN_HEIGHT/2; y++) {          for (y=0; y<SURFACE_HEIGHT/2; y++) {
                 switch(scrn.widthmode) {                  switch(scrn.widthmode) {
                         case SCRNWIDTHMODE_WIDTH80:                          case SCRNWIDTHMODE_WIDTH80:
                         default:                          default:
                                 for (x=0; x<SCREEN_WIDTH/2; x++) {                                  for (x=0; x<SURFACE_WIDTH/2; x++) {
                                         *q++ = bmps_appal(&pals, bmc->pal, palettesmix(p).d);                                          *q++ = bmps_appal(&pals, bmc->pal, palettesmix(p).d);
                                         p += 2;                                          p += 2;
                                 }                                  }
                                 p += SCREEN_WIDTH;                                  p += SURFACE_WIDTH;
                                 break;                                  break;
   
                         case SCRNWIDTHMODE_WIDTH40:                          case SCRNWIDTHMODE_WIDTH40:
                                 for (x=0; x<SCREEN_WIDTH/2; x++) {                                  for (x=0; x<SURFACE_WIDTH/2; x++) {
                                         *q++ = bmps_appal(&pals, bmc->pal, x1n_pal32[*p++].d);                                          *q++ = bmps_appal(&pals, bmc->pal, x1n_pal32[*p++].d);
                                 }                                  }
                                 p += SCREEN_WIDTH + (SCREEN_WIDTH/2);                                  p += SURFACE_WIDTH + (SURFACE_WIDTH/2);
                                 break;                                  break;
   
                         case SCRNWIDTHMODE_4096:                          case SCRNWIDTHMODE_4096:
                                 for (x=0; x<SCREEN_WIDTH/2; x++) {                                  for (x=0; x<SURFACE_WIDTH/2; x++) {
                                         *q++ = bmps_appal(&pals, bmc->pal,                                           *q++ = bmps_appal(&pals, bmc->pal, 
                                                                                 x1z_pal32[(p[320] << 8) | p[0]].d);                                                                                  x1z_pal32[(p[320] << 8) | p[0]].d);
                                         p++;                                          p++;
                                 }                                  }
                                 p += SCREEN_WIDTH + (SCREEN_WIDTH/2);                                  p += SURFACE_WIDTH + (SURFACE_WIDTH/2);
                                 break;                                  break;
                 }                  }
                 if (pals > 256) {                  if (pals > 256) {
Line 363  const OEMCHAR *f; Line 363  const OEMCHAR *f;
                 f = bmpextstr[3];                  f = bmpextstr[3];
                 p = screenmap;                  p = screenmap;
                 q = (BYTE *)bmc + sizeof(BMP_CTRL);                  q = (BYTE *)bmc + sizeof(BMP_CTRL);
                 for (y=0; y<SCREEN_HEIGHT/2; y++) {                  for (y=0; y<SURFACE_HEIGHT/2; y++) {
                         switch(scrn.widthmode) {                          switch(scrn.widthmode) {
                                 case SCRNWIDTHMODE_WIDTH80:                                  case SCRNWIDTHMODE_WIDTH80:
                                 default:                                  default:
                                         for (x=0; x<SCREEN_WIDTH/2; x++) {                                          for (x=0; x<SURFACE_WIDTH/2; x++) {
                                                 *(DWORD *)q = palettesmix(p).d;                                                  *(DWORD *)q = palettesmix(p).d;
                                                 p += 2;                                                  p += 2;
                                                 q += 3;                                                  q += 3;
                                         }                                          }
                                         p += SCREEN_WIDTH;                                          p += SURFACE_WIDTH;
                                         break;                                          break;
   
                                 case SCRNWIDTHMODE_WIDTH40:                                  case SCRNWIDTHMODE_WIDTH40:
                                         for (x=0; x<SCREEN_WIDTH/2; x++) {                                          for (x=0; x<SURFACE_WIDTH/2; x++) {
                                                 *(DWORD *)q = x1n_pal32[*p++].d;                                                  *(DWORD *)q = x1n_pal32[*p++].d;
                                                 q += 3;                                                  q += 3;
                                         }                                          }
                                         p += SCREEN_WIDTH + (SCREEN_WIDTH/2);                                          p += SURFACE_WIDTH + (SURFACE_WIDTH/2);
                                         break;                                          break;
   
                                 case SCRNWIDTHMODE_4096:                                  case SCRNWIDTHMODE_4096:
                                         for (x=0; x<SCREEN_WIDTH/2; x++) {                                          for (x=0; x<SURFACE_WIDTH/2; x++) {
                                                 *(DWORD *)q = x1z_pal32[(p[320] << 8) | p[0]].d;                                                  *(DWORD *)q = x1z_pal32[(p[320] << 8) | p[0]].d;
                                                 p++;                                                  p++;
                                                 q += 3;                                                  q += 3;
                                         }                                          }
                                         p += SCREEN_WIDTH + (SCREEN_WIDTH/2);                                          p += SURFACE_WIDTH + (SURFACE_WIDTH/2);
                                         break;                                          break;
                         }                          }
                 }                  }

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


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