⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iewia.pas

📁 ·ImageEn 2.3.0 ImageEn一组用于图像处理、查看和分析的Delphi控件。能够保存几种图像格式
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  // WIA_DPS_VERTICAL_BED_REGISTRATION constants
  WIA_TOP_JUSTIFIED = 0;
  //WIA_CENTERED                   =1;
  WIA_BOTTOM_JUSTIFIED = 2;

  // WIA_DPS_ORIENTATION and WIA_DPS_ROTATION constants
  WIA_PORTRAIT = 0;
  WIA_LANSCAPE = 1;
  WIA_ROT180 = 2;
  WIA_ROT270 = 3;

  // WIA_DPS_MIRROR flags
  WIA_MIRRORED = $01;

  // WIA_DPS_DOCUMENT_HANDLING_SELECT flags
  WIA_FEEDER = $001;
  WIA_FLATBED = $002;
  WIA_DUPLEX = $004;
  WIA_FRONT_FIRST = $008;
  WIA_BACK_FIRST = $010;
  WIA_FRONT_ONLY = $020;
  WIA_BACK_ONLY = $040;
  WIA_NEXT_PAGE = $080;
  WIA_PREFEED = $100;
  WIA_AUTO_ADVANCE = $200;

  // WIA_DPS_TRANSPARENCY flags
  WIA_LIGHT_SOURCE_PRESENT_DETECT = $01;
  WIA_LIGHT_SOURCE_PRESENT = $02;
  WIA_LIGHT_SOURCE_DETECT_READY = $04;
  WIA_LIGHT_SOURCE_READY = $08;

  // WIA_DPS_TRANSPARENCY_SELECT flags
  WIA_LIGHT_SOURCE_SELECT = $001;

  // WIA_DPS_SCAN_AHEAD_PAGES constants
  WIA_SCAN_AHEAD_ALL = 0;

  // WIA_DPS_PAGES constants
  WIA_ALL_PAGES = 0;

  // WIA_DPS_PREVIEW constants
  WIA_FINAL_SCAN = 0;
  WIA_PREVIEW_SCAN = 1;

  // WIA_DPS_SHOW_PREVIEW_CONTROL constants
  WIA_SHOW_PREVIEW_CONTROL = 0;
  WIA_DONT_SHOW_PREVIEW_CONTROL = 1;

  // Predefined strings for WIA_DPS_ENDORSER_STRING
  WIA_ENDORSER_TOK_DATE = '$DATE$';
  WIA_ENDORSER_TOK_TIME = '$TIME$';
  WIA_ENDORSER_TOK_PAGE_COUNT = '$PAGE_COUNT$';
  WIA_ENDORSER_TOK_DAY = '$DAY$';
  WIA_ENDORSER_TOK_MONTH = '$MONTH$';
  WIA_ENDORSER_TOK_YEAR = '$YEAR$';

  // WIA_DPS_PAGE_SIZE constants
  WIA_PAGE_A4 = 0;
  WIA_PAGE_LETTER = 1;
  WIA_PAGE_CUSTOM = 2;

  // WIA_IPA_COMPRESSION constants
  WIA_COMPRESSION_NONE = 0;
  WIA_COMPRESSION_BI_RLE4 = 1;
  WIA_COMPRESSION_BI_RLE8 = 2;
  WIA_COMPRESSION_G3 = 3;
  WIA_COMPRESSION_G4 = 4;
  WIA_COMPRESSION_JPEG = 5;

  // WIA_IPA_PLANAR constants
  WIA_PACKED_PIXEL = 0;
  WIA_PLANAR = 1;

  // WIA_IPA_DATATYPE constants
  WIA_DATA_THRESHOLD = 0;
  WIA_DATA_DITHER = 1;
  WIA_DATA_GRAYSCALE = 2;
  WIA_DATA_COLOR = 3;
  WIA_DATA_COLOR_THRESHOLD = 4;
  WIA_DATA_COLOR_DITHER = 5;

  // WIA_IPA_SUPPRESS_PROPERTY_PAGE flags
  WIA_PROPPAGE_SCANNER_ITEM_GENERAL = $00000001;
  WIA_PROPPAGE_CAMERA_ITEM_GENERAL = $00000002;

  // WIA_IPS_CUR_INTENT flags
  //WIA_INTENT_NONE                 =$00000000;
  WIA_INTENT_IMAGE_TYPE_COLOR = $00000001;
  WIA_INTENT_IMAGE_TYPE_GRAYSCALE = $00000002;
  WIA_INTENT_IMAGE_TYPE_TEXT = $00000004;
  WIA_INTENT_IMAGE_TYPE_MASK = $0000000F;
  WIA_INTENT_MINIMIZE_SIZE = $00010000;
  WIA_INTENT_MAXIMIZE_QUALITY = $00020000;
  WIA_INTENT_BEST_PREVIEW = $00040000;
  WIA_INTENT_SIZE_MASK = $000F0000;

  // WIA_IPS_PHOTOMETRIC_INTERP constants
  WIA_PHOTO_WHITE_1 = 0; // default, white is 1, black is 0
  WIA_PHOTO_WHITE_0 = 1; // default, white is 0, black is 1

  // WIA Extended Property Identifiers
  WIA_RANGE_MIN = 0;
  WIA_RANGE_NOM = 1;
  WIA_RANGE_MAX = 2;
  WIA_RANGE_STEP = 3;
  WIA_RANGE_NUM_ELEMS = 4;
  WIA_LIST_COUNT = 0;
  WIA_LIST_NOM = 1;
  WIA_LIST_VALUES = 2;
  WIA_LIST_NUM_ELEMS = 2;
  WIA_FLAG_NOM = 0;
  WIA_FLAG_VALUES = 1;
  WIA_FLAG_NUM_ELEMS = 2;

  WIA_PROP_READ = $01;
  WIA_PROP_WRITE = $02;
  WIA_PROP_RW = WIA_PROP_READ or WIA_PROP_WRITE;
  WIA_PROP_SYNC_REQUIRED = $04;
  WIA_PROP_NONE = $08;
  WIA_PROP_RANGE = $10;
  WIA_PROP_LIST = $20;
  WIA_PROP_FLAG = $40;
  WIA_PROP_CACHEABLE = $10000;

  WIA_ITEM_CAN_BE_DELETED = $80;
  WIA_ITEM_READ = WIA_PROP_READ;
  WIA_ITEM_WRITE = WIA_PROP_WRITE;
  WIA_ITEM_RD = WIA_ITEM_READ or WIA_ITEM_CAN_BE_DELETED;
  WIA_ITEM_RWD = WIA_ITEM_READ or WIA_ITEM_WRITE or WIA_ITEM_CAN_BE_DELETED;

  // Device connection status
  WIA_DEVICE_NOT_CONNECTED = 0;
  WIA_DEVICE_CONNECTED = 1;

  // WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES flags
  WIA_FEED = $01;
  WIA_FLAT = $02;
  WIA_DUP = $04;
  WIA_DETECT_FLAT = $08;
  WIA_DETECT_SCAN = $10;
  WIA_DETECT_FEED = $20;
  WIA_DETECT_DUP = $40;
  WIA_DETECT_FEED_AVAIL = $80;
  WIA_DETECT_DUP_AVAIL = $100;

  // WIA_DPS_DOCUMENT_HANDLING_STATUS flags
  WIA_FEED_READY = $01;
  WIA_FLAT_READY = $02;
  WIA_DUP_READY = $04;
  WIA_FLAT_COVER_UP = $08;
  WIA_PATH_COVER_UP = $10;
  WIA_PAPER_JAM = $20;

