1# -*- coding: utf-8 -*-
2
3import sys
4
5import ctypes as C
6
7#Functions list that now acutally wrap. The third value are the return
8#type, if it exists, or if I'm able to translate from C code :)
9
10if sys.version_info[0] > 2:
11    import FreeImagePy.constants as CO
12else:
13    import constants as CO
14
15FUNCTION_LIST = (
16
17    #General funtions
18    ('FreeImage_Initialise',            '@4'),
19    ('FreeImage_DeInitialise',          '@0'),
20    ('FreeImage_GetVersion',            '@0', None, C.c_char_p),
21    ('FreeImage_GetCopyrightMessage',   '@0', None, C.c_char_p),
22    ('FreeImage_SetOutputMessage',      '@4'),
23
24    #Bitmap management functions
25    ('FreeImage_Allocate',      '@24', CO.COL_1TO32),
26    ('FreeImage_AllocateT',     '@28'),
27    ('FreeImage_Load',          '@12'),
28    ('FreeImage_LoadU',         '@12'),
29    ('FreeImage_LoadFromHandle','@16'),
30    ('FreeImage_Save',          '@16'),
31    ('FreeImage_SaveU',         '@16'),
32    ('FreeImage_SaveToHandle',  '@20'),
33    ('FreeImage_Clone',         '@4'),
34    ('FreeImage_Unload',        '@4'),
35
36    #Bitmap information
37    ('FreeImage_GetImageType',          '@4'),
38    ('FreeImage_GetColorsUsed',         '@4', CO.COL_1TO32 ),
39    ('FreeImage_GetBPP',                '@4'),
40    ('FreeImage_GetWidth',              '@4'),
41    ('FreeImage_GetHeight',             '@4'),
42    ('FreeImage_GetLine',               '@4'),
43    ('FreeImage_GetPitch',              '@4'),
44    ('FreeImage_GetDIBSize',            '@4'),
45    ('FreeImage_GetPalette',            '@4', CO.COL_1TO32,
46        C.POINTER(CO.RGBQUAD) ),
47    ('FreeImage_GetDotsPerMeterX',      '@4'),
48    ('FreeImage_GetDotsPerMeterY',      '@4'),
49    ('FreeImage_SetDotsPerMeterX',      '@8'),
50    ('FreeImage_SetDotsPerMeterY',      '@8'),
51    ('FreeImage_GetInfoHeader',         '@4', CO.COL_1TO32,
52        C.POINTER(CO.PBITMAPINFOHEADER)),
53    ('FreeImage_GetColorType',          '@4', CO.COL_1TO32 ),
54    ('FreeImage_GetRedMask',            '@4', CO.COL_1TO32 ),
55    ('FreeImage_GetGreenMask',          '@4', CO.COL_1TO32 ),
56    ('FreeImage_GetBlueMask',           '@4', CO.COL_1TO32 ),
57    ('FreeImage_GetTransparencyCount',  '@4', CO.COL_1TO32 ),
58    ('FreeImage_GetTransparencyTable',  '@4', (CO.COL_8,), C.POINTER(CO.BYTE)),
59    ('FreeImage_SetTransparencyTable',  '@12', (CO.COL_8,) ),
60    ('FreeImage_SetTransparent',        '@8', (CO.COL_8, CO.COL_32) ),
61    ('FreeImage_IsTransparent',         '@4', CO.COL_1TO32 ),
62    ('FreeImage_HasBackgroundColor',    '@4', (CO.COL_8, CO.COL_24, CO.COL_32) ),
63    ('FreeImage_GetBackgroundColor',    '@8', (CO.COL_8, CO.COL_24, CO.COL_32),
64        C.POINTER(CO.RGBQUAD) ),
65    ('FreeImage_SetBackgroundColor',    '@8', (CO.COL_8, CO.COL_24, CO.COL_32) ),
66
67    #Filetype functions
68    ('FreeImage_GetFileType',           '@8'),
69    ('FreeImage_GetFileTypeU',          '@8'),
70    ('FreeImage_GetFileTypeFromHandle', '@12'),
71
72
73    #Pixel access
74    ('FreeImage_GetBits',       '@4',  None, C.POINTER(CO.BYTE)),
75    ('FreeImage_GetScanLine',   '@8',  None, C.POINTER(CO.BYTE)),
76    ('FreeImage_GetPixelIndex', '@16', CO.COL_1TO8 ),
77    ('FreeImage_SetPixelIndex', '@16', CO.COL_1TO8 ),
78    ('FreeImage_GetPixelColor', '@16', CO.COL_16TO32 ),
79    ('FreeImage_SetPixelColor', '@16', CO.COL_16TO32 ),
80
81    #Conversion / Trasformation
82    ('FreeImage_ConvertTo4Bits',        '@4', CO.COL_1TO32),
83    ('FreeImage_ConvertTo8Bits',        '@4', CO.COL_1TO32),
84    ('FreeImage_ConvertToGreyscale',    '@4', CO.COL_1TO32),
85    ('FreeImage_ConvertTo16Bits555',    '@4', CO.COL_1TO32),
86    ('FreeImage_ConvertTo16Bits565',    '@4', CO.COL_1TO32),
87    ('FreeImage_ConvertTo24Bits',       '@4', CO.COL_1TO48),
88    ('FreeImage_ConvertTo32Bits',       '@4', CO.COL_1TO32),
89    ('FreeImage_ColorQuantize',         '@8', (CO.COL_24,)),
90    ('FreeImage_ColorQuantizeEx',       '@20', (CO.COL_24,)),
91    ('FreeImage_Threshold',             '@8', CO.COL_1TO32),
92    ('FreeImage_Dither',                '@8', CO.COL_1TO32),
93    ('FreeImage_ConvertFromRawBits',    '@36', CO.COL_1TO32),
94    ('FreeImage_ConvertToRawBits',      '@32', CO.COL_1TO32),
95    ('FreeImage_ConvertToStandardType', '@8'),
96    ('FreeImage_ConvertToType',         '@12'),
97    ('FreeImage_ConvertToRGBF',         '@4', (CO.COL_24, CO.COL_32,)),
98
99    #Copy / Paste / Composite routines
100    ('FreeImage_Copy',      '@20'),
101    ('FreeImage_Paste',     '@20', CO.COL_1TO32),
102
103    #Plugin
104    ('FreeImage_GetFIFCount',               '@0'),
105    ('FreeImage_SetPluginEnabled',          '@8'),
106    ('FreeImage_FIFSupportsReading',        '@4'),
107    ('FreeImage_GetFIFFromFilename',        '@4'),
108    ('FreeImage_GetFIFFromFilenameU',       '@4'),
109    ('FreeImage_FIFSupportsExportBPP',      '@8'),
110    ('FreeImage_FIFSupportsExportType',     '@8'),
111    ('FreeImage_FIFSupportsICCProfiles',    '@4'),
112    ('FreeImage_FIFSupportsWriting',        '@4'),
113    ('FreeImage_IsPluginEnabled',           '@4'),
114    ('FreeImage_RegisterLocalPlugin',       '@20'),
115    ('FreeImage_GetFIFDescription',         '@4', None, C.c_char_p),
116    ('FreeImage_GetFIFExtensionList',       '@4', None, C.c_char_p),
117    ('FreeImage_GetFIFFromFormat',          '@4', None, C.c_char_p),
118    ('FreeImage_GetFIFFromMime',            '@4', None, C.c_char_p),
119    ('FreeImage_GetFIFMimeType',            '@4', None, C.c_char_p),
120    ('FreeImage_GetFIFRegExpr',             '@4', None, C.c_char_p),
121    ('FreeImage_GetFormatFromFIF',          '@4', None, C.c_char_p),
122
123    #Upsampling / downsampling
124    ('FreeImage_Rescale',       '@16', CO.COL_1TO32 ),
125    ('FreeImage_MakeThumbnail', '@12', CO.COL_1TO32 ),
126
127    #Rotation and flipping
128    ('FreeImage_RotateClassic', '@12', CO.COL_1TO32),
129    ('FreeImage_RotateEx',      '@48', (CO.COL_8, CO.COL_24, CO.COL_32), ),
130
131
132    #Color manipulation
133    ('FreeImage_AdjustBrightness',  '@12', (CO.COL_8, CO.COL_24, CO.COL_32), CO.BOOL),
134    ('FreeImage_AdjustCurve',       '@12', (CO.COL_8, CO.COL_24, CO.COL_32), CO.BOOL),
135    ('FreeImage_AdjustGamma',       '@12', (CO.COL_8, CO.COL_24, CO.COL_32), CO.BOOL),
136    ('FreeImage_AdjustContrast',    '@12', (CO.COL_8, CO.COL_24, CO.COL_32), CO.BOOL),
137    ('FreeImage_GetHistogram',      '@12', (CO.COL_8, CO.COL_24, CO.COL_32), CO.BOOL),
138    ('FreeImage_Invert',            '@4',  CO.COL_1TO32, CO.BOOL),
139    ('FreeImage_GetChannel',        '@8',  (CO.COL_24, CO.COL_32)),
140    ('FreeImage_SetChannel',        '@12', (CO.COL_24, CO.COL_32)),
141    ('FreeImage_GetComplexChannel', '@8'),
142    ('FreeImage_SetComplexChannel', '@12'),
143
144    #Multipage
145    ('FreeImage_OpenMultiBitmap',       '@24'),
146    ('FreeImage_AppendPage',            '@8'),
147    ('FreeImage_CloseMultiBitmap',      '@8'),
148    ('FreeImage_GetPageCount',          '@4'),
149    ('FreeImage_LockPage',              '@8'),
150    ('FreeImage_UnlockPage',            '@12'),
151    ('FreeImage_InsertPage',            '@12'),
152    ('FreeImage_DeletePage',            '@8'),
153    ('FreeImage_MovePage',              '@12'),
154    ('FreeImage_GetLockedPageNumbers',  '@12'),
155
156    #Tag
157    ('FreeImage_GetTagValue',       '@4'),
158    ('FreeImage_GetTagDescription', '@4',  None, C.c_char_p),
159    ('FreeImage_TagToString',       '@12', None, C.c_char_p),
160    ('FreeImage_GetTagCount',       '@4',  None, CO.DWORD),
161    ('FreeImage_GetTagKey',         '@4',  None, C.c_char_p),
162    ('FreeImage_GetTagID',          '@4', None, C.c_char_p),
163    ('FreeImage_GetTagType',        '@4'),
164
165
166    #Metadata
167    ('FreeImage_GetMetadata',       '@16'),
168    ('FreeImage_GetMetadataCount',  '@8', None, CO.DWORD),
169    ('FreeImage_FindFirstMetadata', '@12', None, CO.VOID),
170    ('FreeImage_FindNextMetadata',  '@8', None, CO.VOID),
171    ('FreeImage_FindCloseMetadata', '@4'),
172
173    ('FreeImage_IsLittleEndian',    '@0')
174
175    # --------------- This functions don't work yet :(
176
177    #All handle functions...
178
179)
180