2 * GDI OEM bitmap objects
4 * Copyright 1994 Alexandre Julliard
6 static char Copyright[] = "Copyright Alexandre Julliard, 1994";
19 #define OBM_FIRST OBM_LFARROWI /* First OEM bitmap */
20 #define OBM_LAST OBM_OLD_CLOSE /* Last OEM bitmap */
25 #define NB_COLOR_SYMBOLS 5
27 /* This is the list of the symbolic colors. All the colors used */
28 /* in the xpm files must be included in this list. If you need */
29 /* to add new colors, add them just before "black", and add the */
30 /* color identifier in OBM_Sys_Colors_Symbols below. */
31 /* Warning: black and white must always be the last 2 colors. */
33 static XpmColorSymbol OBM_Color_Symbols
[NB_COLOR_SYMBOLS
+2] =
35 { "button_face", NULL
, 0 }, /* COLOR_BTNFACE */
36 { "button_shadow", NULL
, 0 }, /* COLOR_BTNSHADOW */
37 { "button_highlight", NULL
, 0 }, /* COLOR_BTNHIGHLIGHT */
38 { "button_text", NULL
, 0 }, /* COLOR_BTNTEXT */
39 { "window_frame", NULL
, 0 }, /* COLOR_WINDOWFRAME */
44 static const int OBM_Sys_Colors_Symbols
[NB_COLOR_SYMBOLS
] =
53 /* Don't change this list! */
54 static XpmColorSymbol OBM_BW_Symbols
[2] =
61 /* Include OEM pixmaps */
62 #include "bitmaps/obm_lfarrowi"
63 #include "bitmaps/obm_rgarrowi"
64 #include "bitmaps/obm_dnarrowi"
65 #include "bitmaps/obm_uparrowi"
66 #include "bitmaps/obm_combo"
67 #include "bitmaps/obm_mnarrow"
68 #include "bitmaps/obm_lfarrowd"
69 #include "bitmaps/obm_rgarrowd"
70 #include "bitmaps/obm_dnarrowd"
71 #include "bitmaps/obm_uparrowd"
72 #include "bitmaps/obm_restored"
73 #include "bitmaps/obm_zoomd"
74 #include "bitmaps/obm_reduced"
75 #include "bitmaps/obm_restore"
76 #include "bitmaps/obm_zoom"
77 #include "bitmaps/obm_reduce"
78 #include "bitmaps/obm_lfarrow"
79 #include "bitmaps/obm_rgarrow"
80 #include "bitmaps/obm_dnarrow"
81 #include "bitmaps/obm_uparrow"
82 #include "bitmaps/obm_close"
83 #include "bitmaps/obm_old_restore"
84 #include "bitmaps/obm_old_zoom"
85 #include "bitmaps/obm_old_reduce"
86 #include "bitmaps/obm_btncorners"
87 #include "bitmaps/obm_checkboxes"
88 #include "bitmaps/obm_check"
89 #include "bitmaps/obm_btsize"
90 #include "bitmaps/obm_old_lfarrow"
91 #include "bitmaps/obm_old_rgarrow"
92 #include "bitmaps/obm_old_dnarrow"
93 #include "bitmaps/obm_old_uparrow"
94 #include "bitmaps/obm_size"
95 #include "bitmaps/obm_old_close"
99 char** data
; /* Pointer to bitmap data */
100 BOOL color
; /* Is it a color bitmap? */
101 } OBM_Pixmaps_Data
[OBM_LAST
-OBM_FIRST
+1] = {
102 { obm_lfarrowi
, TRUE
}, /* OBM_LFARROWI */
103 { obm_rgarrowi
, TRUE
}, /* OBM_RGARROWI */
104 { obm_dnarrowi
, TRUE
}, /* OBM_DNARROWI */
105 { obm_uparrowi
, TRUE
}, /* OBM_UPARROWI */
106 { obm_combo
, FALSE
}, /* OBM_COMBO */
107 { obm_mnarrow
, FALSE
}, /* OBM_MNARROW */
108 { obm_lfarrowd
, TRUE
}, /* OBM_LFARROWD */
109 { obm_rgarrowd
, TRUE
}, /* OBM_RGARROWD */
110 { obm_dnarrowd
, TRUE
}, /* OBM_DNARROWD */
111 { obm_uparrowd
, TRUE
}, /* OBM_UPARROWD */
112 { obm_restored
, TRUE
}, /* OBM_RESTORED */
113 { obm_zoomd
, TRUE
}, /* OBM_ZOOMD */
114 { obm_reduced
, TRUE
}, /* OBM_REDUCED */
115 { obm_restore
, TRUE
}, /* OBM_RESTORE */
116 { obm_zoom
, TRUE
}, /* OBM_ZOOM */
117 { obm_reduce
, TRUE
}, /* OBM_REDUCE */
118 { obm_lfarrow
, TRUE
}, /* OBM_LFARROW */
119 { obm_rgarrow
, TRUE
}, /* OBM_RGARROW */
120 { obm_dnarrow
, TRUE
}, /* OBM_DNARROW */
121 { obm_uparrow
, TRUE
}, /* OBM_UPARROW */
122 { obm_close
, TRUE
}, /* OBM_CLOSE */
123 { obm_old_restore
, FALSE
}, /* OBM_OLD_RESTORE */
124 { obm_old_zoom
, FALSE
}, /* OBM_OLD_ZOOM */
125 { obm_old_reduce
, FALSE
}, /* OBM_OLD_REDUCE */
126 { obm_btncorners
, FALSE
}, /* OBM_BTNCORNERS */
127 { obm_checkboxes
, FALSE
}, /* OBM_CHECKBOXES */
128 { obm_check
, FALSE
}, /* OBM_CHECK */
129 { obm_btsize
, FALSE
}, /* OBM_BTSIZE */
130 { obm_old_lfarrow
, FALSE
}, /* OBM_OLD_LFARROW */
131 { obm_old_rgarrow
, FALSE
}, /* OBM_OLD_RGARROW */
132 { obm_old_dnarrow
, FALSE
}, /* OBM_OLD_DNARROW */
133 { obm_old_uparrow
, FALSE
}, /* OBM_OLD_UPARROW */
134 { obm_size
, FALSE
}, /* OBM_SIZE */
135 { obm_old_close
, FALSE
}, /* OBM_OLD_CLOSE */
140 /* Include OEM bitmaps */
141 #include "bitmaps/check_boxes"
142 #include "bitmaps/check_mark"
143 #include "bitmaps/menu_arrow"
149 } OBM_Bitmaps_Data
[OBM_LAST
-OBM_FIRST
+1] =
151 { 0, 0, NULL
}, /* OBM_LFARROWI */
152 { 0, 0, NULL
}, /* OBM_RGARROWI */
153 { 0, 0, NULL
}, /* OBM_DNARROWI */
154 { 0, 0, NULL
}, /* OBM_UPARROWI */
155 { 0, 0, NULL
}, /* OBM_COMBO */
156 { menu_arrow_width
, menu_arrow_height
, menu_arrow_bits
}, /* OBM_MNARROW */
157 { 0, 0, NULL
}, /* OBM_LFARROWD */
158 { 0, 0, NULL
}, /* OBM_RGARROWD */
159 { 0, 0, NULL
}, /* OBM_DNARROWD */
160 { 0, 0, NULL
}, /* OBM_UPARROWD */
161 { 0, 0, NULL
}, /* OBM_RESTORED */
162 { 0, 0, NULL
}, /* OBM_ZOOMD */
163 { 0, 0, NULL
}, /* OBM_REDUCED */
164 { 0, 0, NULL
}, /* OBM_RESTORE */
165 { 0, 0, NULL
}, /* OBM_ZOOM */
166 { 0, 0, NULL
}, /* OBM_REDUCE */
167 { 0, 0, NULL
}, /* OBM_LFARROW */
168 { 0, 0, NULL
}, /* OBM_RGARROW */
169 { 0, 0, NULL
}, /* OBM_DNARROW */
170 { 0, 0, NULL
}, /* OBM_UPARROW */
171 { 0, 0, NULL
}, /* OBM_CLOSE */
172 { 0, 0, NULL
}, /* OBM_OLD_RESTORE */
173 { 0, 0, NULL
}, /* OBM_OLD_ZOOM */
174 { 0, 0, NULL
}, /* OBM_OLD_REDUCE */
175 { 0, 0, NULL
}, /* OBM_BTNCORNERS */
176 { check_boxes_width
, check_boxes_height
,
177 check_boxes_bits
}, /* OBM_CHECKBOXES */
178 { check_mark_width
, check_mark_height
, check_mark_bits
}, /* OBM_CHECK */
179 { 0, 0, NULL
}, /* OBM_BTSIZE */
180 { 0, 0, NULL
}, /* OBM_OLD_LFARROW */
181 { 0, 0, NULL
}, /* OBM_OLD_RGARROW */
182 { 0, 0, NULL
}, /* OBM_OLD_DNARROW */
183 { 0, 0, NULL
}, /* OBM_OLD_UPARROW */
184 { 0, 0, NULL
}, /* OBM_SIZE */
185 { 0, 0, NULL
}, /* OBM_OLD_CLOSE */
191 /***********************************************************************
192 * OBM_InitColorSymbols
195 static void OBM_InitColorSymbols()
198 static int already_done
= 0;
200 if (already_done
) return;
202 /* Init the system colors */
203 for (i
= 0; i
< NB_COLOR_SYMBOLS
; i
++)
205 OBM_Color_Symbols
[i
].pixel
= COLOR_ToPhysical( NULL
,
206 GetSysColor(OBM_Sys_Colors_Symbols
[i
]));
208 /* Init black and white */
209 OBM_Color_Symbols
[i
++].pixel
= COLOR_ToPhysical( NULL
, RGB(0,0,0) );
210 OBM_Color_Symbols
[i
++].pixel
= COLOR_ToPhysical( NULL
, RGB(255,255,255) );
215 /***********************************************************************
218 HBITMAP
OBM_LoadOEMBitmap( WORD id
)
220 BITMAPOBJ
* bmpObjPtr
;
222 WORD width
, height
, bpp
;
225 if ((id
< OBM_FIRST
) || (id
> OBM_LAST
)) return 0;
229 if (!OBM_Pixmaps_Data
[id
].data
) return 0;
234 OBM_InitColorSymbols();
235 attrs
.valuemask
= XpmColormap
| XpmDepth
| XpmColorSymbols
;
236 attrs
.colormap
= COLOR_WinColormap
;
237 if (OBM_Pixmaps_Data
[id
].color
) attrs
.depth
= bpp
= screenDepth
;
238 else attrs
.depth
= bpp
= 1;
239 attrs
.colorsymbols
= (bpp
> 1) ? OBM_Color_Symbols
: OBM_BW_Symbols
;
240 attrs
.numsymbols
= (bpp
> 1) ? NB_COLOR_SYMBOLS
+ 2 : 2;
242 if ((err
= XpmCreatePixmapFromData( display
, rootWindow
,
243 OBM_Pixmaps_Data
[id
].data
,
245 &attrs
)) != XpmSuccess
)
247 fprintf( stderr
, "Error %d creating pixmap %d\n",
254 height
= attrs
.height
;
258 if (!OBM_Bitmaps_Data
[id
].data
) return 0;
260 width
= OBM_Bitmaps_Data
[id
].width
;
261 height
= OBM_Bitmaps_Data
[id
].height
;
262 pixmap
= XCreateBitmapFromData( display
, rootWindow
,
263 OBM_Bitmaps_Data
[id
].data
, width
, height
);
266 if (!pixmap
) return 0;
268 /* Create the BITMAPOBJ */
269 if (!(hbitmap
= GDI_AllocObject( sizeof(BITMAPOBJ
), BITMAP_MAGIC
)))
271 XFreePixmap( display
, pixmap
);
274 bmpObjPtr
= (BITMAPOBJ
*) GDI_HEAP_ADDR( hbitmap
);
275 bmpObjPtr
->size
.cx
= 0;
276 bmpObjPtr
->size
.cy
= 0;
277 bmpObjPtr
->pixmap
= pixmap
;
278 bmpObjPtr
->bitmap
.bmType
= 0;
279 bmpObjPtr
->bitmap
.bmWidth
= width
;
280 bmpObjPtr
->bitmap
.bmHeight
= height
;
281 bmpObjPtr
->bitmap
.bmWidthBytes
= (width
+ 15) / 16 * 2;
282 bmpObjPtr
->bitmap
.bmPlanes
= 1;
283 bmpObjPtr
->bitmap
.bmBitsPixel
= bpp
;
284 bmpObjPtr
->bitmap
.bmBits
= NULL
;