Changeset 27 for trunk/savebmp.cpp


Ignore:
Timestamp:
Mar 13, 2018, 6:34:46 PM (7 years ago)
Author:
Gregg Young
Message:

Remove mmio code; Ticet #5 Get gotcha "quiet" version working Tickets #1 #7 #9 Dialog changes related to both "quiet" and regular modes ( dialogs still need to be split in order to build both; only "quite can be bult from this) See Ticket #9 for a more complete list of changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/savebmp.cpp

    r11 r27  
    2424#include "model.h"
    2525
    26 #define  __PMPRINTF__
    27 #include "PMPRINTF.H"
    28 
    2926/* ------------------------------ */
    3027static int StrideOf(const MOD *mod)
    3128{
    32     DebugHereIAm();
    3329        return ( ( mod->gbm.w * mod->gbm.bpp + 31 ) / 32 ) * 4;
    3430        }
     
    4137        if ( (mod->pbData = (UCHAR*) gbmmem_malloc(stride * mod->gbm.h)) == NULL )
    4238            return FALSE;
    43         DebugHereIAm();
    4439        return TRUE;
    4540        }
     
    5954        if ( !AllocateData(modNew) )
    6055            return MOD_ERR_MEM;
    61         DebugHereIAm();
    6256        return MOD_ERR_OK;
    6357        }
     
    8579
    8680        if ( (mrc = ModCreate(w, h, bpp, NULL, modNew)) != MOD_ERR_OK )
    87                 return mrc;
    88         DebugHereIAm();
     81            return mrc;
     82
    8983        memset(&(bm.bmp2), 0, sizeof(bm.bmp2));
    9084        bm.bmp2.cbFix     = sizeof(BITMAPINFOHEADER2);
     
    10599                        }
    106100                }
    107         DebugHereIAm();
    108101        return MOD_ERR_OK;
    109102        }
     
    127120            return grc;
    128121        }
    129         PmpfF(( "file type %i", ft ));
    130         DebugHereIAm();
    131122        gbm_query_filetype(ft, &gbmft);
    132         PmpfF(( "file type %i name %s flags %i bpp %i", ft, gbmft.short_name,
    133                gbmft.flags, mod->gbm.bpp));
     123       
    134124        switch ( mod->gbm.bpp )
    135125                {
     
    143133        if ( (gbmft.flags & flag) == 0 )
    144134            return MOD_ERR_SUPPORT;
    145         DebugHereIAm();
     135       
    146136        if ( (fd = gbm_io_create(szFn, GBM_O_WRONLY)) == -1 )
    147137                return MOD_ERR_CREATE;
    148         DebugHereIAm();
    149         if ( (grc = gbm_write(szFn, fd, ft, &(mod->gbm), mod->gbmrgb, mod->pbData, szOpt)) != GBM_ERR_OK )
     138       
     139        if ( (grc = gbm_write(szFn, fd, ft, &(mod->gbm), mod->gbmrgb,
     140                              mod->pbData, szOpt)) != GBM_ERR_OK )
    150141                {
    151142                gbm_io_close(fd);
     
    153144                return MOD_ERR_GBM(grc);
    154145                }
    155         DebugHereIAm();
     146       
    156147        gbm_io_close(fd);
    157         DebugHereIAm();
    158148        return MOD_ERR_OK;
    159149        }
     
    161151// ** SaveBitmap ********************************************************** /*FOLD00*/
    162152
    163 VOID SaveBitmap (HBITMAP hbm, HPS hps, int width, int height, int bitCount)
     153VOID SaveBitmap (HBITMAP hbm, HPS hps, int width, int height,
     154                 int bitCount, char *title)
    164155{
    165156#ifdef _DOLOGMEM_
     
    172163        PSZ psz = pset->QueryForceSaveFile();
    173164        psz = AddExtensionToFilename( psz );
    174         //
    175         /*if( ( pset->QueryFileFormat() == BMF_12 ) ||
    176            ( pset->QueryFileFormat() == BMF_16 ) ||
    177            ( pset->QueryFileFormat() == BMF_20 ) ) {
    178             SaveBitmapToFile( hbm, psz, hps );
    179             DebugHereIAm();
    180         }
    181         else { */
     165        ModCreateFromHPS( hps, width, height,
     166                         (bitCount > 8 ) ? 24 : bitCount,
     167                         &newmod );
     168        ModWriteToFile(&newmod, psz, "" );
     169       
     170#ifdef _DOLOGMEM_
     171        LogMem( "SaveBitmap-1", FALSE );
     172#endif
     173        return;
     174    }
     175
     176    if (pset->DoSound ())
     177    {
     178        DosBeep ( 500, 100);
     179        DosBeep (1000, 100);
     180        DosBeep (1500, 100);
     181    }
     182
     183    switch (pset->QuerySaveStyle ())
     184    {
     185    case SAVESTYLE_CLIPBOARD:
     186        SaveBitmapToClipboard (hbm);
     187        break;
     188
     189    default:
     190#ifdef _DOLOGDEBUG_
     191        LogDebug( "SaveBitmap()" );
     192#endif
     193        if (SelectSaveFile (title)) {
     194#ifdef _DOLOGDEBUG_
     195            LogDebug( "Before call to SaveBitmapToFile()" );
     196#endif
    182197            ModCreateFromHPS( hps, width, height,
    183198                             (bitCount > 8 ) ? 24 : bitCount,
    184199                             &newmod );
    185             ModWriteToFile(&newmod, psz, "" );
    186         //}
    187 #ifdef _DOLOGMEM_
    188         LogMem( "SaveBitmap-1", FALSE );
    189 #endif
    190         return;
    191     }
    192 
    193     if (pset->DoSound ())
    194     {
    195         DosBeep ( 500, 100);
    196         DosBeep (1000, 100);
    197         DosBeep (1500, 100);
    198     }
    199 
    200     switch (pset->QuerySaveStyle ())
    201     {
    202     case SAVESTYLE_CLIPBOARD:
    203         SaveBitmapToClipboard (hbm);
    204         break;
    205 
    206     default:
    207 #ifdef _DOLOGDEBUG_
    208         LogDebug( "SaveBitmap()" );
    209 #endif
    210         if (SelectSaveFile ()) {
    211 #ifdef _DOLOGDEBUG_
    212             LogDebug( "Before call to SaveBitmapToFile()" );
    213 #endif
    214             //DebugHereIAm();
    215             /*if( ( pset->QueryFileFormat() == BMF_12 ) ||
    216                ( pset->QueryFileFormat() == BMF_16 ) ||
    217                ( pset->QueryFileFormat() == BMF_20 ) ) {
    218                 DebugHereIAm();
    219                 SaveBitmapToFile( hbm, pset->QuerySaveFile (), hps );
    220                 DebugHereIAm();
    221             }
    222             else {*/
    223                 ModCreateFromHPS( hps, width, height,
    224                                  (bitCount > 8 ) ? 24 : bitCount,
    225                                  &newmod );
    226                 ModWriteToFile(&newmod, pset->QuerySaveFile (), "" );
    227             //}
     200            ModWriteToFile(&newmod, pset->QuerySaveFile (), "" );
     201
    228202#ifdef _DOLOGDEBUG_
    229203            LogDebug( "After call to SaveBitmapToFile()" );
     
    256230
    257231// ** SaveBitmapToFile **************************************************** /*FOLD00*/
    258 
     232#if 0
    259233#define CB_12HEADER       sizeof (BITMAPINFOHEADER) // == 12
    260234#define CB_16HEADER       (sizeof (BITMAPINFOHEADER2)-24)
    261235#define CB_20HEADER       sizeof (BITMAPINFOHEADER2) // == 64
    262236
    263 #if 0
     237
    264238VOID SaveBitmapToFile (HBITMAP hbm, PSZ psz, HPS hps)
    265239{
     
    442416    }
    443417
    444     /*else {
    445 #ifdef _DOLOGDEBUG_
    446         LogDebug( "SaveBitmapToFile(): Starting 'else' path." );
    447 #endif
    448         PFN xmmioClose = pset->GetMMIO()->pfmmioClose;
    449 //        PFN xmmioOpen = pset->GetMMIO()->pfmmioOpen;
    450         PFN xmmioWrite = pset->GetMMIO()->pfmmioWrite;
    451         PFN xmmioQueryHeaderLength = pset->GetMMIO()->pfmmioQueryHeaderLength;
    452         PFN xmmioSetHeader = pset->GetMMIO()->pfmmioSetHeader;
    453 
    454 #ifdef _DOLOGDEBUG_
    455     LogDebug( "SaveBitmapToFile(): Before GetFOURCC." );
    456 #endif
    457         // ********* WRITE TARGET
    458         FOURCC fccTargetIOProc = pset->GetFOURCC();
    459 
    460         // Initialize our info MMIOINFO structure.
    461         MMIOINFO mmioinfoTarget;
    462 #ifdef _DOLOGDEBUG_
    463     LogDebug( "SaveBitmapToFile(): Before memset." );
    464 #endif
    465         memset( &mmioinfoTarget, 0L, sizeof( MMIOINFO ) );
    466         mmioinfoTarget.fccIOProc   = fccTargetIOProc;
    467         mmioinfoTarget.ulTranslate = MMIO_TRANSLATEHEADER | MMIO_TRANSLATEDATA;
    468 
    469 #ifdef _DOLOGDEBUG_
    470         LogDebug( "SaveBitmapToFile(): Trying to open file." );
    471 #endif
    472         // Open target file.
    473         HMMIO hmmioTarget;
    474         if( ! ( hmmioTarget = mmioOpen( psz,
    475                                         &mmioinfoTarget,
    476                                         MMIO_CREATE | MMIO_WRITE |
    477                                         MMIO_DENYWRITE | MMIO_NOIDENTIFY ))) {
    478             DisplayError ("mmioOpen()-Error",
    479                           "mmioOpen()-Error %ld", mmioinfoTarget.ulErrorRet );
    480             return;
    481         }
    482 #ifdef _DOLOGDEBUG_
    483         LogDebug( "SaveBitmapToFile(): Open file ok." );
    484 #endif
    485 
    486         // Set the target header.
    487         ULONG ulImageHeaderLength;
    488 
    489         mmioQueryHeaderLength( hmmioTarget, (PLONG)&ulImageHeaderLength, 0L, 0L );
    490         if( ulImageHeaderLength != sizeof( MMIMAGEHEADER ) )
    491         {
    492             // We have a problem.....possibly incompatible versions.
    493             mmioClose( hmmioTarget, 0L );
    494             DisplayError ("mmioQueryHeaderLength()-Error",
    495                           "mmioQueryHeaderLength()-Error",
    496                           WinGetLastError (hab));
    497             return;
    498         }
    499 #ifdef _DOLOGDEBUG_
    500         LogDebug( "SaveBitmapToFile(): xmmioQueryHeaderLength ok." );
    501 #endif
    502 
    503         MMIMAGEHEADER mmImgHdr;
    504         mmImgHdr.ulHeaderLength = ulImageHeaderLength;
    505         mmImgHdr.ulContentType  = MMIO_IMAGE_UNKNOWN;
    506         mmImgHdr.ulMediaType    = MMIO_MEDIATYPE_IMAGE;
    507 
    508 #ifdef _DOLOGDEBUG_
    509     LogDebug( "SaveBitmapToFile(): Before memcpy (colors)." );
    510 #endif
    511         memcpy( mmImgHdr.bmiColors,
    512                 PBYTE( &( pbfh2->bmp2 ) ) + sizeof( BITMAPINFOHEADER2 ),
    513                 cbColtab );
    514 
    515         mmImgHdr.mmXDIBHeader.XDIBHeaderPrefix.ulMemSize = cbBits; // FIXME;
    516         mmImgHdr.mmXDIBHeader.XDIBHeaderPrefix.ulPelFormat = 0; // FIXME;
    517         mmImgHdr.mmXDIBHeader.XDIBHeaderPrefix.usTransType = 0; // FIXME
    518         mmImgHdr.mmXDIBHeader.XDIBHeaderPrefix.ulTransVal = 0;  // FIXME
    519         memcpy( &(mmImgHdr.mmXDIBHeader.BMPInfoHeader2), &bih2, sizeof (BITMAPINFOHEADER2));
    520 
    521 #ifdef _DOLOGDEBUG_
    522     LogDebug( "SaveBitmapToFile(): Before xmmioSetHeader." );
    523 #endif
    524         ULONG ulBytesRead;
    525         if( ( rc = (LONG)mmioSetHeader( hmmioTarget, (MMIMAGEHEADER*)&mmImgHdr,
    526                                          (LONG)sizeof( MMIMAGEHEADER ), (PLONG)&ulBytesRead,
    527                                          0L, 0L ) ) != MMIO_SUCCESS )
    528         {
    529             // Header unavailable.
    530             mmioClose( hmmioTarget, 0L );
    531             DisplayError ("mmioSetHeader()-Error",
    532                           "mmioSetHeader()-Error %ld", rc );
    533             return;
    534         }
    535 #ifdef _DOLOGDEBUG_
    536         LogDebug( "SaveBitmapToFile(): xmmioSetHeader ok." );
    537 #endif
    538 
    539         // write the actual bitmap data bits
    540         if( ( rc = mmioWrite( hmmioTarget, (CHAR *) pb, cbBits ) ) == MMIO_ERROR )
    541             DisplayError ("mmioWrite()-Error",
    542                           "mmioWrite()-Error %ld", rc );
    543 #ifdef _DOLOGDEBUG_
    544         LogDebug( "SaveBitmapToFile(): xmmioWrite ok." );
    545 #endif
    546 
    547         if( ( rc = mmioClose( hmmioTarget, 0 ) ) != MMIO_SUCCESS )
    548             DisplayError ("mmioClose()-Error",
    549                           "mmioClose()-Error %ld", rc );
    550 #ifdef _DOLOGDEBUG_
    551         LogDebug( "SaveBitmapToFile(): xmmioClose ok." );
    552 #endif
    553     } */
    554 
    555418#ifdef _DOLOGDEBUG_
    556419    LogDebug( "SaveBitmapToFile(): Everything done, closed file" );
     
    569432#endif
    570433// ** SetEAs ************************************************************** /*FOLD00*/
    571 
     434#if 0
    572435BOOL SetEAs (PSZ psz)
    573436{
     
    621484    return TRUE;
    622485}
    623 
     486#endif
    624487// ** SelectSaveFile ****************************************************** /*FOLD00*/
    625488
    626 BOOL SelectSaveFile (VOID)
     489BOOL SelectSaveFile (char *title)
    627490{
    628491#ifdef _DOLOGMEM_
     
    632495    if (pset->QueryFileSaveStyle () == FSS_NUMFILES)
    633496    {
     497        PmpfF(( " title %s", title));
    634498        CHAR   ach[_MAX_PATH];
    635         for (USHORT i = 0; i < 10000; i++)
     499        for (USHORT i = 0; i < 100; i++)
    636500        {
    637             sprintf( ach, "%s\\got%05d.%s", pset->QueryNumSaveDir(), i,
    638                     pset->GetFileExtension() );
     501            sprintf( ach, "%s\\%s%02d.%s", pset->QueryNumSaveDir(),
     502                    title, i, pset->GetFileExtension() );
    639503            if (access (ach, 0) != 0)
    640504            {
Note: See TracChangeset for help on using the changeset viewer.