OSDN Git Service

Please enter the commit message for your changes. Lines starting
[eos/base.git] / util / src / TclTk / blt2.5 / generic / bltImage.h
diff --git a/util/src/TclTk/blt2.5/generic/bltImage.h b/util/src/TclTk/blt2.5/generic/bltImage.h
new file mode 100644 (file)
index 0000000..d29e85f
--- /dev/null
@@ -0,0 +1,331 @@
+/*
+ * bltImage.h --
+ *
+ * Copyright 1993-1998 Lucent Technologies, Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that the above copyright notice appear in all
+ * copies and that both that the copyright notice and warranty
+ * disclaimer appear in supporting documentation, and that the names
+ * of Lucent Technologies any of their entities not be used in
+ * advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+ *
+ * Lucent Technologies disclaims all warranties with regard to this
+ * software, including all implied warranties of merchantability and
+ * fitness.  In no event shall Lucent Technologies be liable for any
+ * special, indirect or consequential damages or any damages
+ * whatsoever resulting from loss of use, data or profits, whether in
+ * an action of contract, negligence or other tortuous action, arising
+ * out of or in connection with the use or performance of this
+ * software.
+ */
+
+#include <X11/Xutil.h>
+#ifndef WIN32
+#include <X11/Xproto.h>
+#endif
+
+#ifndef _BLT_IMAGE_H
+#define _BLT_IMAGE_H
+
+#define DIV255(i) ((((i) + 1) + (((i) + 1) >> 8) ) >> 8)
+
+#define GAMMA  (1.0)
+
+#define ROTATE_0       0
+#define ROTATE_90      1
+#define ROTATE_180     2
+#define ROTATE_270     3
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Pix32 --
+ *
+ *      A union representing either a pixel as a RGB triplet or a
+ *     single word value.
+ *
+ *----------------------------------------------------------------------
+ */
+typedef union {
+    unsigned int value;                /* Lookup table address */
+    struct RGBA {
+       unsigned char red;      /* Red intensity 0..255 */
+       unsigned char green;    /* Green intensity 0.255 */
+       unsigned char blue;     /* Blue intensity 0..255 */
+       unsigned char alpha;    /* Alpha-channel for compositing. 0..255 */
+    } rgba;
+    unsigned char channel[4];
+} Pix32;
+
+#define Red    rgba.red
+#define Blue   rgba.blue
+#define Green  rgba.green
+#define Alpha  rgba.alpha
+
+
+typedef struct {
+    XColor exact, best;
+    double error;
+    unsigned int freq;
+    int allocated;
+    int index;
+} ColorInfo;
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * ColorTable --
+ *
+ *     For colormap-ed visuals, this structure contains color lookup
+ *     information needed to translate RGB triplets to pixel indices.
+ *
+ *     This structure isn't needed for TrueColor or Monochrome visuals.
+ *
+ *     DirectColor:
+ *             Pixel values for each color channel
+ *     StaticColor, PsuedoColor, StaticGray, and GrayScale:
+ *             Red represents the 8-bit color. Green and Blue pixel
+ *             values are unused.
+ *
+ *----------------------------------------------------------------------
+ */
+typedef struct ColorTableStruct {
+    double outputGamma;                /* Gamma correction value */
+    Display *display;          /* Display of colortable. Used to free
+                                * colors allocated. */
+    XVisualInfo visualInfo;    /* Visual information for window displaying
+                                * the image. */
+    Colormap colorMap;         /* Colormap used.  This may be the default
+                                * colormap, or an allocated private map. */
+    int flags;
+    unsigned int red[256], green[256], blue[256];
+
+    /* Array of allocated pixels in colormap */
+    ColorInfo colorInfo[256];
+    ColorInfo *sortedColors[256];
+
+    int nUsedColors, nFreeColors;
+    int nPixels;               /* Number of colors in the quantized image */
+    unsigned long int pixelValues[256];
+
+    unsigned int *lut;         /* Color lookup table. Used to collect
+                                * frequencies of colors and later
+                                * colormap indices */
+} *ColorTable;
+
+#define PRIVATE_COLORMAP       1
+#define RGBIndex(r,g,b) (((r)<<10) + ((r)<<6) + (r) + ((g) << 5) + (g) + (b))
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Blt_ColorImage --
+ *
+ *      The structure below represents a color image.  Each pixel
+ *     occupies a 32-bit word of memory: one byte for each of the
+ *     red, green, and blue color intensities, and another for
+ *     alpha-channel image compositing (e.g. transparency).
+ *
+ *----------------------------------------------------------------------
+ */
+typedef struct ColorImage {
+    int width, height;         /* Dimensions of the image */
+    Pix32 *bits;               /* Array of pixels representing the image. */
+} *Blt_ColorImage;
+
+/*
+ * Blt_ColorImage is supposed to be an opaque type.
+ * Use the macros below to access its members.
+ */
+#define Blt_ColorImageHeight(c)        ((c)->height)
+#define Blt_ColorImageWidth(c) ((c)->width)
+#define Blt_ColorImageBits(c)  ((c)->bits)
+#define Blt_ColorImagePixel(c, x, y) ((c)->bits + ((c)->width * (y)) + (x))
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * ResampleFilterProc --
+ *
+ *      A function implementing a 1-D filter.
+ *
+ *----------------------------------------------------------------------
+ */
+typedef double (ResampleFilterProc) _ANSI_ARGS_((double value));
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * ResampleFilter --
+ *
+ *      Contains information about a 1-D filter (its support and
+ *     the procedure implementing the filter).
+ *
+ *----------------------------------------------------------------------
+ */
+typedef struct {
+    char *name;                        /* Name of the filter */
+    ResampleFilterProc *proc;  /* 1-D filter procedure. */
+    double support;            /* Width of 1-D filter */
+} ResampleFilter;
+
+extern ResampleFilter *bltBoxFilterPtr; /* The ubiquitous box filter */
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Filter2D --
+ *
+ *      Defines a convolution mask for a 2-D filter.  Used to smooth or
+ *     enhance images.
+ *
+ *----------------------------------------------------------------------
+ */
+typedef struct {
+    double support;            /* Radius of filter */
+    double sum, scale;         /* Sum of kernel */
+    double *kernel;            /* Array of values (malloc-ed) representing
+                                * the discrete 2-D filter. */
+} Filter2D;
+
+/* Prototypes of image routines */
+
+extern void Blt_ColorImageToGreyscale _ANSI_ARGS_((Blt_ColorImage image));
+
+extern void Blt_ColorImageToPhoto _ANSI_ARGS_((Blt_ColorImage image,
+       Tk_PhotoHandle photo));
+
+extern Pixmap Blt_ColorImageToPixmap _ANSI_ARGS_((Tcl_Interp *interp,
+       Tk_Window tkwin, Blt_ColorImage image, ColorTable *colorTablePtr));
+
+extern Blt_ColorImage Blt_ConvolveColorImage _ANSI_ARGS_((
+       Blt_ColorImage srcImage, Filter2D *filter));
+
+extern Blt_ColorImage Blt_CreateColorImage _ANSI_ARGS_((int width,int height));
+
+extern Blt_ColorImage Blt_DrawableToColorImage _ANSI_ARGS_((Tk_Window tkwin, 
+       Drawable drawable, int x, int y, int width, int height, 
+       double inputGamma));
+
+extern int Blt_GetResampleFilter _ANSI_ARGS_((Tcl_Interp *interp,
+       char *filterName, ResampleFilter **filterPtrPtr));
+
+extern void Blt_FreeColorImage _ANSI_ARGS_((Blt_ColorImage image));
+
+#if HAVE_JPEG
+extern Blt_ColorImage Blt_JPEGToColorImage _ANSI_ARGS_((Tcl_Interp *interp,
+       char *fileName));
+#endif
+
+extern Blt_ColorImage Blt_PhotoToColorImage _ANSI_ARGS_((
+       Tk_PhotoHandle photo));
+
+extern Blt_ColorImage Blt_PhotoRegionToColorImage _ANSI_ARGS_((
+       Tk_PhotoHandle photo, int x, int y, int width, int height));
+
+extern int Blt_TransColorImage _ANSI_ARGS_((Blt_ColorImage src, 
+        Blt_ColorImage dest, Pix32 *color, int alpha, int flags));
+
+extern int Blt_RecolorImage _ANSI_ARGS_((Blt_ColorImage src, 
+        Blt_ColorImage dest, Pix32 *oldColor,  Pix32 *newColor, int alpha));
+
+extern int Blt_MergeColorImage _ANSI_ARGS_((Blt_ColorImage src,
+        Blt_ColorImage src2,
+        Blt_ColorImage dest, double opacity,  double opacity2, Pix32 *withColor));
+        
+int Blt_ImageMergeInner  _ANSI_ARGS_((Tcl_Interp *interp, char *srcName, char *src2Name,
+    char * destName, XColor *maskColor, int leaveMsg));
+    
+extern int Blt_QuantizeColorImage _ANSI_ARGS_((Blt_ColorImage src, 
+        Blt_ColorImage dest, int nColors));
+
+extern Blt_ColorImage Blt_ResampleColorImage _ANSI_ARGS_((Blt_ColorImage image,
+       int destWidth, int destHeight, ResampleFilter *horzFilterPtr, 
+       ResampleFilter *vertFilterPtr));
+
+extern void Blt_ResamplePhoto _ANSI_ARGS_((Tk_PhotoHandle srcPhoto,
+       int x, int y, int width, int height, Tk_PhotoHandle destPhoto,
+       ResampleFilter *horzFilterPtr, ResampleFilter *vertFilterPtr));
+
+       
+extern int Blt_BlurColorImage _ANSI_ARGS_((
+        Tk_PhotoHandle srcPhoto, Tk_PhotoHandle dstPhoto, int radius));
+        
+extern Blt_ColorImage Blt_ResizeColorImage _ANSI_ARGS_((Blt_ColorImage src,
+       int x, int y, int width, int height, int destWidth, int destHeight));
+
+extern Blt_ColorImage Blt_ResizeColorSubimage _ANSI_ARGS_((Blt_ColorImage src,
+       int x, int y, int width, int height, int destWidth, int destHeight));
+
+extern Blt_ColorImage Blt_RotateColorImage _ANSI_ARGS_((Blt_ColorImage image,
+       double theta));
+
+extern void Blt_ResizePhoto _ANSI_ARGS_((Tk_PhotoHandle srcPhoto, int x, int y,
+       int width, int height, Tk_PhotoHandle destPhoto));
+
+extern int Blt_SnapPhoto _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin,
+       Drawable drawable, int x, int y, int width, int height, int destWidth,
+       int destHeight, char *photoName, double inputGamma));
+
+extern void Blt_ImageRegion _ANSI_ARGS_((Blt_ColorImage image, 
+       Region2D *regionPtr));
+
+Blt_ColorImage Blt_CopyColorImage _ANSI_ARGS_(( Blt_ColorImage src));
+
+extern Region2D *Blt_ColorImageRegion _ANSI_ARGS_((Blt_ColorImage image, 
+       Region2D *regionPtr));
+
+extern Region2D *Blt_SetRegion _ANSI_ARGS_((int x, int y, int width, 
+       int height, Region2D *regionPtr));
+
+extern ColorTable Blt_CreateColorTable _ANSI_ARGS_((Tk_Window tkwin));
+
+extern ColorTable Blt_DirectColorTable _ANSI_ARGS_((Tcl_Interp *interp,
+       Tk_Window tkwin, Blt_ColorImage image));
+
+extern ColorTable Blt_PseudoColorTable _ANSI_ARGS_((Tcl_Interp *interp,
+       Tk_Window tkwin, Blt_ColorImage image));
+
+extern void Blt_FreeColorTable _ANSI_ARGS_((ColorTable colorTable));
+
+/* Missing routines from the Tk photo C API */
+
+extern int Tk_ImageIsDeleted _ANSI_ARGS_((Tk_Image tkImage));
+extern Tk_ImageMaster Tk_ImageGetMaster _ANSI_ARGS_((Tk_Image tkImage));
+extern Tk_ImageType *Tk_ImageGetType _ANSI_ARGS_((Tk_Image tkImage));
+extern Pixmap Tk_ImageGetPhotoPixmap _ANSI_ARGS_((Tk_Image photoImage));
+extern GC Tk_ImageGetPhotoGC _ANSI_ARGS_((Tk_Image photoImage));
+
+extern char *Blt_NameOfImage _ANSI_ARGS_((Tk_Image tkImage));
+extern Tk_Image Blt_CreateTemporaryImage _ANSI_ARGS_((Tcl_Interp *interp,
+       Tk_Window tkwin, ClientData clientData));
+extern int Blt_DestroyTemporaryImage _ANSI_ARGS_((Tcl_Interp *interp,
+       Tk_Image tkImage));
+
+extern GC Blt_GetBitmapGC _ANSI_ARGS_((Tk_Window tkwin));
+extern Pixmap Blt_PhotoImageMask _ANSI_ARGS_((Tk_Window tkwin, 
+       Tk_PhotoImageBlock src));
+
+extern Pixmap Blt_RotateBitmap _ANSI_ARGS_((Tk_Window tkwin, Pixmap bitmap,
+       int width, int height, double theta, int *widthPtr, int *heightPtr));
+
+extern Pixmap Blt_ScaleBitmap _ANSI_ARGS_((Tk_Window tkwin, Pixmap srcBitmap,
+       int srcWidth, int srcHeight, int scaledWidth, int scaledHeight));
+
+extern Pixmap Blt_ScaleRotateBitmapRegion _ANSI_ARGS_((Tk_Window tkwin,
+       Pixmap srcBitmap, unsigned int srcWidth, unsigned int srcHeight, 
+       int regionX, int regionY, unsigned int regionWidth, 
+       unsigned int regionHeight, unsigned int virtWidth, 
+       unsigned int virtHeight, double theta));
+       
+typedef enum {MIRROR_X=1, MIRROR_Y=2, MIRROR_XY=3, MIRROR_TILE=4, MIRROR_OUTER=5, MIRROR_INNER=6} BltMirrorEnum;
+
+extern int
+Blt_ImageMirror(Tcl_Interp *interp, char *srcImg, char *dstImg, int flip, int halo);
+
+
+#endif /*_BLT_IMAGE_H*/