"Fossies" - the Fresh Open Source Software Archive

Member "epstool-3.08/src/gdevdsp.h" (10 Jun 2005, 7287 Bytes) of package /linux/misc/old/ghost/ghostgum/epstool-3.08-os2.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /* Copyright (C) 2001, Ghostgum Software Pty Ltd.  All rights reserved.
    2 
    3    This software is provided AS-IS with no warranty, either express or
    4    implied.
    5    
    6    This software is distributed under license and may not be copied,
    7    modified or distributed except as expressly authorized under the terms
    8    of the license contained in the file LICENSE in this distribution.
    9    
   10    For more information about licensing, please refer to
   11    http://www.ghostscript.com/licensing/. For information on
   12    commercial licensing, go to http://www.artifex.com/licensing/ or
   13    contact Artifex Software, Inc., 101 Lucas Valley Road #110,
   14    San Rafael, CA  94903, U.S.A., +1(415)492-9861.
   15  */
   16 
   17 /* $Id: gdevdsp.h,v 1.2 2002/05/29 11:39:43 ghostgum Exp $ */
   18 
   19 /* gdevdisp.h - callback structure for DLL based display device */
   20 
   21 #ifndef gdevdisp_INCLUDED
   22 #  define gdevdisp_INCLUDED
   23 
   24 /*
   25  * The callback structure must be provided by calling the
   26  * Ghostscript APIs in the following order:
   27  *  gsapi_new_instance(&minst);
   28  *  gsapi_set_display_callback(minst, callback);
   29  *  gsapi_init_with_arg(minst, argc, argv);
   30  *
   31  * Supported parameters and default values are:
   32  * -dDisplayHandle=0                      long
   33  *    Caller supplied handle.
   34  *    Included as first parameter of all callback functions.
   35  *
   36  * -dDisplayFormat=0                      long
   37  *    Color format specified using bitfields below.
   38  *    Included as argument of display_size() and display_presize()
   39  * These can only be changed when the device is closed.
   40  *
   41  * The second parameter of all callback functions "void *device"
   42  * is the address of the Ghostscript display device instance.
   43  * The arguments "void *handle" and "void *device" together
   44  * uniquely identify an instance of the display device.
   45  *
   46  * A typical sequence of callbacks would be
   47  *  open, presize, memalloc, size, sync, page
   48  *  presize, memfree, memalloc, size, sync, page
   49  *  preclose, memfree, close
   50  * The caller should not access the image buffer:
   51  *  - before the first sync
   52  *  - between presize and size
   53  *  - after preclose
   54  * If opening the device fails, you might see the following:
   55  *  open, presize, memalloc, memfree, close
   56  * 
   57  */
   58 
   59 #define DISPLAY_VERSION_MAJOR 1
   60 #define DISPLAY_VERSION_MINOR 0
   61 
   62 /* The display format is set by a combination of the following bitfields */
   63 
   64 /* Define the color space alternatives */
   65 typedef enum DISPLAY_FORMAT_COLOR_e {
   66     DISPLAY_COLORS_NATIVE = (1<<0),
   67     DISPLAY_COLORS_GRAY   = (1<<1),
   68     DISPLAY_COLORS_RGB    = (1<<2),
   69     DISPLAY_COLORS_CMYK   = (1<<3)
   70 } DISPLAY_FORMAT_COLOR;
   71 #define DISPLAY_COLORS_MASK 0x000fL
   72 
   73 /* Define whether alpha information, or an extra unused bytes is included */
   74 /* DISPLAY_ALPHA_FIRST and DISPLAY_ALPHA_LAST are not implemented */
   75 typedef enum DISPLAY_FORMAT_ALPHA_e {
   76     DISPLAY_ALPHA_NONE   = (0<<4),
   77     DISPLAY_ALPHA_FIRST  = (1<<4),
   78     DISPLAY_ALPHA_LAST   = (1<<5),
   79     DISPLAY_UNUSED_FIRST = (1<<6),  /* e.g. Mac xRGB */
   80     DISPLAY_UNUSED_LAST  = (1<<7)   /* e.g. Windows BGRx */
   81 } DISPLAY_FORMAT_ALPHA;
   82 #define DISPLAY_ALPHA_MASK 0x0070L
   83 
   84 /* Define the depth per component for DISPLAY_COLORS_GRAY, 
   85  * DISPLAY_COLORS_RGB and DISPLAY_COLORS_CMYK, 
   86  * or the depth per pixel for DISPLAY_COLORS_NATIVE
   87  * DISPLAY_DEPTH_2 and DISPLAY_DEPTH_12 have not been tested.
   88  */
   89 typedef enum DISPLAY_FORMAT_DEPTH_e {
   90     DISPLAY_DEPTH_1   = (1<<8),
   91     DISPLAY_DEPTH_2   = (1<<9),
   92     DISPLAY_DEPTH_4   = (1<<10),
   93     DISPLAY_DEPTH_8   = (1<<11),
   94     DISPLAY_DEPTH_12  = (1<<12),
   95     DISPLAY_DEPTH_16  = (1<<13)
   96     /* unused (1<<14) */
   97     /* unused (1<<15) */
   98 } DISPLAY_FORMAT_DEPTH;
   99 #define DISPLAY_DEPTH_MASK 0xff00L
  100 
  101 
  102 /* Define whether Red/Cyan should come first, 
  103  * or whether Blue/Black should come first
  104  */
  105 typedef enum DISPLAY_FORMAT_ENDIAN_e {
  106     DISPLAY_BIGENDIAN    = (0<<16), /* Red/Cyan first */
  107     DISPLAY_LITTLEENDIAN = (1<<16)  /* Blue/Black first */
  108 } DISPLAY_FORMAT_ENDIAN;
  109 #define DISPLAY_ENDIAN_MASK 0x00010000L
  110 
  111 /* Define whether the raster starts at the top or bottom of the bitmap */
  112 typedef enum DISPLAY_FORMAT_FIRSTROW_e {
  113     DISPLAY_TOPFIRST    = (0<<17),  /* Unix, Mac */
  114     DISPLAY_BOTTOMFIRST = (1<<17)   /* Windows */
  115 } DISPLAY_FORMAT_FIRSTROW;
  116 #define DISPLAY_FIRSTROW_MASK 0x00020000L
  117 
  118 
  119 /* Define whether packing RGB in 16-bits should use 555
  120  * or 565 (extra bit for green)
  121  */
  122 typedef enum DISPLAY_FORMAT_555_e {
  123     DISPLAY_NATIVE_555 = (0<<18),
  124     DISPLAY_NATIVE_565 = (1<<18)
  125 } DISPLAY_FORMAT_555;
  126 #define DISPLAY_555_MASK 0x00040000L
  127 
  128 #ifndef display_callback_DEFINED
  129 #define display_callback_DEFINED
  130 typedef struct display_callback_s display_callback;
  131 #endif
  132 
  133 struct display_callback_s {
  134     /* Size of this structure */
  135     /* Used for checking if we have been handed a valid structure */
  136     int size;
  137 
  138     /* Major version of this structure  */
  139     /* The major version number will change if this structure changes. */
  140     int version_major;
  141 
  142     /* Minor version of this structure */
  143     /* The minor version number will change if new features are added
  144      * without changes to this structure.  For example, a new color
  145      * format.
  146      */
  147     int version_minor;
  148 
  149     /* New device has been opened */
  150     /* This is the first event from this device. */
  151     int (*display_open)(void *handle, void *device);
  152 
  153     /* Device is about to be closed. */
  154     /* Device will not be closed until this function returns. */
  155     int (*display_preclose)(void *handle, void *device);
  156 
  157     /* Device has been closed. */
  158     /* This is the last event from this device. */
  159     int (*display_close)(void *handle, void *device);
  160 
  161     /* Device is about to be resized. */
  162     /* Resize will only occur if this function returns 0. */
  163     /* raster is byte count of a row. */
  164     int (*display_presize)(void *handle, void *device,
  165     int width, int height, int raster, unsigned int format);
  166    
  167     /* Device has been resized. */
  168     /* New pointer to raster returned in pimage */
  169     int (*display_size)(void *handle, void *device, int width, int height, 
  170     int raster, unsigned int format, unsigned char *pimage);
  171 
  172     /* flushpage */
  173     int (*display_sync)(void *handle, void *device);
  174 
  175     /* showpage */
  176     /* If you want to pause on showpage, then don't return immediately */
  177     int (*display_page)(void *handle, void *device, int copies, int flush);
  178 
  179     /* Notify the caller whenever a portion of the raster is updated. */
  180     /* This can be used for cooperative multitasking or for
  181      * progressive update of the display.
  182      * This function pointer may be set to NULL if not required.
  183      */
  184     int (*display_update)(void *handle, void *device, int x, int y, 
  185     int w, int h);
  186 
  187     /* Allocate memory for bitmap */
  188     /* This is provided in case you need to create memory in a special
  189      * way, e.g. shared.  If this is NULL, the Ghostscript memory device 
  190      * allocates the bitmap. This will only called to allocate the
  191      * image buffer. The first row will be placed at the address 
  192      * returned by display_memalloc.
  193      */
  194     void *(*display_memalloc)(void *handle, void *device, unsigned long size);
  195 
  196     /* Free memory for bitmap */
  197     /* If this is NULL, the Ghostscript memory device will free the bitmap */
  198     int (*display_memfree)(void *handle, void *device, void *mem);
  199    
  200 };
  201 
  202 
  203 #endif /* gdevdisp_INCLUDED */