00001 /****************************************************************************** 00002 * \file mi32/mg2rastc.h 00003 * \brief A base colormapped raster-based MGD::DEVICE. 00004 * 00005 * \if NODOC 00006 * $Id: mg2rastc.h_v 1.10 2011/11/02 14:01:55 mju Exp $ 00007 * 00008 * $Log: mg2rastc.h_v $ 00009 * Revision 1.10 2011/11/02 14:01:55 mju 00010 * Remove redundant hdr. 00011 * 00012 * Revision 1.9 2007/01/19 16:09:48 mju 00013 * Use color_array. 00014 * 00015 * Revision 1.8 2006/06/27 20:15:33 scowan 00016 * Changed create method signature to take a non-const objitem. 00017 * 00018 * Revision 1.7 2005/01/26 18:46:19 mju 00019 * Move colormap member here and add virtual method to get. 00020 * 00021 * Revision 1.2 2003/05/19 20:50:22 dwilliss 00022 * Added COLORPOLICY 00023 * 00024 * Revision 1.1 2003/05/19 17:48:58 dwilliss 00025 * Initial revision 00026 * \endif 00027 */ 00028 00029 #ifndef INC_MI32_MG2RASTC_H 00030 #define INC_MI32_MG2RASTC_H 00031 00032 #ifndef INC_MD2RAST8_H 00033 #include <mi32/mg2rast8.h> 00034 #endif 00035 00036 namespace MGD { 00037 00038 00039 class CONTEXT_RASTER_COLORMAPPED; 00040 00041 class DEVICE_RASTER_COLORMAPPED: public DEVICE_RASTER_GRAY8 { 00042 00043 public: 00044 00046 enum COLORPOLICY { 00047 COLORPOLICY_UseClosest = 0, 00048 COLORPOLICY_AddColor = 1, 00049 COLORPOLICY_Transparent = 2, 00050 COLORPOLICY_Fallback = 3, 00051 }; 00052 00055 DEVICE_RASTER_COLORMAPPED(); 00056 00058 virtual ~DEVICE_RASTER_COLORMAPPED(); 00059 00060 // (Note: copy constructor private and unimplemented. Can't copy one.) 00061 00062 00065 ERRVALUE Create ( 00066 RVC::OBJITEM& ObjItem, 00067 RVC::RASTER::MAKEPARMS& MakeParms, 00068 const COLOR_ARRAY& cmap, 00069 const char* Source = 0 00070 ); 00071 00072 ERRVALUE Open ( 00073 const RVC::OBJITEM& ObjItem 00074 ); 00075 00076 void SetColorPolicy ( 00077 COLORPOLICY policy 00078 ) { m_ColorPolicy = policy; } 00079 00081 void SetFallbackPixel ( 00082 PIXEL pixel 00083 ) { m_FallbackPixel = pixel; } 00084 00085 private: 00086 #ifndef GENERATING_DOXYGEN_OUTPUT 00087 friend class CONTEXT_RASTER_COLORMAPPED; 00088 00090 DEVICE_RASTER_COLORMAPPED(const DEVICE_RASTER_COLORMAPPED&); 00091 00092 COLOR_ARRAY m_ColorMap; 00093 bool m_bColorMapDirty; 00094 COLOR m_LastColor; 00095 PIXEL m_LastPixel; 00096 PIXEL m_FallbackPixel; 00097 COLORPOLICY m_ColorPolicy; 00098 #endif // GENERATING_DOXYGEN_OUTPUT 00099 00105 virtual CONTEXT* v_CreateContext ( 00106 ); 00107 00108 virtual const COLOR_ARRAY* v_GetColorMap ( 00109 ) const; 00110 00111 virtual PIXEL v_GetColorPixel ( 00112 const COLOR& color 00113 ); 00114 00115 virtual COLORSPACE v_GetColorSpace ( 00116 ) const { 00118 return (COLORSPACE_R8_G8_B8); 00119 } 00120 00121 virtual void v_GetPixelColor ( 00122 PIXEL pixel, 00123 COLOR& color 00124 ) const; 00125 00126 virtual ERRVALUE v_Flush(); 00127 }; 00128 00129 class CONTEXT_RASTER_COLORMAPPED : public CONTEXT_RASTER_GRAY8 { 00130 public: 00131 // Note, default Constructor is protected 00132 00133 virtual ~CONTEXT_RASTER_COLORMAPPED(); 00134 00135 00136 protected: 00138 CONTEXT_RASTER_COLORMAPPED ( 00139 DEVICE_RASTER_COLORMAPPED* dev 00140 ); 00141 00142 DEVICE_RASTER_COLORMAPPED* m_DevRastC; 00143 00144 virtual void v_UpdateColor(); 00145 00146 private: 00147 #ifndef GENERATING_DOXYGEN_OUTPUT 00149 CONTEXT_RASTER_COLORMAPPED(const CONTEXT_RASTER_COLORMAPPED&); 00150 00151 friend class MGD::DEVICE_RASTER_COLORMAPPED; // Only DEVICE_RASTER_COLORMAPPED::CreateContext() can call our constructor 00152 #endif // GENERATING_DOXYGEN_OUTPUT 00153 00154 }; 00155 00156 00157 } // End of namespace MGD 00158 00159 00160 #endif // INC_MI32_MG2RAST_H 00161
1.6.1