/* @(#)icon.h 10.5 88/02/08 SMI */ /*****************************************************************************/ /* icon.h */ /* Copyright (c) 1985 by Sun Microsystems, Inc. */ /*****************************************************************************/ #ifndef icon_DEFINED #define icon_DEFINED #include /*****************************************************************************/ /* Attributes */ /*****************************************************************************/ #define ICON_ATTR(type, ordinal) ATTR(ATTR_PKG_ICON, type, ordinal) #define ICON_ATTR_LIST(ltype, type, ordinal) \ ICON_ATTR(ATTR_LIST_INLINE((ltype), (type)), (ordinal)) typedef enum { ICON_X = ICON_ATTR(ATTR_X, 1), ICON_Y = ICON_ATTR(ATTR_Y, 2), ICON_WIDTH = ICON_ATTR(ATTR_X, 3), ICON_HEIGHT = ICON_ATTR(ATTR_Y, 4), ICON_IMAGE_RECT = ICON_ATTR(ATTR_RECT_PTR, 5), ICON_LABEL_RECT = ICON_ATTR(ATTR_RECT_PTR, 6), ICON_IMAGE = ICON_ATTR(ATTR_PIXRECT_PTR, 7), ICON_LABEL = ICON_ATTR(ATTR_STRING, 8), ICON_FONT = ICON_ATTR(ATTR_PIXFONT_PTR, 9) } Icon_attribute; #define icon_attr_next(attr) (Icon_attribute *)attr_next((caddr_t *)attr) /*****************************************************************************/ /* icon struct */ /*****************************************************************************/ struct icon { short ic_width, ic_height; /* overall icon dimensions */ struct pixrect *ic_background; /* background pattern (mem pixrect) */ Rect ic_gfxrect; /* where the graphic goes */ struct pixrect *ic_mpr; /* the graphic (a memory pixrect) */ Rect ic_textrect; /* where text goes */ char *ic_text; /* the text */ struct pixfont *ic_font; /* Font with which to display text */ int ic_flags; }; /* flag values */ #define ICON_BKGRDPAT 0x02 /* use ic_background to prepare image*/ #define ICON_BKGRDGRY 0x04 /* use std gray to prepare image*/ #define ICON_BKGRDCLR 0x08 /* clear to prepare image*/ #define ICON_BKGRDSET 0x10 /* set to prepare image*/ #define ICON_FIRSTPRIV 0x0100 /* start of private flags range */ #define ICON_LASTPRIV 0x8000 /* end of private flags range */ #define ICON_DEFAULT_WIDTH 64 #define ICON_DEFAULT_HEIGHT 64 /*****************************************************************************/ /* typedefs */ /*****************************************************************************/ typedef caddr_t Icon; typedef struct icon *icon_handle; /*****************************************************************************/ /* external functions for attribute/value interface */ /*****************************************************************************/ extern Icon icon_create(); extern caddr_t icon_get(); extern int icon_set(); extern int icon_destroy(); extern void icon_display(); /* how are icons undisplayed? */ /*****************************************************************************/ /* DEFINE_ICON_FROM_IMAGE macro */ /*****************************************************************************/ #ifdef i386 #define DEFINE_ICON_FROM_IMAGE(name, image) \ static struct mpr_data CAT(name,_data) = { \ mpr_linebytes(ICON_DEFAULT_WIDTH,1), (short *)(image), \ {0, 0}, 0, MP_STATIC}; \ extern struct pixrectops mem_ops; \ static struct pixrect CAT(name,_mpr) = { \ &mem_ops, ICON_DEFAULT_WIDTH, ICON_DEFAULT_HEIGHT, 1, \ (caddr_t)&CAT(name,_data)}; \ static struct icon name = { \ ICON_DEFAULT_WIDTH, ICON_DEFAULT_HEIGHT, \ (struct pixrect *)0, \ 0, 0, ICON_DEFAULT_WIDTH, ICON_DEFAULT_HEIGHT, \ &CAT(name,_mpr), \ 0, 0, ICON_DEFAULT_WIDTH, ICON_DEFAULT_HEIGHT, \ NULL, (struct pixfont *)0, ICON_BKGRDGRY}; #else #define DEFINE_ICON_FROM_IMAGE(name, image) \ static struct mpr_data CAT(name,_data) = { \ mpr_linebytes(ICON_DEFAULT_WIDTH,1), (short *)(image), \ {0, 0}, 0, 0}; \ extern struct pixrectops mem_ops; \ static struct pixrect CAT(name,_mpr) = { \ &mem_ops, ICON_DEFAULT_WIDTH, ICON_DEFAULT_HEIGHT, 1, \ (caddr_t)&CAT(name,_data)}; \ static struct icon name = { \ ICON_DEFAULT_WIDTH, ICON_DEFAULT_HEIGHT, \ (struct pixrect *)0, \ 0, 0, ICON_DEFAULT_WIDTH, ICON_DEFAULT_HEIGHT, \ &CAT(name,_mpr), \ 0, 0, ICON_DEFAULT_WIDTH, ICON_DEFAULT_HEIGHT, \ NULL, (struct pixfont *)0, ICON_BKGRDGRY}; #endif #endif ~icon_DEFINED