My Project
BmpFile2.h
Go to the documentation of this file.
1 /* Character Code Encoding: "WHITE SQUARE" is □ */
2 #ifdef __cplusplus
3  extern "C" { /* Start of C Symbol */
4 #endif
5 
6 
7 
19 /*[ARGB8888Type]*/
20 #define ARGB8888Type ARGB8888Type
23  uint32_t Value; /* CPU Endian. Not frame buffer endian */
24  struct {
25  #if BYTE_ENDIAN == BYTE_LITTLE_ENDIAN
26  uint8_t Blue; /* Blue is Value & 0x000000FF */
27  uint8_t Green;
28  uint8_t Red;
29  uint8_t Alpha;
30  #else
31  uint8_t Alpha;
32  uint8_t Red;
33  uint8_t Green;
34  uint8_t Blue; /* Blue is Value & 0x000000FF */
35  #endif
36  } u;
37 };
38 
39 
40 
52 /*[XRGB8888Type]*/
53 #define XRGB8888Type XRGB8888Type
56  uint32_t Value; /* CPU Endian[X8|R8|G8|B8]. Not frame buffer endian */
57  struct {
58  #if BYTE_ENDIAN == BYTE_LITTLE_ENDIAN
59  uint8_t Blue; /* offsetof == 0, Blue is Value & 0x000000FF */
60  uint8_t Green; /* offsetof == 1 */
61  uint8_t Red; /* offsetof == 2 */
62  uint8_t X; /* offsetof == 3, zero */
63  #elif BYTE_ENDIAN == BYTE_BIG_ENDIAN
64  uint8_t X; /* offsetof == 0, zero */
65  uint8_t Red; /* offsetof == 1 */
66  uint8_t Green; /* offsetof == 2 */
67  uint8_t Blue; /* offsetof == 3, Blue is Value & 0x000000FF */
68  #else
69  #error
70  #endif
71  } u;
72 };
73 
74 
75 
76 /***********************************************************************
77  <<< [ARGB8888Type_to_XRGB8888Type] >>>
78 ************************************************************************/
80 {
81  XRGB8888Type ret;
82 
83  ret.Value = color.Value;
84 
85  return ret;
86 }
87 
88 
89 
94 /*[BmpFile2Class]*/
97  BITMAPINFOHEADER Info;
98 
99  // start of enabled if Info.biCompression == BI_BITFIELDS
100  uint32_t RedMask; // These must be just after Info member variable
101  uint32_t GreenMask;
102  uint32_t BlueMask;
103  uint32_t AlphaMask;
104  // end
105 
106  uint8_t* Pixels;
107  unsigned Stride;
109 
110  uint32_t* Palette;
111  int_fast32_t PaletteColorCount;
112 };
113 
114 typedef struct _RGB888Type RGB888Type;
115 struct _RGB888Type {
116  uint8_t Blue;
117  uint8_t Green;
118  uint8_t Red;
119 };
120 
122 errnum_t BmpFile2Class_init( BmpFile2Class* self );
123 errnum_t BmpFile2Class_loadBMP( BmpFile2Class* self, const TCHAR* Path );
124 errnum_t BmpFile2Class_saveBMP( BmpFile2Class* self, const TCHAR* Path );
125 errnum_t BmpFile2Class_finish( BmpFile2Class* self, int e );
126 
127 
128 /*[BmpFile2Class_initConst]*/
130 {
131  self->Pixels = NULL;
132  self->Palette = NULL;
133 }
134 
135 /*[BmpFile2Class_init]*/
136 inline errnum_t BmpFile2Class_init( BmpFile2Class* self )
137 {
138  self->Pixels = NULL;
139  self->Alignment_bfOffBits = 1;
140  self->Palette = NULL;
141  return 0;
142 }
143 
144 
145 
146 errnum_t BmpFile2Class_loadRawRGB565( BmpFile2Class* self, TCHAR* Path, int Stride );
147 errnum_t BmpFile2Class_loadRawARGB8888( BmpFile2Class* self, TCHAR* Path, int Stride );
148 errnum_t BmpFile2Class_loadRawARGB1555( BmpFile2Class* self, TCHAR* Path, int Stride );
149 errnum_t BmpFile2Class_loadRawARGB4444( BmpFile2Class* self, TCHAR* Path, int Stride );
150 
151 
152 errnum_t BmpFile2Class_loadPNG( BmpFile2Class* self, const TCHAR* Path );
153 
154 errnum_t BmpFile2Class_loadJPEG( BmpFile2Class* self, const TCHAR* Path );
155 
156 errnum_t BmpFile2Class_addAlphaChannel( BmpFile2Class* self, uint8_t AlphaValue );
157 
158 inline errnum_t BmpFile2Class_setAlignmentBMP_bfOffBits( BmpFile2Class* self, int AlignSize )
159  { self->Alignment_bfOffBits = AlignSize; return 0; }
160 
162 
164 
166 
168 
170 
171 errnum_t BmpFile2Class_trimming( BmpFile2Class* self, int LeftX, int TopY, int Width, int Height );
172 
173 #if __cplusplus
174  } /* End of C Symbol */
175 #endif
176 
177 
unsigned Stride
Definition: BmpFile2.h:107
errnum_t BmpFile2Class_init(BmpFile2Class *self)
Definition: BmpFile2.h:136
struct _XRGB8888Type::@1 u
Definition: BmpFile2.h:55
uint8_t Green
Definition: BmpFile2.h:117
errnum_t BmpFile2Class_saveBMP(BmpFile2Class *self, const TCHAR *Path)
BMP 形式のファイルを書き込みます。
Definition: BmpFile2.c:107
errnum_t BmpFile2Class_loadPNG(BmpFile2Class *self, const TCHAR *Path)
Definition: BmpFile2.c:382
struct _ARGB8888Type::@0 u
errnum_t BmpFile2Class_loadRawRGB565(BmpFile2Class *self, TCHAR *Path, int Stride)
Definition: BmpFile2.c:275
uint8_t Blue
Definition: BmpFile2.h:59
errnum_t BmpFile2Class_convertToARGB4444Format(BmpFile2Class *self)
Definition: BmpFile2.c:889
uint32_t BlueMask
Definition: BmpFile2.h:102
uint32_t GreenMask
Definition: BmpFile2.h:101
uint8_t * Pixels
Definition: BmpFile2.h:106
errnum_t BmpFile2Class_loadRawARGB4444(BmpFile2Class *self, TCHAR *Path, int Stride)
Definition: BmpFile2.c:364
errnum_t BmpFile2Class_convertToARGB1555Format(BmpFile2Class *self)
Definition: BmpFile2.c:774
uint8_t Red
Definition: BmpFile2.h:118
errnum_t BmpFile2Class_convertToA4Format(BmpFile2Class *self)
Definition: BmpFile2.c:899
XRGB8888Type ARGB8888Type_to_XRGB8888Type(ARGB8888Type color)
Definition: BmpFile2.h:79
errnum_t BmpFile2Class_loadBMP(BmpFile2Class *self, const TCHAR *Path)
BMP 形式のファイルを読み込みます。
Definition: BmpFile2.c:20
errnum_t BmpFile2Class_loadRawARGB1555(BmpFile2Class *self, TCHAR *Path, int Stride)
Definition: BmpFile2.c:346
uint32_t AlphaMask
Definition: BmpFile2.h:103
uint8_t Alpha
Definition: BmpFile2.h:29
Definition: BmpFile2.h:96
unsigned Alignment_bfOffBits
Definition: BmpFile2.h:108
Definition: BmpFile2.h:22
uint8_t Blue
Definition: BmpFile2.h:116
errnum_t BmpFile2Class_convertToA1Format(BmpFile2Class *self)
Definition: BmpFile2.c:969
Definition: BmpFile2.h:115
uint32_t RedMask
Definition: BmpFile2.h:100
errnum_t BmpFile2Class_trimming(BmpFile2Class *self, int LeftX, int TopY, int Width, int Height)
Definition: BmpFile2.c:1053
uint8_t X
Definition: BmpFile2.h:62
errnum_t BmpFile2Class_convertToRGB565Format(BmpFile2Class *self)
Definition: BmpFile2.c:691
uint32_t * Palette
Definition: BmpFile2.h:110
uint8_t Blue
Definition: BmpFile2.h:26
errnum_t BmpFile2Class_setAlignmentBMP_bfOffBits(BmpFile2Class *self, int AlignSize)
Definition: BmpFile2.h:158
void BmpFile2Class_initConst(BmpFile2Class *self)
Definition: BmpFile2.h:129
uint8_t Green
Definition: BmpFile2.h:60
uint32_t Value
Definition: BmpFile2.h:23
uint32_t Value
Definition: BmpFile2.h:56
errnum_t BmpFile2Class_loadRawARGB8888(BmpFile2Class *self, TCHAR *Path, int Stride)
Definition: BmpFile2.c:293
errnum_t BmpFile2Class_finish(BmpFile2Class *self, int e)
errnum_t BmpFile2Class_loadJPEG(BmpFile2Class *self, const TCHAR *Path)
Definition: BmpFile2.c:492
BITMAPINFOHEADER Info
Definition: BmpFile2.h:97
uint8_t Green
Definition: BmpFile2.h:27
uint8_t Red
Definition: BmpFile2.h:61
int_fast32_t PaletteColorCount
Definition: BmpFile2.h:111
uint8_t Red
Definition: BmpFile2.h:28
errnum_t BmpFile2Class_addAlphaChannel(BmpFile2Class *self, uint8_t AlphaValue)
Definition: BmpFile2.c:627