home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / graphics / audio / idfedit / globals.h < prev    next >
C/C++ Source or Header  |  1997-10-05  |  4KB  |  165 lines

  1. //************************************************************************
  2. //**
  3. //**  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  4. //**  ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
  5. //**  TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR
  6. //**  A PARTICULAR PURPOSE.
  7. //**
  8. //**  Copyright (C) 1993 - 1997 Microsoft Corporation. All Rights Reserved.
  9. //**
  10. //**  globals.h
  11. //**
  12. //**  DESCRIPTION:
  13. //**
  14. //**
  15. //**  HISTORY:
  16. //**     04/22/93       created.
  17. //**
  18. //************************************************************************
  19.  
  20. #ifndef GLOBALS_H
  21. #define GLOBALS_H
  22.  
  23. #include "drawstr.h"
  24.  
  25. #ifndef NUMELMS
  26.  #define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
  27. #endif
  28.  
  29. #define FCC_RIFF MAKEFOURCC('R','I','F','F')
  30. #define FCC_LIST MAKEFOURCC('L','I','S','T')
  31. #define FCC_IDF  MAKEFOURCC('I','D','F',' ')
  32. #define FCC_MMAP MAKEFOURCC('M','M','A','P')
  33.  
  34. #define FCC_hdr  MAKEFOURCC('h','d','r',' ')
  35. #define FCC_inst MAKEFOURCC('i','n','s','t')
  36. #define FCC_caps MAKEFOURCC('c','a','p','s')
  37. #define FCC_chan MAKEFOURCC('c','h','a','n')
  38. #define FCC_pmap MAKEFOURCC('p','m','a','p')
  39. #define FCC_gkey MAKEFOURCC('g','k','e','y')
  40. #define FCC_dkey MAKEFOURCC('d','k','e','y')
  41.  
  42. #define FCC_key  MAKEFOURCC('k','e','y',' ')
  43. #define FCC_chnl MAKEFOURCC('c','h','n','l')
  44.  
  45. typedef struct _riff {
  46.     DWORD fcc;
  47.     DWORD cb;
  48.     } RIFF, * LPRIFF;
  49.  
  50. typedef struct _rifflist {
  51.     DWORD fccList;
  52.     DWORD cbList;
  53.     DWORD fccType;
  54.     } RIFFLIST, * LPRIFFLIST;
  55.  
  56. #define NEXTRIFF(pRiff) ((LPRIFF)((LPBYTE)((LPRIFF)pRiff+1) + ((LPRIFF)pRiff)->cb + (((LPRIFF)pRiff)->cb & 1)))
  57.  
  58. #define MAX_CHANNEL  16
  59. #define MAX_PATCH    128
  60. #define MAX_KEYMAP   128
  61. #define MAX_NAME     128
  62.  
  63. // iFlags fields
  64. //
  65. #define CHANNEL_IS_DRUM 1
  66. #define CHANNEL_IS_MUTE 2
  67. typedef struct _channel {
  68.     int     iFlags;
  69.     DWORD   cbInit;
  70.     LPDWORD lpInit;
  71.     } CHANNEL, *LPCHANNEL;
  72.  
  73. typedef struct _instrument {
  74.     BOOL    bChanged;
  75.  
  76.     // hdr fields
  77.     //
  78.     DWORD   dwVersion;
  79.     DWORD   dwCreator;
  80.     CHAR    szInstID[MAX_NAME];
  81.  
  82.     // inst fields
  83.     //  
  84.     DWORD   dwManufactID;
  85.     DWORD   dwProductID;
  86.     DWORD   dwRevision;
  87.     TCHAR   szManufact[MAX_NAME];
  88.     TCHAR   szProduct[MAX_NAME];
  89.  
  90.     // caps fields
  91.     //
  92.     DWORD   dwFlags;
  93.     DWORD   dwBasicChannel;
  94.     DWORD   nChannels;
  95.     DWORD   nInstrumentPolyphony;
  96.     DWORD   nChannelPolyphony;
  97.  
  98.     // chnl fields
  99.     //
  100.     CHANNEL aChannel[MAX_CHANNEL];
  101.  
  102.     // pmap fields
  103.     //
  104.     BYTE    aPatch[MAX_PATCH];
  105.  
  106.     // key fields
  107.     //
  108.     BYTE    aGenKeymap[MAX_KEYMAP];
  109.     BYTE    aDrumKeymap[MAX_KEYMAP];
  110.  
  111.     } INSTRUMENT, *LPINSTRUMENT;
  112.  
  113.  
  114. typedef struct _idf_header {
  115.    TCHAR  szFile[MAX_PATH];
  116.    BOOL   bChanged;
  117.  
  118.    HANDLE hEditHeap; // heap used for edit'ed copies of IDF data
  119.  
  120.    HWND   hWndHead;
  121.    HWND   hWndTree;
  122.  
  123.    POINT  ptClient;
  124.    SIZE   sClient;
  125.    UINT   cxTree; // width of tree in pixels
  126.  
  127.    HWND   hWndInstrument;
  128.  
  129.    BOOL   bReadOnly;
  130.    HANDLE hFile;
  131.    HANDLE hSection;
  132.    LPBYTE pFileBase;
  133.    DWORD  cbFile;
  134.  
  135.    TCHAR  szTreeLabel[32];
  136.    TCHAR  szViewLabel[32];
  137.  
  138.    INSTRUMENT instrum; // currently displayed instrument
  139.    VIEWINIT   vi;   // instrument view info
  140.    struct _instrum_info * piSelect; // currently selected instrument
  141.    LPINSTRUMENT pInstrumSelect; // currently selecte instrument data
  142.  
  143.    UINT   nInstrum;
  144.    struct _instrum_info {
  145.       HWND         hWnd;
  146.       LPINSTRUMENT pInstrum;
  147.       LPRIFFLIST   pList;
  148.       } ai[128];
  149.  
  150.    } IDFHEAD, *LPIDFHEAD;
  151.  
  152. struct _globalstate {
  153.    TCHAR        szDefFile[MAX_PATH];
  154.    LPIDFHEAD    pIDF;
  155.    IDFHEAD      idf;
  156.    };
  157.  
  158. #ifdef DECLARE_VARS
  159.  struct _globalstate gs = {0};
  160. #else
  161.  extern struct _globalstate gs;
  162. #endif
  163.  
  164. #endif // GLOBALS_H
  165.