PGF Console 6.21.2
Loading...
Searching...
No Matches
CImage Class Reference

#include <CImage.h>

Public Member Functions

 CImage ()
 
virtual ~CImage ()
 
bool Create (int width, int height, int bpp)
 
bool Create (int width, int height, unsigned char type)
 
unsigned char * GetBits () const
 
int GetPitch () const
 
unsigned char GetBPP () const
 
unsigned int GetHeight () const
 
unsigned int GetWidth () const
 
bool Save (const char *dest)
 
bool Load (const char *source)
 
bool IsTransparencySupported ()
 
bool IsIndexed ()
 
int GetMaxColorTableEntries ()
 
void GetColorTable (int firstColor, int numColors, void *prgbColors)
 
void SetColorTable (int firstColor, int numColors, const void *prgbColors)
 
unsigned char GetColorType () const
 
int GetChannelDepth () const
 
int GetChannels () const
 
void SetMaxValue (int maxValue)
 
int GetMaxValue () const
 

Static Public Member Functions

static void RegisterPNM ()
 

Private Attributes

fipImage * m_image
 

Detailed Description

Definition at line 58 of file CImage.h.

Constructor & Destructor Documentation

◆ CImage()

CImage::CImage ( )

Definition at line 28 of file CImage.cpp.

28 {
29 m_image = new fipImage();
30
31#ifdef __PNMEXSUPPORT__
32 SetMaxValue(0);
33#endif
34}
void SetMaxValue(int maxValue)
Definition CImage.cpp:319
fipImage * m_image
Definition CImage.h:59

◆ ~CImage()

CImage::~CImage ( )
virtual

Definition at line 37 of file CImage.cpp.

37 {
38 delete m_image;
39}

Member Function Documentation

◆ Create() [1/2]

bool CImage::Create ( int width,
int height,
int bpp )

Definition at line 43 of file CImage.cpp.

43 {
44 return TRUE == m_image->setSize(FIT_BITMAP, (WORD)width, (WORD)height, (WORD)bpp);
45}

◆ Create() [2/2]

bool CImage::Create ( int width,
int height,
unsigned char type )

Definition at line 49 of file CImage.cpp.

49 {
50 FREE_IMAGE_TYPE FItype;
51 int bpp;
52 switch (type) {
53 case ImageModeBitmap:
54 FItype = FIT_BITMAP;
55 bpp = 1;
56 break;
57
60 FItype = FIT_BITMAP;
61 bpp = 8; // only 8-bit is supported
62 break;
63
64 case ImageModeGray16:
65 FItype = FIT_UINT16;
66 bpp = 16;
67 break;
68
69 case ImageModeRGB16:
70 FItype = FIT_BITMAP;
71 bpp = 16;
72 // RGB565 image needs RGB mask
73 return TRUE == m_image->setSize(FItype, (WORD)width, (WORD)height, (WORD)bpp, FI16_565_RED_MASK, FI16_565_GREEN_MASK, FI16_565_BLUE_MASK);
74
76 FItype = FIT_BITMAP;
77 bpp = 24;
78 break;
79
80 case ImageModeRGB48:
81 FItype = FIT_RGB16;
82 bpp = 48;
83 break;
84
85 case ImageModeRGBA:
86 FItype = FIT_BITMAP;
87 bpp = 32;
88 break;
89
90 default:
91 return false;
92 }
93 return TRUE == m_image->setSize(FItype, (WORD)width, (WORD)height, (WORD)bpp);
94}
#define ImageModeRGBColor
Definition CImage.h:36
#define ImageModeBitmap
Definition CImage.h:33
#define ImageModeRGB16
Definition CImage.h:53
#define ImageModeRGBA
Definition CImage.h:50
#define ImageModeRGB48
Definition CImage.h:44
#define ImageModeGrayScale
Definition CImage.h:34
#define ImageModeGray16
Definition CImage.h:43
#define ImageModeIndexedColor
Definition CImage.h:35

