00001 00002 // Name: variantimage.h 00003 // Purpose: A variant type supporting an image. 00004 // Author: Julian Smart 00005 // Modified by: 00006 // Created: 2006-05-11 00007 // RCS-ID: $$ 00008 // Copyright: (c) Julian Smart 00009 // Licence: New BSD License 00011 00012 #ifndef _WX_VARIANTIMAGE_H_ 00013 #define _WX_VARIANTIMAGE_H_ 00014 00015 #include "wx/defs.h" 00016 #include "wx/variant.h" 00017 #include "wx/image.h" 00018 00019 #include "variantutils/variantref.h" 00020 00021 #include "imageutils/imageblock.h" 00022 00027 class wxPictureVariantData: public wxClonableVariantData 00028 { 00029 DECLARE_DYNAMIC_CLASS(wxPictureVariantData) 00030 public: 00031 00032 // Construction & destruction 00033 00034 wxPictureVariantData() {} 00035 wxPictureVariantData(const wxPictureVariantData& data); 00036 ~wxPictureVariantData() {} 00037 00038 // OVERRIDEABLES 00039 00041 virtual wxVariantData* Clone() { return new wxPictureVariantData(*this); } 00042 virtual bool Eq(wxVariantData& data) const; 00043 virtual bool Write(wxString& str) const; 00044 virtual bool Read(wxString& str); 00045 00046 // What type is it? Return a string name. 00047 virtual wxString GetType() const { return wxT("image"); } 00048 00049 // NEW OPERATIONS 00050 00052 wxImageBlock& GetImageBlock() { return m_imageBlock; } 00053 const wxImageBlock& GetImageBlock() const { return m_imageBlock; } 00054 void SetImageBlock(const wxImageBlock& imageBlock) { m_imageBlock = imageBlock; } 00055 00057 void SetImage(const wxImage& image, int imageType = wxBITMAP_TYPE_JPEG); 00058 00060 const wxImage& GetImage() const { return m_image; } 00061 wxImage& GetImage() { return m_image; } 00062 00064 bool MakeImage(bool force = false); 00065 00066 private: 00067 wxImageBlock m_imageBlock; 00068 wxImage m_image; 00069 }; 00070 00071 #if 0 00072 00078 class wxPictureVariantData: public wxRefCountingVariantData 00079 { 00080 DECLARE_DYNAMIC_CLASS(wxPictureVariantData) 00081 public: 00082 00083 // Construction & destruction 00084 00085 wxPictureVariantData() {}; 00086 ~wxPictureVariantData() {}; 00087 00088 // OVERRIDEABLES 00089 00090 // What type is it? Return a string name. 00091 virtual wxString GetType() const { return wxT("image"); } 00092 00093 // NEW OPERATIONS 00094 00096 wxImageBlock& GetImageBlock(); 00097 const wxImageBlock& GetImageBlock() const; 00098 00100 void SetImage(const wxImage& image, int imageType = wxBITMAP_TYPE_JPEG); 00101 00103 const wxImage& GetImage() const; 00104 wxImage& GetImage(); 00105 00107 bool MakeImage(bool force = false); 00108 00109 virtual wxVariantRefData* CreateVariantRefData() { return new wxVariantPictureRefData(); } 00110 00111 wxVariantPictureRefData* GetImageRefData() const { return (wxVariantPictureRefData*) GetVariantRefData(); } 00112 00113 private: 00114 }; 00115 00116 #endif 00117 00118 // Useful functions 00119 00120 // Is this variant an image? 00121 bool wxIsImageVariant(const wxVariant& variant); 00122 00123 // Get the image data 00124 wxPictureVariantData* wxGetImageVariantData(const wxVariant& variant); 00125 00126 // Create image variant 00127 wxVariant wxCreateImageVariant(const wxString& name = wxEmptyString); 00128 wxVariant wxCreateImageVariant(const wxImage& image, const wxString& name = wxEmptyString); 00129 wxVariant wxCreateImageVariant(const wxImageBlock& imageBlock, const wxString& name = wxEmptyString); 00130 00131 #endif 00132 // _WX_VARIANTIMAGE_H_