home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-bin / x11r6.1 / include / x11 / extensions / xielib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-17  |  42.7 KB  |  1,917 lines

  1. /* $XConsortium: XIElib.h,v 1.12 95/04/28 18:01:11 mor Exp $ */
  2.  
  3. /*
  4.  
  5. Copyright (c) 1993, 1994  X Consortium
  6.  
  7. Permission is hereby granted, free of charge, to any person obtaining
  8. a copy of this software and associated documentation files (the
  9. "Software"), to deal in the Software without restriction, including
  10. without limitation the rights to use, copy, modify, merge, publish,
  11. distribute, sublicense, and/or sell copies of the Software, and to
  12. permit persons to whom the Software is furnished to do so, subject to
  13. the following conditions:
  14.  
  15. The above copyright notice and this permission notice shall be included
  16. in all copies or substantial portions of the Software.
  17.  
  18. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  19. OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  20. MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  21. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
  22. OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  23. ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  24. OTHER DEALINGS IN THE SOFTWARE.
  25.  
  26. Except as contained in this notice, the name of the X Consortium shall
  27. not be used in advertising or otherwise to promote the sale, use or
  28. other dealings in this Software without prior written authorization
  29. from the X Consortium.
  30.  
  31. */
  32.  
  33. #ifndef _XIELIB_H_
  34. #define _XIELIB_H_
  35.  
  36. #include <X11/Xlib.h>
  37. #include <X11/extensions/XIE.h>
  38.  
  39. /*--------------------------------------------------------------------------*
  40.  *                 XIE types                    *
  41.  *--------------------------------------------------------------------------*/
  42.  
  43. typedef float           XieFloat;
  44.  
  45. typedef float           XieConstant[3];
  46.  
  47. typedef float          XieMatrix[9];
  48.  
  49. typedef unsigned      XieAlignment;
  50.  
  51. typedef unsigned      XieArithmeticOp;
  52.  
  53. typedef unsigned      XieColorAllocTechnique;
  54.  
  55. typedef    XID          XieColorList;
  56.  
  57. typedef unsigned     XieColorspace;
  58.  
  59. typedef unsigned     XieCompareOp;
  60.  
  61. typedef unsigned     XieConstrainTechnique;
  62.  
  63. typedef unsigned      XieConvolveTechnique;
  64.  
  65. typedef unsigned    XieDataClass;
  66.  
  67. typedef unsigned    XieDataType;
  68.  
  69. typedef unsigned      XieDecodeTechnique;
  70.  
  71. typedef unsigned      XieDitherTechnique;
  72.  
  73. typedef unsigned      XieEncodeTechnique;
  74.  
  75. typedef XID        XiePhotospace;
  76.  
  77. typedef XID        XiePhotoflo;
  78.  
  79. typedef unsigned    XieExportNotify;
  80.  
  81. typedef unsigned    XieExportState;
  82.  
  83. typedef unsigned    XieGamutTechnique;
  84.  
  85. typedef unsigned    XieGeometryTechnique;
  86.  
  87. typedef struct {
  88.     unsigned long    value;
  89.     unsigned long    count;
  90. } XieHistogramData;
  91.  
  92. typedef unsigned    XieHistogramShape;
  93.  
  94. typedef unsigned    XieInterleave;
  95.  
  96. typedef unsigned long    XieLevels[3];
  97.  
  98. typedef    XID        XieLut;
  99.  
  100. typedef unsigned    XieMathOp;
  101.  
  102. typedef unsigned    XieOrientation;
  103.  
  104. typedef unsigned    XiePhotofloOutcome;
  105.  
  106. typedef unsigned    XiePhotofloState;
  107.  
  108. typedef XID        XiePhotomap;
  109.  
  110. typedef unsigned    XiePhototag;
  111.  
  112. typedef struct {
  113.     int            offset_x;
  114.     int            offset_y;
  115.     XiePhototag        phototag;        
  116. } XieProcessDomain;
  117.  
  118. typedef struct {           /* this is bcopyable on 32 bit machines */
  119.     long        x;     /* when using PutClientData */
  120.     long        y;
  121.     unsigned long    width;
  122.     unsigned long    height;
  123. } XieRectangle;
  124.  
  125. typedef XID        XieRoi;
  126.  
  127. typedef unsigned    XieServiceClass;
  128.  
  129. typedef unsigned    XieTechniqueGroup;
  130.  
  131. typedef struct {
  132.     Bool        needs_param;
  133.     XieTechniqueGroup    group;
  134.     unsigned int    number;
  135.     unsigned int    speed;
  136.     char        *name;
  137. } XieTechnique;
  138.  
  139. typedef struct {
  140.     XiePhototag     src;
  141.     int            dst_x;
  142.     int            dst_y;
  143. } XieTile;
  144.  
  145. typedef unsigned long    XieLTriplet[3];
  146.  
  147. typedef unsigned      XieWhiteAdjustTechnique;
  148.  
  149. #if NeedFunctionPrototypes
  150. typedef void *XiePointer;
  151. #else
  152. typedef char *XiePointer;
  153. #endif
  154.  
  155.  
  156. /*--------------------------------------------------------------------------*
  157.  *               Extension information                    *
  158.  *--------------------------------------------------------------------------*/
  159.  
  160. typedef struct {
  161.     unsigned        server_major_rev;
  162.     unsigned        server_minor_rev;
  163.     XieServiceClass    service_class;
  164.     XieAlignment    alignment;
  165.     int            uncnst_mantissa;
  166.     int            uncnst_min_exp;
  167.     int            uncnst_max_exp;
  168.     int         n_cnst_levels;    /* number of   constrained levels */
  169.     unsigned long    *cnst_levels;    /* recommended constrained levels */
  170.     int                 major_opcode;
  171.     int                 first_event;
  172.     int                 first_error;
  173. } XieExtensionInfo;
  174.  
  175.  
  176. /*--------------------------------------------------------------------------*
  177.  *                         Photoflo element union                *
  178.  *--------------------------------------------------------------------------*/
  179.  
  180. typedef struct {
  181.  
  182.     int elemType;
  183.  
  184.     union {
  185.  
  186.     /*
  187.      * Import Elements
  188.      */
  189.     
  190.     struct {
  191.         XieDataClass    data_class;
  192.         XieOrientation    band_order;
  193.         XieLTriplet        length;
  194.         XieLevels        levels;
  195.     } ImportClientLUT;
  196.     
  197.     struct {
  198.         XieDataClass     data_class;
  199.         XieLTriplet        width;
  200.         XieLTriplet        height;
  201.         XieLevels        levels;
  202.         Bool        notify;
  203.         XieDecodeTechnique    decode_tech;
  204.         XiePointer        decode_param;
  205.     } ImportClientPhoto;
  206.     
  207.     struct {
  208.         unsigned int    rectangles;
  209.     } ImportClientROI;
  210.     
  211.     struct {
  212.         Drawable        drawable;
  213.         int            src_x;
  214.         int            src_y;
  215.         unsigned int    width;
  216.         unsigned int    height;
  217.         unsigned long    fill;
  218.         Bool        notify;
  219.     } ImportDrawable;
  220.     
  221.     struct {
  222.         Drawable        drawable;
  223.         int            src_x;
  224.         int            src_y;
  225.         unsigned int    width;
  226.         unsigned int    height;
  227.         unsigned long    fill;
  228.         unsigned long    bit_plane;
  229.         Bool        notify;
  230.     } ImportDrawablePlane;
  231.     
  232.     struct {
  233.         XieLut        lut;
  234.     } ImportLUT;
  235.      
  236.     struct {
  237.         XiePhotomap        photomap;
  238.         Bool        notify;
  239.     } ImportPhotomap;
  240.     
  241.     struct {
  242.         XieRoi        roi;
  243.     } ImportROI;
  244.     
  245.  
  246.     /*
  247.      * Process Elements
  248.      */
  249.     
  250.     struct {
  251.         XiePhototag        src1;
  252.         XiePhototag        src2;
  253.         XieProcessDomain    domain;
  254.         XieConstant        constant;
  255.         XieArithmeticOp    operator;
  256.         unsigned int    band_mask;
  257.     } Arithmetic;
  258.     
  259.     struct {
  260.         XiePhototag        src1;
  261.         XiePhototag        src2;
  262.         XiePhototag        src3;
  263.     } BandCombine;
  264.     
  265.     struct {
  266.         XiePhototag        src;
  267.         unsigned int    levels;
  268.         float        bias;
  269.         XieConstant        coefficients;
  270.     } BandExtract;
  271.     
  272.     struct {
  273.         XiePhototag        src;
  274.         unsigned int    band_number;
  275.     } BandSelect;
  276.     
  277.     struct {
  278.         XiePhototag        src1;
  279.         XiePhototag        src2;
  280.         XieConstant        src_constant;
  281.         XiePhototag        alpha;
  282.         float        alpha_constant;
  283.         XieProcessDomain    domain;
  284.         unsigned int    band_mask;
  285.     } Blend;
  286.     
  287.     struct {
  288.         XiePhototag        src1;
  289.         XiePhototag        src2;
  290.         XieProcessDomain    domain;
  291.         XieConstant        constant;
  292.         XieCompareOp    operator;
  293.         Bool        combine;
  294.         unsigned int    band_mask;
  295.     } Compare;
  296.     
  297.     struct {
  298.         XiePhototag            src;
  299.         XieLevels            levels;
  300.         XieConstrainTechnique    constrain_tech;
  301.         XiePointer            constrain_param;
  302.     } Constrain;
  303.     
  304.     struct {
  305.         XiePhototag        src;
  306.         Colormap        colormap;
  307.         XieDataClass    data_class;
  308.         unsigned int    precision;
  309.     } ConvertFromIndex;
  310.     
  311.     struct {
  312.         XiePhototag        src;
  313.         XieColorspace    color_space;
  314.         XiePointer        color_param;
  315.     } ConvertFromRGB;
  316.     
  317.     struct {
  318.         XiePhototag            src;
  319.         Colormap            colormap;
  320.         XieColorList        color_list;
  321.         Bool            notify;
  322.         XieColorAllocTechnique    color_alloc_tech;
  323.         XiePointer            color_alloc_param;
  324.     } ConvertToIndex;
  325.     
  326.     struct {
  327.         XiePhototag        src;
  328.         XieColorspace    color_space;
  329.         XiePointer        color_param;
  330.     } ConvertToRGB;
  331.     
  332.     struct {
  333.         XiePhototag            src;
  334.         XieProcessDomain        domain;
  335.         float            *kernel;
  336.         int                kernel_size;
  337.         unsigned int        band_mask;
  338.         XieConvolveTechnique    convolve_tech;
  339.         XiePointer            convolve_param;
  340.     } Convolve;
  341.     
  342.     struct {
  343.         XiePhototag        src;
  344.         XieLevels        levels;
  345.         unsigned int    band_mask;
  346.         XieDitherTechnique    dither_tech;
  347.         XiePointer        dither_param;
  348.     } Dither;
  349.     
  350.     struct {
  351.         XiePhototag         src;
  352.         unsigned int        width;
  353.         unsigned int        height;
  354.         float            coefficients[6];
  355.         XieConstant            constant;
  356.         unsigned int        band_mask;
  357.         XieGeometryTechnique    sample_tech;
  358.         XiePointer            sample_param;
  359.     } Geometry;
  360.     
  361.     struct {
  362.         XiePhototag        src1;
  363.         XiePhototag        src2;
  364.         XieProcessDomain    domain;
  365.         XieConstant        constant;
  366.         int            operator;
  367.         unsigned int    band_mask;
  368.     } Logical;
  369.     
  370.     struct {
  371.         XiePhototag        src;
  372.         XieProcessDomain    domain;
  373.         XieHistogramShape    shape;
  374.         XiePointer        shape_param;
  375.     } MatchHistogram;
  376.     
  377.     struct {
  378.         XiePhototag        src;
  379.         XieProcessDomain    domain;
  380.         XieMathOp        operator;
  381.         unsigned int    band_mask;
  382.     } Math;
  383.     
  384.     struct {
  385.         unsigned int    width;
  386.         unsigned int    height;
  387.         XieConstant        constant;
  388.         XieTile        *tiles;
  389.         unsigned int    tile_count;
  390.     } PasteUp;
  391.     
  392.     struct {
  393.         XiePhototag        src;
  394.         XieProcessDomain    domain;
  395.         XiePhototag        lut;
  396.         unsigned int    band_mask;
  397.     } Point;
  398.     
  399.     struct {
  400.         XiePhototag            src;
  401.     } Unconstrain;
  402.  
  403.     /*
  404.      * Export Elements
  405.      */
  406.     
  407.     struct {
  408.         XiePhototag        src;
  409.         XieProcessDomain    domain;
  410.         XieExportNotify    notify;
  411.     } ExportClientHistogram;
  412.     
  413.     struct {
  414.         XiePhototag        src;
  415.         XieOrientation    band_order;
  416.         XieExportNotify    notify;
  417.         XieLTriplet     start;
  418.         XieLTriplet        length;
  419.     } ExportClientLUT;
  420.     
  421.     struct {
  422.         XiePhototag        src;
  423.         XieExportNotify    notify;
  424.         XieEncodeTechnique    encode_tech;
  425.         XiePointer        encode_param;
  426.     } ExportClientPhoto;
  427.     
  428.     struct {
  429.         XiePhototag        src;
  430.         XieExportNotify    notify;
  431.     } ExportClientROI;
  432.     
  433.     struct {
  434.         XiePhototag        src;
  435.         Drawable        drawable;
  436.         GC            gc;
  437.         int            dst_x;
  438.         int            dst_y;
  439.     } ExportDrawable;
  440.     
  441.     struct {
  442.         XiePhototag        src;
  443.         Drawable        drawable;
  444.         GC            gc;
  445.         int            dst_x;
  446.         int            dst_y;
  447.     } ExportDrawablePlane;
  448.     
  449.     struct {
  450.         XiePhototag        src;
  451.         XieLut        lut;
  452.         Bool        merge;
  453.         XieLTriplet        start;
  454.     } ExportLUT;
  455.      
  456.     struct {
  457.         XiePhototag        src;
  458.         XiePhotomap        photomap;
  459.         XieEncodeTechnique    encode_tech;
  460.         XiePointer        encode_param;
  461.     } ExportPhotomap;
  462.     
  463.     struct {
  464.         XiePhototag        src;
  465.         XieRoi        roi;
  466.     } ExportROI;
  467.  
  468.     } data;
  469. } XiePhotoElement;
  470.  
  471. typedef XiePhotoElement *XiePhotofloGraph;
  472.  
  473.  
  474. /*--------------------------------------------------------------------------*
  475.  *                  Technique Parameters                *
  476.  *--------------------------------------------------------------------------*/
  477.  
  478. /* Color Alloc */
  479.  
  480. typedef struct {
  481.     unsigned long    fill;
  482. } XieColorAllocAllParam;
  483.  
  484. typedef struct {
  485.     float    match_limit;
  486.     float    gray_limit;
  487. } XieColorAllocMatchParam;
  488.  
  489. typedef struct {
  490.     unsigned long    max_cells;
  491. } XieColorAllocRequantizeParam;
  492.  
  493.  
  494. /* Colorspace - conversion from RGB */
  495.  
  496. typedef struct {
  497.     XieMatrix            matrix;
  498.     XieWhiteAdjustTechnique    white_adjust_tech;
  499.     XiePointer            white_adjust_param;
  500. } XieRGBToCIELabParam, XieRGBToCIEXYZParam;
  501.  
  502. typedef struct {
  503.     XieLevels    levels;
  504.     float    luma_red;
  505.     float    luma_green;
  506.     float    luma_blue;
  507.     XieConstant    bias;
  508. } XieRGBToYCbCrParam;
  509.  
  510. typedef struct {
  511.     XieLevels    levels;
  512.     float    luma_red;
  513.     float    luma_green;
  514.     float    luma_blue;
  515.     float    scale;
  516. } XieRGBToYCCParam;
  517.  
  518.  
  519. /* Colorspace - conversion to RGB */
  520.  
  521. typedef struct {
  522.     XieMatrix            matrix;
  523.     XieWhiteAdjustTechnique    white_adjust_tech;
  524.     XiePointer            white_adjust_param;
  525.     XieGamutTechnique        gamut_tech;
  526.     XiePointer            gamut_param;
  527. } XieCIELabToRGBParam, XieCIEXYZToRGBParam;
  528.  
  529. typedef struct {
  530.     XieLevels        levels;
  531.     float        luma_red;
  532.     float        luma_green;
  533.     float        luma_blue;
  534.     XieConstant        bias;
  535.     XieGamutTechnique    gamut_tech;
  536.     XiePointer        gamut_param;
  537. } XieYCbCrToRGBParam;
  538.  
  539. typedef struct {
  540.     XieLevels        levels;
  541.     float        luma_red;
  542.     float        luma_green;
  543.     float        luma_blue;
  544.     float        scale;
  545.     XieGamutTechnique    gamut_tech;
  546.     XiePointer        gamut_param;
  547. } XieYCCToRGBParam;
  548.  
  549. /* Constrain */
  550.  
  551. typedef struct {
  552.     XieConstant input_low,input_high;
  553.     XieLTriplet output_low,output_high;
  554. } XieClipScaleParam;
  555.  
  556.  
  557. /* Convolve */
  558.  
  559. typedef struct {
  560.     XieConstant    constant;
  561. } XieConvolveConstantParam;
  562.  
  563.  
  564. /* Decode */
  565.  
  566. typedef struct {
  567.     XieOrientation    fill_order;
  568.     XieOrientation    pixel_order;
  569.     unsigned int    pixel_stride;
  570.     unsigned int    left_pad;
  571.     unsigned int    scanline_pad;
  572. } XieDecodeUncompressedSingleParam;
  573.  
  574. typedef struct {
  575.     unsigned char    left_pad[3];
  576.     XieOrientation    fill_order;
  577.     unsigned char    pixel_stride[3];
  578.     XieOrientation    pixel_order;
  579.     unsigned char    scanline_pad[3];
  580.     XieOrientation      band_order;
  581.     XieInterleave    interleave;
  582. } XieDecodeUncompressedTripleParam;
  583.  
  584. typedef struct {
  585.     XieOrientation    encoded_order;
  586.     Bool        normal;
  587.     Bool        radiometric;
  588. } XieDecodeG31DParam, XieDecodeG32DParam, XieDecodeG42DParam,
  589.   XieDecodeTIFF2Param;
  590.  
  591. typedef struct {
  592.     XieOrientation    encoded_order;
  593.     Bool        normal;
  594. } XieDecodeTIFFPackBitsParam;
  595.  
  596. typedef struct {
  597.     XieInterleave    interleave;
  598.     XieOrientation      band_order;
  599.     Bool        up_sample;
  600. } XieDecodeJPEGBaselineParam;
  601.  
  602. typedef struct {
  603.     XieInterleave    interleave;
  604.     XieOrientation      band_order;
  605. } XieDecodeJPEGLosslessParam;
  606.  
  607.  
  608. /* Dither */
  609.  
  610. typedef struct {
  611.     unsigned int    threshold_order;
  612. } XieDitherOrderedParam;
  613.  
  614.  
  615. /* Encode */
  616.  
  617. typedef struct {
  618.     XieOrientation    fill_order;
  619.     XieOrientation    pixel_order;
  620.     unsigned int    pixel_stride;
  621.     unsigned int    scanline_pad;
  622. } XieEncodeUncompressedSingleParam;
  623.  
  624. typedef struct {
  625.     unsigned char    pixel_stride[3];
  626.     XieOrientation    pixel_order;
  627.     unsigned char    scanline_pad[3];
  628.     XieOrientation    fill_order;
  629.     XieOrientation      band_order;
  630.     XieInterleave    interleave;
  631. } XieEncodeUncompressedTripleParam;
  632.  
  633. typedef struct {
  634.     Bool        align_eol;
  635.     Bool        radiometric;
  636.     XieOrientation    encoded_order;
  637. } XieEncodeG31DParam;
  638.  
  639. typedef struct {
  640.     Bool        uncompressed;
  641.     Bool        align_eol;
  642.     Bool        radiometric;
  643.     XieOrientation    encoded_order;
  644.     unsigned long    k_factor;
  645. } XieEncodeG32DParam;
  646.  
  647. typedef struct {
  648.     Bool        uncompressed;
  649.     Bool        radiometric;
  650.     XieOrientation    encoded_order;
  651. } XieEncodeG42DParam;
  652.  
  653. typedef struct {
  654.     unsigned int    preference;
  655. } XieEncodeServerChoiceParam;
  656.  
  657. typedef struct {
  658.     XieInterleave    interleave;
  659.     XieOrientation      band_order;
  660.     unsigned char    horizontal_samples[3];
  661.     unsigned char    vertical_samples[3];
  662.     char        *q_table;
  663.     unsigned int    q_size;
  664.     char        *ac_table;
  665.     unsigned int    ac_size;
  666.     char        *dc_table;
  667.     unsigned int    dc_size;
  668. } XieEncodeJPEGBaselineParam;
  669.  
  670. typedef struct {
  671.     XieInterleave    interleave;
  672.     XieOrientation      band_order;
  673.     unsigned char    predictor[3];
  674.     char        *table;
  675.     unsigned int    table_size;
  676. } XieEncodeJPEGLosslessParam;
  677.  
  678. typedef struct {
  679.     XieOrientation    encoded_order;
  680.     Bool        radiometric;
  681. } XieEncodeTIFF2Param; 
  682.  
  683. typedef struct {
  684.     XieOrientation    encoded_order;
  685. } XieEncodeTIFFPackBitsParam;
  686.  
  687.  
  688. /* Geometry */
  689.  
  690. typedef struct {
  691.     int    simple;
  692. } XieGeomAntialiasByAreaParam;
  693.  
  694. typedef struct {
  695.     int    kernel_size;
  696. } XieGeomAntialiasByLowpassParam;
  697.  
  698. typedef struct {
  699.     float        sigma;
  700.     float        normalize;
  701.     unsigned int    radius;
  702.     Bool        simple;
  703. } XieGeomGaussianParam;
  704.  
  705. typedef struct {
  706.     unsigned int    modify;
  707. } XieGeomNearestNeighborParam;
  708.  
  709.  
  710. /* Histogram */
  711.  
  712. typedef struct {
  713.     float    mean;
  714.     float    sigma;
  715. } XieHistogramGaussianParam;
  716.  
  717. typedef struct {
  718.     float    constant;
  719.     Bool    shape_factor;
  720. } XieHistogramHyperbolicParam;
  721.  
  722.  
  723. /* White Adjust */
  724.  
  725. typedef struct {
  726.     XieConstant    white_point;
  727. } XieWhiteAdjustCIELabShiftParam;
  728.  
  729.  
  730. /*--------------------------------------------------------------------------*
  731.  *                   Events                    *
  732.  *--------------------------------------------------------------------------*/
  733.  
  734. typedef struct {
  735.     int                type;
  736.     unsigned long        serial;
  737.     Bool            send_event;
  738.     Display            *display;
  739.     unsigned long        name_space;
  740.     Time            time;
  741.     unsigned long        flo_id;
  742.     XiePhototag            src;
  743.     unsigned int        elem_type;
  744.     XieColorList        color_list;
  745.     XieColorAllocTechnique    color_alloc_technique;
  746.     unsigned long        color_alloc_data;
  747. } XieColorAllocEvent;
  748.  
  749. typedef struct {
  750.     int                type;
  751.     unsigned long        serial;
  752.     Bool            send_event;
  753.     Display            *display;
  754.     unsigned long        name_space;
  755.     Time            time;
  756.     unsigned long        flo_id;
  757.     XiePhototag            src;
  758.     unsigned int        elem_type;
  759.     XieDecodeTechnique        decode_technique;
  760.     Bool            aborted;
  761.     unsigned int        band_number;
  762.     unsigned long        width;
  763.     unsigned long        height;
  764. } XieDecodeNotifyEvent;
  765.  
  766. typedef struct {
  767.     int                type;
  768.     unsigned long        serial;
  769.     Bool            send_event;
  770.     Display            *display;
  771.     unsigned long        name_space;
  772.     Time            time;
  773.     unsigned long        flo_id;
  774.     XiePhototag            src;
  775.     unsigned int        elem_type;
  776.     unsigned int        band_number;
  777.     unsigned long        data[3];
  778. } XieExportAvailableEvent;
  779.  
  780. typedef struct {
  781.     int                type;
  782.     unsigned long        serial;
  783.     Bool            send_event;
  784.     Display            *display;
  785.     unsigned long        name_space;
  786.     Time            time;
  787.     unsigned long        flo_id;
  788.     XiePhototag            src;
  789.     unsigned int        elem_type;
  790.     Window            window;
  791.     int                x;
  792.     int                y;
  793.     unsigned int        width;
  794.     unsigned int        height;
  795. } XieImportObscuredEvent;
  796.  
  797. typedef struct {
  798.     int                type;
  799.     unsigned long        serial;
  800.     Bool            send_event;
  801.     Display            *display;
  802.     unsigned long        name_space;
  803.     Time            time;
  804.     unsigned long        flo_id;
  805.     XiePhotofloOutcome        outcome;
  806. } XiePhotofloDoneEvent;
  807.  
  808.  
  809. /*--------------------------------------------------------------------------*
  810.  *                      Photoflo Errors                *
  811.  *--------------------------------------------------------------------------*/
  812.  
  813. typedef struct {
  814.     int            type;
  815.     Display        *display;
  816.     unsigned long    flo_id;
  817.     unsigned long    serial;
  818.     unsigned char    error_code;
  819.     unsigned char    request_code;
  820.     unsigned char    minor_code;
  821.     unsigned int    flo_error_code;
  822.     unsigned long    name_space;
  823.     XiePhototag        phototag;
  824.     unsigned int    elem_type;
  825. } XieFloAccessError, XieFloAllocError, XieFloElementError, XieFloIDError,
  826.   XieFloLengthError, XieFloMatchError, XieFloSourceError;
  827.  
  828. typedef struct {
  829.     int            type;
  830.     Display        *display;
  831.     unsigned long    flo_id;
  832.     unsigned long    serial;
  833.     unsigned char    error_code;
  834.     unsigned char    request_code;
  835.     unsigned char    minor_code;
  836.     unsigned int    flo_error_code;
  837.     unsigned long    name_space;
  838.     XiePhototag        phototag;
  839.     unsigned int    elem_type;
  840.     XID            resource_id;
  841. } XieFloResourceError;
  842.  
  843. typedef struct {
  844.     int            type;
  845.     Display        *display;
  846.     unsigned long    flo_id;
  847.     unsigned long    serial;
  848.     unsigned char    error_code;
  849.     unsigned char    request_code;
  850.     unsigned char    minor_code;
  851.     unsigned int    flo_error_code;
  852.     unsigned long    name_space;
  853.     XiePhototag        phototag;
  854.     unsigned int    elem_type;
  855.     XiePhototag        domain_src;
  856. } XieFloDomainError;
  857.  
  858. typedef struct {
  859.     int            type;
  860.     Display        *display;
  861.     unsigned long    flo_id;
  862.     unsigned long    serial;
  863.     unsigned char    error_code;
  864.     unsigned char    request_code;
  865.     unsigned char    minor_code;
  866.     unsigned int    flo_error_code;
  867.     unsigned long    name_space;
  868.     XiePhototag        phototag;
  869.     unsigned int    elem_type;
  870.     unsigned int    operator;
  871. } XieFloOperatorError;
  872.  
  873. typedef struct {
  874.     int            type;
  875.     Display        *display;
  876.     unsigned long    flo_id;
  877.     unsigned long    serial;
  878.     unsigned char    error_code;
  879.     unsigned char    request_code;
  880.     unsigned char    minor_code;
  881.     unsigned int    flo_error_code;
  882.     unsigned long    name_space;
  883.     XiePhototag        phototag;
  884.     unsigned int    elem_type;
  885.     unsigned int    technique_number;
  886.     unsigned int    num_tech_params;
  887.     XieTechniqueGroup    tech_group;
  888. } XieFloTechniqueError;
  889.  
  890. typedef struct {
  891.     int            type;
  892.     Display        *display;
  893.     unsigned long    flo_id;
  894.     unsigned long    serial;
  895.     unsigned char    error_code;
  896.     unsigned char    request_code;
  897.     unsigned char    minor_code;
  898.     unsigned int    flo_error_code;
  899.     unsigned long    name_space;
  900.     XiePhototag        phototag;
  901.     unsigned int    elem_type;
  902.     unsigned long    bad_value;
  903. } XieFloValueError;
  904.  
  905.  
  906. /*--------------------------------------------------------------------------*
  907.  *                            Function prototypes                *
  908.  *--------------------------------------------------------------------------*/
  909.  
  910. /* Startup functions -------------------------------------------------------*/
  911.  
  912. extern Status XieInitialize (
  913. #if NeedFunctionPrototypes
  914.     Display *        /* display */,
  915.     XieExtensionInfo **    /* extinfo_ret */
  916. #endif
  917. );
  918.  
  919. extern Status XieQueryTechniques (
  920. #if NeedFunctionPrototypes
  921.     Display *        /* display */,
  922.     XieTechniqueGroup    /* technique_group */,
  923.     int *        /* ntechniques_ret */,
  924.     XieTechnique **    /* techniques_ret */
  925. #endif
  926. );
  927.  
  928. extern void XieFreeTechniques (
  929. #if NeedFunctionPrototypes
  930.     XieTechnique *    /* techs */,
  931.     unsigned int    /* count */
  932. #endif
  933. );
  934.  
  935.  
  936. /* Color List functions ---------------------------------------------------*/
  937.  
  938. extern XieColorList XieCreateColorList (
  939. #if NeedFunctionPrototypes
  940.     Display *        /* display */
  941. #endif
  942. );
  943.  
  944. extern void XieDestroyColorList (
  945. #if NeedFunctionPrototypes
  946.     Display *        /* display */,
  947.     XieColorList    /* color_list */
  948. #endif
  949. );
  950.  
  951. extern void XiePurgeColorList (
  952. #if NeedFunctionPrototypes
  953.     Display *        /* display */,
  954.     XieColorList    /* color_list */
  955. #endif
  956. );
  957.  
  958. extern Status XieQueryColorList (
  959. #if NeedFunctionPrototypes
  960.     Display *        /* display */,
  961.     XieColorList      /* color_list */,
  962.     Colormap *        /* colormap_ret */,
  963.     unsigned *        /* ncolors_ret */,
  964.     unsigned long **    /* colors_ret */
  965. #endif
  966. );
  967.  
  968.  
  969. /* LUT functions -----------------------------------------------------------*/
  970.  
  971. extern XieLut XieCreateLUT (
  972. #if NeedFunctionPrototypes
  973.     Display *        /* display */
  974. #endif
  975. );
  976.  
  977. extern void XieDestroyLUT (
  978. #if NeedFunctionPrototypes
  979.     Display *        /* display */,
  980.     XieLut        /* lut */
  981. #endif
  982. );
  983.  
  984.  
  985. /* Photomap functions ------------------------------------------------------*/
  986.  
  987. extern XiePhotomap XieCreatePhotomap (
  988. #if NeedFunctionPrototypes
  989.     Display *        /* display */
  990. #endif
  991. );
  992.  
  993. extern void XieDestroyPhotomap (
  994. #if NeedFunctionPrototypes
  995.     Display *        /* display */,
  996.     XiePhotomap        /* photomap */
  997. #endif
  998. );
  999.  
  1000. extern Status XieQueryPhotomap (
  1001. #if NeedFunctionPrototypes
  1002.     Display *            /* display */,
  1003.     XiePhotomap            /* photomap */,
  1004.     Bool *            /* populated_ret */,
  1005.     XieDataType *        /* datatype_ret */,
  1006.     XieDataClass *        /* class_ret */,
  1007.     XieDecodeTechnique *    /* decode_technique_ret */,
  1008.     XieLTriplet            /* width_ret */,
  1009.     XieLTriplet            /* height_ret */,
  1010.     XieLTriplet            /* levels_ret */
  1011. #endif
  1012. );
  1013.  
  1014.  
  1015. /* ROI functions -----------------------------------------------------------*/
  1016.  
  1017. extern XieRoi XieCreateROI (
  1018. #if NeedFunctionPrototypes
  1019.     Display *        /* display */
  1020. #endif
  1021. );
  1022.  
  1023. extern void XieDestroyROI (
  1024. #if NeedFunctionPrototypes
  1025.     Display *        /* display */,
  1026.     XieRoi        /* roi */
  1027. #endif
  1028. );
  1029.  
  1030.  
  1031. /* Photospace functions ----------------------------------------------------*/
  1032.  
  1033. extern XiePhotospace XieCreatePhotospace (
  1034. #if NeedFunctionPrototypes
  1035.     Display *        /* display */
  1036. #endif
  1037. );
  1038.  
  1039. extern void XieDestroyPhotospace (
  1040. #if NeedFunctionPrototypes
  1041.     Display *        /* display */,
  1042.     XiePhotospace    /* photospace */
  1043. #endif
  1044. );
  1045.  
  1046. extern void XieExecuteImmediate (
  1047. #if NeedFunctionPrototypes
  1048.     Display *        /* display */,
  1049.     XiePhotospace    /* photospace */,
  1050.     unsigned long    /* flo_id */,
  1051.     Bool        /* notify */,
  1052.     XiePhotoElement *    /* elem_list */,
  1053.     int            /* elem_count */
  1054. #endif
  1055. );
  1056.  
  1057.  
  1058. /* Photoflo functions ------------------------------------------------------*/
  1059.  
  1060. extern XiePhotoElement *XieAllocatePhotofloGraph (
  1061. #if NeedFunctionPrototypes
  1062.     unsigned int    /* count */
  1063. #endif
  1064. );
  1065.  
  1066. extern void XieFreePhotofloGraph (
  1067. #if NeedFunctionPrototypes
  1068.     XiePhotoElement *    /* elements */,
  1069.     unsigned int    /* count */
  1070. #endif
  1071. );
  1072.  
  1073. extern XiePhotoflo XieCreatePhotoflo (
  1074. #if NeedFunctionPrototypes
  1075.     Display *        /* display */,
  1076.     XiePhotoElement *    /* elem_list */,
  1077.     int            /* elem_count */
  1078. #endif
  1079. );
  1080.  
  1081. extern void XieDestroyPhotoflo (
  1082. #if NeedFunctionPrototypes
  1083.     Display *        /* display */,
  1084.     XiePhotoflo        /* photoflo */
  1085. #endif
  1086. );
  1087.  
  1088. extern void XieExecutePhotoflo (
  1089. #if NeedFunctionPrototypes
  1090.     Display *        /* display */,
  1091.     XiePhotoflo        /* photoflo */,
  1092.     Bool        /* notify */
  1093. #endif
  1094. );
  1095.  
  1096. extern void XieModifyPhotoflo (
  1097. #if NeedFunctionPrototypes
  1098.     Display *        /* display */,
  1099.     XiePhotoflo        /* photoflo */,
  1100.     int            /* start */,
  1101.     XiePhotoElement *    /* elem_list */,
  1102.     int            /* elem_count */
  1103. #endif
  1104. );
  1105.  
  1106. extern void XieRedefinePhotoflo (
  1107. #if NeedFunctionPrototypes
  1108.     Display *        /* display */,
  1109.     XiePhotoflo        /* photoflo */,
  1110.     XiePhotoElement *    /* elem_list */,
  1111.     int            /* elem_count */
  1112. #endif
  1113. );
  1114.  
  1115. extern Status XieQueryPhotoflo (
  1116. #if NeedFunctionPrototypes
  1117.     Display *        /* display */,
  1118.     unsigned long    /* name_space */,
  1119.     unsigned long    /* flo_id */,
  1120.     XiePhotofloState *    /* state_ret */,
  1121.     XiePhototag **    /* data_expected_ret */,
  1122.     unsigned int *    /* nexpected_ret */,
  1123.     XiePhototag **    /* data_available_ret */,
  1124.     unsigned int *    /* navailable_ret */
  1125. #endif
  1126. );
  1127.  
  1128.  
  1129. /* Client Data functions ---------------------------------------------------*/
  1130.  
  1131. extern void XiePutClientData (
  1132. #if NeedFunctionPrototypes
  1133.     Display *         /* display */,
  1134.     unsigned long      /* name_space */,
  1135.     unsigned long      /* flo_id */,
  1136.     XiePhototag        /* element */,
  1137.     Bool             /* final */,
  1138.     unsigned         /* band_number */,
  1139.     unsigned char *     /* data */,
  1140.     unsigned         /* nbytes */
  1141. #endif
  1142. );
  1143.  
  1144. extern Status XieGetClientData (
  1145. #if NeedFunctionPrototypes
  1146.     Display *          /* display */,
  1147.     unsigned long      /* name_space */,
  1148.     unsigned long      /* flo_id */,
  1149.     XiePhototag        /* element */,
  1150.     unsigned          /* max_bytes */,
  1151.     Bool        /* terminate */,
  1152.     unsigned         /* band_number */,
  1153.     XieExportState *     /* new_state_ret */,
  1154.     unsigned char **    /* data_ret */,
  1155.     unsigned *         /* nbytes_ret */
  1156. #endif
  1157. );
  1158.  
  1159.  
  1160. /* Abort and Await functions -----------------------------------------------*/
  1161.  
  1162. extern void XieAbort (
  1163. #if NeedFunctionPrototypes
  1164.     Display *        /* display */,
  1165.     unsigned long    /* name_space */,
  1166.     unsigned long    /* flo_id */
  1167. #endif
  1168. );
  1169.  
  1170. extern void XieAwait (
  1171. #if NeedFunctionPrototypes
  1172.    Display *        /* display */,
  1173.    unsigned long    /* name_space */,
  1174.    unsigned long    /* flo_id */
  1175. #endif
  1176. );
  1177.  
  1178.  
  1179. /* Photoflo element functions ----------------------------------------------*/
  1180.  
  1181. extern void XieFloImportClientLUT (
  1182. #if NeedFunctionPrototypes
  1183.     XiePhotoElement *    /* element */,
  1184.     XieDataClass     /* data_class */,
  1185.     XieOrientation    /* band_order */,
  1186.     XieLTriplet        /* length */,
  1187.     XieLevels        /* levels */
  1188. #endif
  1189. );
  1190.  
  1191. extern void XieFloImportClientPhoto (
  1192. #if NeedFunctionPrototypes
  1193.     XiePhotoElement *    /* element */,
  1194.     XieDataClass     /* data_class */,
  1195.     XieLTriplet        /* width */,
  1196.     XieLTriplet        /* height */,
  1197.     XieLevels        /* levels */,
  1198.     Bool        /* notify */,
  1199.     XieDecodeTechnique    /* decode_tech */,
  1200.     XiePointer        /* decode_param */
  1201. #endif
  1202. );
  1203.  
  1204. extern void XieFloImportClientROI (
  1205. #if NeedFunctionPrototypes
  1206.     XiePhotoElement *    /* element */,
  1207.     unsigned int    /* rectangles */
  1208. #endif
  1209. );
  1210.  
  1211. extern void XieFloImportDrawable (
  1212. #if NeedFunctionPrototypes
  1213.     XiePhotoElement *    /* element */,
  1214.     Drawable        /* drawable */,
  1215.     int            /* src_x */,
  1216.     int            /* src_y */,
  1217.     unsigned int    /* width */,
  1218.     unsigned int    /* height */,
  1219.     unsigned long    /* fill */,
  1220.     Bool        /* notify */
  1221. #endif
  1222. );
  1223.  
  1224. extern void XieFloImportDrawablePlane (
  1225. #if NeedFunctionPrototypes
  1226.     XiePhotoElement *    /* element */,
  1227.     Drawable        /* drawable */,
  1228.     int            /* src_x */,
  1229.     int            /* src_y */,
  1230.     unsigned int    /* width */,
  1231.     unsigned int    /* height */,
  1232.     unsigned long    /* fill */,
  1233.     unsigned long    /* bit_plane */,
  1234.     Bool        /* notify */
  1235. #endif
  1236. );
  1237.  
  1238. extern void XieFloImportLUT (
  1239. #if NeedFunctionPrototypes
  1240.     XiePhotoElement *    /* element */,
  1241.     XieLut        /* lut */
  1242. #endif
  1243. );
  1244.  
  1245. extern void XieFloImportPhotomap (
  1246. #if NeedFunctionPrototypes
  1247.     XiePhotoElement *    /* element */,
  1248.     XiePhotomap        /* photomap */,
  1249.     Bool        /* notify */
  1250. #endif
  1251. );
  1252.  
  1253. extern void XieFloImportROI (
  1254. #if NeedFunctionPrototypes
  1255.     XiePhotoElement *    /* element */,
  1256.     XieRoi        /* roi */
  1257. #endif
  1258. );
  1259.  
  1260. extern void XieFloArithmetic (
  1261. #if NeedFunctionPrototypes
  1262.     XiePhotoElement *    /* element */,
  1263.     XiePhototag        /* src1 */,
  1264.     XiePhototag        /* src2 */,
  1265.     XieProcessDomain *    /* domain */,
  1266.     XieConstant        /* constant */,
  1267.     XieArithmeticOp    /* operator */,
  1268.     unsigned int    /* band_mask */
  1269. #endif
  1270. );
  1271.  
  1272. extern void XieFloBandCombine (
  1273. #if NeedFunctionPrototypes
  1274.     XiePhotoElement *    /* element */,
  1275.     XiePhototag        /* src1 */,
  1276.     XiePhototag        /* src2 */,
  1277.     XiePhototag        /* src3 */
  1278. #endif
  1279. );
  1280.  
  1281. extern void XieFloBandExtract (
  1282. #if NeedFunctionPrototypes
  1283.     XiePhotoElement *    /* element */,
  1284.     XiePhototag        /* src */,
  1285.     unsigned int    /* levels */,
  1286.     double        /* bias */,
  1287.     XieConstant        /* coefficients */
  1288. #endif
  1289. );
  1290.  
  1291. extern void XieFloBandSelect (
  1292. #if NeedFunctionPrototypes
  1293.     XiePhotoElement *    /* element */,
  1294.     XiePhototag        /* src */,
  1295.     unsigned int    /* band_number */
  1296. #endif
  1297. );
  1298.  
  1299. extern void XieFloBlend (
  1300. #if NeedFunctionPrototypes
  1301.     XiePhotoElement *    /* element */,
  1302.     XiePhototag        /* src1 */,
  1303.     XiePhototag        /* src2 */,
  1304.     XieConstant        /* src_constant */,
  1305.     XiePhototag        /* alpha */,
  1306.     double        /* alpha_const */,
  1307.     XieProcessDomain *    /* domain */,
  1308.     unsigned int    /* band_mask */
  1309. #endif
  1310. );
  1311.  
  1312. extern void XieFloCompare (
  1313. #if NeedFunctionPrototypes
  1314.     XiePhotoElement *    /* element */,
  1315.     XiePhototag        /* src1 */,
  1316.     XiePhototag        /* src2 */,
  1317.     XieProcessDomain *    /* domain */,
  1318.     XieConstant        /* constant */,
  1319.     XieCompareOp    /* operator */,
  1320.     Bool        /* combine */,
  1321.     unsigned int    /* band_mask */
  1322. #endif
  1323. );
  1324.  
  1325. extern void XieFloConstrain (
  1326. #if NeedFunctionPrototypes
  1327.     XiePhotoElement *        /* element */,
  1328.     XiePhototag            /* src */,
  1329.     XieLevels            /* levels */,
  1330.     XieConstrainTechnique    /* constrain_tech */,
  1331.     XiePointer            /* constrain_param */
  1332. #endif
  1333. );
  1334.  
  1335. extern void XieFloConvertFromIndex (
  1336. #if NeedFunctionPrototypes
  1337.     XiePhotoElement *    /* element */,
  1338.     XiePhototag        /* src */,
  1339.     Colormap        /* colormap */,
  1340.     XieDataClass    /* data_class */,
  1341.     unsigned int    /* precision */
  1342. #endif
  1343. );
  1344.  
  1345. extern void XieFloConvertFromRGB (
  1346. #if NeedFunctionPrototypes
  1347.     XiePhotoElement *    /* element */,
  1348.     XiePhototag        /* src */,
  1349.     XieColorspace    /* color_space */,
  1350.     XiePointer        /* color_param */
  1351. #endif
  1352. );
  1353.  
  1354. extern void XieFloConvertToIndex (
  1355. #if NeedFunctionPrototypes
  1356.     XiePhotoElement *        /* element */,
  1357.     XiePhototag            /* src */,
  1358.     Colormap            /* colormap */,
  1359.     XieColorList        /* color_list */,
  1360.     Bool            /* notify */,
  1361.     XieColorAllocTechnique     /* color_alloc_tech */,
  1362.     XiePointer            /* color_alloc_param */
  1363. #endif
  1364. );
  1365.  
  1366. extern void XieFloConvertToRGB (
  1367. #if NeedFunctionPrototypes
  1368.     XiePhotoElement *    /* element */,
  1369.     XiePhototag        /* src */,
  1370.     XieColorspace    /* color_space */,
  1371.     XiePointer        /* color_param */
  1372. #endif
  1373. );
  1374.  
  1375. extern void XieFloConvolve (
  1376. #if NeedFunctionPrototypes
  1377.     XiePhotoElement *        /* element */,
  1378.     XiePhototag            /* src */,
  1379.     XieProcessDomain *        /* domain */,
  1380.     float *            /* kernel */,
  1381.     int                /* kernel_size */,
  1382.     unsigned int        /* band_mask */,
  1383.     XieConvolveTechnique    /* convolve_tech */,
  1384.     XiePointer            /* convolve_param */
  1385. #endif
  1386. );
  1387.  
  1388. extern void XieFloDither (
  1389. #if NeedFunctionPrototypes
  1390.     XiePhotoElement *        /* element */,
  1391.     XiePhototag            /* src */,
  1392.     unsigned int        /* band_mask */,
  1393.     XieLevels            /* levels */,
  1394.     XieDitherTechnique        /* dither_tech */,
  1395.     XiePointer            /* dither_param */
  1396. #endif
  1397. );
  1398.  
  1399. extern void XieFloGeometry (
  1400. #if NeedFunctionPrototypes
  1401.     XiePhotoElement *        /* element */,
  1402.     XiePhototag            /* src */,
  1403.     unsigned int        /* width */,
  1404.     unsigned int        /* height */,
  1405.     float[6]            /* coefficients[6] */,
  1406.     XieConstant            /* constant */,
  1407.     unsigned int        /* band_mask */,
  1408.     XieGeometryTechnique    /* sample_tech */,
  1409.     XiePointer            /* sample_param */
  1410. #endif
  1411. );
  1412.  
  1413. extern void XieFloLogical (
  1414. #if NeedFunctionPrototypes
  1415.     XiePhotoElement *    /* element */,
  1416.     XiePhototag        /* src1 */,
  1417.     XiePhototag        /* src2 */,
  1418.     XieProcessDomain *    /* domain */,
  1419.     XieConstant        /* constant */,
  1420.     unsigned long    /* operator */,
  1421.     unsigned int    /* band_mask */
  1422. #endif
  1423. );
  1424.  
  1425. extern void XieFloMatchHistogram (
  1426. #if NeedFunctionPrototypes
  1427.     XiePhotoElement *    /* element */,
  1428.     XiePhototag        /* src */,
  1429.     XieProcessDomain *    /* domain */,
  1430.     XieHistogramShape    /* shape */,
  1431.     XiePointer        /* shape_param */
  1432. #endif
  1433. );
  1434.  
  1435. extern void XieFloMath (
  1436. #if NeedFunctionPrototypes
  1437.     XiePhotoElement *    /* element */,
  1438.     XiePhototag        /* src */,
  1439.     XieProcessDomain *    /* domain */,
  1440.     XieMathOp        /* operator */,
  1441.     unsigned int    /* band_mask */
  1442. #endif
  1443. );
  1444.  
  1445. extern void XieFloPasteUp (
  1446. #if NeedFunctionPrototypes
  1447.     XiePhotoElement *    /* element */,
  1448.     unsigned int    /* width */,
  1449.     unsigned int    /* height */,
  1450.     XieConstant        /* constant */,
  1451.     XieTile *        /* tiles */,
  1452.     unsigned int    /* tile_count */
  1453. #endif
  1454. );
  1455.  
  1456. extern void XieFloPoint (
  1457. #if NeedFunctionPrototypes
  1458.     XiePhotoElement *    /* element */,
  1459.     XiePhototag        /* src */,
  1460.     XieProcessDomain *    /* domain */,
  1461.     XiePhototag        /* lut */,
  1462.     unsigned int    /* band_mask */
  1463. #endif
  1464. );
  1465.  
  1466. extern void XieFloUnconstrain (
  1467. #if NeedFunctionPrototypes
  1468.     XiePhotoElement *    /* element */,
  1469.     XiePhototag        /* src */
  1470. #endif
  1471. );
  1472.  
  1473. extern void XieFloExportClientHistogram (
  1474. #if NeedFunctionPrototypes
  1475.     XiePhotoElement *    /* element */,
  1476.     XiePhototag        /* src */,
  1477.     XieProcessDomain *    /* domain */,
  1478.     XieExportNotify    /* notify */
  1479. #endif
  1480. );
  1481.  
  1482. extern void XieFloExportClientLUT (
  1483. #if NeedFunctionPrototypes
  1484.     XiePhotoElement *    /* element */,
  1485.     XiePhototag        /* src */,
  1486.     XieOrientation    /* band_order */,
  1487.     XieExportNotify    /* notify */,
  1488.     XieLTriplet     /* start */,
  1489.     XieLTriplet     /* length */
  1490. #endif
  1491. );
  1492.  
  1493. extern void XieFloExportClientPhoto (
  1494. #if NeedFunctionPrototypes
  1495.     XiePhotoElement *    /* element */,
  1496.     XiePhototag        /* src */,
  1497.     XieExportNotify    /* notify */,
  1498.     XieEncodeTechnique    /* encode_tech */,
  1499.     XiePointer        /* encode_param */
  1500. #endif
  1501. );
  1502.  
  1503. extern void XieFloExportClientROI (
  1504. #if NeedFunctionPrototypes
  1505.     XiePhotoElement *    /* element */,
  1506.     XiePhototag        /* src */,
  1507.     XieExportNotify    /* notify */
  1508. #endif
  1509. );
  1510.  
  1511. extern void XieFloExportDrawable (
  1512. #if NeedFunctionPrototypes
  1513.     XiePhotoElement *    /* element */,
  1514.     XiePhototag        /* src */,
  1515.     Drawable        /* drawable */,
  1516.     GC            /* gc */,
  1517.     int            /* dst_x */,
  1518.     int            /* dst_y */
  1519. #endif
  1520. );
  1521.  
  1522. extern void XieFloExportDrawablePlane (
  1523. #if NeedFunctionPrototypes
  1524.     XiePhotoElement *    /* element */,
  1525.     XiePhototag        /* src */,
  1526.     Drawable        /* drawable */,
  1527.     GC            /* gc */,
  1528.     int            /* dst_x */,
  1529.     int            /* dst_y */
  1530. #endif
  1531. );
  1532.  
  1533. extern void XieFloExportLUT (
  1534. #if NeedFunctionPrototypes
  1535.     XiePhotoElement *    /* element */,
  1536.     XiePhototag        /* src */,
  1537.     XieLut        /* lut */,
  1538.     Bool        /* merge */,
  1539.     XieLTriplet     /* start */
  1540. #endif
  1541. );
  1542.  
  1543. extern void XieFloExportPhotomap (
  1544. #if NeedFunctionPrototypes
  1545.     XiePhotoElement *    /* element */,
  1546.     XiePhototag        /* src */,
  1547.     XiePhotomap        /* photomap */,
  1548.     XieEncodeTechnique    /* encode_tech */,
  1549.     XiePointer        /* encode_param */
  1550. #endif
  1551. );
  1552.  
  1553. extern void XieFloExportROI (
  1554. #if NeedFunctionPrototypes
  1555.     XiePhotoElement *    /* element */,
  1556.     XiePhototag        /* src */,
  1557.     XieRoi        /* roi */
  1558. #endif
  1559. );
  1560.  
  1561.  
  1562. /* Technique functions -----------------------------------------------------*/
  1563.  
  1564. extern XieColorAllocAllParam *XieTecColorAllocAll (
  1565. #if NeedFunctionPrototypes
  1566.     unsigned long    /* fill */
  1567. #endif
  1568. );
  1569.  
  1570. extern XieColorAllocMatchParam *XieTecColorAllocMatch (
  1571. #if NeedFunctionPrototypes
  1572.     double        /* match_limit */,
  1573.     double        /* gray_limit */
  1574. #endif
  1575. );
  1576.  
  1577. extern XieColorAllocRequantizeParam *XieTecColorAllocRequantize (
  1578. #if NeedFunctionPrototypes
  1579.     unsigned long    /* max_cells */
  1580. #endif
  1581. );
  1582.  
  1583. extern XieRGBToCIELabParam *XieTecRGBToCIELab (
  1584. #if NeedFunctionPrototypes
  1585.     XieMatrix            /* matrix */,
  1586.     XieWhiteAdjustTechnique    /* white_adjust_tech */,
  1587.     XiePointer            /* white_adjust_param */
  1588. #endif
  1589. );
  1590.  
  1591. extern XieRGBToCIEXYZParam *XieTecRGBToCIEXYZ (
  1592. #if NeedFunctionPrototypes
  1593.     XieMatrix            /* matrix */,
  1594.     XieWhiteAdjustTechnique    /* white_adjust_tech */,
  1595.     XiePointer            /* white_adjust_param */
  1596. #endif
  1597. );
  1598.  
  1599. extern XieRGBToYCbCrParam *XieTecRGBToYCbCr (
  1600. #if NeedFunctionPrototypes
  1601.     XieLevels        /* levels */,
  1602.     double        /* luma_red */,
  1603.     double        /* luma_green */,
  1604.     double        /* luma_blue */,
  1605.     XieConstant        /* bias */
  1606. #endif
  1607. );
  1608.  
  1609. extern XieRGBToYCCParam *XieTecRGBToYCC (
  1610. #if NeedFunctionPrototypes
  1611.     XieLevels        /* levels */,
  1612.     double        /* luma_red */,
  1613.     double        /* luma_green */,
  1614.     double        /* luma_blue */,
  1615.     double        /* scale */
  1616. #endif
  1617. );
  1618.  
  1619. extern XieCIELabToRGBParam *XieTecCIELabToRGB (
  1620. #if NeedFunctionPrototypes
  1621.     XieMatrix            /* matrix */,
  1622.     XieWhiteAdjustTechnique    /* white_adjust_tech */,
  1623.     XiePointer            /* white_adjust_param */,
  1624.     XieGamutTechnique        /* gamut_tech */,
  1625.     XiePointer            /* gamut_param */
  1626. #endif
  1627. );
  1628.  
  1629. extern XieCIEXYZToRGBParam *XieTecCIEXYZToRGB (
  1630. #if NeedFunctionPrototypes
  1631.     XieMatrix            /* matrix */,
  1632.     XieWhiteAdjustTechnique    /* white_adjust_tech */,
  1633.     XiePointer            /* white_adjust_param */,
  1634.     XieGamutTechnique        /* gamut_tech */,
  1635.     XiePointer            /* gamut_param */
  1636. #endif
  1637. );
  1638.  
  1639. extern XieYCbCrToRGBParam *XieTecYCbCrToRGB (
  1640. #if NeedFunctionPrototypes
  1641.     XieLevels        /* levels */,
  1642.     double        /* luma_red */,
  1643.     double        /* luma_green */,
  1644.     double        /* luma_blue */,
  1645.     XieConstant        /* bias */,
  1646.     XieGamutTechnique    /* gamut_tech */,
  1647.     XiePointer        /* gamut_param */
  1648. #endif
  1649. );
  1650.  
  1651. extern XieYCCToRGBParam *XieTecYCCToRGB (
  1652. #if NeedFunctionPrototypes
  1653.     XieLevels        /* levels */,
  1654.     double        /* luma_red */,
  1655.     double        /* luma_green */,
  1656.     double        /* luma_blue */,
  1657.     double        /* scale */,
  1658.     XieGamutTechnique    /* gamut_tech */,
  1659.     XiePointer        /* gamut_param */
  1660. #endif
  1661. );
  1662.  
  1663. extern XieClipScaleParam *XieTecClipScale (
  1664. #if NeedFunctionPrototypes
  1665.     XieConstant        /* in_low */,
  1666.     XieConstant        /* in_high */,
  1667.     XieLTriplet        /* out_low */,
  1668.     XieLTriplet        /* out_high */
  1669. #endif
  1670. );
  1671.  
  1672. extern XieConvolveConstantParam *XieTecConvolveConstant (
  1673. #if NeedFunctionPrototypes
  1674.     XieConstant        /* constant */
  1675. #endif
  1676. );
  1677.  
  1678. extern XieDecodeUncompressedSingleParam *XieTecDecodeUncompressedSingle (
  1679. #if NeedFunctionPrototypes
  1680.     XieOrientation    /* fill_order */,
  1681.     XieOrientation    /* pixel_order */,
  1682.     unsigned int    /* pixel_stride */,
  1683.     unsigned int    /* left_pad */,
  1684.     unsigned int    /* scanline_pad */
  1685. #endif
  1686. );
  1687.  
  1688. extern XieDecodeUncompressedTripleParam *XieTecDecodeUncompressedTriple (
  1689. #if NeedFunctionPrototypes
  1690.     XieOrientation    /* fill_order */,
  1691.     XieOrientation    /* pixel_order */,
  1692.     XieOrientation    /* band_order */,
  1693.     XieInterleave    /* interleave */,
  1694.     unsigned char[3]    /* pixel_stride[3] */,
  1695.     unsigned char[3]    /* left_pad[3] */,
  1696.     unsigned char[3]    /* scanline_pad[3] */
  1697. #endif
  1698. );
  1699.  
  1700. extern XieDecodeG31DParam *XieTecDecodeG31D (
  1701. #if NeedFunctionPrototypes
  1702.     XieOrientation    /* encoded_order */,
  1703.     Bool        /* normal */,
  1704.     Bool        /* radiometric */
  1705. #endif
  1706. );
  1707.  
  1708. extern XieDecodeG32DParam *XieTecDecodeG32D (
  1709. #if NeedFunctionPrototypes
  1710.     XieOrientation    /* encoded_order */,
  1711.     Bool        /* normal */,
  1712.     Bool        /* radiometric */
  1713. #endif
  1714. );
  1715.  
  1716. extern XieDecodeG42DParam *XieTecDecodeG42D (
  1717. #if NeedFunctionPrototypes
  1718.     XieOrientation    /* encoded_order */,
  1719.     Bool        /* normal */,
  1720.     Bool        /* radiometric */
  1721. #endif
  1722. );
  1723.  
  1724. extern XieDecodeTIFF2Param *XieTecDecodeTIFF2 (
  1725. #if NeedFunctionPrototypes
  1726.     XieOrientation    /* encoded_order */,
  1727.     Bool        /* normal */,
  1728.     Bool        /* radiometric */
  1729. #endif
  1730. );
  1731.  
  1732. extern XieDecodeTIFFPackBitsParam *XieTecDecodeTIFFPackBits (
  1733. #if NeedFunctionPrototypes
  1734.     XieOrientation    /* encoded_order */,
  1735.     Bool        /* normal */
  1736. #endif
  1737. );
  1738.  
  1739. extern XieDecodeJPEGBaselineParam *XieTecDecodeJPEGBaseline (
  1740. #if NeedFunctionPrototypes
  1741.     XieInterleave    /* interleave */,
  1742.     XieOrientation    /* band_order */,
  1743.     Bool        /* up_sample  */
  1744. #endif
  1745. );
  1746.  
  1747. extern XieDecodeJPEGLosslessParam *XieTecDecodeJPEGLossless (
  1748. #if NeedFunctionPrototypes
  1749.     XieInterleave    /* interleave */,
  1750.     XieOrientation    /* band_order */
  1751. #endif
  1752. );
  1753.  
  1754. extern XieDitherOrderedParam *XieTecDitherOrderedParam (
  1755. #if NeedFunctionPrototypes
  1756.     unsigned int    /* threshold_order */
  1757. #endif
  1758. );
  1759.  
  1760. extern XieEncodeUncompressedSingleParam *XieTecEncodeUncompressedSingle (
  1761. #if NeedFunctionPrototypes
  1762.     XieOrientation    /* fill_order */,
  1763.     XieOrientation    /* pixel_order */,
  1764.     unsigned int    /* pixel_stride */,
  1765.     unsigned int    /* scanline_pad */
  1766. #endif
  1767. );
  1768.  
  1769. extern XieEncodeUncompressedTripleParam *XieTecEncodeUncompressedTriple (
  1770. #if NeedFunctionPrototypes
  1771.     XieOrientation    /* fill_order */,
  1772.     XieOrientation    /* pixel_order */,
  1773.     XieOrientation    /* band_order */,
  1774.     XieInterleave    /* interleave */,
  1775.     unsigned char[3]    /* pixel_stride[3] */,
  1776.     unsigned char[3]    /* scanline_pad[3] */
  1777. #endif
  1778. );
  1779.  
  1780. extern XieEncodeG31DParam *XieTecEncodeG31D (
  1781. #if NeedFunctionPrototypes
  1782.     Bool        /* align_eol */,
  1783.     Bool        /* radiometric */,
  1784.     XieOrientation    /* encoded_order */
  1785. #endif
  1786. );
  1787.  
  1788. extern XieEncodeG32DParam *XieTecEncodeG32D (
  1789. #if NeedFunctionPrototypes
  1790.     Bool        /* uncompressed */,
  1791.     Bool        /* align_eol */,
  1792.     Bool        /* radiometric */,
  1793.     XieOrientation    /* encoded_order */,
  1794.     unsigned long    /* k_factor */
  1795. #endif
  1796. );
  1797.  
  1798. extern XieEncodeG42DParam *XieTecEncodeG42D (
  1799. #if NeedFunctionPrototypes
  1800.     Bool        /* uncompressed */,
  1801.     Bool        /* radiometric */,
  1802.     XieOrientation    /* encoded_order */
  1803. #endif
  1804. );
  1805.  
  1806. extern XieEncodeServerChoiceParam *XieTecEncodeServerChoice (
  1807. #if NeedFunctionPrototypes
  1808.     unsigned int    /* preference */
  1809. #endif
  1810. );
  1811.  
  1812. extern XieEncodeJPEGBaselineParam *XieTecEncodeJPEGBaseline (
  1813. #if NeedFunctionPrototypes
  1814.     XieInterleave    /* interleave */,
  1815.     XieOrientation    /* band_order */,
  1816.     unsigned char[3]    /* horizontal_samples[3] */,
  1817.     unsigned char[3]    /* vertical_samples[3] */,
  1818.     char *        /* q_table */,
  1819.     unsigned int    /* q_size */,
  1820.     char *        /* ac_table */,
  1821.     unsigned int    /* ac_size */,
  1822.     char *        /* dc_table */,
  1823.     unsigned int    /* dc_size */
  1824. #endif
  1825. );
  1826.  
  1827. extern void XieFreeEncodeJPEGBaseline (
  1828. #if NeedFunctionPrototypes
  1829.     XieEncodeJPEGBaselineParam *    /* param */
  1830. #endif
  1831. );
  1832.  
  1833. extern XieEncodeJPEGLosslessParam *XieTecEncodeJPEGLossless (
  1834. #if NeedFunctionPrototypes
  1835.     XieInterleave    /* interleave */,
  1836.     XieOrientation    /* band_order */,
  1837.     unsigned char[3]    /* predictor[3] */,
  1838.     char *        /* table */,
  1839.     unsigned int    /* table_size */
  1840. #endif
  1841. );
  1842.  
  1843. extern void XieFreeEncodeJPEGLossless (
  1844. #if NeedFunctionPrototypes
  1845.     XieEncodeJPEGLosslessParam *    /* param */
  1846. #endif
  1847. );
  1848.  
  1849. extern void XieFreePasteUpTiles (
  1850. #if NeedFunctionPrototypes
  1851.     XiePhotoElement *    /* element */
  1852. #endif
  1853. );
  1854.  
  1855. extern XieEncodeTIFF2Param *XieTecEncodeTIFF2 (
  1856. #if NeedFunctionPrototypes
  1857.     XieOrientation    /* encoded_order */,
  1858.     Bool        /* radiometric */
  1859. #endif
  1860. );
  1861.  
  1862. extern XieEncodeTIFFPackBitsParam *XieTecEncodeTIFFPackBits (
  1863. #if NeedFunctionPrototypes
  1864.     XieOrientation    /* encoded_order */
  1865. #endif
  1866. );
  1867.  
  1868. extern XieGeomAntialiasByAreaParam *XieTecGeomAntialiasByArea (
  1869. #if NeedFunctionPrototypes
  1870.     int            /* simple */
  1871. #endif
  1872. );
  1873.  
  1874. extern XieGeomAntialiasByLowpassParam *XieTecGeomAntialiasByLowpass (
  1875. #if NeedFunctionPrototypes
  1876.     int            /* kernel_size */
  1877. #endif
  1878. );
  1879.  
  1880. extern XieGeomGaussianParam *XieTecGeomGaussian (
  1881. #if NeedFunctionPrototypes
  1882.     double        /* sigma */,
  1883.     double        /* normalize */,
  1884.     unsigned int    /* radius */,
  1885.     Bool        /* simple */
  1886. #endif
  1887. );
  1888.  
  1889. extern XieGeomNearestNeighborParam *XieTecGeomNearestNeighbor (
  1890. #if NeedFunctionPrototypes
  1891.     unsigned int    /* modify */
  1892. #endif
  1893. );
  1894.  
  1895. extern XieHistogramGaussianParam *XieTecHistogramGaussian (
  1896. #if NeedFunctionPrototypes
  1897.     double        /* mean */,
  1898.     double        /* sigma */
  1899. #endif
  1900. );
  1901.  
  1902. extern XieHistogramHyperbolicParam *XieTecHistogramHyperbolic (
  1903. #if NeedFunctionPrototypes
  1904.     double        /* constant */,
  1905.     Bool        /* shape_factor */
  1906. #endif
  1907. );
  1908.  
  1909. extern XieWhiteAdjustCIELabShiftParam *XieTecWhiteAdjustCIELabShift (
  1910. #if NeedFunctionPrototypes
  1911.     XieConstant        /* white_point */
  1912. #endif
  1913. );
  1914.  
  1915.  
  1916. #endif /* _XIELIB_H_ */
  1917.