◆ GetBits()

unsigned char * CImage::GetBits ( ) const

Definition at line 97 of file CImage.cpp.

97 {
98 return (unsigned char*)m_image->accessPixels();
99}

◆ GetBPP()

unsigned char CImage::GetBPP ( ) const

Definition at line 107 of file CImage.cpp.

107 {
108 return (unsigned char)m_image->getBitsPerPixel();
109}

◆ GetChannelDepth()

int CImage::GetChannelDepth ( ) const

Definition at line 250 of file CImage.cpp.

250 {
251 switch(GetColorType()) {
252 case ImageModeBitmap:
253 return 1;
254
255 case ImageModeRGB16:
256 // it's actually RGB-565, but returning 5 is ok
257 return 5;
258
262 case ImageModeRGBA:
263 return 8;
264
265 case ImageModeGray16:
266 case ImageModeRGB48:
267 return 16;
268
269 default:
270 assert(false);
271 return 0;
272 }
273}
unsigned char GetColorType() const
Definition CImage.cpp:178

◆ GetChannels()

int CImage::GetChannels ( ) const

Definition at line 276 of file CImage.cpp.

276 {
277 switch(GetColorType()) {
278 case ImageModeBitmap:
280 case ImageModeGray16:
282 return 1;
283
284 case ImageModeRGB16:
286 case ImageModeRGB48:
287 return 3;
288
289 case ImageModeRGBA:
290 return 4;
291
292 default:
293 assert(false);
294 return 0;
295 }
296}

◆ GetColorTable()

void CImage::GetColorTable ( int firstColor,
int numColors,
void * prgbColors )

Definition at line 156 of file CImage.cpp.

156 {
157 RGBQUAD* palette = m_image->getPalette();
158 int max = firstColor + numColors;
159 // ugly hack but necessary due to conflict between PGFplatform.h and FreeImage.h
160 RGBQUAD* target = (RGBQUAD*)prgbColors;
161 for (int i = firstColor; i < max; ++i) {
162 target[i] = palette[i];
163 }
164}

◆ GetColorType()

unsigned char CImage::GetColorType ( ) const

Definition at line 178 of file CImage.cpp.

178 {
179 switch (m_image->getImageType()) {
180 case FIT_BITMAP:
181 // further analysis necessary
182 switch (m_image->getColorType()) {
183 case FIC_MINISBLACK:
184 case FIC_MINISWHITE:
185 switch (m_image->getBitsPerPixel()) {
186 case 1:
187 return ImageModeBitmap;
188
189 case 8:
190 return ImageModeGrayScale;
191
192 case 16:
193 return ImageModeGray16;
194
195 default:
196 return ImageModeUnknown;
197 }
198
199 case FIC_PALETTE:
201
202 case FIC_RGB:
203 switch (m_image->getBitsPerPixel()) {
204 case 16:
205 return ImageModeRGB16;
206
207 case 24:
208 case 32:
209 return ImageModeRGBColor;
210
211 case 48:
212 case 64:
213 return ImageModeRGB48;
214
215 default:
216 return ImageModeUnknown;
217 }
218 break;
219
220 case FIC_RGBALPHA:
221 switch (m_image->getBitsPerPixel()) {
222 case 32:
223 return ImageModeRGBA;
224
225 default:
226 return ImageModeUnknown;
227 }
228 break;
229
230 default:
231 return ImageModeUnknown;
232 }
233 break;
234
235 case FIT_UINT16:
236 if (m_image->getColorType() == FIC_RGB)
237 return ImageModeRGB16;
238 else
239 return ImageModeGray16;
240
241 case FIT_RGB16:
242 return ImageModeRGB48;
243
244 default:
245 return ImageModeUnknown;
246 }
247}
#define ImageModeUnknown
Definition CImage.h:54

◆ GetHeight()

unsigned int CImage::GetHeight ( ) const

Definition at line 112 of file CImage.cpp.

