comparison src/glyphs.h @ 187:b405438285a2 r20-3b20

Import from CVS: tag r20-3b20
author cvs
date Mon, 13 Aug 2007 09:56:28 +0200
parents 3d6bfa290dbd
children 8efd647ea9ca
comparison
equal deleted inserted replaced
186:24ac94803b48 187:b405438285a2
268 extern Lisp_Object Qcolor_pixmap_image_instance_p; 268 extern Lisp_Object Qcolor_pixmap_image_instance_p;
269 extern Lisp_Object Qpointer_image_instance_p; 269 extern Lisp_Object Qpointer_image_instance_p;
270 extern Lisp_Object Qsubwindow_image_instance_p; 270 extern Lisp_Object Qsubwindow_image_instance_p;
271 271
272 #define IMAGE_INSTANCE_TYPE_P(ii, type) \ 272 #define IMAGE_INSTANCE_TYPE_P(ii, type) \
273 (IMAGE_INSTANCEP (ii) && XIMAGE_INSTANCE_TYPE (ii) == type) 273 (IMAGE_INSTANCEP (ii) && XIMAGE_INSTANCE_TYPE (ii) == type)
274 274
275 #define NOTHING_IMAGE_INSTANCEP(ii) IMAGE_INSTANCE_TYPE_P (ii, IMAGE_NOTHING) 275 #define NOTHING_IMAGE_INSTANCEP(ii) \
276 #define TEXT_IMAGE_INSTANCEP(ii) IMAGE_INSTANCE_TYPE_P (ii, IMAGE_TEXT) 276 IMAGE_INSTANCE_TYPE_P (ii, IMAGE_NOTHING)
277 #define TEXT_IMAGE_INSTANCEP(ii) \
278 IMAGE_INSTANCE_TYPE_P (ii, IMAGE_TEXT)
277 #define MONO_PIXMAP_IMAGE_INSTANCEP(ii) \ 279 #define MONO_PIXMAP_IMAGE_INSTANCEP(ii) \
278 IMAGE_INSTANCE_TYPE_P (ii, IMAGE_MONO_PIXMAP) 280 IMAGE_INSTANCE_TYPE_P (ii, IMAGE_MONO_PIXMAP)
279 #define COLOR_PIXMAP_IMAGE_INSTANCEP(ii) \ 281 #define COLOR_PIXMAP_IMAGE_INSTANCEP(ii) \
280 IMAGE_INSTANCE_TYPE_P (ii, IMAGE_COLOR_PIXMAP) 282 IMAGE_INSTANCE_TYPE_P (ii, IMAGE_COLOR_PIXMAP)
281 #define POINTER_IMAGE_INSTANCEP(ii) IMAGE_INSTANCE_TYPE_P (ii, IMAGE_POINTER) 283 #define POINTER_IMAGE_INSTANCEP(ii) \
284 IMAGE_INSTANCE_TYPE_P (ii, IMAGE_POINTER)
282 #define SUBWINDOW_IMAGE_INSTANCEP(ii) \ 285 #define SUBWINDOW_IMAGE_INSTANCEP(ii) \
283 IMAGE_INSTANCE_TYPE_P (ii, IMAGE_SUBWINDOW) 286 IMAGE_INSTANCE_TYPE_P (ii, IMAGE_SUBWINDOW)
284 287
285 #define CHECK_NOTHING_IMAGE_INSTANCE(x) \ 288 #define CHECK_NOTHING_IMAGE_INSTANCE(x) do { \
286 do { CHECK_IMAGE_INSTANCE (x); \ 289 CHECK_IMAGE_INSTANCE (x); \
287 if (!NOTHING_IMAGE_INSTANCEP (x)) \ 290 if (!NOTHING_IMAGE_INSTANCEP (x)) \
288 x = wrong_type_argument (Qnothing_image_instance_p, (x)); \ 291 x = wrong_type_argument (Qnothing_image_instance_p, (x)); \
289 } while (0) 292 } while (0)
290 293
291 #define CHECK_TEXT_IMAGE_INSTANCE(x) \ 294 #define CHECK_TEXT_IMAGE_INSTANCE(x) do { \
292 do { CHECK_IMAGE_INSTANCE (x); \ 295 CHECK_IMAGE_INSTANCE (x); \
293 if (!TEXT_IMAGE_INSTANCEP (x)) \ 296 if (!TEXT_IMAGE_INSTANCEP (x)) \
294 x = wrong_type_argument (Qtext_image_instance_p, (x)); \ 297 x = wrong_type_argument (Qtext_image_instance_p, (x)); \
295 } while (0) 298 } while (0)
296 299
297 #define CHECK_MONO_PIXMAP_IMAGE_INSTANCE(x) \ 300 #define CHECK_MONO_PIXMAP_IMAGE_INSTANCE(x) do { \
298 do { CHECK_IMAGE_INSTANCE (x); \ 301 CHECK_IMAGE_INSTANCE (x); \
299 if (!MONO_PIXMAP_IMAGE_INSTANCEP (x)) \ 302 if (!MONO_PIXMAP_IMAGE_INSTANCEP (x)) \
300 x = wrong_type_argument (Qmono_pixmap_image_instance_p, (x)); \ 303 x = wrong_type_argument (Qmono_pixmap_image_instance_p, (x)); \
301 } while (0) 304 } while (0)
302 305
303 #define CHECK_COLOR_PIXMAP_IMAGE_INSTANCE(x) \ 306 #define CHECK_COLOR_PIXMAP_IMAGE_INSTANCE(x) do { \
304 do { CHECK_IMAGE_INSTANCE (x); \ 307 CHECK_IMAGE_INSTANCE (x); \
305 if (!COLOR_PIXMAP_IMAGE_INSTANCEP (x)) \ 308 if (!COLOR_PIXMAP_IMAGE_INSTANCEP (x)) \
306 x = wrong_type_argument (Qcolor_pixmap_image_instance_p, (x)); \ 309 x = wrong_type_argument (Qcolor_pixmap_image_instance_p, (x)); \
307 } while (0) 310 } while (0)
308 311
309 #define CHECK_POINTER_IMAGE_INSTANCE(x) \ 312 #define CHECK_POINTER_IMAGE_INSTANCE(x) do { \
310 do { CHECK_IMAGE_INSTANCE (x); \ 313 CHECK_IMAGE_INSTANCE (x); \
311 if (!POINTER_IMAGE_INSTANCEP (x)) \ 314 if (!POINTER_IMAGE_INSTANCEP (x)) \
312 x = wrong_type_argument (Qpointer_image_instance_p, (x)); \ 315 x = wrong_type_argument (Qpointer_image_instance_p, (x)); \
313 } while (0) 316 } while (0)
314 317
315 #define CHECK_SUBWINDOW_IMAGE_INSTANCE(x) \ 318 #define CHECK_SUBWINDOW_IMAGE_INSTANCE(x) do { \
316 do { CHECK_IMAGE_INSTANCE (x); \ 319 CHECK_IMAGE_INSTANCE (x); \
317 if (!SUBWINDOW_IMAGE_INSTANCEP (x)) \ 320 if (!SUBWINDOW_IMAGE_INSTANCEP (x)) \
318 x = wrong_type_argument (Qsubwindow_image_instance_p, (x)); \ 321 x = wrong_type_argument (Qsubwindow_image_instance_p, (x)); \
319 } while (0) 322 } while (0)
320 323
321 struct Lisp_Image_Instance 324 struct Lisp_Image_Instance
322 { 325 {
323 struct lcrecord_header header; 326 struct lcrecord_header header;
324 Lisp_Object device; 327 Lisp_Object device;
325 Lisp_Object name; 328 Lisp_Object name;
326 enum image_instance_type type; 329 enum image_instance_type type;
327 union 330 union
331 {
332 struct
328 { 333 {
329 struct 334 Lisp_Object string;
330 { 335 } text;
331 Lisp_Object string; 336 struct
332 } text; 337 {
333 struct 338 int width, height, depth;
334 { 339 Lisp_Object hotspot_x, hotspot_y; /* integer or Qnil */
335 int width, height, depth; 340 Lisp_Object filename; /* string or Qnil */
336 Lisp_Object hotspot_x, hotspot_y; /* integer or Qnil */ 341 Lisp_Object mask_filename; /* string or Qnil */
337 Lisp_Object filename; /* string or Qnil */ 342 Lisp_Object fg, bg; /* foreground and background colors,
338 Lisp_Object mask_filename; /* string or Qnil */ 343 if this is a colorized mono-pixmap
339 Lisp_Object fg, bg; /* foreground and background colors, 344 or a pointer */
340 if this is a colorized mono-pixmap 345 } pixmap; /* used for pointers as well */
341 or a pointer */ 346 struct
342 } pixmap; /* used for pointers as well */ 347 {
343 struct 348 int dummy; /* #### fill in this structure */
344 { 349 } subwindow;
345 int dummy; /* #### fill in this structure */ 350 } u;
346 } subwindow;
347 } u;
348 351
349 /* console-type- and image-type-specific data */ 352 /* console-type- and image-type-specific data */
350 void *data; 353 void *data;
351 }; 354 };
352 355
436 #define CHECK_GLYPH(x) CHECK_RECORD (x, glyph) 439 #define CHECK_GLYPH(x) CHECK_RECORD (x, glyph)
437 #define CONCHECK_GLYPH(x) CONCHECK_RECORD (x, glyph) 440 #define CONCHECK_GLYPH(x) CONCHECK_RECORD (x, glyph)
438 441
439 extern Lisp_Object Qbuffer_glyph_p, Qpointer_glyph_p, Qicon_glyph_p; 442 extern Lisp_Object Qbuffer_glyph_p, Qpointer_glyph_p, Qicon_glyph_p;
440 443
441 #define CHECK_BUFFER_GLYPH(x) \ 444 #define CHECK_BUFFER_GLYPH(x) do { \
442 do { CHECK_GLYPH (x); \ 445 CHECK_GLYPH (x); \
443 if (XGLYPH (x)->type != GLYPH_BUFFER) \ 446 if (XGLYPH (x)->type != GLYPH_BUFFER) \
444 x = wrong_type_argument (Qbuffer_glyph_p, (x)); \ 447 x = wrong_type_argument (Qbuffer_glyph_p, (x)); \
445 } while (0) 448 } while (0)
446 449
447 #define CHECK_POINTER_GLYPH(x) \ 450 #define CHECK_POINTER_GLYPH(x) do { \
448 do { CHECK_GLYPH (x); \ 451 CHECK_GLYPH (x); \
449 if (XGLYPH (x)->type != GLYPH_POINTER) \ 452 if (XGLYPH (x)->type != GLYPH_POINTER) \
450 x = wrong_type_argument (Qpointer_glyph_p, (x)); \ 453 x = wrong_type_argument (Qpointer_glyph_p, (x)); \
451 } while (0) 454 } while (0)
452 455
453 #define CHECK_ICON_GLYPH(x) \ 456 #define CHECK_ICON_GLYPH(x) do { \
454 do { CHECK_GLYPH (x); \ 457 CHECK_GLYPH (x); \
455 if (XGLYPH (x)->type != GLYPH_ICON) \ 458 if (XGLYPH (x)->type != GLYPH_ICON) \
456 x = wrong_type_argument (Qicon_glyph_p, (x)); \ 459 x = wrong_type_argument (Qicon_glyph_p, (x)); \
457 } while (0) 460 } while (0)
458 461
459 #define GLYPH_TYPE(g) ((g)->type) 462 #define GLYPH_TYPE(g) ((g)->type)
460 #define GLYPH_IMAGE(g) ((g)->image) 463 #define GLYPH_IMAGE(g) ((g)->image)
461 #define GLYPH_CONTRIB_P(g) ((g)->contrib_p) 464 #define GLYPH_CONTRIB_P(g) ((g)->contrib_p)
462 #define GLYPH_BASELINE(g) ((g)->baseline) 465 #define GLYPH_BASELINE(g) ((g)->baseline)