home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 July / CMCD0704.ISO / Software / Freeware / Utilitare / VisualBoyAdvance-1.7.2 / src / gtk / screenarea.h < prev    next >
Encoding:
C/C++ Source or Header  |  2004-05-11  |  2.3 KB  |  82 lines

  1. // -*- C++ -*-
  2. // VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator.
  3. // Copyright (C) 1999-2003 Forgotten
  4. // Copyright (C) 2004 Forgotten and the VBA development team
  5.  
  6. // This program is free software; you can redistribute it and/or modify
  7. // it under the terms of the GNU General Public License as published by
  8. // the Free Software Foundation; either version 2, or(at your option)
  9. // any later version.
  10. //
  11. // This program is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. // GNU General Public License for more details.
  15. //
  16. // You should have received a copy of the GNU General Public License
  17. // along with this program; if not, write to the Free Software Foundation,
  18. // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  19.  
  20. #ifndef __VBA_SCREENAREA_H__
  21. #define __VBA_SCREENAREA_H__
  22.  
  23. #include <gtkmm/drawingarea.h>
  24. #include <gdkmm/cursor.h>
  25.  
  26. #ifndef GTKMM20
  27. # include "sigccompat.h"
  28. #endif // ! GTKMM20
  29.  
  30. #include "filters.h"
  31.  
  32. namespace VBA
  33. {
  34.  
  35. class ScreenArea : public Gtk::DrawingArea
  36. {
  37. public:
  38.   ScreenArea(int _iWidth, int _iHeight, int _iScale = 1);
  39.   virtual ~ScreenArea();
  40.  
  41.   void vSetSize(int _iWidth, int _iHeight);
  42.   void vSetScale(int _iScale);
  43.   void vSetFilter2x(EFilter2x _eFilter2x);
  44.   void vSetFilterIB(EFilterIB _eFilterIB);
  45.   void vDrawPixels(u8 * _puiData);
  46.   void vDrawColor(u32 _uiColor); // 0xRRGGBB
  47.  
  48. protected:
  49.   virtual bool on_expose_event(GdkEventExpose * _pstEvent);
  50.   virtual bool on_motion_notify_event(GdkEventMotion * _pstEvent);
  51.   virtual bool on_enter_notify_event(GdkEventCrossing * _pstEvent);
  52.   virtual bool on_leave_notify_event(GdkEventCrossing * _pstEvent);
  53.   virtual bool bOnCursorTimeout();
  54.  
  55. private:
  56.   int      m_iWidth;
  57.   int      m_iHeight;
  58.   int      m_iScale;
  59.   int      m_iAreaWidth;
  60.   int      m_iAreaHeight;
  61.   int      m_iRowStride;
  62.   u32 *    m_puiPixels;
  63.   u8 *     m_puiDelta;
  64.   Filter2x m_vFilter2x;
  65.   FilterIB m_vFilterIB;
  66.  
  67.   bool             m_bShowCursor;
  68.   Gdk::Cursor *    m_poEmptyCursor;
  69.   SigC::Connection m_oCursorSig;
  70.  
  71.   void vUpdateSize();
  72.   void vStartCursorTimeout();
  73.   void vStopCursorTimeout();
  74.   void vHideCursor();
  75.   void vShowCursor();
  76. };
  77.  
  78. } // namespace VBA
  79.  
  80.  
  81. #endif // __VBA_SCREENAREA_H__
  82.