home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Graphics / Graphics.zip / gotch175.zip / src / settings.h < prev    next >
C/C++ Source or Header  |  2002-11-25  |  7KB  |  202 lines

  1. /***
  2.  This file belongs to the Gotcha! distribution.
  3.  Copyright (C) 1998-2002 Thorsten Thielen <thth@gmx.net>
  4.  
  5.  This program is free software; you can redistribute it and/or modify
  6.  it under the terms of the GNU General Public License as published by
  7.  the Free Software Foundation; either version 2 of the License, or
  8.  (at your option) any later version.
  9.  
  10.  This program is distributed in the hope that it will be useful,
  11.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  GNU General Public License for more details.
  14.  
  15.  You should have received a copy of the GNU General Public License
  16.  along with this program; if not, write to the Free Software
  17.  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  ***/
  19.  
  20. #ifndef _Settings_H_
  21. #define _Settings_H_
  22.  
  23. // ** defines & stuff ***************************************************** /*FOLD00*/
  24.  
  25. #include "gotcha.h"
  26. #include "mmio.h"
  27. #include "../../z-stuff/settings/thth_settings.h"
  28.  
  29. #define PSZ_PROFILENAME           "gotcha.ini"
  30.  
  31. // this should be increased every time the format of the proFile changes
  32. #define L_PROFILEVERSION          2
  33.  
  34. #define COUNT_PAGES               4
  35.  
  36. enum { SAVESTYLE_CLIPBOARD, SAVESTYLE_FILE, };
  37. enum {
  38.     BMF_12, BMF_16, BMF_20, BMF_OS13, BMF_OS20, BMF_TIF, BMF_TIFU,
  39.     BMF_TGA, BMF_PCX, BMF_GIF, BMF_JPG, BMF_DIB,
  40.     BMF_INVALID
  41. };
  42. enum { FSS_PROMPT, FSS_NUMFILES, FSS_FORCEFILE, };
  43.  
  44. class ImageFormatInfo
  45. {
  46. public:
  47.     BOOL     available;
  48.     USHORT   type;
  49.     FOURCC   fourcc;
  50.     PSZ      label;
  51.     PSZ      extension;
  52.     PSZ      eaType;
  53. };
  54.  
  55. // ** classdef ************************************************************ /*FOLD00*/
  56.  
  57. class Settings : public ththSettings
  58. {
  59. public:
  60.     Settings (VOID);
  61.  
  62.     BOOL   Dialog (BOOL f = FALSE);
  63.  
  64.     PSZ    QuerySaveFile (VOID) { return QueryString (SEI_SAVEFILE); }
  65.     VOID   SetSaveFile (PSZ psz) { SetString (SEI_SAVEFILE, psz); }
  66.  
  67.     VOID   SetWindowData (SWP *pswp, BOOL f = TRUE);
  68.     VOID   QueryWindowData (SWP *pswp, USHORT us[7], BOOL f = TRUE);
  69.  
  70.     BOOL   HideWindow (VOID) { return QueryFlag (SEI_HIDEWINDOW); }
  71.     VOID   HideWindow (BOOL f) { SetFlag (SEI_HIDEWINDOW, f); }
  72.  
  73.     BOOL   DelayedCapture (VOID) { return QueryFlag (SEI_DELAYEDCAPTURE); }
  74.     VOID   DelayedCapture (BOOL f) { SetFlag (SEI_DELAYEDCAPTURE, f); }
  75.  
  76.     BYTE   QuerySaveStyle (VOID) { return QueryLong (SEI_SAVESTYLE); }
  77.     VOID   SetSaveStyle (BYTE b) { SetLong (SEI_SAVESTYLE, b); }
  78.  
  79.     BOOL   AutoaddExtension (VOID) { return QueryFlag (SEI_AUTOADDEXTENSION); }
  80.     VOID   AutoaddExtension (BOOL f) { SetFlag (SEI_AUTOADDEXTENSION, f); }
  81.  
  82.     BOOL   ConfirmOverwrite (VOID) { return QueryFlag (SEI_CONFIRMOVERWRITE); }
  83.     VOID   ConfirmOverwrite (BOOL f) { SetFlag (SEI_CONFIRMOVERWRITE, f); }
  84.  
  85.     PSZ    QueryForceSaveFile (VOID) { return QueryString (SEI_FORCESAVEFILE); }
  86.     VOID   SetForceSaveFile (PSZ psz) { SetString (SEI_FORCESAVEFILE, psz); }
  87.  
  88.     BOOL   DelayCountdown (VOID) { return QueryFlag (SEI_DELAYCOUNTDOWN); }
  89.     VOID   DelayCountdown (BOOL f) { SetFlag (SEI_DELAYCOUNTDOWN, f); }
  90.  
  91.     USHORT QueryDelayTime (VOID) { return QueryLong (SEI_DELAYTIME); }
  92.     VOID   SetDelayTime (USHORT us) { SetLong (SEI_DELAYTIME, us); }
  93.  
  94.     BOOL   SnapshotWindow (VOID) { return QueryFlag (SEI_SNAPSHOTWINDOW); }
  95.     VOID   SnapshotWindow (BOOL f) { SetFlag (SEI_SNAPSHOTWINDOW, f); }
  96.  
  97.     BOOL   SSWHide (VOID) { return QueryFlag (SEI_SSWHIDE); }
  98.     VOID   SSWHide (BOOL f) { SetFlag (SEI_SSWHIDE, f); }
  99.  
  100.     BOOL   SSWAlwaysOnTop (VOID) { return QueryFlag (SEI_SSWALWAYSONTOP); }
  101.     VOID   SSWAlwaysOnTop (BOOL f) { SetFlag  (SEI_SSWALWAYSONTOP, f); }
  102.  
  103.     BYTE   QuerySSWCaptureType (VOID) { return QueryLong (SEI_SSWCAPTURETYPE); }
  104.     VOID   SetSSWCaptureType (BYTE b) { SetLong (SEI_SSWCAPTURETYPE, b); }
  105.  
  106.     BOOL   SerialCapture (VOID) { return QueryFlag (SEI_SERIALCAPTURE); }
  107.     VOID   SerialCapture (BOOL f) { SetFlag (SEI_SERIALCAPTURE, f); }
  108.  
  109.     USHORT QuerySerialTime (VOID) { return QueryLong (SEI_SERIALTIME); }
  110.     VOID   SetSerialTime (USHORT us) { SetLong (SEI_SERIALTIME, us); }
  111.  
  112.     BOOL   DoSound (VOID) { return QueryFlag (SEI_DOSOUND); }
  113.     VOID   DoSound (BOOL f) { SetFlag (SEI_DOSOUND, f); }
  114.  
  115.     BYTE   QueryFileFormat (VOID) { return QueryLong (SEI_FILEFORMAT); }
  116.     VOID   SetFileFormat (BYTE b) { SetLong (SEI_FILEFORMAT, b); }
  117.  
  118.     BYTE   QueryFileSaveStyle (VOID) { return QueryLong (SEI_FILESAVESTYLE); }
  119.     VOID   SetFileSaveStyle (BYTE b) { SetLong (SEI_FILESAVESTYLE, b); }
  120.  
  121.     PSZ    QueryNumSaveDir (VOID);
  122.     VOID   SetNumSaveDir (PSZ psz)
  123.     {
  124.         if ((psz[strlen (psz)-1] == '\\') || (psz[strlen (psz)-1] == '/'))
  125.             psz[strlen (psz)-1] = '\0';
  126.         SetString (SEI_NUMSAVEDIR, psz);
  127.     }
  128.  
  129.     VOID   SelectLanguage (VOID);
  130.  
  131.     PSZ    GetFileExtension( SHORT type = BMF_INVALID );
  132.     FOURCC GetFOURCC( SHORT type = BMF_INVALID );
  133.     PSZ    GetFileEAType( SHORT type = BMF_INVALID );
  134.  
  135.     BOOL           IsMMIOAvailable( VOID );
  136.     class thth_MMIO      *GetMMIO( VOID );
  137.  
  138. protected:
  139.     USHORT   FileNotOpenError (VOID);
  140.     USHORT   VersionError (VOID);
  141.  
  142.     BOOL     ReloadResources (PSZ psz);
  143.  
  144.     USHORT   GetLanguages (HWND hwnd);
  145.  
  146. private:
  147.     static MRESULT EXPENTRY
  148.         DialogProcedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  149.     static MRESULT EXPENTRY
  150.         Page1Procedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  151.     static MRESULT EXPENTRY
  152.         Page2Procedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  153.     static MRESULT EXPENTRY
  154.         Page3Procedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  155.     static MRESULT EXPENTRY
  156.         Page4Procedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  157.  
  158.     VOID AdjustButton (HWND hwnd, USHORT id, BOOL f)
  159.     {
  160.         WinSendDlgItemMsg (hwnd, id, BM_SETCHECK,
  161.                            MPFROMLONG (f), MPFROMLONG (0));
  162.     }
  163.  
  164.     VOID AdjustFlag (HWND hwnd, USHORT id, BOOL &f)
  165.     {
  166.         f = BOOL (WinSendDlgItemMsg (hwnd, id, BM_QUERYCHECK, 0, 0));
  167.     }
  168.  
  169.     HWND         hwndPage[COUNT_PAGES];
  170.     static PSZ   pszPageTab[COUNT_PAGES];
  171.     BOOL   fAutoLanguage;
  172.  
  173.     thth_MMIO    *mmio;
  174.  
  175.     HWND   hwndDlg;
  176.  
  177.     static ImageFormatInfo ifi[];
  178. };
  179.  
  180. // ** inline funcs ******************************************************** /*FOLD00*/
  181.  
  182. inline VOID Settings :: SetWindowData (SWP *pswp, BOOL f = TRUE)
  183. {
  184.     // FIXME puke, yukk, choke! get this flag thing away! do it better!
  185.     // FIXME what is with US?
  186.     if (f)
  187.         SetBinary(SEI_SWPSSW, PVOID(pswp), sizeof(SWP));
  188.     else
  189.         SetBinary(SEI_SWP, PVOID(pswp), sizeof(SWP));
  190. }
  191.  
  192. inline BOOL Settings :: IsMMIOAvailable( VOID )
  193. {
  194.     if( mmio ) return TRUE;
  195.     return FALSE;
  196. }
  197.  
  198. inline thth_MMIO *Settings :: GetMMIO( VOID ) { return mmio; }
  199.  
  200. // ************************************************************************
  201. #endif
  202.