PGF Console  6.21.2
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 }
fipImage * m_image
Definition: CImage.h:59
void SetMaxValue(int maxValue)
Definition: CImage.cpp:319

◆ ~CImage()

CImage::~CImage ( )
virtual

Definition at line 37 of file CImage.cpp.

37  {
38  delete m_image;
39 }
fipImage * m_image
Definition: CImage.h:59

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 }
fipImage * m_image
Definition: CImage.h:59

◆ 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 
59  case ImageModeGrayScale:
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 
75  case ImageModeRGBColor:
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 }
fipImage * m_image
Definition: CImage.h:59
#define ImageModeGray16
Definition: CImage.h:43
#define ImageModeRGBColor
Definition: CImage.h:36
#define ImageModeGrayScale
Definition: CImage.h:34
#define ImageModeBitmap
Definition: CImage.h:33
#define ImageModeIndexedColor
Definition: CImage.h:35
#define ImageModeRGB48
Definition: CImage.h:44
#define ImageModeRGB16
Definition: CImage.h:53
#define ImageModeRGBA
Definition: CImage.h:50

◆ GetBits()

unsigned char * CImage::GetBits ( ) const

Definition at line 97 of file CImage.cpp.

97  {
98  return (unsigned char*)m_image->accessPixels();
99 }
fipImage * m_image
Definition: CImage.h:59

◆ GetBPP()

unsigned char CImage::GetBPP ( ) const

Definition at line 107 of file CImage.cpp.

107  {
108  return (unsigned char)m_image->getBitsPerPixel();
109 }
fipImage * m_image
Definition: CImage.h:59

◆ 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 
259  case ImageModeGrayScale:
261  case ImageModeRGBColor:
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 }
#define ImageModeGray16
Definition: CImage.h:43
#define ImageModeRGBColor
Definition: CImage.h:36
#define ImageModeGrayScale
Definition: CImage.h:34
#define ImageModeBitmap
Definition: CImage.h:33
#define ImageModeIndexedColor
Definition: CImage.h:35
unsigned char GetColorType() const
Definition: CImage.cpp:178
#define ImageModeRGB48
Definition: CImage.h:44
#define ImageModeRGB16
Definition: CImage.h:53
#define ImageModeRGBA
Definition: CImage.h:50

◆ GetChannels()

int CImage::GetChannels ( ) const

Definition at line 276 of file CImage.cpp.

276  {
277  switch(GetColorType()) {
278  case ImageModeBitmap:
279  case ImageModeGrayScale:
280  case ImageModeGray16:
282  return 1;
283 
284  case ImageModeRGB16:
285  case ImageModeRGBColor:
286  case ImageModeRGB48:
287  return 3;
288 
289  case ImageModeRGBA:
290  return 4;
291 
292  default:
293  assert(false);
294  return 0;
295  }
296 }
#define ImageModeGray16
Definition: CImage.h:43
#define ImageModeRGBColor
Definition: CImage.h:36
#define ImageModeGrayScale
Definition: CImage.h:34
#define ImageModeBitmap
Definition: CImage.h:33
#define ImageModeIndexedColor
Definition: CImage.h:35
unsigned char GetColorType() const
Definition: CImage.cpp:178
#define ImageModeRGB48
Definition: CImage.h:44
#define ImageModeRGB16
Definition: CImage.h:53
#define ImageModeRGBA
Definition: CImage.h:50

◆ 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 }
fipImage * m_image
Definition: CImage.h:59

◆ 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:
200  return ImageModeIndexedColor;
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 }
fipImage * m_image
Definition: CImage.h:59
#define ImageModeGray16
Definition: CImage.h:43
#define ImageModeRGBColor
Definition: CImage.h:36
#define ImageModeGrayScale
Definition: CImage.h:34
#define ImageModeBitmap
Definition: CImage.h:33
#define ImageModeIndexedColor
Definition: CImage.h:35
#define ImageModeRGB48
Definition: CImage.h:44
#define ImageModeUnknown
Definition: CImage.h:54
#define ImageModeRGB16
Definition: CImage.h:53
#define ImageModeRGBA
Definition: CImage.h:50

◆ GetHeight()

unsigned int CImage::GetHeight ( ) const

Definition at line 112 of file CImage.cpp.

112  {
113  return m_image->getHeight();
114 }
fipImage * m_image
Definition: CImage.h:59

◆ GetMaxColorTableEntries()

int CImage::GetMaxColorTableEntries ( )

Definition at line 151 of file CImage.cpp.

151  {
152  return m_image->getColorsUsed();
153 }
fipImage * m_image
Definition: CImage.h:59

◆ 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
Definition: PNMPlugin.cpp:122
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 }
fipImage * m_image
Definition: CImage.h:59

◆ GetWidth()

unsigned int CImage::GetWidth ( ) const

Definition at line 117 of file CImage.cpp.

117  {
118  return m_image->getWidth();
119 }
fipImage * m_image
Definition: CImage.h:59

◆ 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 }
fipImage * m_image
Definition: CImage.h:59

◆ IsTransparencySupported()

bool CImage::IsTransparencySupported ( )

Definition at line 139 of file CImage.cpp.

139  {
140  return (m_image->getColorType() == FIC_RGBALPHA);
141 }
fipImage * m_image
Definition: CImage.h:59

◆ 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 }
fipImage * m_image
Definition: CImage.h:59
unsigned char GetColorType() const
Definition: CImage.cpp:178
#define ImageModeRGB16
Definition: CImage.h:53

◆ 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)
Definition: PNMPlugin.cpp:797

◆ 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 }
fipImage * m_image
Definition: CImage.h:59

◆ 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 }
fipImage * m_image
Definition: CImage.h:59

◆ SetMaxValue()

void CImage::SetMaxValue ( int  maxValue)

Definition at line 319 of file CImage.cpp.

319  {
320  s_maxval = maxValue;
321 }
int s_maxval
Definition: PNMPlugin.cpp:122

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: