00001 #ifndef __CClip__ 00002 #define __CClip__ 00003 00004 #include "../Graphics/CNativeImage.hpp" 00005 using Exponent::GUI::Graphics::CNativeImage; 00006 00007 // =========================================================================== 00008 00009 namespace Exponent 00010 { 00011 namespace GUI 00012 { 00013 namespace Windowing 00014 { 00032 class CClip 00033 { 00034 public: 00035 00036 // =========================================================================== 00037 00041 CClip(); 00042 00046 virtual ~CClip(); 00047 00048 // =========================================================================== 00049 00056 void initialise(CNativeImage *image, const CRect &area, void *context = NULL); 00057 00061 void uninitialise(); 00062 00063 // =========================================================================== 00064 00069 void getCurrentClipRegion(CRect &area); 00070 00075 const CRect &getCurrentClipRegion() const { return m_currentClip; } 00076 00081 void setCurrentClipRegion(const CRect &area); 00082 00083 // =========================================================================== 00084 00088 void clearClipRegion(); 00089 00094 bool displayIsClipped() { return m_isClipped; } 00095 00096 // =========================================================================== 00097 00098 protected: 00099 00100 // =========================================================================== 00101 00102 bool m_isClipped; 00103 CRect m_area; 00104 CRect m_currentClip; 00105 CNativeImage *m_image; 00106 bool m_initialised; 00108 #ifndef WIN32 00109 00110 CGContextRef m_theContext; 00112 #endif 00113 00114 }; 00115 } 00116 } 00117 } 00118 #endif // End of CClip.hpp