Files
vt1200/xie/build/include/X11/extensions/XIElib.h
T
arti d8d54bb990 feat(xie): a client-chosen XIE image is displayed on the VT1200
The XIE path now runs end to end: XieCreateImage -> XieCreatePhoto ->
XiePutTile -> XieExport(photomap -> depth-1 pixmap) -> XCopyArea(pixmap ->
window), and the client's tile appears on screen at the client's own window
position, pixel-exact.

TWO FAULTS BEHIND THE LONG DEAD END

1. Device model (harness/mame/vt1200.cpp, opt-in VT1200_ACCEL=1).  The
   accelerator's output port 0x5600200 returns the pixel stream the firmware
   pushed into the FIFO -- the firmware then stores it into the drawable itself
   (file 0x125528: MOVE *B6,*B1 ; ADDK 0x10,B1).  The FIFO read pointer was
   never reset between transfers, so consecutive exports read stale words and
   the same fill produced 759 then 516 set pixels.  Reset m_fifo_in/out on the
   data-register write; the export is now deterministic.

2. Measurement, not the device.
   - dwt/screenshot.py without --real reads 1024x1024 at a 128-byte row stride,
     but the VR319 default programs 1280x1024 at a 2048-bit (256-byte) pitch.
     That is the "shifted" picture; --real is the correct read.
   - The earlier "0 differing bytes over 128 KiB" VRAM comparison stepped peek
     by 1024 *bit* addresses, so it scanned rows 0..63 only -- never the window
     at rows 200..263.  Over the real raster the white/black diff is 576 bytes
     spanning exactly those rows.
   - New instrument: decclient does a server-side XGetImage readback of the
     pixmap and window and counts set pixels.  That separated "the server never
     drew it" from "the framebuffer view is wrong".

EVIDENCE (reproduced twice, the second time from a fresh machine)

  no export vs 0xFF : 4096 / 4096 pixels differ
  no export vs 0x00 :    0 / 4096   (the window background is black)
  0xFF      vs 0x00 : 4096 / 4096
  0xAA      vs 0x0F : 2048 / 4096   (the two stripe phases)

Tile byte 0xAA reproduces as 1-pixel vertical stripes, 0x0F as 4-pixel, with
no shear -- so the placement is right and the pixels are the client's.

Contents: xie/ holds DEC XIE 2.3 headers, 84 man pages and complete
client+server source; a libXie.a and decclient built from DEC's own code; the
XIE probes; and evidence/ with every measurement, including explicit
retractions of the earlier wrong readings (VRAM_IDENTICAL_FOR_BOTH_FILLS and
friends).  xie/evidence/XIE_IMAGE_DISPLAYED.md is the report; frames are in
xie/evidence/png/.

The accelerator model stays opt-in: it answers the status poll and relays the
pixel stream, but performs no compositing, so it is a stand-in and the verified
default configuration is unchanged (a no-env run still parks in the level-0
diagnostics menu at PC=3FDCE400).
2026-11-01 23:22:25 +02:00

1917 lines
43 KiB
C