112 {
113 return m_image->getHeight();
114}

◆ GetMaxColorTableEntries()

int CImage::GetMaxColorTableEntries ( )

Definition at line 151 of file CImage.cpp.

151 {
152 return m_image->getColorsUsed();
153}

◆ GetMaxValue()

int CImage::GetMaxValue ( ) const

Definition at line 323 of file CImage.cpp.

323 {
324 return (s_maxval > 0) ? s_maxval : ((1 << GetChannelDepth()) - 1);
325}
int s_maxval
int GetChannelDepth() const
Definition CImage.cpp:250

◆ GetPitch()

int CImage::GetPitch ( ) const

Definition at line 102 of file CImage.cpp.

102 {
103 return m_image->getScanWidth();
104}

◆ GetWidth()

unsigned int CImage::GetWidth ( ) const

Definition at line 117 of file CImage.cpp.

117 {
118 return m_image->getWidth();
119}

◆ IsIndexed()

bool CImage::IsIndexed ( )

Definition at line 144 of file CImage.cpp.

144 {
145 return ((m_image->getColorType() == FIC_PALETTE) ||
146 (m_image->getColorType() == FIC_MINISBLACK) ||
147 (m_image->getColorType() == FIC_MINISWHITE));
148}

◆ IsTransparencySupported()

bool CImage::IsTransparencySupported ( )

Definition at line 139 of file CImage.cpp.

139 {
140 return (m_image->getColorType() == FIC_RGBALPHA);
141}

◆ Load()

bool CImage::Load ( const char * source)

Definition at line 127 of file CImage.cpp.

127 {
128 if (m_image->load(source, 0)) {
129 if (GetColorType() == ImageModeRGB16) {
130 // force RGB-565 for 16-bit images since PGF does not support RGB-555
131 m_image->convertTo16Bits565();
132 }
133 return true;
134 }
135 return false;
136}

◆ RegisterPNM()

void CImage::RegisterPNM ( )
static

Definition at line 303 of file CImage.cpp.

303 {
304 FREE_IMAGE_FORMAT fif = FreeImage_RegisterLocalPlugin(InitPNM);
305 // disable original pnm plugin
306 FreeImage_SetPluginEnabled(FIF_PBMRAW, FALSE);
307 FreeImage_SetPluginEnabled(FIF_PBM, FALSE);
308 FreeImage_SetPluginEnabled(FIF_PGMRAW, FALSE);
309 FreeImage_SetPluginEnabled(FIF_PGM, FALSE);
310 FreeImage_SetPluginEnabled(FIF_PPMRAW, FALSE);
311 FreeImage_SetPluginEnabled(FIF_PPM, FALSE);
312 // enable new pnm plugin
313 FreeImage_SetPluginEnabled(fif, TRUE);
314}
void DLL_CALLCONV InitPNM(Plugin *plugin, int format_id)

◆ Save()

bool CImage::Save ( const char * dest)

Definition at line 122 of file CImage.cpp.

122 {
123 return TRUE == m_image->save(dest, 0);
124}

◆ SetColorTable()

void CImage::SetColorTable ( int firstColor,
int numColors,
const void * prgbColors )

Definition at line 167 of file CImage.cpp.

167 {
168 RGBQUAD* palette = m_image->getPalette();
169 int max = firstColor + numColors;
170 // ugly hack but necessary due to conflict between PGFplatform.h and FreeImage.h
171 RGBQUAD* source = (RGBQUAD*)prgbColors;
172 for (int i = firstColor; i < max; ++i) {
173 palette[i] = source[i];
174 }
175}

◆ SetMaxValue()

void CImage::SetMaxValue ( int maxValue)

Definition at line 319 of file CImage.cpp.

319 {
320 s_maxval = maxValue;
321}

Member Data Documentation

◆ m_image

fipImage* CImage::m_image
private

Definition at line 59 of file CImage.h.


The documentation for this class was generated from the following files: