/* Autor: Leandro Bernsmuller
Declara gr.cpp */



class CGr {

public:

   CGr ();

   // possui a definicao de um bitmap exibivel numa janela
   struct tagInfoBmp {
      LPDIRECTDRAWSURFACE lpDDSBmp;   // o que exibir
      char szNome [ MAX_STR ];        // nome do bmp no arquivo de recursos
      float fPropXIni;        // Proporcoes para localizacao
      float fPropXFim;        // do bitmap na janela, relativo
      float fPropYIni;        // aos limites direito/esquerdo,
      float fPropYFim;        // superior/inferior.
   };
   
   // objetos do DD
   LPDIRECTDRAW        m_lpDD;                   // DirectDraw
   LPDIRECTDRAWSURFACE m_lpDDSOnde;              // onde exibir
   LPDIRECTDRAWCLIPPER m_lpClipper;              // faz recorte
   LPDIRECTDRAWPALETTE m_lpDDPal;                // palette

   // dados sobre os bitmaps
   tagInfoBmp          m_astBmps [ MAX_BMPS ];   // o que exibir
   DWORD               m_dwNumBmps;              // numero de bmps carregados

   // multi-monitor: suporte a varios monitores conectados ao mesmo sistema
   int  m_nDisp;
   char m_szNomeDisp [ 128 ];
   RECT m_stRectDisp;
   
   // janela
   HWND m_hWnd;                           // janela de saida

   // manipulacao do DD
   BOOL mCria ( HWND hWnd );
   BOOL mReCria ();
   void mDestroi ( BOOL bFimDD );
   BOOL mAborta ();

   // coordenadas
   void mTransformaCoordDest ( RECT& stRect );

   // bitmaps
   int  mIncluiBmp ( char* szNome, float fXIni, float fYIni, float fXFim, float fYFim );
   void mRecarregaBmps ();
   BOOL mTestaPontoSobreBmp ( int nNdxBmp, float fNX, float fNY );
   void mExibe ( int nNdxBmp = -1 );
   void mAlteraNomeBmp ( int nNdxBmp, char* szNome );
};