/* $XConsortium: XIElib.h,v 1.12 95/04/28 18:01:11 mor Exp $ */
/*
Copyright (c) 1993, 1994 X Consortium
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of the X Consortium shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from the X Consortium.
*/
#ifndef _XIELIB_H_
#define _XIELIB_H_
#include <X11/Xlib.h>
#include <X11/extensions/XIE.h>
/*--------------------------------------------------------------------------*
* XIE types *
*--------------------------------------------------------------------------*/
typedef float XieFloat;
typedef float XieConstant[3];
typedef float XieMatrix[9];
typedef unsigned XieAlignment;
typedef unsigned XieArithmeticOp;
typedef unsigned XieColorAllocTechnique;
typedef XID XieColorList;
typedef unsigned XieColorspace;
typedef unsigned XieCompareOp;
typedef unsigned XieConstrainTechnique;
typedef unsigned XieConvolveTechnique;
typedef unsigned XieDataClass;
typedef unsigned XieDataType;
typedef unsigned XieDecodeTechnique;
typedef unsigned XieDitherTechnique;
typedef unsigned XieEncodeTechnique;
typedef XID XiePhotospace;
typedef XID XiePhotoflo;
typedef unsigned XieExportNotify;
typedef unsigned XieExportState;
typedef unsigned XieGamutTechnique;
typedef unsigned XieGeometryTechnique;
typedef struct {
unsigned long value;
unsigned long count;
} XieHistogramData;
typedef unsigned XieHistogramShape;
typedef unsigned XieInterleave;
typedef unsigned long XieLevels[3];
typedef XID XieLut;
typedef unsigned XieMathOp;
typedef unsigned XieOrientation;
typedef unsigned XiePhotofloOutcome;
typedef unsigned XiePhotofloState;
typedef XID XiePhotomap;
typedef unsigned XiePhototag;
typedef struct {
int offset_x;
int offset_y;
XiePhototag phototag;
} XieProcessDomain;
typedef struct { /* this is bcopyable on 32 bit machines */
long x; /* when using PutClientData */
long y;
unsigned long width;
unsigned long height;
} XieRectangle;
typedef XID XieRoi;
typedef unsigned XieServiceClass;
typedef unsigned XieTechniqueGroup;
typedef struct {
Bool needs_param;
XieTechniqueGroup group;
unsigned int number;
unsigned int speed;
char *name;
} XieTechnique;
typedef struct {
XiePhototag src;
int dst_x;
int dst_y;
} XieTile;
typedef unsigned long XieLTriplet[3];
typedef unsigned XieWhiteAdjustTechnique;
#if NeedFunctionPrototypes
typedef void *XiePointer;
#else
typedef char *XiePointer;
#endif
/*--------------------------------------------------------------------------*
* Extension information *
*--------------------------------------------------------------------------*/
typedef struct {
unsigned server_major_rev;
unsigned server_minor_rev;
XieServiceClass service_class;
XieAlignment alignment;
int uncnst_mantissa;
int uncnst_min_exp;
int uncnst_max_exp;
int n_cnst_levels; /* number of constrained levels */
unsigned long *cnst_levels; /* recommended constrained levels */
int major_opcode;
int first_event;
int first_error;
} XieExtensionInfo;
/*--------------------------------------------------------------------------*
* Photoflo element union *
*--------------------------------------------------------------------------*/
typedef struct {
int elemType;
union {
/*
* Import Elements
*/
struct {
XieDataClass data_class;
XieOrientation band_order;
XieLTriplet length;
XieLevels levels;
} ImportClientLUT;
struct {
XieDataClass data_class;
XieLTriplet width;
XieLTriplet height;
XieLevels levels;
Bool notify;
XieDecodeTechnique decode_tech;
XiePointer decode_param;
} ImportClientPhoto;
struct {
unsigned int rectangles;
} ImportClientROI;
struct {
Drawable drawable;
int src_x;
int src_y;
unsigned int width;
unsigned int height;
unsigned long fill;
Bool notify;
} ImportDrawable;
struct {
Drawable drawable;
int src_x;
int src_y;
unsigned int width;
unsigned int height;
unsigned long fill;
unsigned long bit_plane;
Bool notify;
} ImportDrawablePlane;
struct {
XieLut lut;
} ImportLUT;
struct {
XiePhotomap photomap;
Bool notify;
} ImportPhotomap;
struct {
XieRoi roi;
} ImportROI;
/*
* Process Elements
*/
struct {
XiePhototag src1;
XiePhototag src2;
XieProcessDomain domain;
XieConstant constant;
XieArithmeticOp operator;
unsigned int band_mask;
} Arithmetic;
struct {
XiePhototag src1;
XiePhototag src2;
XiePhototag src3;
} BandCombine;
struct {
XiePhototag src;
unsigned int levels;
float bias;
XieConstant coefficients;
} BandExtract;
struct {
XiePhototag src;
unsigned int band_number;
} BandSelect;
struct {
XiePhototag src1;
XiePhototag src2;
XieConstant src_constant;
XiePhototag alpha;
float alpha_constant;
XieProcessDomain domain;
unsigned int band_mask;
} Blend;
struct {
XiePhototag src1;
XiePhototag src2;
XieProcessDomain domain;
XieConstant constant;
XieCompareOp operator;
Bool combine;
unsigned int band_mask;
} Compare;
struct {
XiePhototag src;
XieLevels levels;
XieConstrainTechnique constrain_tech;
XiePointer constrain_param;
} Constrain;
struct {
XiePhototag src;
Colormap colormap;
XieDataClass data_class;
unsigned int precision;
} ConvertFromIndex;
struct {
XiePhototag src;
XieColorspace color_space;
XiePointer color_param;
} ConvertFromRGB;
struct {
XiePhototag src;
Colormap colormap;
XieColorList color_list;
Bool notify;
XieColorAllocTechnique color_alloc_tech;
XiePointer color_alloc_param;
} ConvertToIndex;
struct {
XiePhototag src;
XieColorspace color_space;
XiePointer color_param;
} ConvertToRGB;
struct {
XiePhototag src;
XieProcessDomain domain;
float *kernel;
int kernel_size;
unsigned int band_mask;
XieConvolveTechnique convolve_tech;
XiePointer convolve_param;
} Convolve;
struct {
XiePhototag src;
XieLevels levels;
unsigned int band_mask;
XieDitherTechnique dither_tech;
XiePointer dither_param;
} Dither;
struct {
XiePhototag src;
unsigned int width;
unsigned int height;
float coefficients[6];
XieConstant constant;
unsigned int band_mask;
XieGeometryTechnique sample_tech;
XiePointer sample_param;
} Geometry;
struct {
XiePhototag src1;
XiePhototag src2;
XieProcessDomain domain;
XieConstant constant;
int operator;
unsigned int band_mask;
} Logical;
struct {
XiePhototag src;
XieProcessDomain domain;
XieHistogramShape shape;
XiePointer shape_param;
} MatchHistogram;
struct {
XiePhototag src;
XieProcessDomain domain;
XieMathOp operator;
unsigned int band_mask;
} Math;
struct {
unsigned int width;
unsigned int height;
XieConstant constant;
XieTile *tiles;
unsigned int tile_count;
} PasteUp;
struct {
XiePhototag src;
XieProcessDomain domain;
XiePhototag lut;
unsigned int band_mask;
} Point;
struct {
XiePhototag src;
} Unconstrain;
/*
* Export Elements
*/
struct {
XiePhototag src;
XieProcessDomain domain;
XieExportNotify notify;
} ExportClientHistogram;
struct {
XiePhototag src;
XieOrientation band_order;
XieExportNotify notify;
XieLTriplet start;
XieLTriplet length;
} ExportClientLUT;
struct {
XiePhototag src;
XieExportNotify notify;
XieEncodeTechnique encode_tech;
XiePointer encode_param;
} ExportClientPhoto;
struct {
XiePhototag src;
XieExportNotify notify;
} ExportClientROI;
struct {
XiePhototag src;
Drawable drawable;
GC gc;
int dst_x;
int dst_y;
} ExportDrawable;
struct {
XiePhototag src;
Drawable drawable;
GC gc;
int dst_x;
int dst_y;
} ExportDrawablePlane;
struct {
XiePhototag src;
XieLut lut;
Bool merge;
XieLTriplet start;
} ExportLUT;
struct {
XiePhototag src;
XiePhotomap photomap;
XieEncodeTechnique encode_tech;
XiePointer encode_param;
} ExportPhotomap;
struct {
XiePhototag src;
XieRoi roi;
} ExportROI;
} data;
} XiePhotoElement;
typedef XiePhotoElement *XiePhotofloGraph;
/*--------------------------------------------------------------------------*
* Technique Parameters *
*--------------------------------------------------------------------------*/
/* Color Alloc */
typedef struct {
unsigned long fill;
} XieColorAllocAllParam;
typedef struct {
float match_limit;
float gray_limit;
} XieColorAllocMatchParam;
typedef struct {
unsigned long max_cells;
} XieColorAllocRequantizeParam;
/* Colorspace - conversion from RGB */
typedef struct {
XieMatrix matrix;
XieWhiteAdjustTechnique white_adjust_tech;
XiePointer white_adjust_param;
} XieRGBToCIELabParam, XieRGBToCIEXYZParam;
typedef struct {
XieLevels levels;
float luma_red;
float luma_green;
float luma_blue;
XieConstant bias;
} XieRGBToYCbCrParam;
typedef struct {
XieLevels levels;
float luma_red;
float luma_green;
float luma_blue;
float scale;
} XieRGBToYCCParam;
/* Colorspace - conversion to RGB */
typedef struct {
XieMatrix matrix;
XieWhiteAdjustTechnique white_adjust_tech;
XiePointer white_adjust_param;
XieGamutTechnique gamut_tech;
XiePointer gamut_param;
} XieCIELabToRGBParam, XieCIEXYZToRGBParam;
typedef struct {
XieLevels levels;
float luma_red;
float luma_green;
float luma_blue;
XieConstant bias;
XieGamutTechnique gamut_tech;
XiePointer gamut_param;
} XieYCbCrToRGBParam;
typedef struct {
XieLevels levels;
float luma_red;
float luma_green;
float luma_blue;
float scale;
XieGamutTechnique gamut_tech;
XiePointer gamut_param;
} XieYCCToRGBParam;
/* Constrain */
typedef struct {
XieConstant input_low,input_high;
XieLTriplet output_low,output_high;
} XieClipScaleParam;
/* Convolve */
typedef struct {
XieConstant constant;
} XieConvolveConstantParam;
/* Decode */
typedef struct {
XieOrientation fill_order;
XieOrientation pixel_order;
unsigned int pixel_stride;
unsigned int left_pad;
unsigned int scanline_pad;
} XieDecodeUncompressedSingleParam;
typedef struct {
unsigned char left_pad[3];
XieOrientation fill_order;
unsigned char pixel_stride[3];
XieOrientation pixel_order;
unsigned char scanline_pad[3];
XieOrientation band_order;
XieInterleave interleave;
} XieDecodeUncompressedTripleParam;
typedef struct {
XieOrientation encoded_order;
Bool normal;
Bool radiometric;
} XieDecodeG31DParam, XieDecodeG32DParam, XieDecodeG42DParam,
XieDecodeTIFF2Param;
typedef struct {
XieOrientation encoded_order;
Bool normal;
} XieDecodeTIFFPackBitsParam;
typedef struct {
XieInterleave interleave;
XieOrientation band_order;
Bool up_sample;
} XieDecodeJPEGBaselineParam;
typedef struct {
XieInterleave interleave;
XieOrientation band_order;
} XieDecodeJPEGLosslessParam;
/* Dither */
typedef struct {
unsigned int threshold_order;
} XieDitherOrderedParam;
/* Encode */
typedef struct {
XieOrientation fill_order;
XieOrientation pixel_order;
unsigned int pixel_stride;
unsigned int scanline_pad;
} XieEncodeUncompressedSingleParam;
typedef struct {
unsigned char pixel_stride[3];
XieOrientation pixel_order;
unsigned char scanline_pad[3];
XieOrientation fill_order;
XieOrientation band_order;
XieInterleave interleave;
} XieEncodeUncompressedTripleParam;
typedef struct {
Bool align_eol;
Bool radiometric;
XieOrientation encoded_order;
} XieEncodeG31DParam;
typedef struct {
Bool uncompressed;
Bool align_eol;
Bool radiometric;
XieOrientation encoded_order;
unsigned long k_factor;
} XieEncodeG32DParam;
typedef struct {
Bool uncompressed;
Bool radiometric;
XieOrientation encoded_order;
} XieEncodeG42DParam;
typedef struct {
unsigned int preference;
} XieEncodeServerChoiceParam;
typedef struct {
XieInterleave interleave;
XieOrientation band_order;
unsigned char horizontal_samples[3];
unsigned char vertical_samples[3];
char *q_table;
unsigned int q_size;
char *ac_table;
unsigned int ac_size;
char *dc_table;
unsigned int dc_size;
} XieEncodeJPEGBaselineParam;
typedef struct {
XieInterleave interleave;
XieOrientation band_order;
unsigned char predictor[3];
char *table;
unsigned int table_size;
} XieEncodeJPEGLosslessParam;
typedef struct {
XieOrientation encoded_order;
Bool radiometric;
} XieEncodeTIFF2Param;
typedef struct {
XieOrientation encoded_order;
} XieEncodeTIFFPackBitsParam;
/* Geometry */
typedef struct {
int simple;
} XieGeomAntialiasByAreaParam;
typedef struct {
int kernel_size;
} XieGeomAntialiasByLowpassParam;
typedef struct {
float sigma;
float normalize;
unsigned int radius;
Bool simple;
} XieGeomGaussianParam;
typedef struct {
unsigned int modify;
} XieGeomNearestNeighborParam;
/* Histogram */
typedef struct {
float mean;
float sigma;
} XieHistogramGaussianParam;
typedef struct {
float constant;
Bool shape_factor;
} XieHistogramHyperbolicParam;
/* White Adjust */
typedef struct {
XieConstant white_point;
} XieWhiteAdjustCIELabShiftParam;
/*--------------------------------------------------------------------------*
* Events *
*--------------------------------------------------------------------------*/
typedef struct {
int type;
unsigned long serial;
Bool send_event;
Display *display;
unsigned long name_space;
Time time;
unsigned long flo_id;
XiePhototag src;
unsigned int elem_type;
XieColorList color_list;
XieColorAllocTechnique color_alloc_technique;
unsigned long color_alloc_data;
} XieColorAllocEvent;
typedef struct {
int type;
unsigned long serial;
Bool send_event;
Display *display;
unsigned long name_space;
Time time;
unsigned long flo_id;
XiePhototag src;
unsigned int elem_type;
XieDecodeTechnique decode_technique;
Bool aborted;
unsigned int band_number;
unsigned long width;
unsigned long height;
} XieDecodeNotifyEvent;
typedef struct {
int type;
unsigned long serial;
Bool send_event;
Display *display;
unsigned long name_space;
Time time;
unsigned long flo_id;
XiePhototag src;
unsigned int elem_type;
unsigned int band_number;
unsigned long data[3];
} XieExportAvailableEvent;
typedef struct {
int type;
unsigned long serial;
Bool send_event;
Display *display;
unsigned long name_space;
Time time;
unsigned long flo_id;
XiePhototag src;
unsigned int elem_type;
Window window;
int x;
int y;
unsigned int width;
unsigned int height;
} XieImportObscuredEvent;
typedef struct {
int type;
unsigned long serial;
Bool send_event;
Display *display;
unsigned long name_space;
Time time;
unsigned long flo_id;
XiePhotofloOutcome outcome;
} XiePhotofloDoneEvent;
/*--------------------------------------------------------------------------*
* Photoflo Errors *
*--------------------------------------------------------------------------*/
typedef struct {
int type;
Display *display;
unsigned long flo_id;
unsigned long serial;
unsigned char error_code;
unsigned char request_code;
unsigned char minor_code;
unsigned int flo_error_code;
unsigned long name_space;
XiePhototag phototag;
unsigned int elem_type;
} XieFloAccessError, XieFloAllocError, XieFloElementError, XieFloIDError,
XieFloLengthError, XieFloMatchError, XieFloSourceError;
typedef struct {
int type;
Display *display;
unsigned long flo_id;
unsigned long serial;
unsigned char error_code;
unsigned char request_code;
unsigned char minor_code;
unsigned int flo_error_code;
unsigned long name_space;
XiePhototag phototag;
unsigned int elem_type;
XID resource_id;
} XieFloResourceError;
typedef struct {
int type;
Display *display;
unsigned long flo_id;
unsigned long serial;
unsigned char error_code;
unsigned char request_code;
unsigned char minor_code;
unsigned int flo_error_code;
unsigned long name_space;
XiePhototag phototag;
unsigned int elem_type;
XiePhototag domain_src;
} XieFloDomainError;
typedef struct {
int type;
Display *display;
unsigned long flo_id;
unsigned long serial;
unsigned char error_code;
unsigned char request_code;
unsigned char minor_code;
unsigned int flo_error_code;
unsigned long name_space;
XiePhototag phototag;
unsigned int elem_type;
unsigned int operator;
} XieFloOperatorError;
typedef struct {
int type;
Display *display;
unsigned long flo_id;
unsigned long serial;
unsigned char error_code;
unsigned char request_code;
unsigned char minor_code;
unsigned int flo_error_code;
unsigned long name_space;
XiePhototag phototag;
unsigned int elem_type;
unsigned int technique_number;
unsigned int num_tech_params;
XieTechniqueGroup tech_group;
} XieFloTechniqueError;
typedef struct {
int type;
Display *display;
unsigned long flo_id;
unsigned long serial;
unsigned char error_code;
unsigned char request_code;
unsigned char minor_code;
unsigned int flo_error_code;
unsigned long name_space;
XiePhototag phototag;
unsigned int elem_type;
unsigned long bad_value;
} XieFloValueError;
/*--------------------------------------------------------------------------*
* Function prototypes *
*--------------------------------------------------------------------------*/
/* Startup functions -------------------------------------------------------*/
extern Status XieInitialize (
#if NeedFunctionPrototypes
Display * /* display */,
XieExtensionInfo ** /* extinfo_ret */
#endif
);
extern Status XieQueryTechniques (
#if NeedFunctionPrototypes
Display * /* display */,
XieTechniqueGroup /* technique_group */,
int * /* ntechniques_ret */,
XieTechnique ** /* techniques_ret */
#endif
);
extern void XieFreeTechniques (
#if NeedFunctionPrototypes
XieTechnique * /* techs */,
unsigned int /* count */
#endif
);
/* Color List functions ---------------------------------------------------*/
extern XieColorList XieCreateColorList (
#if NeedFunctionPrototypes
Display * /* display */
#endif
);
extern void XieDestroyColorList (
#if NeedFunctionPrototypes
Display * /* display */,
XieColorList /* color_list */
#endif
);
extern void XiePurgeColorList (
#if NeedFunctionPrototypes
Display * /* display */,
XieColorList /* color_list */
#endif
);
extern Status XieQueryColorList (
#if NeedFunctionPrototypes
Display * /* display */,
XieColorList /* color_list */,
Colormap * /* colormap_ret */,
unsigned * /* ncolors_ret */,
unsigned long ** /* colors_ret */
#endif
);
/* LUT functions -----------------------------------------------------------*/
extern XieLut XieCreateLUT (
#if NeedFunctionPrototypes
Display * /* display */
#endif
);
extern void XieDestroyLUT (
#if NeedFunctionPrototypes
Display * /* display */,
XieLut /* lut */
#endif
);
/* Photomap functions ------------------------------------------------------*/
extern XiePhotomap XieCreatePhotomap (
#if NeedFunctionPrototypes
Display * /* display */
#endif
);
extern void XieDestroyPhotomap (
#if NeedFunctionPrototypes
Display * /* display */,
XiePhotomap /* photomap */
#endif
);
extern Status XieQueryPhotomap (
#if NeedFunctionPrototypes
Display * /* display */,
XiePhotomap /* photomap */,
Bool * /* populated_ret */,
XieDataType * /* datatype_ret */,
XieDataClass * /* class_ret */,
XieDecodeTechnique * /* decode_technique_ret */,
XieLTriplet /* width_ret */,
XieLTriplet /* height_ret */,
XieLTriplet /* levels_ret */
#endif
);
/* ROI functions -----------------------------------------------------------*/
extern XieRoi XieCreateROI (
#if NeedFunctionPrototypes
Display * /* display */
#endif
);
extern void XieDestroyROI (
#if NeedFunctionPrototypes
Display * /* display */,
XieRoi /* roi */
#endif
);
/* Photospace functions ----------------------------------------------------*/
extern XiePhotospace XieCreatePhotospace (
#if NeedFunctionPrototypes
Display * /* display */
#endif
);
extern void XieDestroyPhotospace (
#if NeedFunctionPrototypes
Display * /* display */,
XiePhotospace /* photospace */
#endif
);
extern void XieExecuteImmediate (
#if NeedFunctionPrototypes
Display * /* display */,
XiePhotospace /* photospace */,
unsigned long /* flo_id */,
Bool /* notify */,
XiePhotoElement * /* elem_list */,
int /* elem_count */
#endif
);
/* Photoflo functions ------------------------------------------------------*/
extern XiePhotoElement *XieAllocatePhotofloGraph (
#if NeedFunctionPrototypes
unsigned int /* count */
#endif
);
extern void XieFreePhotofloGraph (
#if NeedFunctionPrototypes
XiePhotoElement * /* elements */,
unsigned int /* count */
#endif
);
extern XiePhotoflo XieCreatePhotoflo (
#if NeedFunctionPrototypes
Display * /* display */,
XiePhotoElement * /* elem_list */,
int /* elem_count */
#endif
);
extern void XieDestroyPhotoflo (
#if NeedFunctionPrototypes
Display * /* display */,
XiePhotoflo /* photoflo */
#endif
);
extern void XieExecutePhotoflo (
#if NeedFunctionPrototypes
Display * /* display */,
XiePhotoflo /* photoflo */,
Bool /* notify */
#endif
);
extern void XieModifyPhotoflo (
#if NeedFunctionPrototypes
Display * /* display */,
XiePhotoflo /* photoflo */,
int /* start */,
XiePhotoElement * /* elem_list */,
int /* elem_count */
#endif
);
extern void XieRedefinePhotoflo (
#if NeedFunctionPrototypes
Display * /* display */,
XiePhotoflo /* photoflo */,
XiePhotoElement * /* elem_list */,
int /* elem_count */
#endif
);
extern Status XieQueryPhotoflo (
#if NeedFunctionPrototypes
Display * /* display */,
unsigned long /* name_space */,
unsigned long /* flo_id */,
XiePhotofloState * /* state_ret */,
XiePhototag ** /* data_expected_ret */,
unsigned int * /* nexpected_ret */,
XiePhototag ** /* data_available_ret */,
unsigned int * /* navailable_ret */
#endif
);
/* Client Data functions ---------------------------------------------------*/
extern void XiePutClientData (
#if NeedFunctionPrototypes
Display * /* display */,
unsigned long /* name_space */,
unsigned long /* flo_id */,
XiePhototag /* element */,
Bool /* final */,
unsigned /* band_number */,
unsigned char * /* data */,
unsigned /* nbytes */
#endif
);
extern Status XieGetClientData (
#if NeedFunctionPrototypes
Display * /* display */,
unsigned long /* name_space */,
unsigned long /* flo_id */,
XiePhototag /* element */,
unsigned /* max_bytes */,
Bool /* terminate */,
unsigned /* band_number */,
XieExportState * /* new_state_ret */,
unsigned char ** /* data_ret */,
unsigned * /* nbytes_ret */
#endif
);
/* Abort and Await functions -----------------------------------------------*/
extern void XieAbort (
#if NeedFunctionPrototypes
Display * /* display */,
unsigned long /* name_space */,
unsigned long /* flo_id */
#endif
);
extern void XieAwait (
#if NeedFunctionPrototypes
Display * /* display */,
unsigned long /* name_space */,
unsigned long /* flo_id */
#endif
);
/* Photoflo element functions ----------------------------------------------*/
extern void XieFloImportClientLUT (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XieDataClass /* data_class */,
XieOrientation /* band_order */,
XieLTriplet /* length */,
XieLevels /* levels */
#endif
);
extern void XieFloImportClientPhoto (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XieDataClass /* data_class */,
XieLTriplet /* width */,
XieLTriplet /* height */,
XieLevels /* levels */,
Bool /* notify */,
XieDecodeTechnique /* decode_tech */,
XiePointer /* decode_param */
#endif
);
extern void XieFloImportClientROI (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
unsigned int /* rectangles */
#endif
);
extern void XieFloImportDrawable (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
Drawable /* drawable */,
int /* src_x */,
int /* src_y */,
unsigned int /* width */,
unsigned int /* height */,
unsigned long /* fill */,
Bool /* notify */
#endif
);
extern void XieFloImportDrawablePlane (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
Drawable /* drawable */,
int /* src_x */,
int /* src_y */,
unsigned int /* width */,
unsigned int /* height */,
unsigned long /* fill */,
unsigned long /* bit_plane */,
Bool /* notify */
#endif
);
extern void XieFloImportLUT (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XieLut /* lut */
#endif
);
extern void XieFloImportPhotomap (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhotomap /* photomap */,
Bool /* notify */
#endif
);
extern void XieFloImportROI (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XieRoi /* roi */
#endif
);
extern void XieFloArithmetic (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src1 */,
XiePhototag /* src2 */,
XieProcessDomain * /* domain */,
XieConstant /* constant */,
XieArithmeticOp /* operator */,
unsigned int /* band_mask */
#endif
);
extern void XieFloBandCombine (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src1 */,
XiePhototag /* src2 */,
XiePhototag /* src3 */
#endif
);
extern void XieFloBandExtract (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
unsigned int /* levels */,
double /* bias */,
XieConstant /* coefficients */
#endif
);
extern void XieFloBandSelect (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
unsigned int /* band_number */
#endif
);
extern void XieFloBlend (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src1 */,
XiePhototag /* src2 */,
XieConstant /* src_constant */,
XiePhototag /* alpha */,
double /* alpha_const */,
XieProcessDomain * /* domain */,
unsigned int /* band_mask */
#endif
);
extern void XieFloCompare (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src1 */,
XiePhototag /* src2 */,
XieProcessDomain * /* domain */,
XieConstant /* constant */,
XieCompareOp /* operator */,
Bool /* combine */,
unsigned int /* band_mask */
#endif
);
extern void XieFloConstrain (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieLevels /* levels */,
XieConstrainTechnique /* constrain_tech */,
XiePointer /* constrain_param */
#endif
);
extern void XieFloConvertFromIndex (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
Colormap /* colormap */,
XieDataClass /* data_class */,
unsigned int /* precision */
#endif
);
extern void XieFloConvertFromRGB (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieColorspace /* color_space */,
XiePointer /* color_param */
#endif
);
extern void XieFloConvertToIndex (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
Colormap /* colormap */,
XieColorList /* color_list */,
Bool /* notify */,
XieColorAllocTechnique /* color_alloc_tech */,
XiePointer /* color_alloc_param */
#endif
);
extern void XieFloConvertToRGB (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieColorspace /* color_space */,
XiePointer /* color_param */
#endif
);
extern void XieFloConvolve (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieProcessDomain * /* domain */,
float * /* kernel */,
int /* kernel_size */,
unsigned int /* band_mask */,
XieConvolveTechnique /* convolve_tech */,
XiePointer /* convolve_param */
#endif
);
extern void XieFloDither (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
unsigned int /* band_mask */,
XieLevels /* levels */,
XieDitherTechnique /* dither_tech */,
XiePointer /* dither_param */
#endif
);
extern void XieFloGeometry (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
unsigned int /* width */,
unsigned int /* height */,
float[6] /* coefficients[6] */,
XieConstant /* constant */,
unsigned int /* band_mask */,
XieGeometryTechnique /* sample_tech */,
XiePointer /* sample_param */
#endif
);
extern void XieFloLogical (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src1 */,
XiePhototag /* src2 */,
XieProcessDomain * /* domain */,
XieConstant /* constant */,
unsigned long /* operator */,
unsigned int /* band_mask */
#endif
);
extern void XieFloMatchHistogram (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieProcessDomain * /* domain */,
XieHistogramShape /* shape */,
XiePointer /* shape_param */
#endif
);
extern void XieFloMath (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieProcessDomain * /* domain */,
XieMathOp /* operator */,
unsigned int /* band_mask */
#endif
);
extern void XieFloPasteUp (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
unsigned int /* width */,
unsigned int /* height */,
XieConstant /* constant */,
XieTile * /* tiles */,
unsigned int /* tile_count */
#endif
);
extern void XieFloPoint (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieProcessDomain * /* domain */,
XiePhototag /* lut */,
unsigned int /* band_mask */
#endif
);
extern void XieFloUnconstrain (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */
#endif
);
extern void XieFloExportClientHistogram (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieProcessDomain * /* domain */,
XieExportNotify /* notify */
#endif
);
extern void XieFloExportClientLUT (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieOrientation /* band_order */,
XieExportNotify /* notify */,
XieLTriplet /* start */,
XieLTriplet /* length */
#endif
);
extern void XieFloExportClientPhoto (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieExportNotify /* notify */,
XieEncodeTechnique /* encode_tech */,
XiePointer /* encode_param */
#endif
);
extern void XieFloExportClientROI (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieExportNotify /* notify */
#endif
);
extern void XieFloExportDrawable (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
Drawable /* drawable */,
GC /* gc */,
int /* dst_x */,
int /* dst_y */
#endif
);
extern void XieFloExportDrawablePlane (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
Drawable /* drawable */,
GC /* gc */,
int /* dst_x */,
int /* dst_y */
#endif
);
extern void XieFloExportLUT (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieLut /* lut */,
Bool /* merge */,
XieLTriplet /* start */
#endif
);
extern void XieFloExportPhotomap (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XiePhotomap /* photomap */,
XieEncodeTechnique /* encode_tech */,
XiePointer /* encode_param */
#endif
);
extern void XieFloExportROI (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */,
XiePhototag /* src */,
XieRoi /* roi */
#endif
);
/* Technique functions -----------------------------------------------------*/
extern XieColorAllocAllParam *XieTecColorAllocAll (
#if NeedFunctionPrototypes
unsigned long /* fill */
#endif
);
extern XieColorAllocMatchParam *XieTecColorAllocMatch (
#if NeedFunctionPrototypes
double /* match_limit */,
double /* gray_limit */
#endif
);
extern XieColorAllocRequantizeParam *XieTecColorAllocRequantize (
#if NeedFunctionPrototypes
unsigned long /* max_cells */
#endif
);
extern XieRGBToCIELabParam *XieTecRGBToCIELab (
#if NeedFunctionPrototypes
XieMatrix /* matrix */,
XieWhiteAdjustTechnique /* white_adjust_tech */,
XiePointer /* white_adjust_param */
#endif
);
extern XieRGBToCIEXYZParam *XieTecRGBToCIEXYZ (
#if NeedFunctionPrototypes
XieMatrix /* matrix */,
XieWhiteAdjustTechnique /* white_adjust_tech */,
XiePointer /* white_adjust_param */
#endif
);
extern XieRGBToYCbCrParam *XieTecRGBToYCbCr (
#if NeedFunctionPrototypes
XieLevels /* levels */,
double /* luma_red */,
double /* luma_green */,
double /* luma_blue */,
XieConstant /* bias */
#endif
);
extern XieRGBToYCCParam *XieTecRGBToYCC (
#if NeedFunctionPrototypes
XieLevels /* levels */,
double /* luma_red */,
double /* luma_green */,
double /* luma_blue */,
double /* scale */
#endif
);
extern XieCIELabToRGBParam *XieTecCIELabToRGB (
#if NeedFunctionPrototypes
XieMatrix /* matrix */,
XieWhiteAdjustTechnique /* white_adjust_tech */,
XiePointer /* white_adjust_param */,
XieGamutTechnique /* gamut_tech */,
XiePointer /* gamut_param */
#endif
);
extern XieCIEXYZToRGBParam *XieTecCIEXYZToRGB (
#if NeedFunctionPrototypes
XieMatrix /* matrix */,
XieWhiteAdjustTechnique /* white_adjust_tech */,
XiePointer /* white_adjust_param */,
XieGamutTechnique /* gamut_tech */,
XiePointer /* gamut_param */
#endif
);
extern XieYCbCrToRGBParam *XieTecYCbCrToRGB (
#if NeedFunctionPrototypes
XieLevels /* levels */,
double /* luma_red */,
double /* luma_green */,
double /* luma_blue */,
XieConstant /* bias */,
XieGamutTechnique /* gamut_tech */,
XiePointer /* gamut_param */
#endif
);
extern XieYCCToRGBParam *XieTecYCCToRGB (
#if NeedFunctionPrototypes
XieLevels /* levels */,
double /* luma_red */,
double /* luma_green */,
double /* luma_blue */,
double /* scale */,
XieGamutTechnique /* gamut_tech */,
XiePointer /* gamut_param */
#endif
);
extern XieClipScaleParam *XieTecClipScale (
#if NeedFunctionPrototypes
XieConstant /* in_low */,
XieConstant /* in_high */,
XieLTriplet /* out_low */,
XieLTriplet /* out_high */
#endif
);
extern XieConvolveConstantParam *XieTecConvolveConstant (
#if NeedFunctionPrototypes
XieConstant /* constant */
#endif
);
extern XieDecodeUncompressedSingleParam *XieTecDecodeUncompressedSingle (
#if NeedFunctionPrototypes
XieOrientation /* fill_order */,
XieOrientation /* pixel_order */,
unsigned int /* pixel_stride */,
unsigned int /* left_pad */,
unsigned int /* scanline_pad */
#endif
);
extern XieDecodeUncompressedTripleParam *XieTecDecodeUncompressedTriple (
#if NeedFunctionPrototypes
XieOrientation /* fill_order */,
XieOrientation /* pixel_order */,
XieOrientation /* band_order */,
XieInterleave /* interleave */,
unsigned char[3] /* pixel_stride[3] */,
unsigned char[3] /* left_pad[3] */,
unsigned char[3] /* scanline_pad[3] */
#endif
);
extern XieDecodeG31DParam *XieTecDecodeG31D (
#if NeedFunctionPrototypes
XieOrientation /* encoded_order */,
Bool /* normal */,
Bool /* radiometric */
#endif
);
extern XieDecodeG32DParam *XieTecDecodeG32D (
#if NeedFunctionPrototypes
XieOrientation /* encoded_order */,
Bool /* normal */,
Bool /* radiometric */
#endif
);
extern XieDecodeG42DParam *XieTecDecodeG42D (
#if NeedFunctionPrototypes
XieOrientation /* encoded_order */,
Bool /* normal */,
Bool /* radiometric */
#endif
);
extern XieDecodeTIFF2Param *XieTecDecodeTIFF2 (
#if NeedFunctionPrototypes
XieOrientation /* encoded_order */,
Bool /* normal */,
Bool /* radiometric */
#endif
);
extern XieDecodeTIFFPackBitsParam *XieTecDecodeTIFFPackBits (
#if NeedFunctionPrototypes
XieOrientation /* encoded_order */,
Bool /* normal */
#endif
);
extern XieDecodeJPEGBaselineParam *XieTecDecodeJPEGBaseline (
#if NeedFunctionPrototypes
XieInterleave /* interleave */,
XieOrientation /* band_order */,
Bool /* up_sample */
#endif
);
extern XieDecodeJPEGLosslessParam *XieTecDecodeJPEGLossless (
#if NeedFunctionPrototypes
XieInterleave /* interleave */,
XieOrientation /* band_order */
#endif
);
extern XieDitherOrderedParam *XieTecDitherOrderedParam (
#if NeedFunctionPrototypes
unsigned int /* threshold_order */
#endif
);
extern XieEncodeUncompressedSingleParam *XieTecEncodeUncompressedSingle (
#if NeedFunctionPrototypes
XieOrientation /* fill_order */,
XieOrientation /* pixel_order */,
unsigned int /* pixel_stride */,
unsigned int /* scanline_pad */
#endif
);
extern XieEncodeUncompressedTripleParam *XieTecEncodeUncompressedTriple (
#if NeedFunctionPrototypes
XieOrientation /* fill_order */,
XieOrientation /* pixel_order */,
XieOrientation /* band_order */,
XieInterleave /* interleave */,
unsigned char[3] /* pixel_stride[3] */,
unsigned char[3] /* scanline_pad[3] */
#endif
);
extern XieEncodeG31DParam *XieTecEncodeG31D (
#if NeedFunctionPrototypes
Bool /* align_eol */,
Bool /* radiometric */,
XieOrientation /* encoded_order */
#endif
);
extern XieEncodeG32DParam *XieTecEncodeG32D (
#if NeedFunctionPrototypes
Bool /* uncompressed */,
Bool /* align_eol */,
Bool /* radiometric */,
XieOrientation /* encoded_order */,
unsigned long /* k_factor */
#endif
);
extern XieEncodeG42DParam *XieTecEncodeG42D (
#if NeedFunctionPrototypes
Bool /* uncompressed */,
Bool /* radiometric */,
XieOrientation /* encoded_order */
#endif
);
extern XieEncodeServerChoiceParam *XieTecEncodeServerChoice (
#if NeedFunctionPrototypes
unsigned int /* preference */
#endif
);
extern XieEncodeJPEGBaselineParam *XieTecEncodeJPEGBaseline (
#if NeedFunctionPrototypes
XieInterleave /* interleave */,
XieOrientation /* band_order */,
unsigned char[3] /* horizontal_samples[3] */,
unsigned char[3] /* vertical_samples[3] */,
char * /* q_table */,
unsigned int /* q_size */,
char * /* ac_table */,
unsigned int /* ac_size */,
char * /* dc_table */,
unsigned int /* dc_size */
#endif
);
extern void XieFreeEncodeJPEGBaseline (
#if NeedFunctionPrototypes
XieEncodeJPEGBaselineParam * /* param */
#endif
);
extern XieEncodeJPEGLosslessParam *XieTecEncodeJPEGLossless (
#if NeedFunctionPrototypes
XieInterleave /* interleave */,
XieOrientation /* band_order */,
unsigned char[3] /* predictor[3] */,
char * /* table */,
unsigned int /* table_size */
#endif
);
extern void XieFreeEncodeJPEGLossless (
#if NeedFunctionPrototypes
XieEncodeJPEGLosslessParam * /* param */
#endif
);
extern void XieFreePasteUpTiles (
#if NeedFunctionPrototypes
XiePhotoElement * /* element */
#endif
);
extern XieEncodeTIFF2Param *XieTecEncodeTIFF2 (
#if NeedFunctionPrototypes
XieOrientation /* encoded_order */,
Bool /* radiometric */
#endif
);
extern XieEncodeTIFFPackBitsParam *XieTecEncodeTIFFPackBits (
#if NeedFunctionPrototypes
XieOrientation /* encoded_order */
#endif
);
extern XieGeomAntialiasByAreaParam *XieTecGeomAntialiasByArea (
#if NeedFunctionPrototypes
int /* simple */
#endif
);
extern XieGeomAntialiasByLowpassParam *XieTecGeomAntialiasByLowpass (
#if NeedFunctionPrototypes
int /* kernel_size */
#endif
);
extern XieGeomGaussianParam *XieTecGeomGaussian (
#if NeedFunctionPrototypes
double /* sigma */,
double /* normalize */,
unsigned int /* radius */,
Bool /* simple */
#endif
);
extern XieGeomNearestNeighborParam *XieTecGeomNearestNeighbor (
#if NeedFunctionPrototypes
unsigned int /* modify */
#endif
);
extern XieHistogramGaussianParam *XieTecHistogramGaussian (
#if NeedFunctionPrototypes
double /* mean */,
double /* sigma */
#endif
);
extern XieHistogramHyperbolicParam *XieTecHistogramHyperbolic (
#if NeedFunctionPrototypes
double /* constant */,
Bool /* shape_factor */
#endif
);
extern XieWhiteAdjustCIELabShiftParam *XieTecWhiteAdjustCIELabShift (
#if NeedFunctionPrototypes
XieConstant /* white_point */
#endif
);
#endif /* _XIELIB_H_ */