//------------------------------------------------------------------------------ // Copyright (c) 1999 Microsoft Corporation. // // defprop.h // // Property Declarations and definitions for the IrTran-P WIA USD. // // Author: // // EdwardR 12-Aug-1999 // //------------------------------------------------------------------------------ #include "tcamprop.h" #define NUM_CAP_ENTRIES 4 #define NUM_EVENTS 3 #define PREFFERED_FORMAT_NOM &WiaImgFmt_JPEG #define FORMAT_NOM &WiaImgFmt_JPEG #define NUM_CAM_ITEM_PROPS (19) #define NUM_CAM_DEV_PROPS (17) #ifdef __GLOBALPROPVARS__ PROPID gItemPropIDs[NUM_CAM_ITEM_PROPS] = { WIA_IPA_DATATYPE, WIA_IPA_DEPTH, WIA_IPA_PIXELS_PER_LINE, WIA_IPA_NUMBER_OF_LINES, WIA_IPC_THUMBNAIL, WIA_IPA_ITEM_TIME, WIA_IPC_THUMB_WIDTH, WIA_IPC_THUMB_HEIGHT, WIA_IPA_PREFERRED_FORMAT, WIA_IPA_ITEM_SIZE, WIA_IPA_FORMAT, WIA_IPA_TYMED, WIA_IPA_COMPRESSION, WIA_IPA_CHANNELS_PER_PIXEL, WIA_IPA_BITS_PER_CHANNEL, WIA_IPA_PLANAR, WIA_IPA_BYTES_PER_LINE, WIA_IPA_ACCESS_RIGHTS, WIA_IPA_MIN_BUFFER_SIZE }; LPOLESTR gItemPropNames[NUM_CAM_ITEM_PROPS] = { WIA_IPA_DATATYPE_STR, WIA_IPA_DEPTH_STR, WIA_IPA_PIXELS_PER_LINE_STR, WIA_IPA_NUMBER_OF_LINES_STR, WIA_IPC_THUMBNAIL_STR, WIA_IPA_ITEM_TIME_STR, WIA_IPC_THUMB_WIDTH_STR, WIA_IPC_THUMB_HEIGHT_STR, WIA_IPA_PREFERRED_FORMAT_STR, WIA_IPA_ITEM_SIZE_STR, WIA_IPA_FORMAT_STR, WIA_IPA_TYMED_STR, WIA_IPA_COMPRESSION_STR, WIA_IPA_CHANNELS_PER_PIXEL_STR, WIA_IPA_BITS_PER_CHANNEL_STR, WIA_IPA_PLANAR_STR, WIA_IPA_BYTES_PER_LINE_STR, WIA_IPA_ACCESS_RIGHTS_STR, WIA_IPA_MIN_BUFFER_SIZE_STR }; PROPID gItemCameraPropIDs[WIA_NUM_IPC] = { WIA_IPC_AUDIO_AVAILABLE, WIA_IPC_AUDIO_DATA }; LPOLESTR gItemCameraPropNames[WIA_NUM_IPC] = { WIA_IPC_AUDIO_AVAILABLE_STR, WIA_IPC_AUDIO_DATA_STR, }; PROPID gDevicePropIDs[NUM_CAM_DEV_PROPS] = { WIA_DPA_FIRMWARE_VERSION, WIA_DPA_CONNECT_STATUS, WIA_DPA_DEVICE_TIME, WIA_DPC_PICTURES_TAKEN, WIA_DPC_PICTURES_REMAINING, WIA_DPC_THUMB_WIDTH, WIA_DPC_THUMB_HEIGHT, WIA_DPC_PICT_WIDTH, WIA_DPC_PICT_HEIGHT, WIA_DPC_EXPOSURE_MODE, WIA_DPC_FLASH_MODE, WIA_DPC_FOCUS_MODE, WIA_DPC_ZOOM_POSITION, WIA_DPC_BATTERY_STATUS, WIA_DPC_TIMER_MODE, WIA_DPC_TIMER_VALUE, WIA_DPP_TCAM_ROOT_PATH }; LPOLESTR gDevicePropNames[NUM_CAM_DEV_PROPS] = { WIA_DPA_FIRMWARE_VERSION_STR, WIA_DPA_CONNECT_STATUS_STR, WIA_DPA_DEVICE_TIME_STR, WIA_DPC_PICTURES_TAKEN_STR, WIA_DPC_PICTURES_REMAINING_STR, WIA_DPC_THUMB_WIDTH_STR, WIA_DPC_THUMB_HEIGHT_STR, WIA_DPC_PICT_WIDTH_STR, WIA_DPC_PICT_HEIGHT_STR, WIA_DPC_EXPOSURE_MODE_STR, WIA_DPC_FLASH_MODE_STR, WIA_DPC_FOCUS_MODE_STR, WIA_DPC_ZOOM_POSITION_STR, WIA_DPC_BATTERY_STATUS_STR, WIA_DPC_TIMER_MODE_STR, WIA_DPC_TIMER_VALUE_STR, WIA_DPP_TCAM_ROOT_PATH_STR }; PROPSPEC gDevicePropSpecDefaults[NUM_CAM_DEV_PROPS] = { {PRSPEC_PROPID, WIA_DPA_FIRMWARE_VERSION}, {PRSPEC_PROPID, WIA_DPA_CONNECT_STATUS}, {PRSPEC_PROPID, WIA_DPA_DEVICE_TIME}, {PRSPEC_PROPID, WIA_DPC_PICTURES_TAKEN}, {PRSPEC_PROPID, WIA_DPC_PICTURES_REMAINING}, {PRSPEC_PROPID, WIA_DPC_THUMB_WIDTH}, {PRSPEC_PROPID, WIA_DPC_THUMB_HEIGHT}, {PRSPEC_PROPID, WIA_DPC_PICT_WIDTH}, {PRSPEC_PROPID, WIA_DPC_PICT_HEIGHT}, {PRSPEC_PROPID, WIA_DPC_EXPOSURE_MODE}, {PRSPEC_PROPID, WIA_DPC_FLASH_MODE}, {PRSPEC_PROPID, WIA_DPC_FOCUS_MODE}, {PRSPEC_PROPID, WIA_DPC_ZOOM_POSITION}, {PRSPEC_PROPID, WIA_DPC_BATTERY_STATUS}, {PRSPEC_PROPID, WIA_DPC_TIMER_MODE}, {PRSPEC_PROPID, WIA_DPC_TIMER_VALUE}, {PRSPEC_PROPID, WIA_DPP_TCAM_ROOT_PATH} }; WIA_PROPERTY_INFO gDevPropInfoDefaults[NUM_CAM_DEV_PROPS] = { {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPA_FIRMWARE_VERSION {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPA_CONNECT_STATUS {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPA_DEVICE_TIME {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_PICTURES_TAKEN {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_PICTURES_REMAINING {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_THUMB_WIDTH {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_THUMB_HEIGHT {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_PICT_WIDTH {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_PICT_HEIGHT {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_EXPOSURE_MODE {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_FLASH_MODE {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_FOCUS_MODE {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_ZOOM_POSITION {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_BATTERY_STATUS {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_TIMER_MODE {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_DPC_TIMER_VALUE {WIA_PROP_RW | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0} // WIA_DPP_ROOT_PATH }; PROPSPEC gPropSpecDefaults[NUM_CAM_ITEM_PROPS] = { {PRSPEC_PROPID, WIA_IPA_DATATYPE}, {PRSPEC_PROPID, WIA_IPA_DEPTH}, {PRSPEC_PROPID, WIA_IPA_PIXELS_PER_LINE}, {PRSPEC_PROPID, WIA_IPA_NUMBER_OF_LINES}, {PRSPEC_PROPID, WIA_IPC_THUMBNAIL}, {PRSPEC_PROPID, WIA_IPA_ITEM_TIME}, {PRSPEC_PROPID, WIA_IPC_THUMB_WIDTH}, {PRSPEC_PROPID, WIA_IPC_THUMB_HEIGHT}, {PRSPEC_PROPID, WIA_IPA_PREFERRED_FORMAT}, {PRSPEC_PROPID, WIA_IPA_ITEM_SIZE}, {PRSPEC_PROPID, WIA_IPA_FORMAT}, {PRSPEC_PROPID, WIA_IPA_TYMED}, {PRSPEC_PROPID, WIA_IPA_COMPRESSION}, {PRSPEC_PROPID, WIA_IPA_CHANNELS_PER_PIXEL}, {PRSPEC_PROPID, WIA_IPA_BITS_PER_CHANNEL}, {PRSPEC_PROPID, WIA_IPA_PLANAR}, {PRSPEC_PROPID, WIA_IPA_BYTES_PER_LINE}, {PRSPEC_PROPID, WIA_IPA_ACCESS_RIGHTS}, {PRSPEC_PROPID, WIA_IPA_MIN_BUFFER_SIZE}, }; LONG gPropVarDefaults[(sizeof(PROPVARIANT) / sizeof(LONG)) * (NUM_CAM_ITEM_PROPS)] = { // VARTYPE reserved val pad/array ptr (LONG)VT_I4, 0x00000000, WIA_DATA_GRAYSCALE,0x00000000, // WIA_IPA_DATATYPE (LONG)VT_I4, 0x00000000, 8, 0x00000000, // WIA_IPA_DEPTH (LONG)VT_I4, 0x00000000, 0, 0x00000000, // WIA_IPA_PIXELS_PER_LINE (LONG)VT_I4, 0x00000000, 0, 0x00000000, // WIA_IPA_NUMBER_OF_LINES (LONG)VT_VECTOR | VT_I4, 0x00000000, 0, 0x00000000, // WIA_IPC_THUMBNAIL (LONG)VT_VECTOR | VT_I4, 0x00000000, 0, 0x00000000, // WIA_IPA_ITEM_TIME (LONG)VT_I4, 0x00000000, 0, 0x00000000, // WIA_IPC_THUMB_WIDTH (LONG)VT_I4, 0x00000000, 0, 0x00000000, // WIA_IPC_THUMB_HEIGHT (LONG)VT_CLSID, 0x00000000, (LONG)PREFFERED_FORMAT_NOM,0x00000000, // WIA_IPA_PREFERRED_FORMAT (LONG)VT_I4, 0x00000000, 0, 0x00000000, // WIA_IPA_ITEM_SIZE (LONG)VT_CLSID, 0x00000000, (LONG)FORMAT_NOM, 0x00000000, // WIA_IPA_FORMAT (LONG)VT_I4, 0x00000000, TYMED_CALLBACK, 0x00000000, // WIA_IPA_TYMED (LONG)VT_I4, 0x00000000, 0, 0x00000000, // WIA_IPA_COMPRESSION (LONG)VT_I4, 0x00000000, 3, 0x00000000, // WIA_IPA_CHANNELS PER PIXEL (LONG)VT_I4, 0x00000000, 8, 0x00000000, // WIA_IPA_BITS PER CHANNEL (LONG)VT_I4, 0x00000000, WIA_PACKED_PIXEL, 0x00000000, // WIA_IPA_PLANAR (LONG)VT_I4, 0x00000000, 0, 0x00000000, // WIA_IPA_WIDTH IN BYTES (LONG)VT_I4, 0x00000000, WIA_ITEM_RD, 0x00000000, // WIA_IPA_ACCESS_RIGHTS (LONG)VT_I4, 0x00000000, 65535, 0x00000000, // WIA_IPA_MIN_BUFFER_SIZE }; // // Default device extended properties. // #define NUM_DATATYPE 3 LONG lDataTypes[NUM_DATATYPE] = { WIA_DATA_THRESHOLD, WIA_DATA_GRAYSCALE, WIA_DATA_COLOR }; #define NUM_DEPTH 3 LONG lDepths[NUM_DEPTH] = { 1, 8, 24 }; // // Different formats supported // #define NUM_FORMAT 2 GUID *pguidFormats[NUM_FORMAT] = { (GUID*) &WiaImgFmt_JPEG, (GUID*) &WiaImgFmt_JPEG }; GUID g_guidFormats[NUM_FORMAT]; // FormatID's specified in pguidFormats are copied to g_guidFormats // during SetFormatAttribs // // This is an array of WIA_FORMAT_INFOs, describing the different formats // and their corresponding media types. Initialized in wiadev.cpp // WIA_FORMAT_INFO* g_wfiTable = NULL; // // Different media types supported // #define NUM_TYMED 2 LONG lTymeds [NUM_TYMED]= { TYMED_CALLBACK, TYMED_FILE }; // // Extended information for each property // WIA_PROPERTY_INFO gWiaPropInfoDefaults[NUM_CAM_ITEM_PROPS] = { {WIA_PROP_READ | WIA_PROP_LIST, VT_I4, NUM_DATATYPE, WIA_DATA_GRAYSCALE, (LONG) lDataTypes, 0}, // WIA_IPA_DATATYPE {WIA_PROP_READ | WIA_PROP_LIST, VT_I4, NUM_DEPTH, 8, (LONG) lDepths, 0}, // WIA_IPA_DEPTH {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPA_PIXELS_PER_LINE {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPA_NUMBER_OF_LINES {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPC_THUMBNAIL {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPA_ITEM_TIME {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPC_THUMB_WIDTH {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPC_THUMB_HEIGHT {WIA_PROP_READ | WIA_PROP_NONE, VT_CLSID, 0, 0, 0, 0}, // WIA_IPA_PREFERRED_FORMAT, set later {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPA_ITEM_SIZE {WIA_PROP_RW | WIA_PROP_LIST, VT_CLSID, 0, 0, 0, 0}, // WIA_IPA_FORMAT, set later {WIA_PROP_RW | WIA_PROP_LIST, VT_I4, NUM_TYMED, TYMED_CALLBACK, (LONG)lTymeds, 0}, // WIA_IPA_TYMED {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPA_COMPRESSION {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPA_CHANNELS {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPA_BITS_PER_CHANNEL {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPA_PLANAR {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPA_BYTES_PER_LINE {WIA_PROP_RW | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPA_ACCESS_RIGHTS {WIA_PROP_READ | WIA_PROP_NONE, VT_I4, 0, 0, 0, 0}, // WIA_IPA_MIN_BUFFER_SIZE }; // // Device capabilities. Events are listed before commands to simplify the // implementation of drvGetCapabilities(...) // #define N WIA_NOTIFICATION_EVENT #define A WIA_ACTION_EVENT #define NA (WIA_NOTIFICATION_EVENT | WIA_ACTION_EVENT) WIA_DEV_CAP_DRV gCapabilities[NUM_CAP_ENTRIES] = { // // GUID ulFlags wszName wszDescription wszIcon // {(GUID *)&WIA_EVENT_DEVICE_CONNECTED, NA, NULL, NULL, WIA_ICON_DEVICE_CONNECTED}, {(GUID *)&WIA_EVENT_DEVICE_DISCONNECTED, N, NULL, NULL, WIA_ICON_DEVICE_DISCONNECTED}, {(GUID *)&WIA_EVENT_ITEM_CREATED, NA, NULL, NULL, WIA_ICON_ITEM_CREATED}, {(GUID *)&WIA_CMD_SYNCHRONIZE, 0, NULL, NULL, WIA_ICON_SYNCHRONIZE} }; // // The device name and description strings are kept in the resource file. This // table maps the IDS_ values (in the resource file for each of the // gCapabilities[] array entries. gDefaultStrings[] are backup names in case // we can't load the strings from the resource file (should never actually // happen). // UINT gCapabilityIDS[NUM_CAP_ENTRIES] = { IDS_DEVICE_CONNECTED, IDS_DEVICE_DISCONNECTED, IDS_NEW_PICTURE_SENT, IDS_SYNCHRONIZE }; WCHAR *gDefaultStrings[NUM_CAP_ENTRIES] = { L"Device connected", L"Device disconnected", L"New picture sent", L"Synchronize" }; #else extern PROPID gItemPropIDs[NUM_CAM_ITEM_PROPS]; extern LPOLESTR gItemPropNames[NUM_CAM_ITEM_PROPS]; extern PROPID gItemCameraPropIDs[WIA_NUM_IPC]; extern LPOLESTR gItemCameraPropNames[WIA_NUM_IPC]; extern PROPID gDevicePropIDs[NUM_CAM_DEV_PROPS]; extern LPOLESTR gDevicePropNames[NUM_CAM_DEV_PROPS]; extern PROPSPEC gDevicePropSpecDefaults[NUM_CAM_DEV_PROPS]; extern WIA_PROPERTY_INFO gDevPropInfoDefaults[NUM_CAM_DEV_PROPS]; extern PROPSPEC gPropSpecDefaults[NUM_CAM_ITEM_PROPS]; extern LONG gPropVarDefaults[]; extern WIA_PROPERTY_INFO gWiaPropInfoDefaults[NUM_CAM_ITEM_PROPS]; extern WIA_DEV_CAP_DRV gCapabilities[NUM_CAP_ENTRIES]; extern UINT gCapabilityIDS[NUM_CAP_ENTRIES]; extern WCHAR *gDefaultStrings[NUM_CAP_ENTRIES]; #endif