type

  WIA_DATA_CALLBACK_HEADER = packed record
    lSize: integer;
    guidFormatID: TGUID;
    lBufferSize: integer;
    lPageCount: integer;
  end;
  PWIA_DATA_CALLBACK_HEADER = ^WIA_DATA_CALLBACK_HEADER;

  IWiaItem = interface;

  TIEWGetPage = function(header: PWIA_DATA_CALLBACK_HEADER; data: pointer; datalen: integer): boolean of object;

  IWiaDataCallback = interface(IUnknown)
    ['{a558a866-a5b0-11d2-a08f-00c04f72dc3c}']
    function BandedDataCallback(lMessage: integer; lStatus: integer; lPercentComplete: integer; lOffset: integer; lLength: integer; lReserved: integer; lResLength: integer; pbBuffer: pbyte): HRESULT; stdcall;
  end;

  WIA_DATA_TRANSFER_INFO = packed record
    ulSize: integer;
    ulSection: integer;
    ulBufferSize: integer;
    bDoubleBuffer: longbool;
    ulReserved1: integer;
    ulReserved2: integer;
    ulReserved3: integer;
  end;
  PWIA_DATA_TRANSFER_INFO = ^WIA_DATA_TRANSFER_INFO;

  TIEWiaOnProgress = function(percentage: integer): boolean of object;

  TWiaDataCallBack = class(TInterfacedObject, IWiaDataCallBack)
    header: WIA_DATA_CALLBACK_HEADER;
    data: pbyte;
    datalen: integer;
    OnGetPage: TIEWGetPage;
    OnProgress: TIEWiaOnProgress;
    WaitingData: boolean;
    function BandedDataCallback(lMessage: integer; lStatus: integer; lPercentComplete: integer; lOffset: integer; lLength: integer; lReserved: integer; lResLength: integer; pbBuffer: pbyte): HRESULT; stdcall;
    constructor Create;
    destructor Destroy; override;
  end;
  PWiaDataCallBAck = ^TWiaDataCallBack;

  IWiaEventCallback = interface(IUnknown)
    ['{ae6287b0-0084-11d2-973b-00a0c9068f2e}']
    function ImageEventCallback(pEventGUID:pGUID; bstrEventDescription:pwchar; bstrDeviceID:pwchar; bstrDeviceDescription:pwchar; dwDeviceType:dword; bstrFullItemName:pwchar; var pulEventType:DWORD; ulReserved:DWORD):HRESULT; stdcall;
  end;

  TWiaEventCallBack = class(TInterfacedObject, IWiaEventCallBack)
    WIA:TObject;  // the TIEWia object
    function ImageEventCallback(pEventGUID:pGUID; bstrEventDescription:pwchar; bstrDeviceID:pwchar; bstrDeviceDescription:pwchar; dwDeviceType:dword; bstrFullItemName:pwchar; var pulEventType:DWORD; ulReserved:DWORD):HRESULT; stdcall;
    constructor Create(inWIA:TObject);
    destructor Destroy; override;
  end;
  PWiaEventCallBAck = ^TWiaEventCallBack;

  IWiaDataTransfer = interface(IUnknown)
    ['{a6cef998-a5b0-11d2-a08f-00c04f72dc3c}']
    function idtGetData: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function idtGetBandedData(pWiaDataTransInfo: PWIA_DATA_TRANSFER_INFO; pIWiaDataCallback: IWiaDataCallback): HRESULT; stdcall;
    function idtQueryGetData: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function idtEnumWIA_FORMAT_INFO: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function idtGetExtendedTransferInfo: HRESULT; stdcall; // NOT STILL IMPLEMENTED
  end;

  IEnumWiaItem = interface(IUnknown)
    ['{5e8383fc-3391-11d2-9a33-00c04fa36145}']
    function Next(celt: integer; out ppIWiaItem: IWiaItem; var pceltFetched: integer): HRESULT; stdcall;
    function Skip: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function Reset: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function Clone: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function GetCount: HRESULT; stdcall; // NOT STILL IMPLEMENTED
  end;

  TIWiaItemArray = array[0..0] of IUnknown; // IUnknown instead IWiaItem because this crashes C++Builder
  PIWiaItemArray = ^TIWiaItemArray;

  IWiaItem = interface(IUnknown)
    ['{4db1ad10-3391-11d2-9a33-00c04fa36145}']
    function GetItemType(var pItemType: integer): HRESULT; stdcall;
    function AnalyzeItem(lFlags: integer): HRESULT; stdcall;
    function EnumChildItems(out ppIEnumWiaItem: IEnumWiaItem): HRESULT; stdcall;
    function DeleteItem(lFlags:longint): HRESULT; stdcall;
    function CreateChildItem: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function EnumRegisterEventInfo: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function FindItemByName: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function DeviceDlg(hwndParent: HWND; lFlags: integer; lIntent: integer; out plItemCount: integer; out ppIWiaItem: PIWiaItemArray): HRESULT; stdcall;
    function DeviceCommand(lFlags: integer; pCmdGUID: PGUID; var pIWiaItem: IWiaItem): HRESULT; stdcall;
    function GetRootItem: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function EnumDeviceCapabilities: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function DumpItemData: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function DumpDrvItemData: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function DumpTreeItemData: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function Diagnostic: HRESULT; stdcall; // NOT STILL IMPLEMENTED
  end;

  IWiaPropertyStorage = interface(IUnknown)
    ['{98B5E8A0-29CC-491a-AAC0-E6DB4FDCCEB6}']
    function ReadMultiple(cpspec: integer; rgpspec: pointer; rgpropvar: pointer): HRESULT; stdcall;
    function WriteMultiple(cpspec: integer; rgpspec: pointer; rgpropvar: pointer; propidNameFirst: integer): HRESULT; stdcall;
    function DeleteMultiple: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function ReadPropertyNames(cpropid: integer; rgpspec: pointer; var name: pchar): HRESULT; stdcall;
    function WritePropertyNames: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function DeletePropertyNames: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function Commit: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function Revert: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function Enum: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function SetTimes: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function SetClass: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function Stat: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function GetPropertyAttributes(cpspec: integer; rgpspec: pointer; var rgflags: integer; rgpropvar: pointer): HRESULT; stdcall;
    function GetCount: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function GetPropertyStream: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function SetPropertyStream: HRESULT; stdcall; // NOT STILL IMPLEMENTED
  end;

  IEnumWIA_DEV_INFO = interface(IUnknown)
    ['{5e38b83c-8cf1-11d1-bf92-0060081ed811}']
    function Next(celt: integer; out rgelt: IWiaPropertyStorage; var pceltFetched: integer): HRESULT; stdcall;
    function Skip: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function Reset: HRESULT; stdcall;
    function Clone: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function GetCount(var celt: integer): HRESULT; stdcall;
  end;

  PIEnumWIA_DEV_INFO = ^IEnumWIA_DEV_INFO;
  PPIEnumWIA_DEV_INFO = ^PIEnumWIA_DEV_INFO;

  IWiaDevMgr = interface(IUnknown)
    ['{5eb2502a-8cf1-11d1-bf92-0060081ed811}']
    function EnumDeviceInfo(lFlag: integer; out ppIEnum: IEnumWIA_DEV_INFO): HRESULT; stdcall;
    function CreateDevice(bstrDeviceID: pwchar; out ppWiaItemRoot: IWiaItem): HRESULT; stdcall;
    function SelectDeviceDlg: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function SelectDeviceDlgID(hwndParent: HWND; lDeviceType: integer; lFlags: integer; var pbstrDeviceID: pwchar): HRESULT; stdcall;
    function GetImageDlg: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function RegisterEventCallbackProgram: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function RegisterEventCallbackInterface(lFlags:longint; bstrDeviceID:pwchar; pEventGUID:pGUID; pIWiaEventCallback:IWiaEventCallback; var pEventObject:IUnknown): HRESULT; stdcall;
    function RegisterEventCallbackCLSID: HRESULT; stdcall; // NOT STILL IMPLEMENTED
    function AddDeviceDlg: HRESULT; stdcall; // NOT STILL IMPLEMENTED
  end;
  IID_IWiaDevMgr = IWiaDevMgr;

