home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks95 / Closure.sit / Closure / Sources / PhotoshopHeaders / PIAcquire.h < prev    next >
Text File  |  1995-06-24  |  7KB  |  187 lines

  1. /*
  2.     File: PIAcquire.h
  3.  
  4.     Copyright 1990-91 by Thomas Knoll.    Copyright 1992-95 by Adobe Systems, Inc.
  5.     All rights reserved.
  6.  
  7.     This file describes version 4.0 of Photoshop's Acquisition module interface.
  8. */
  9.  
  10. #ifndef __PIAcquire__
  11. #define __PIAcquire__
  12.  
  13. #include "PIGeneral.h"
  14.  
  15. /* Operation selectors */
  16.  
  17. #define acquireSelectorAbout    0
  18. #define acquireSelectorStart    1
  19. #define acquireSelectorContinue 2
  20. #define acquireSelectorFinish    3
  21. #define acquireSelectorPrepare    4
  22. #define acquireSelectorFinalize 5
  23.  
  24. /*    Error return values. The plug-in module may also return standard Macintosh
  25.     operating system error codes, or report its own errors, in which case it
  26.     can return any positive integer. */
  27.  
  28. #define acquireBadParameters    -30000    /* "a problem with the acquisition module interface" */
  29. #define acquireNoScanner        -30001    /* "there is no scanner installed" */
  30. #define acquireScannerProblem    -30002    /* "a problem with the scanner" */
  31.  
  32. /******************************************************************************/
  33. /* Pragma to byte align structures; only for Borland C */
  34.  
  35. #if defined(__BORLANDC__)
  36. #pragma option -a-
  37. #endif
  38.  
  39. /******************************************************************************/
  40.  
  41. #if !THINK_C
  42.     #pragma options align=mac68k
  43. #endif
  44.  
  45. typedef struct AcquireRecord
  46.     {
  47.  
  48.     int32            serialNumber;    /* Host's serial number, to allow
  49.                                        copy protected plug-in modules. */
  50.  
  51.     TestAbortProc    abortProc;        /* The plug-in module may call this no-argument
  52.                                        Boolean function (using Pascal calling
  53.                                        conventions) several times a second during long
  54.                                        operations to allow the user to abort the operation.
  55.                                        If it returns TRUE, the operation should be aborted
  56.                                        (and a positive error code returned). */
  57.  
  58.     ProgressProc    progressProc;    /* The plug-in module may call this two-argument
  59.                                        procedure periodically to update a progress
  60.                                        indicator.  The first parameter is the number
  61.                                        of operations completed; the second is the total
  62.                                        number of operations. */
  63.  
  64.     int32            maxData;        /* Maximum number of bytes that should be
  65.                                        passed back at once, plus the size of any
  66.                                        interal buffers. The plug-in may reduce this
  67.                                        value in the acquireSelectorPrepare routine. */
  68.  
  69.     int16            imageMode;        /* Image mode */
  70.     Point            imageSize;        /* Size of image */
  71.     int16            depth;            /* Bits per sample, currently must be 1 or 8 */
  72.     int16            planes;         /* Samples per pixel */
  73.  
  74.     Fixed            imageHRes;        /* Pixels per inch */
  75.     Fixed            imageVRes;        /* Pixels per inch */
  76.  
  77.     LookUpTable        redLUT;         /* Red LUT, only used for Indexed Color images */
  78.     LookUpTable        greenLUT;        /* Green LUT, only used for Indexed Color images */
  79.     LookUpTable        blueLUT;        /* Blue LUT, only used for Indexed Color images */
  80.  
  81.     void *            data;            /* A pointer to the returned image data. The
  82.                                        plug-in module is now responsible for freeing
  83.                                        this buffer (this is a change from previous
  84.                                        versions). Should be set to NIL when
  85.                                        all the image data has been returned. */
  86.  
  87.     Rect            theRect;        /* Rectangle being returned */
  88.     int16            loPlane;        /* First plane being returned */
  89.     int16            hiPlane;        /* Last plane being returned */
  90.     int16            colBytes;        /* Spacing between columns */
  91.     int32            rowBytes;        /* Spacing between rows */
  92.     int32            planeBytes;     /* Spacing between planes (ignored if only one
  93.                                        plane is returned at a time) */
  94.  
  95.     Str255             filename;        /* Document file name */
  96.     int16            vRefNum;        /* Volume reference number, or zero if none */
  97.     Boolean         dirty;            /* Changes since last saved flag. The plug-in may clear
  98.                                        this field to prevent prompting the user when
  99.                                        closing the document. */
  100.  
  101.     OSType            hostSig;        /* Creator code for host application */
  102.     HostProc        hostProc;        /* Host specific callback procedure */
  103.  
  104.     int32            hostModes;        /* Used by the host to inform the plug-in which
  105.                                        imageMode values it supports.  If the corresponding
  106.                                        bit (LSB = bit 0) is 1, the mode is supported. */
  107.  
  108.     PlaneMap        planeMap;        /* Maps plug-in plane numbers to host plane
  109.                                        numbers.  The host initializes this is a linear
  110.                                        mapping.  The plug-in may change this mapping if
  111.                                        it sees the data in a different order. */
  112.  
  113.     Boolean         canTranspose;    /* Is the host able to transpose the image? */
  114.     Boolean         needTranspose;    /* Does the plug-in need the image transposed? */
  115.  
  116.     Handle            duotoneInfo;    /* Handle to duotone information, if returning a
  117.                                        duotone mode image.    The plug-in is responsible
  118.                                        for freeing this buffer. */
  119.  
  120.     int32            diskSpace;        /* Free disk space on the host's scratch disk or
  121.                                        disks.  Set to a negative number if host does
  122.                                        not use a scratch disk. */
  123.  
  124.     SpaceProc        spaceProc;        /* If not NIL, a pointer to a no-argument
  125.                                        in32 valued function (using Pascal calling
  126.                                        conventions) which uses the current settings of
  127.                                        the imageMode, imageSize, depth, and planes
  128.                                        fields to compute the amount of scratch disk
  129.                                        space required to hold the image.  Returns -1
  130.                                        if the settings are not valid. */
  131.  
  132.     PlugInMonitor    monitor;        /* Information on current monitor */
  133.  
  134.     void *            platformData;    /* Platform specific information. */
  135.  
  136.     BufferProcs *    bufferProcs;    /* The buffer procedures.          */
  137.     
  138.     ResourceProcs *    resourceProcs;    /* The plug-in resource procedures. */
  139.     
  140.     ProcessEventProc processEvent;    /* Pass events to the application. */
  141.  
  142.     Boolean         canReadBack;    /* Can we return data for filtering? */
  143.  
  144.     Boolean         wantReadBack;    /* Does the plug-in want to read the data back? */
  145.  
  146.     Boolean         acquireAgain;    /* If true at finish, call the plug-in again.
  147.                                        Not all hosts may pay attention to this flag. */
  148.  
  149.     Boolean         canFinalize;    /* Can the host make the finalize call? */
  150.     
  151.     DisplayPixelsProc displayPixels;/* Display dithered pixels. */
  152.     
  153.     HandleProcs        *handleProcs;    /* Platform independent handle manipulation. */
  154.     
  155.     Boolean            wantFinalize;    /* Requests an acquireSelectorFinalize call
  156.                                        if the host provides the newer protocol
  157.                                        (canFinalize). */
  158.  
  159.     char            reserved1[3];    /* Get us aligned to a four byte */
  160.                                     /* boundary. */
  161.  
  162.     ColorServicesProc colorServices; /* Routine to access color services. */
  163.     
  164.     AdvanceStateProc advanceState;    /* Advance state.  Valid to call only
  165.                                        within an acquireSelectorContinue
  166.                                        call. */
  167.  
  168.     char            reserved [216]; /* Set to zero */
  169.  
  170.     }
  171. AcquireRecord, *AcquireRecordPtr;
  172.  
  173. #if !THINK_C
  174.     #pragma options align=reset
  175. #endif
  176.  
  177. /******************************************************************************/
  178. /* turn off the byte align pragma back to its original state; only for Borland C */
  179.  
  180. #if defined(__BORLANDC__)
  181. #pragma option -a.
  182. #endif
  183.  
  184. /******************************************************************************/
  185.  
  186. #endif
  187.