source: trunk/include/winicon.h@ 10367

Last change on this file since 10367 was 9849, checked in by sandervl, 23 years ago

Added ODIN_IsWin32App + extra icon conversion function

File size: 5.3 KB
RevLine 
[9849]1/* $Id: winicon.h,v 1.3 2003-02-24 17:01:47 sandervl Exp $ */
[575]2
3/*
4 * Win32 icon conversion functions for OS/2
5 *
6 * Copyright 1998 Sander van Leeuwen
7 *
8 *
9 * Project Odin Software License can be found in LICENSE.TXT
10 *
11 */
12#ifndef __WINICON_H__
13#define __WINICON_H__
14
15extern "C" PBYTE ConvertWin32Icon(PBYTE presbits, DWORD dwResSize, DWORD *OS2ResSize);
16extern "C" void FreeIcon(void *os2icon);
17
18
19#ifndef _OS2WIN_H
20
21#pragma pack(1)
22
[581]23/* Win v4.0 bitmap structs */
24/* Image Color Matching color definitions */
25
26typedef LONG LCSCSTYPE;
27
28#define LCS_CALIBRATED_RGB 0x00000000L
29#define LCS_DEVICE_RGB 0x00000001L
30#define LCS_DEVICE_CMYK 0x00000002L
31typedef LONG LCSGAMUTMATCH;
32
33#define LCS_GM_BUSINESS 0x00000001L
34#define LCS_GM_GRAPHICS 0x00000002L
35#define LCS_GM_IMAGES 0x00000004L
36
37/* ICM Defines for results from CheckColorInGamut() */
38#define CM_OUT_OF_GAMUT 255
39#define CM_IN_GAMUT 0
40
41/* Macros to retrieve CMYK values from a COLORREF */
42#define GetKValue(cmyk) ((BYTE)(cmyk))
43#define GetYValue(cmyk) ((BYTE)((cmyk)>> 8))
44#define GetMValue(cmyk) ((BYTE)((cmyk)>>16))
45#define GetCValue(cmyk) ((BYTE)((cmyk)>>24))
46#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24)))
47
48typedef long FXPT16DOT16, FAR *LPFXPT16DOT16;
49typedef long FXPT2DOT30, FAR *LPFXPT2DOT30;
50
51/* ICM Color Definitions */
52// The following two structures are used for defining RGB's in terms of
53// CIEXYZ. The values are fixed point 16.16.
54typedef struct tagCIEXYZ
55{
56 FXPT2DOT30 ciexyzX;
57 FXPT2DOT30 ciexyzY;
58 FXPT2DOT30 ciexyzZ;
59} CIEXYZ;
60typedef CIEXYZ FAR *LPCIEXYZ;
61
62typedef struct tagICEXYZTRIPLE
63{
64 CIEXYZ ciexyzRed;
65 CIEXYZ ciexyzGreen;
66 CIEXYZ ciexyzBlue;
67} CIEXYZTRIPLE;
68typedef CIEXYZTRIPLE FAR *LPCIEXYZTRIPLE;
69
70#ifndef MAX_PATH
71 #define MAX_PATH CCHMAXPATH
72#endif
73// The next structures the logical color space. Unlike pens and brushes,
74// but like palettes, there is only one way to create a LogColorSpace.
75// A pointer to it must be passed, its elements can't be pushed as
76// arguments.
77
78typedef struct tagLOGCOLORSPACEA
79{
80 DWORD lcsSignature;
81 DWORD lcsVersion;
82 DWORD lcsSize;
83 LCSCSTYPE lcsCSType;
84 LCSGAMUTMATCH lcsIntent;
85 CIEXYZTRIPLE lcsEndpoints;
86 DWORD lcsGammaRed;
87 DWORD lcsGammaGreen;
88 DWORD lcsGammaBlue;
89 CHAR lcsFilename[MAX_PATH];
90} LOGCOLORSPACEA, *LPLOGCOLORSPACEA;
91
92typedef struct tagLOGCOLORSPACEW
93{
94 DWORD lcsSignature;
95 DWORD lcsVersion;
96 DWORD lcsSize;
97 LCSCSTYPE lcsCSType;
98 LCSGAMUTMATCH lcsIntent;
99 CIEXYZTRIPLE lcsEndpoints;
100 DWORD lcsGammaRed;
101 DWORD lcsGammaGreen;
102 DWORD lcsGammaBlue;
103 WCHAR lcsFilename[MAX_PATH];
104} LOGCOLORSPACEW, *LPLOGCOLORSPACEW;
105
106#ifdef UNICODE
107typedef LOGCOLORSPACEW LOGCOLORSPACE;
108typedef LPLOGCOLORSPACEW LPLOGCOLORSPACE;
109#else
110typedef LOGCOLORSPACEA LOGCOLORSPACE;
111typedef LPLOGCOLORSPACEA LPLOGCOLORSPACE;
112#endif // UNICODE
113
114typedef struct
115{
116 DWORD bV4Size;
117 LONG bV4Width;
118 LONG bV4Height;
119 WORD bV4Planes;
120 WORD bV4BitCount;
121 DWORD bV4V4Compression;
122 DWORD bV4SizeImage;
123 LONG bV4XPelsPerMeter;
124 LONG bV4YPelsPerMeter;
125 DWORD bV4ClrUsed;
126 DWORD bV4ClrImportant;
127 DWORD bV4RedMask;
128 DWORD bV4GreenMask;
129 DWORD bV4BlueMask;
130 DWORD bV4AlphaMask;
131 DWORD bV4CSType;
132 CIEXYZTRIPLE bV4Endpoints;
133 DWORD bV4GammaRed;
134 DWORD bV4GammaGreen;
135 DWORD bV4GammaBlue;
136} BITMAPV4HEADER, /*FAR *LPBITMAPV4HEADER,*/ *PBITMAPV4HEADER;
137
138/* constants for the biCompression field */
139#define BI_RGB 0L
140#define BI_RLE8 1L
141#define BI_RLE4 2L
142#define BI_BITFIELDS 3L
143
[575]144typedef struct {
145 WORD wReserved; // Currently zero
146 WORD wType; // 1 for icons
147 WORD wCount; // Number of components
148} IconHeader;
149
150typedef struct tagWINBITMAPINFOHEADER{
151 DWORD biSize;
152 LONG biWidth;
153 LONG biHeight;
154 WORD biPlanes;
155 WORD biBitCount;
156 DWORD biCompression;
157 DWORD biSizeImage;
158 LONG biXPelsPerMeter;
159 LONG biYPelsPerMeter;
160 DWORD biClrUsed;
161 DWORD biClrImportant;
162} WINBITMAPINFOHEADER;
163
164typedef struct
165{
166 BYTE blue;
167 BYTE green;
168 BYTE red;
169 BYTE res;
170} RGBQUAD;
171
172//The next portion is repeated for each component resource:
173typedef struct {
174 BYTE bWidth;
175 BYTE bHeight;
176 BYTE bColorCount;
177 BYTE bReserved;
178 WORD wPlanes;
179 WORD wBitCount;
180 DWORD lBytesInRes;
181 WORD wNameOrdinal; // Points to component
182} ResourceDirectory;
183
[9849]184typedef struct
185{
186 BYTE bWidth;
187 BYTE bHeight;
188 BYTE bColorCount;
189 BYTE bReserved;
190 WORD wPlanes;
191 WORD wBitCount;
192 DWORD dwBytesInRes;
193 DWORD dwImageOffset;
194} ICONDIRENTRY;
195
196typedef struct
197{
198 WORD idReserved;
199 WORD idType;
200 WORD idCount;
201} ICONDIR;
202
[575]203#pragma pack()
204
205#endif
206
207#endif
Note: See TracBrowser for help on using the repository browser.