diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2019-01-08 21:04:08 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2019-01-08 21:04:08 (GMT) |
commit | 6dac183be1cdcc0a13966343e2c40c3ff56a3810 (patch) | |
tree | 802a6a87435da647463c945cf3571d52a84aad55 /tkimg/pixmap/pixmapInt.h | |
parent | dbbb38af9cefef9e9e1a03c97945ee59063aa782 (diff) | |
download | blt-6dac183be1cdcc0a13966343e2c40c3ff56a3810.zip blt-6dac183be1cdcc0a13966343e2c40c3ff56a3810.tar.gz blt-6dac183be1cdcc0a13966343e2c40c3ff56a3810.tar.bz2 |
update tkimg 1.4.7
Diffstat (limited to 'tkimg/pixmap/pixmapInt.h')
-rw-r--r-- | tkimg/pixmap/pixmapInt.h | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/tkimg/pixmap/pixmapInt.h b/tkimg/pixmap/pixmapInt.h new file mode 100644 index 0000000..5355f27 --- /dev/null +++ b/tkimg/pixmap/pixmapInt.h @@ -0,0 +1,149 @@ +/* + * pixmapInt.h -- + * + * Generic header file for the pixmap image type. This is NOT a public + * header file! + * + * Copyright (c) 1996, Expert Interface Technologies + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + */ + +#ifndef _TKIMG_PIXMAP_INT_H_ +#define _TKIMG_PIXMAP_INT_H_ + +#include "tkimg.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* + * Constants + */ + +#define XPM_MONO 1 +#define XPM_GRAY_4 2 +#define XPM_GRAY 3 +#define XPM_COLOR 4 +#define XPM_SYMBOLIC 5 +#define XPM_UNKNOWN 6 + +/* + * The following data structure represents the master for a pixmap + * image: + */ + +typedef struct PixmapMaster { + Tk_ImageMaster tkMaster; /* Tk's token for image master. NULL means + * the image is being deleted. */ + Tcl_Interp *interp; /* Interpreter for application that is + * using image. */ + Tcl_Command imageCmd; /* Token for image command (used to delete + * it when the image goes away). NULL means + * the image command has already been + * deleted. */ + char *fileString; /* Value of -file option (malloc'ed). + * valid only if the -file option is specified + */ + char *dataString; /* Value of -data option (malloc'ed). + * valid only if the -data option is specified + */ + /* First in list of all instances associated + * with this master. */ + int size[2]; /* width and height */ + int ncolors; /* number of colors */ + int cpp; /* characters per pixel */ + char **data; /* The data that defines this pixmap + * image (array of strings). It is + * converted into an X Pixmap when this + * image is instanciated + */ + int isDataAlloced; /* False iff the data is got from + * the -id switch */ + struct PixmapInstance *instancePtr; +} PixmapMaster; + +typedef struct ColorStruct { + char c; /* This is used if CPP is one */ + char *cstring; /* This is used if CPP is bigger than one */ + XColor *colorPtr; +} ColorStruct; + +/*---------------------------------------------------------------------- + * PixmapInstance -- + * + * Represents all of the instances of an image that lie within a + * particular window: + * + * %% ToDo + * Currently one instance is created for each window that uses + * this pixmap. This is usually OK because pixmaps are usually + * not shared or only shared by a small number of windows. To + * improve resource allocation, we can create an instance for + * each (Display x Visual x Depth) combo. This will usually + * reduce the number of instances to one. + *---------------------------------------------------------------------- + */ +typedef struct PixmapInstance { + int refCount; /* Number of instances that share this + * data structure. */ + PixmapMaster *masterPtr; /* Pointer to master for image. */ + Tk_Window tkwin; /* Window in which the instances will be + * displayed. */ + Pixmap pixmap; /* The pixmap to display. */ + struct PixmapInstance *nextPtr; + /* Next in list of all instance structures + * associated with masterPtr (NULL means + * end of list). + */ + ColorStruct *colors; + ClientData clientData; /* Place holder for platform specific + * instance data */ +} PixmapInstance; + +/* + * Functions exported by the platform specific parts for use by the + * generic part of the implementation + */ + +MODULE_SCOPE void TkimgInitPixmapInstance( + PixmapMaster *masterPtr, + PixmapInstance *instancePtr); +MODULE_SCOPE void TkimgXpmAllocTmpBuffer( + PixmapMaster *masterPtr, + PixmapInstance *instancePtr, + XImage **imagePtr, XImage **maskPtr); +MODULE_SCOPE void TkimgXpmFreeTmpBuffer( + PixmapMaster *masterPtr, + PixmapInstance *instancePtr, + XImage *image, XImage *mask); +MODULE_SCOPE void TkimgXpmSetPixel( + PixmapInstance *instancePtr, XImage *image, + XImage *mask, int x, int y, XColor *colorPtr, + int *isTranspPtr); +MODULE_SCOPE void TkimgXpmRealizePixmap( + PixmapMaster *masterPtr, + PixmapInstance *instancePtr, + XImage *image, XImage *mask, int isTransp); +MODULE_SCOPE void TkimgXpmFreeInstanceData( + PixmapInstance *instancePtr, int delete); +MODULE_SCOPE void TkimgpXpmDisplay(ClientData clientData, + Display *display, Drawable drawable, + int imageX, int imageY, int width, int height, + int drawableX, int drawableY); + +/* + * Declarations of internal functions, which are exported for tcl package management. + */ + +extern DLLEXPORT int Tkimgpixmap_Init(Tcl_Interp *interp); +extern DLLEXPORT int Tkimgpixmap_SafeInit(Tcl_Interp *interp); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif |