Home | History | Annotate | Download | only in gdiplus
      1 /*
      2  * gdipluspixelformats.h
      3  *
      4  * GDI+ pixel formats
      5  *
      6  * This file is part of the w32api package.
      7  *
      8  * Contributors:
      9  *   Created by Markus Koenig <markus (at) stber-koenig.de>
     10  *
     11  * THIS SOFTWARE IS NOT COPYRIGHTED
     12  *
     13  * This source code is offered for use in the public domain. You may
     14  * use, modify or distribute it freely.
     15  *
     16  * This code is distributed in the hope that it will be useful but
     17  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
     18  * DISCLAIMED. This includes but is not limited to warranties of
     19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     20  *
     21  */
     22 
     23 #ifndef __GDIPLUS_PIXELFORMATS_H
     24 #define __GDIPLUS_PIXELFORMATS_H
     25 #if __GNUC__ >=3
     26 #pragma GCC system_header
     27 #endif
     28 
     29 typedef DWORD ARGB;
     30 typedef INT PixelFormat;
     31 
     32 #define PixelFormatIndexed ((INT) 0x00010000)
     33 #define PixelFormatGDI ((INT) 0x00020000)
     34 #define PixelFormatAlpha ((INT) 0x00040000)
     35 #define PixelFormatPAlpha ((INT) 0x00080000)
     36 #define PixelFormatExtended ((INT) 0x00100000)
     37 #define PixelFormatCanonical ((INT) 0x00200000)
     38 #define PixelFormatUndefined ((INT) 0)
     39 #define PixelFormatDontCare ((INT) 0)
     40 #define PixelFormat1bppIndexed ((INT) \
     41 	(1 | (1<<8) | PixelFormatIndexed | PixelFormatGDI))
     42 #define PixelFormat4bppIndexed ((INT) \
     43 	(2 | (4<<8) | PixelFormatIndexed | PixelFormatGDI))
     44 #define PixelFormat8bppIndexed ((INT) \
     45 	(3 | (8<<8) | PixelFormatIndexed | PixelFormatGDI))
     46 #define PixelFormat16bppGrayScale ((INT) \
     47 	(4 | (16<<8) | PixelFormatExtended))
     48 #define PixelFormat16bppRGB555 ((INT) \
     49 	(5 | (16<<8) | PixelFormatGDI))
     50 #define PixelFormat16bppRGB565 ((INT) \
     51 	(6 | (16<<8) | PixelFormatGDI))
     52 #define PixelFormat16bppARGB1555 ((INT) \
     53 	(7 | (16<<8) | PixelFormatAlpha | PixelFormatGDI))
     54 #define PixelFormat24bppRGB ((INT) \
     55 	(8 | (24<<8) | PixelFormatGDI))
     56 #define PixelFormat32bppRGB ((INT) \
     57 	(9 | (32<<8) | PixelFormatGDI))
     58 #define PixelFormat32bppARGB ((INT) \
     59 	(10 | (32<<8) | PixelFormatAlpha | PixelFormatGDI | PixelFormatCanonical))
     60 #define PixelFormat32bppPARGB ((INT) \
     61 	(11 | (32<<8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatGDI))
     62 #define PixelFormat48bppRGB ((INT) \
     63 	(12 | (48<<8) | PixelFormatExtended))
     64 #define PixelFormat64bppARGB ((INT) \
     65 	(13 | (64<<8) | PixelFormatAlpha | PixelFormatCanonical | PixelFormatExtended))
     66 #define PixelFormat64bppPARGB ((INT) \
     67 	(14 | (64<<8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatExtended))
     68 #define PixelFormatMax ((INT) 15)
     69 
     70 typedef enum PaletteFlags {
     71 	PaletteFlagsHasAlpha = 1,
     72 	PaletteFlagsGrayScale = 2,
     73 	PaletteFlagsHalftone = 4
     74 } PaletteFlags;
     75 
     76 typedef enum PaletteType {
     77 	PaletteTypeCustom = 0,
     78 	PaletteTypeOptimal = 1,
     79 	PaletteTypeFixedBW = 2,
     80 	PaletteTypeFixedHalftone8 = 3,
     81 	PaletteTypeFixedHalftone27 = 4,
     82 	PaletteTypeFixedHalftone64 = 5,
     83 	PaletteTypeFixedHalftone125 = 6,
     84 	PaletteTypeFixedHalftone216 = 7,
     85 	PaletteTypeFixedHalftone252 = 8,
     86 	PaletteTypeFixedHalftone256 = 9
     87 } PaletteType;
     88 
     89 typedef struct ColorPalette {
     90 	UINT Flags;
     91 	UINT Count;
     92 	ARGB Entries[1];
     93 } ColorPalette;
     94 
     95 static __inline__ UINT GetPixelFormatSize(PixelFormat pixfmt)
     96 {
     97 	return (((UINT) pixfmt) & 0xff00U) >> 8;
     98 }
     99 
    100 static __inline__ BOOL IsAlphaPixelFormat(PixelFormat pixfmt)
    101 {
    102 	return (pixfmt & PixelFormatAlpha) != 0;
    103 }
    104 
    105 static __inline__ BOOL IsCanonicalPixelFormat(PixelFormat pixfmt)
    106 {
    107 	return (pixfmt & PixelFormatCanonical) != 0;
    108 }
    109 
    110 static __inline__ BOOL IsExtendedPixelFormat(PixelFormat pixfmt)
    111 {
    112 	return (pixfmt & PixelFormatExtended) != 0;
    113 }
    114 
    115 static __inline__ BOOL IsIndexedPixelFormat(PixelFormat pixfmt)
    116 {
    117 	return (pixfmt & PixelFormatIndexed) != 0;
    118 }
    119 
    120 #endif /* __GDIPLUS_PIXELFORMATS_H */
    121