{!!
<FS>TIEWiaDeviceInfo

<FM>Declaration<FC>
}
  TIEWiaDeviceInfo = class
    Name: string;
    ID: string;
    DeviceType: (iewScanner, iewDigitalCamera, iewStreamingVideo);
    DriverVersion: string;
    PortName: string;
    ServerName: string;
    Vendor: string;
  end;
{!!}

{!!
<FS>TIEWiaItemType

<FM>Declaration<FC>
}
  TIEWiaItemType = set of (
    witFree,
    witImage,
    witFile,
    witFolder,
    witRoot,
    witAnalyze,
    witAudio,
    witDevice,
    witDeleted,
    witDisconnected,
    witHPanorama,
    witVPanorama,
    witBurst,
    witStorage,
    witTransfer,
    witGenerated,
    witHasAttachments,
    witVideo,
    witTwainCapabilityPassThrough,
    witRemoved,
    witMask
    );
{!!}

{!!
<FS>TIEWiaItem

<FM>Declaration<FC>
TIEWiaItem = class
  This: IWiaItem;
  Children: TList;
  ItemType: <A TIEWiaItemType>;
  constructor Create;
  destructor Destroy; override;
end;
!!}
  TIEWiaItem = class
    This: IWiaItem;
    Children: TList;
    ItemType: TIEWiaItemType;
    constructor Create;
    destructor Destroy; override;
  end;

  TIEWProcessingInfo = packed record
    DPIX: integer;
    DPIY: integer;
  end;

{!!
<FS>TIEWiaAttrib

<FM>Declaration<FC>
}
  TIEWiaAttrib = set of (iewaRead, iewaWrite, iewaSyncRequired, iewaNone, iewaRange, iewaList, iewaFlag, iewaCacheable);
{!!}

  variantarray = array[0..MaxInt div 32] of variant;
  pvariantarray = ^variantarray;

{!!
<FS>TIEWiaValues

<FM>Declaration<FC>
  TIEWiaValues = class
    max: variant;
    min: variant;
    count: integer;
    normal: variant;
    step: variant;
    property values[idx: integer]: variant;
  end;
!!}
  TIEWiaValues = class
  private
    fValues: pvariantarray;
    function GetValues(idx: integer): variant;
  public
    max: variant;
    min: variant;
    count: integer;
    normal: variant;
    step: variant;
    constructor Create;
    destructor Destroy; override;
    property values[idx: integer]: variant read GetValues;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -