June 14, 2016
On Monday, 13 June 2016 at 19:26:08 UTC, Incognito wrote:
> On Monday, 13 June 2016 at 19:11:59 UTC, John wrote:
>> On Monday, 13 June 2016 at 17:38:41 UTC, Incognito wrote:
>>> Cool. Oleview gives me the idl files. How to convert the idl files to d or possibly c?
>>>
>>> Would I just use them in place of IUnknown once I have the interface?
>>
>> In OleView you can save the IDL file, then run another tool, midl.exe, on the IDL file. That will generate the C headers. But you'd then have to translate that to D by hand.
>>
>> I have written a tool that takes a COM type library and automatically converts it to a D source file. I could finish it off over the next few days and put the source on GitHub if you're interested.
>
> That would be great! With it I might be able to put a nice wrapper around Photoshop for use with D. Others mind find it useful too as other programs still use COM.

It's up: https://github.com/jsatellite/tlb2d/tree/master/src/tlb2d

There's probably a few bugs, and type libraries have a tendency to re-define existing types so you'll have to comment those out. Also it doesn't generate dependencies, but it does list them at the top of the generated module so you can run the tool on those type libraries manually.
June 15, 2016
On Monday, 13 June 2016 at 17:38:41 UTC, Incognito wrote:

> Cool. Oleview gives me the idl files. How to convert the idl files to d or possibly c?

There are ready tools idl2d:
https://github.com/dlang/visuald/tree/master/c2d

and tlb2idl:
https://github.com/dlang/visuald/tree/master/tools

I've used this idl2d and it works pretty well (although not perfect, sometimes manual editing still required).

Example of real-world DirectShow interfaces translated:
https://gist.github.com/thedeemon/46748f91afdbcf339f55da9b355a6b56

> Would I just use them in place of IUnknown once I have the interface?

If you have the interface defined AND you know its IID, you can request it from CoCreateInstance and then use as ordinary D object.

You might want to look at this wrapper that takes most of COM machinery:
https://gist.github.com/thedeemon/3c2989b76004fafe9aa0

Then you just write almost as in C#, something like

  auto pGraph = ComPtr!IGraphBuilder(CLSID_FilterGraph, "pGraph").require;

  ComPtr!ICaptureGraphBuilder2 pBuilder = ComPtr!ICaptureGraphBuilder2(CLSID_CaptureGraphBuilder2).require;
  pBuilder.SetFiltergraph(pGraph);
  ...
  auto CLSID_NullRenderer = Guid!("C1F400A4-3F08-11D3-9F0B-006008039E37"); //qedit.dll
  auto pNullRendr = ComPtr!IBaseFilter(CLSID_NullRenderer, "nulrend");
  pGraph.AddFilter(pNullRendr, "Null Renderer"w.ptr);
  ...
  auto imf = ComPtr!IMediaFilter(pGraph);
  imf.SetSyncSource(null);

All the CreateInstance, QueryInterface, AddRef/Release etc. is taken care of. And even HRESULT return codes are automatically checked.
June 15, 2016
On Tuesday, 14 June 2016 at 11:55:44 UTC, John wrote:
> On Monday, 13 June 2016 at 19:26:08 UTC, Incognito wrote:
>> On Monday, 13 June 2016 at 19:11:59 UTC, John wrote:
>>> On Monday, 13 June 2016 at 17:38:41 UTC, Incognito wrote:
>>>> Cool. Oleview gives me the idl files. How to convert the idl files to d or possibly c?
>>>>
>>>> Would I just use them in place of IUnknown once I have the interface?
>>>
>>> In OleView you can save the IDL file, then run another tool, midl.exe, on the IDL file. That will generate the C headers. But you'd then have to translate that to D by hand.
>>>
>>> I have written a tool that takes a COM type library and automatically converts it to a D source file. I could finish it off over the next few days and put the source on GitHub if you're interested.
>>
>> That would be great! With it I might be able to put a nice wrapper around Photoshop for use with D. Others mind find it useful too as other programs still use COM.
>
> It's up: https://github.com/jsatellite/tlb2d/tree/master/src/tlb2d
>
> There's probably a few bugs, and type libraries have a tendency to re-define existing types so you'll have to comment those out. Also it doesn't generate dependencies, but it does list them at the top of the generated module so you can run the tool on those type libraries manually.


When I try to compile your code I get the following errors:

main.d(953): Error: function core.sys.windows.objbase.CoTaskMemAlloc (uint) is not callable using argument types (immutable(ulong))
main.d(970): Error: can only slice tuple types, not _error_
main.d(974): Error: can only slice tuple types, not _error_

coTaskMemAlloc is defined with ULONG in the objbase.d file... so I have no idea what's going on there.

        immutable bufferSize = (funcDesc.cParams + 1) * (wchar*).sizeof;
        auto names = cast(wchar**)CoTaskMemAlloc(bufferSize);

The other two I also don't know:

params ~= new Parameter(method, (name[0 .. SysStringLen(name)]).toUTF8(),

If I run it in ldc I get the error

Error: forward reference to inferred return type of function call 'getParameters'		

  private static getParameters(MethodImpl method) {
    Parameter dummy;
    return getParameters(method, dummy, false);
  }

It does compile in DMD though.

When running I get the error

 Error loading type library/DLL.

The IDL file is in the same directory










// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: TypeLibrary.tlb

[
  uuid(4B0AB3E1-80F1-11CF-86B4-444553540000),
  version(1.0),
  helpstring("Adobe Photoshop CC 2014 Type Library"),
  custom(DE77BA64-517C-11D1-A2DA-0000F8773CE9, 134218331),
  custom(DE77BA63-517C-11D1-A2DA-0000F8773CE9, 1447490689),
  custom(DE77BA65-517C-11D1-A2DA-0000F8773CE9, "Created by MIDL version 8.00.0603 at Sat Nov 14 00:44:48 2015
")

]
library PhotoshopTypeLibrary
{
    // TLib :     // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("stdole2.tlb");

    // Forward declare all types defined in this typelib
    interface IActionReference;
    interface IActionList;
    interface IActionDescriptor;
    interface IActionControl;
    interface IAutoPSDoc;
    interface IAction;
    interface IActions;
    interface IPhotoshopApplication;

    typedef [public]
    __MIDL___MIDL_itf_OLEActions_0000_0000_0001 PSConstants;

    typedef enum {
        phDialogDontDisplay = 0,
        phDialogDisplay = 1,
        phDialogSilent = 2,
        phTypeEnumerated = 0x656e756d,
        phTypeFloat = 0x646f7562,
        phTypeInteger = 0x6c6f6e67,
        phTypeBoolean = 0x626f6f6c,
        phTypeAlias = 0x616c6973,
        phTypeNull = 0x6e756c6c,
        phFormAbsolutePosition = 0x696e6478,
        phFormPropertyID = 0x70726f70,
        phFormRelativePosition = 0x72656c65,
        phTypeType = 0x74797065,
        phTypeChar = 0x54455854,
        phTypePath = 0x50746820,
        phTypeObjectSpecifier = 0x6f626a20,
        phTypeDouble = 0x646f7562,
        phTypeUnitDouble = 0x556e7446,
        phEnumGrayscales = 0x47727973,
        phKeySelection = 0x6673656c,
        phClassAction = 0x4163746e,
        phClassActionSet = 0x41536574,
        phClassAdjustment = 0x41646a73,
        phClassAdjustmentLayer = 0x41646a4c,
        phClassAirbrushTool = 0x4162546c,
        phClassAlphaChannelOptions = 0x4143686c,
        phClassAntiAliasedPICTAcquire = 0x416e7441,
        phClassApplication = 0x63617070,
        phClassArrowhead = 0x63417277,
        phClassAssert = 0x41737274,
        phClassAssumedProfile = 0x41737350,
        phClassBMPFormat = 0x424d5046,
        phClassBackgroundLayer = 0x42636b4c,
        phClassBevelEmboss = 0x6562626c,
        phClassBitmapMode = 0x42746d4d,
        phClassBlendRange = 0x426c6e64,
        phClassBlurTool = 0x426c546c,
        phClassBookColor = 0x426b436c,
        phClassBrightnessContrast = 0x42726743,
        phClassBrush = 0x42727368,
        phClassBurnInTool = 0x4272546c,
        phClassCachePrefs = 0x43636850,
        phClassCMYKColor = 0x434d5943,
        phClassCMYKColorMode = 0x434d594d,
        phClassCMYKSetup = 0x434d5953,
        phClassCalculation = 0x436c636c,
        phClassChannel = 0x43686e6c,
        phClassChannelMatrix = 0x43684d78,
        phClassChannelMixer = 0x43686e4d,
        phClassClippingInfo = 0x436c706f,
        phClassClippingPath = 0x436c7050,
        phClassCloneStampTool = 0x436c546c,
        phClassColor = 0x436c7220,
        phClassColorBalance = 0x436c7242,
        phClassColorCorrection = 0x436c7243,
        phClassColorPickerPrefs = 0x436c726b,
        phClassColorSampler = 0x436c536d,
        phClassColorStop = 0x436c7274,
        phClassCommand = 0x436d6e64,
        phClassCurves = 0x43727673,
        phClassCurvePoint = 0x43725074,
        phClassCustomPalette = 0x4373746c,
        phClassCurvesAdjustment = 0x43727641,
        phClassCustomPhosphors = 0x43737450,
        phClassCustomWhitePoint = 0x43737457,
        phClassDisplayPrefs = 0x44737050,
        phClassDocument = 0x44636d6e,
        phClassDodgeTool = 0x4464546c,
        phClassDropShadow = 0x44725368,
        phClassDuotoneInk = 0x44746e49,
        phClassDuotoneMode = 0x44746e4d,
        phClassEPSGenericFormat = 0x45505347,
        phClassEPSPICTPreview = 0x45505343,
        phClassEPSTIFFPreview = 0x45505354,
        phClassElement = 0x456c6d6e,
        phClassEllipse = 0x456c7073,
        phClassEraserTool = 0x4572546c,
        phClassExport = 0x45787072,
        phClassFileInfo = 0x466c496e,
        phClassFileSavePrefs = 0x466c5376,
        phClassFlashPixFormat = 0x466c7350,
        phClassFontDesignAxes = 0x466e7444,
        phClassFormat = 0x466d7420,
        phClassFrameFX = 0x46724658,
        phClassContour = 0x46785363,
        phClassGeneralPrefs = 0x476e7250,
        phClassGIF89aExport = 0x47463839,
        phClassGIFFormat = 0x47464672,
        phClassGlobalAngle = 0x67626c41,
        phClassGradient = 0x4772646e,
        phClassGradientFill = 0x47726466,
        phClassGradientMap = 0x47644d70,
        phClassGradientTool = 0x4772546c,
        phClassGraySetup = 0x47725374,
        phClassGrayscale = 0x47727363,
        phClassGrayscaleMode = 0x47727973,
        phClassGuide = 0x47642020,
        phClassGuidesPrefs = 0x47645072,
        phClassHalftoneScreen = 0x486c6653,
        phClassHalftoneSpec = 0x486c6670,
        phClassHSBColor = 0x48534243,
        phClassHSBColorMode = 0x4853424d,
        phClassHistoryBrushTool = 0x4842546c,
        phClassHistoryPrefs = 0x43487350,
        phClassHistoryState = 0x48737453,
        phClassHueSatAdjustment = 0x48537441,
        phClassHueSatAdjustmentV2 = 0x48737432,
        phClassHueSaturation = 0x48537472,
        phClassIFFFormat = 0x49464646,
        phClassIllustratorPathsExport = 0x496c7350,
        phClassImagePoint = 0x496d6750,
        phClassImport = 0x496d7072,
        phClassIndexedColorMode = 0x496e6443,
        phClassInkTransfer = 0x496e6b54,
        phClassInnerGlow = 0x4972476c,
        phClassInnerShadow = 0x49725368,
        phClassInterfaceColor = 0x49436c72,
        phClassInvert = 0x496e7672,
        phClassJPEGFormat = 0x4a504547,
        phClassLabColor = 0x4c62436c,
        phClassLabColorMode = 0x4c62434d,
        phClassLayer = 0x4c797220,
        phClassLayerEffects = 0x4c656678,
        phClassLayerFXVisible = 0x6c667876,
        phClassLevels = 0x4c766c73,
        phClassLevelsAdjustment = 0x4c766c41,
        phClassLightSource = 0x4c676853,
        phClassLine = 0x4c6e2020,
        phClassMacPaintFormat = 0x4d63506e,
        phClassMagicEraserTool = 0x4d674572,
        phClassMagicPoint = 0x4d676370,
        phClassMask = 0x4d736b20,
        phClassMenuItem = 0x4d6e2020,
        phClassMode = 0x4d642020,
        phClassMultichannelMode = 0x4d6c7443,
        phClassObsoleteTextLayer = 0x54784c79,
        phClassNull = 0x6e756c6c,
        phClassOffset = 0x4f667374,
        phClassOpacity = 0x4f706163,
        phClassOuterGlow = 0x4f72476c,
        phClassPDFGenericFormat = 0x50444647,
        phClassPICTFileFormat = 0x50494346,
        phClassPICTResourceFormat = 0x50494352,
        phClassPNGFormat = 0x504e4746,
        phClassPageSetup = 0x50675374,
        phClassPaintbrushTool = 0x5062546c,
        phClassPath = 0x50617468,
        phClassPathComponent = 0x5061436d,
        phClassPathPoint = 0x50746870,
        phClassPattern = 0x50747452,
        phClassPatternStampTool = 0x5061546c,
        phClassPencilTool = 0x5063546c,
        phClassPhotoshop20Format = 0x50687432,
        phClassPhotoshop35Format = 0x50687433,
        phClassPhotoshopDCS2Format = 0x50684432,
        phClassPhotoshopDCSFormat = 0x50684431,
        phClassPhotoshopEPSFormat = 0x50687445,
        phClassPhotoshopPDFFormat = 0x50687450,
        phClassPixel = 0x5078656c,
        phClassPixelPaintFormat = 0x50786c50,
        phClassPluginPrefs = 0x506c6750,
        phClassPoint = 0x506e7420,
        phClassPoint16 = 0x506e7431,
        phClassPolygon = 0x506c676e,
        phClassPosterize = 0x50737472,
        phClassPreferences = 0x476e7250,
        phClassProfileSetup = 0x50726653,
        phClassProperty = 0x50727072,
        phClassRange = 0x52616e67,
        phClassRect16 = 0x52637431,
        phClassRGBColor = 0x52474243,
        phClassRGBColorMode = 0x5247424d,
        phClassRGBSetup = 0x52474274,
        phClassRawFormat = 0x52772020,
        phClassRectangle = 0x5263746e,
        phClassSaturationTool = 0x5372546c,
        phClassScitexCTFormat = 0x53637478,
        phClassSelection = 0x6373656c,
        phClassSelectiveColor = 0x536c6343,
        phClassShapingCurve = 0x53687043,
        phClassSharpenTool = 0x5368546c,
        phClassSingleColumn = 0x536e6763,
        phClassSingleRow = 0x536e6772,
        phClassBackgroundEraserTool = 0x5345546c,
        phClassSolidFill = 0x536f4669,
        phClassArtHistoryBrushTool = 0x4142546c,
        phClassSmudgeTool = 0x536d546c,
        phClassSnapshot = 0x536e7053,
        phClassSpotColorChannel = 0x53436368,
        phClassStyle = 0x53747943,
        phClassSubPath = 0x5362706c,
        phClassTIFFFormat = 0x54494646,
        phClassTargaFormat = 0x54726746,
        phClassTextLayer = 0x54784c72,
        phClassTextStyle = 0x54787453,
        phClassTextStyleRange = 0x54787474,
        phClassThreshold = 0x54687273,
        phClassTool = 0x546f6f6c,
        phClassTransferSpec = 0x54726670,
        phClassTransferPoint = 0x44746e50,
        phClassTransparencyPrefs = 0x54726e50,
        phClassTransparencyStop = 0x54726e53,
        phClassUnitsPrefs = 0x556e7450,
        phClassUnspecifiedColor = 0x556e7343,
        phClassVersion = 0x5672736e,
        phClassWebdavPrefs = 0x57646276,
        phClassXYYColor = 0x58595943,
        phClassChromeFX = 0x43684658,
        phClassBackLight = 0x42616b4c,
        phClassFillFlash = 0x46696c46,
        phClassColorCast = 0x436f6c43,
        phEnumAdd = 0x41646420,
        phEnumAmountHigh = 0x616d4869,
        phEnumAmountLow = 0x616d4c6f,
        phEnumAmountMedium = 0x616d4d64,
        phEnumAntiAliasNone = 0x416e6e6f,
        phEnumAntiAliasLow = 0x416e4c6f,
        phEnumAntiAliasMedium = 0x416e4d64,
        phEnumAntiAliasHigh = 0x416e4869,
        phEnumAntiAliasCrisp = 0x416e4372,
        phEnumAntiAliasStrong = 0x416e5374,
        phEnumAntiAliasSmooth = 0x416e536d,
        phEnumAppleRGB = 0x41707052,
        phEnumASCII = 0x41534349,
        phEnumAskWhenOpening = 0x41736b57,
        phEnumBicubic = 0x42636263,
        phEnumBinary = 0x426e7279,
        phEnumMonitorSetup = 0x4d6e7453,
        phEnum16BitsPerPixel = 0x31364274,
        phEnum1BitPerPixel = 0x4f6e4274,
        phEnum2BitsPerPixel = 0x32427473,
        phEnum32BitsPerPixel = 0x33324274,
        phEnum4BitsPerPixel = 0x34427473,
        phEnum5000 = 0x35303030,
        phEnum5500 = 0x35353030,
        phEnum6500 = 0x36353030,
        phEnum72Color = 0x3732436c,
        phEnum72Gray = 0x37324772,
        phEnum7500 = 0x37353030,
        phEnum8BitsPerPixel = 0x45676842,
        phEnum9300 = 0x39333030,
        phEnumA = 0x41202020,
        phEnumAbsColorimetric = 0x41436c72,
        phEnumADSBottoms = 0x41644274,
        phEnumADSCentersH = 0x41644348,
        phEnumADSCentersV = 0x41644356,
        phEnumADSHorizontal = 0x41644872,
        phEnumADSLefts = 0x41644c66,
        phEnumADSRights = 0x41645267,
        phEnumADSTops = 0x41645470,
        phEnumADSVertical = 0x41645672,
        phEnumAboutApp = 0x41624170,
        phEnumAbsolute = 0x4162736c,
        phEnumActualPixels = 0x41637450,
        phEnumAdaptive = 0x41647074,
        phEnumAdjustmentOptions = 0x41646a4f,
        phEnumAirbrushEraser = 0x41726273,
        phEnumAll = 0x416c2020,
        phEnumAmiga = 0x416d6761,
        phEnumAngle = 0x416e676c,
        phEnumAny = 0x416e7920,
        phEnumApplyImage = 0x41706c49,
        phEnumAroundCenter = 0x41726e43,
        phEnumArrange = 0x41726e67,
        phEnumAsk = 0x41736b20,
        phEnumB = 0x42202020,
        phEnumBack = 0x4261636b,
        phEnumBackground = 0x42636b67,
        phEnumBackgroundColor = 0x42636b43,
        phEnumBackward = 0x42636b77,
        phEnumBehind = 0x42686e64,
        phEnumBest = 0x42737420,
        phEnumBetter = 0x44746862,
        phEnumBilinear = 0x426c6e72,
        phEnumBitDepth1 = 0x42443120,
        phEnumBitDepth16 = 0x42443136,
        phEnumBitDepth24 = 0x42443234,
        phEnumBitDepth32 = 0x42443332,
        phEnumBitDepth4 = 0x42443420,
        phEnumBitDepth8 = 0x42443820,
        phEnumBitDepthA1R5G5B5 = 0x31353635,
        phEnumBitDepthR5G6B5 = 0x78353635,
        phEnumBitDepthX4R4G4B4 = 0x78343434,
        phEnumBitDepthA4R4G4B4 = 0x34343434,
        phEnumBitDepthX8R8G8B8 = 0x78383838,
        phEnumBitmap = 0x42746d70,
        phEnumBlack = 0x426c636b,
        phEnumBlackAndWhite = 0x42616e57,
        phEnumBlackBody = 0x426c6342,
        phEnumBlacks = 0x426c6b73,
        phEnumBlockEraser = 0x426c6b20,
        phEnumBlast = 0x426c7374,
        phEnumBlocks = 0x426c6b73,
        phEnumBlue = 0x426c2020,
        phEnumBlues = 0x426c7320,
        phEnumBottom = 0x4274746d,
        phEnumBrushDarkRough = 0x42724452,
        phEnumBrushesAppend = 0x42727341,
        phEnumBrushesDefine = 0x42727344,
        phEnumBrushesDelete = 0x42727366,
        phEnumBrushesLoad = 0x42727364,
        phEnumBrushesNew = 0x4272734e,
        phEnumBrushesOptions = 0x4272734f,
        phEnumBrushesReset = 0x42727352,
        phEnumBrushesSave = 0x42727376,
        phEnumBrushLightRough = 0x4272734c,
        phEnumBrushSimple = 0x4272536d,
        phEnumBrushSize = 0x42727353,
        phEnumBrushSparkle = 0x42725370,
        phEnumBrushWideBlurry = 0x42726257,
        phEnumBrushWideSharp = 0x42727357,
        phEnumBuiltin = 0x426c746e,
        phEnumBurnInH = 0x42726e48,
        phEnumBurnInM = 0x42726e4d,
        phEnumBurnInS = 0x42726e53,
        phEnumButtonMode = 0x42746e4d,
        phEnumCIERGB = 0x43524742,
        phEnumWidePhosphors = 0x57696465,
        phEnumWideGamutRGB = 0x57524742,
        phEnumCMYK = 0x434d594b,
        phEnumCMYK64 = 0x434d5346,
        phEnumCMYKColor = 0x45434d59,
        phEnumCalculations = 0x436c636c,
        phEnumCascade = 0x43736364,
        phEnumCenter = 0x436e7472,
        phEnumCenterGlow = 0x53726343,
        phEnumCenteredFrame = 0x43747246,
        phEnumChannelOptions = 0x43686e4f,
        phEnumChannelsPaletteOptions = 0x43686e50,
        phEnumCheckerboardNone = 0x4368634e,
        phEnumCheckerboardSmall = 0x43686353,
        phEnumCheckerboardMedium = 0x4368634d,
        phEnumCheckerboardLarge = 0x4368634c,
        phEnumClear = 0x436c6172,
        phEnumClearGuides = 0x436c7247,
        phEnumClipboard = 0x436c7062,
        phEnumClippingPath = 0x436c7050,
        phEnumCloseAll = 0x436c7341,
        phEnumCoarseDots = 0x43727344,
        phEnumColor = 0x436c7220,
        phEnumColorBurn = 0x4342726e,
        phEnumColorDodge = 0x43446467,
        phEnumColorMatch = 0x436c4d74,
        phEnumColorNoise = 0x436c4e73,
        phEnumColorimetric = 0x436c726d,
        phEnumComposite = 0x436d7073,
        phEnumConvertToCMYK = 0x436e7643,
        phEnumConvertToGray = 0x436e7647,
        phEnumConvertToLab = 0x436e764c,
        phEnumConvertToRGB = 0x436e7652,
        phEnumCreateDuplicate = 0x43727444,
        phEnumCreateInterpolation = 0x43727449,
        phEnumCross = 0x43727320,
        phEnumCurrentLayer = 0x4372724c,
        phEnumCustom = 0x43737420,
        phEnumCustomPattern = 0x4373746d,
        phEnumCustomStops = 0x43737453,
        phEnumCyan = 0x43796e20,
        phEnumCyans = 0x43796e73,
        phEnumDark = 0x44726b20,
        phEnumDarken = 0x44726b6e,
        phEnumDarkenOnly = 0x44726b4f,
        phEnumDashedLines = 0x4473684c,
        phEnumDesaturate = 0x44737474,
        phEnumDiamond = 0x446d6e64,
        phEnumDifference = 0x4466726e,
        phEnumDiffusion = 0x4466736e,
        phEnumDiffusionDither = 0x44666e44,
        phEnumDisplayCursorsPreferences = 0x44737043,
        phEnumDissolve = 0x44736c76,
        phEnumDistort = 0x44737472,
        phEnumDodgeH = 0x44646748,
        phEnumDodgeM = 0x4464674d,
        phEnumDodgeS = 0x44646753,
        phEnumDots = 0x44747320,
        phEnumDraft = 0x44726674,
        phEnumDuotone = 0x44746e20,
        phEnumEBUITU = 0x45425420,
        phEnumEdgeGlow = 0x53726345,
        phEnumEliminateEvenFields = 0x456c6d45,
        phEnumEliminateOddFields = 0x456c6d4f,
        phEnumEllipse = 0x456c7073,
        phEnumEmboss = 0x456d6273,
        phEnumExact = 0x45786374,
        phEnumExclusion = 0x58636c75,
        phEnumFPXCompressLossyJPEG = 0x46784a50,
        phEnumFPXCompressNone = 0x46784e6f,
        phEnumFaster = 0x44746866,
        phEnumFile = 0x466c6520,
        phEnumFileInfo = 0x466c496e,
        phEnumFillBack = 0x466c4263,
        phEnumFillFore = 0x466c4672,
        phEnumFillInverse = 0x466c496e,
        phEnumFillSame = 0x466c536d,
        phEnumFineDots = 0x466e4474,
        phEnumFirst = 0x46727374,
        phEnumFirstIdle = 0x46724964,
        phEnumFitOnScreen = 0x46744f6e,
        phEnumForegroundColor = 0x46726743,
        phEnumForward = 0x46727772,
        phEnumFreeTransform = 0x46725472,
        phEnumFront = 0x46726e74,
        phEnumFullDocument = 0x466c6c44,
        phEnumFullSize = 0x466c537a,
        phEnumGaussianDistribution = 0x47736e20,
        phEnumGIFColorFileColorTable = 0x47464354,
        phEnumGIFColorFileColors = 0x47464346,
        phEnumGIFColorFileMicrosoftPalette = 0x47464d53,
        phEnumGIFPaletteAdaptive = 0x47465041,
        phEnumGIFPaletteExact = 0x47465045,
        phEnumGIFPaletteOther = 0x4746504f,
        phEnumGIFPaletteSystem = 0x47465053,
        phEnumGIFRequiredColorSpaceIndexed = 0x47464349,
        phEnumGIFRequiredColorSpaceRGB = 0x47465247,
        phEnumGIFRowOrderInterlaced = 0x4746494e,
        phEnumGIFRowOrderNormal = 0x47464e49,
        phEnumGeneralPreferences = 0x476e7250,
        phEnumGood = 0x47642020,
        phEnumGradientFill = 0x4772466c,
        phEnumGrainClumped = 0x47726e43,
        phEnumGrainContrasty = 0x4772436e,
        phEnumGrainEnlarged = 0x47726e45,
        phEnumGrainHorizontal = 0x47726e48,
        phEnumGrainRegular = 0x47726e52,
        phEnumGrainSoft = 0x47725366,
        phEnumGrainSpeckle = 0x47725370,
        phEnumGrainSprinkles = 0x47725372,
        phEnumGrainStippled = 0x47725374,
        phEnumGrainVertical = 0x47726e56,
        phEnumGrainyDots = 0x47726e44,
        phEnumGraphics = 0x47727020,
        phEnumGray = 0x47727920,
        phEnumGray16 = 0x47727958,
        phEnumGray18 = 0x47723138,
        phEnumGray22 = 0x47723232,
        phEnumGray50 = 0x47723530,
        phEnumGrayScale = 0x47727963,
        phEnumGreen = 0x47726e20,
        phEnumGreens = 0x47726e73,
        phEnumGuidesGridPreferences = 0x47756447,
        phEnumHDTV = 0x48445456,
        phEnumHSBColor = 0x4853426c,
        phEnumHSLColor = 0x48534c43,
        phEnumHalftoneFile = 0x486c6646,
        phEnumHalftoneScreen = 0x486c6653,
        phEnumHardLight = 0x4872644c,
        phEnumHeavy = 0x48767920,
        phEnumHideAll = 0x4864416c,
        phEnumHideSelection = 0x4864536c,
        phEnumHigh = 0x48696768,
        phEnumHighQuality = 0x48676820,
        phEnumHighlights = 0x4867686c,
        phEnumHistogram = 0x48737467,
        phEnumHistory = 0x48737479,
        phEnumHistoryPaletteOptions = 0x4873744f,
        phEnumHistoryPreferences = 0x48737450,
        phEnumHorizontal = 0x48727a6e,
        phEnumHorizontalOnly = 0x48727a4f,
        phEnumHue = 0x48202020,
        phEnumIBMPC = 0x49424d50,
        phEnumICC = 0x49434320,
        phEnumIcon = 0x49636e20,
        phEnumIdleVM = 0x4964564d,
        phEnumIgnore = 0x49676e72,
        phEnumImage = 0x496d6720,
        phEnumImageCachePreferences = 0x496d6750,
        phEnumIndexedColor = 0x496e646c,
        phEnumInfoPaletteOptions = 0x496e6650,
        phEnumInfoPaletteToggleSamplers = 0x496e6654,
        phEnumInnerBevel = 0x496e7242,
        phEnumInsetFrame = 0x496e7346,
        phEnumInside = 0x496e7364,
        phEnumJPEG = 0x4a504547,
        phEnumJustifyAll = 0x4a737441,
        phEnumJustifyFull = 0x4a737446,
        phEnumKeepProfile = 0x4b50726f,
        phEnumKeyboardPreferences = 0x4b796250,
        phEnumLab = 0x4c616220,
        phEnumLab48 = 0x4c624346,
        phEnumLabColor = 0x4c62436c,
        phEnumLarge = 0x4c726720,
        phEnumLast = 0x4c737420,
        phEnumLastFilter = 0x4c737446,
        phEnumLayerOptions = 0x4c79724f,
        phEnumLayersPaletteOptions = 0x4c797250,
        phEnumLeft = 0x4c656674,
        phEnumLeft_PLUGIN = 0x4c667420,
        phEnumLevelBased = 0x4c766c42,
        phEnumLight = 0x4c677420,
        phEnumLightBlue = 0x4c677442,
        phEnumLightDirBottom = 0x4c444274,
        phEnumLightDirBottomLeft = 0x4c44424c,
        phEnumLightDirBottomRight = 0x4c444252,
        phEnumLightDirLeft = 0x4c444c66,
        phEnumLightDirRight = 0x4c445267,
        phEnumLightDirTop = 0x4c445470,
        phEnumLightDirTopLeft = 0x4c44544c,
        phEnumLightDirTopRight = 0x4c445452,
        phEnumLightGray = 0x4c677447,
        phEnumLightDirectional = 0x4c676844,
        phEnumLightenOnly = 0x4c67684f,
        phEnumLightOmni = 0x4c67684f,
        phEnumLightPosBottom = 0x4c504274,
        phEnumLightPosBottomLeft = 0x4c50424c,
        phEnumLightPosBottomRight = 0x4c504272,
        phEnumLightPosLeft = 0x4c504c66,
        phEnumLightPosRight = 0x4c505267,
        phEnumLightPosTop = 0x4c505470,
        phEnumLightPosTopLeft = 0x4c50544c,
        phEnumLightPosTopRight = 0x4c505452,
        phEnumLightRed = 0x4c677452,
        phEnumLightSpot = 0x4c676853,
        phEnumLighten = 0x4c67686e,
        phEnumLightness = 0x4c676874,
        phEnumLine = 0x4c6e2020,
        phEnumLines = 0x4c6e7320,
        phEnumLinear = 0x4c6e7220,
        phEnumLinked = 0x4c6e6b64,
        phEnumLongLines = 0x4c6e674c,
        phEnumLongStrokes = 0x4c6e6753,
        phEnumLow = 0x4c6f7720,
        phEnumLower = 0x4c777220,
        phEnumLowQuality = 0x4c772020,
        phEnumLuminosity = 0x4c6d6e73,
        phEnumMaya = 0x4d617961,
        phEnumMacThumbnail = 0x4d635468,
        phEnumMacintosh = 0x4d636e74,
        phEnumMacintoshSystem = 0x4d636e53,
        phEnumMagenta = 0x4d676e74,
        phEnumMagentas = 0x4d676e74,
        phEnumMask = 0x4d736b20,
        phEnumMaskedAreas = 0x4d736b41,
        phEnumMasterAdaptive = 0x4d416470,
        phEnumMasterPerceptual = 0x4d506572,
        phEnumMasterSelective = 0x4d53656c,
        phEnumMaximum = 0x4d786d6d,
        phEnumMaximumQuality = 0x4d786d20,
        phEnumMedium = 0x4d64696d,
        phEnumMediumBlue = 0x4d646d42,
        phEnumMediumQuality = 0x4d646d20,
        phEnumMediumDots = 0x4d646d44,
        phEnumMediumLines = 0x4d646d4c,
        phEnumMediumStrokes = 0x4d646d53,
        phEnumMemoryPreferences = 0x4d6d7250,
        phEnumMergeChannels = 0x4d726743,
        phEnumMerged = 0x4d726764,
        phEnumMergedLayers = 0x4d72674c,
        phEnumMiddle = 0x4d64646c,
        phEnumMidtones = 0x4d64746e,
        phEnumModeGray = 0x4d644772,
        phEnumModeRGB = 0x4d645247,
        phEnumMonitor = 0x4d6f6e69,
        phEnumMonotone = 0x4d6e746e,
        phEnumMulti72Color = 0x3732434d,
        phEnumMulti72Gray = 0x3732474d,
        phEnumMultichannel = 0x4d6c7468,
        phEnumMultiNoCompositePS = 0x4e436d4d,
        phEnumMultiply = 0x4d6c7470,
        phEnumNavigatorPaletteOptions = 0x4e766750,
        phEnumNearestNeighbor = 0x4e727374,
        phEnumNetscapeGray = 0x4e734772,
        phEnumNeutrals = 0x4e74726c,
        phEnumNewView = 0x4e775677,
        phEnumNext = 0x4e787420,
        phEnumNikon = 0x4e6b6e20,
        phEnumNikon105 = 0x4e6b6e31,
        phEnumNo = 0x4e202020,
        phEnumNoCompositePS = 0x4e436d70,
        phEnumNone = 0x4e6f6e65,
        phEnumNormal = 0x4e726d6c,
        phEnumNormalPath = 0x4e726d50,
        phEnumNTSC = 0x4e545343,
        phEnumNull = 0x6e756c6c,
        phEnumOS2 = 0x4f533220,
        phEnumOff = 0x4f666620,
        phEnumOn = 0x4f6e2020,
        phEnumOpenAs = 0x4f704173,
        phEnumOrange = 0x4f726e67,
        phEnumOutFromCenter = 0x4f744672,
        phEnumOutOfGamut = 0x4f744f66,
        phEnumOuterBevel = 0x4f747242,
        phEnumOutside = 0x4f747364,
        phEnumOutsetFrame = 0x4f757446,
        phEnumOverlay = 0x4f76726c,
        phEnumPaintbrushEraser = 0x506e7462,
        phEnumPencilEraser = 0x506e636c,
        phEnumP22EBU = 0x50323242,
        phEnumPNGFilterAdaptive = 0x50474164,
        phEnumPNGFilterAverage = 0x50474176,
        phEnumPNGFilterNone = 0x50474e6f,
        phEnumPNGFilterPaeth = 0x50475074,
        phEnumPNGFilterSub = 0x50475362,
        phEnumPNGFilterUp = 0x50475570,
        phEnumPNGInterlaceAdam7 = 0x50474941,
        phEnumPNGInterlaceNone = 0x5047494e,
        phEnumPagePosCentered = 0x50675043,
        phEnumPagePosTopLeft = 0x5067544c,
        phEnumPageSetup = 0x50675374,
        phEnumPalSecam = 0x506c5363,
        phEnumPanaVision = 0x506e5673,
        phEnumPathsPaletteOptions = 0x50746850,
        phEnumPattern = 0x5074726e,
        phEnumPatternDither = 0x50746e44,
        phEnumPerceptual = 0x50657263,
        phEnumPerspective = 0x50727370,
        phEnumPhotoshopPicker = 0x5068746b,
        phEnumPickCMYK = 0x50636b43,
        phEnumPickGray = 0x50636b47,
        phEnumPickHSB = 0x50636b48,
        phEnumPickLab = 0x50636b4c,
        phEnumPickOptions = 0x50636b4f,
        phEnumPickRGB = 0x50636b52,
        phEnumPillowEmboss = 0x506c4562,
        phEnumPixelPaintSize1 = 0x50785331,
        phEnumPixelPaintSize2 = 0x50785332,
        phEnumPixelPaintSize3 = 0x50785333,
        phEnumPixelPaintSize4 = 0x50785334,
        phEnumPlace = 0x506c6365,
        phEnumPlaybackOptions = 0x50626b4f,
        phEnumPluginPicker = 0x506c6750,
        phEnumPluginsScratchDiskPreferences = 0x506c6753,
        phEnumPolarToRect = 0x506c7252,
        phEnumPondRipples = 0x506e6452,
        phEnumPrecise = 0x50726320,
        phEnumPreciseMatte = 0x5072424c,
        phEnumPreviewOff = 0x5072764f,
        phEnumPreviewCMYK = 0x50727643,
        phEnumPreviewCyan = 0x50727679,
        phEnumPreviewMagenta = 0x5072764d,
        phEnumPreviewYellow = 0x50727659,
        phEnumPreviewBlack = 0x50727642,
        phEnumPreviewCMY = 0x5072764e,
        phEnumPrevious = 0x50727673,
        phEnumPrimaries = 0x5072696d,
        phEnumPrintSize = 0x50726e53,
        phEnumPrintingInksSetup = 0x50726e49,
        phEnumPurple = 0x50727020,
        phEnumPyramids = 0x5079726d,
        phEnumQCSAverage = 0x51637361,
        phEnumQCSCorner0 = 0x51637330,
        phEnumQCSCorner1 = 0x51637331,
        phEnumQCSCorner2 = 0x51637332,
        phEnumQCSCorner3 = 0x51637333,
        phEnumQCSIndependent = 0x51637369,
        phEnumQCSSide0 = 0x51637334,
        phEnumQCSSide1 = 0x51637335,
        phEnumQCSSide2 = 0x51637336,
        phEnumQCSSide3 = 0x51637337,
        phEnumQuadtone = 0x5164746e,
        phEnumQueryAlways = 0x51757241,
        phEnumQueryAsk = 0x5175726c,
        phEnumQueryNever = 0x5175724e,
        phEnumRepeat = 0x52707420,
        phEnumRGB = 0x52474220,
        phEnumRGB48 = 0x52474246,
        phEnumRGBColor = 0x52474243,
        phEnumRadial = 0x52646c20,
        phEnumRandom = 0x526e646d,
        phEnumRectToPolar = 0x52637450,
        phEnumRed = 0x52642020,
        phEnumRedrawComplete = 0x5264436d,
        phEnumReds = 0x52647320,
        phEnumReflected = 0x52666c63,
        phEnumRelative = 0x526c7476,
        phEnumRepeatEdgePixels = 0x52707445,
        phEnumRevealAll = 0x52766c41,
        phEnumRevealSelection = 0x52766c53,
        phEnumRevert = 0x52767274,
        phEnumRight = 0x52676874,
        phEnumRotate = 0x52747465,
        phEnumRotoscopingPreferences = 0x52747350,
        phEnumRound = 0x526e6420,
        phEnumRulerCm = 0x5272436d,
        phEnumRulerInches = 0x5272496e,
        phEnumRulerPercent = 0x52725072,
        phEnumRulerPicas = 0x52725069,
        phEnumRulerPixels = 0x52725078,
        phEnumRulerPoints = 0x52725074,
        phEnumAdobeRGB1998 = 0x534d5054,
        phEnumSMPTEC = 0x534d5043,
        phEnumSRGB = 0x53524742,
        phEnumSample3x3 = 0x536d7033,
        phEnumSample5x5 = 0x536d7035,
        phEnumSamplePoint = 0x536d7050,
        phEnumSaturate = 0x53747220,
        phEnumSaturation = 0x53747274,
        phEnumSaved = 0x53766564,
        phEnumSaveForWeb = 0x53766677,
        phEnumSavingFilesPreferences = 0x53766e46,
        phEnumScale = 0x53636c20,
        phEnumScreen = 0x5363726e,
        phEnumScreenCircle = 0x53637243,
        phEnumScreenDot = 0x53637244,
        phEnumScreenLine = 0x5363724c,
        phEnumSelectedAreas = 0x536c6341,
        phEnumSelection = 0x536c6374,
        phEnumSelective = 0x53656c65,
        phEnumSeparationSetup = 0x53707253,
        phEnumSeparationTables = 0x53707254,
        phEnumShadows = 0x53686477,
        phEnumContourLinear = 0x73703031,
        phEnumContourGaussian = 0x73703032,
        phEnumContourSingle = 0x73703033,
        phEnumContourDouble = 0x73703034,
        phEnumContourTriple = 0x73703035,
        phEnumContourCustom = 0x73703036,
        phEnumShortLines = 0x5368724c,
        phEnumShortStrokes = 0x53685374,
        phEnumSingle72Color = 0x37324353,
        phEnumSingle72Gray = 0x37324753,
        phEnumSingleNoCompositePS = 0x4e436d53,
        phEnumSkew = 0x536b6577,
        phEnumSlopeLimitMatte = 0x536c6d74,
        phEnumSmall = 0x536d6c20,
        phEnumSmartBlurModeEdgeOnly = 0x53424d45,
        phEnumSmartBlurModeNormal = 0x53424d4e,
        phEnumSmartBlurModeOverlayEdge = 0x53424d4f,
        phEnumSmartBlurQualityHigh = 0x53425148,
        phEnumSmartBlurQualityLow = 0x5342514c,
        phEnumSmartBlurQualityMedium = 0x5342514d,
        phEnumSnapshot = 0x536e7073,
        phEnumSolidColor = 0x53436c72,
        phEnumSoftLight = 0x5366744c,
        phEnumSoftMatte = 0x5366424c,
        phEnumSpectrum = 0x53706374,
        phEnumSpin = 0x53706e20,
        phEnumSpotColor = 0x53706f74,
        phEnumSquare = 0x53717220,
        phEnumStagger = 0x53746772,
        phEnumStampIn = 0x496e2020,
        phEnumStampOut = 0x4f757420,
        phEnumStandard = 0x53746420,
        phEnumStdA = 0x53746441,
        phEnumStdB = 0x53746442,
        phEnumStdC = 0x53746443,
        phEnumStdE = 0x53746445,
        phEnumStretchToFit = 0x53747246,
        phEnumStrokeDirHorizontal = 0x5344487a,
        phEnumStrokeDirLeftDiag = 0x53444c44,
        phEnumStrokeDirRightDiag = 0x53445244,
        phEnumStrokeDirVertical = 0x53445674,
        phEnumStylesAppend = 0x536c7341,
        phEnumStylesDelete = 0x536c7366,
        phEnumStylesLoad = 0x536c7364,
        phEnumStylesNew = 0x536c734e,
        phEnumStylesReset = 0x536c7352,
        phEnumStylesSave = 0x536c7376,
        phEnumSubtract = 0x53627472,
        phEnumSwatchesAppend = 0x53777441,
        phEnumSwatchesReplace = 0x53777470,
        phEnumSwatchesReset = 0x53777452,
        phEnumSwatchesSave = 0x53777453,
        phEnumSystemPicker = 0x53797350,
        phEnumTables = 0x54626c20,
        phEnumTarget = 0x54726774,
        phEnumTargetPath = 0x54726770,
        phEnumTexTypeBlocks = 0x5478426c,
        phEnumTexTypeBrick = 0x54784272,
        phEnumTexTypeBurlap = 0x54784275,
        phEnumTexTypeCanvas = 0x54784361,
        phEnumTexTypeFrosted = 0x54784672,
        phEnumTexTypeSandstone = 0x54785374,
        phEnumTexTypeTinyLens = 0x5478544c,
        phEnumThreshold = 0x54687268,
        phEnumThumbnail = 0x54686d62,
        phEnumTIFF = 0x54494646,
        phEnumTile = 0x54696c65,
        phEnumTile_PLUGIN = 0x546c2020,
        phEnumToggleActionsPalette = 0x54676c41,
        phEnumToggleBlackPreview = 0x54674250,
        phEnumToggleBrushesPalette = 0x54676c42,
        phEnumToggleCMYKPreview = 0x54676c43,
        phEnumToggleCMYPreview = 0x5467434d,
        phEnumToggleChannelsPalette = 0x54676c68,
        phEnumToggleColorPalette = 0x54676c63,
        phEnumToggleCyanPreview = 0x54674350,
        phEnumToggleEdges = 0x54676c45,
        phEnumToggleGamutWarning = 0x54676c47,
        phEnumToggleGrid = 0x54674772,
        phEnumToggleGuides = 0x54676c64,
        phEnumToggleHistoryPalette = 0x54676c48,
        phEnumToggleInfoPalette = 0x54676c49,
        phEnumToggleLayerMask = 0x54676c4d,
        phEnumToggleLayersPalette = 0x54676c79,
        phEnumToggleLockGuides = 0x54676c4c,
        phEnumToggleMagentaPreview = 0x54674d50,
        phEnumToggleNavigatorPalette = 0x54676c4e,
        phEnumToggleOptionsPalette = 0x54676c4f,
        phEnumTogglePaths = 0x54676c50,
        phEnumTogglePathsPalette = 0x54676c74,
        phEnumToggleRGBMacPreview = 0x54724d70,
        phEnumToggleRGBWindowsPreview = 0x54725770,
        phEnumToggleRGBUncompensatedPreview = 0x54725570,
        phEnumToggleRulers = 0x54676c52,
        phEnumToggleSnapToGrid = 0x5467536e,
        phEnumToggleSnapToGuides = 0x54676c53,
        phEnumToggleStatusBar = 0x54676c73,
        phEnumToggleStylesPalette = 0x5467536c,
        phEnumToggleSwatchesPalette = 0x54676c77,
        phEnumToggleToolsPalette = 0x54676c54,
        phEnumToggleYellowPreview = 0x54675950,
        phEnumTop = 0x546f7020,
        phEnumTransparency = 0x54727370,
        phEnumTransparencyGamutPreferences = 0x54726e47,
        phEnumTransparent = 0x54726e73,
        phEnumTrinitron = 0x54726e74,
        phEnumTritone = 0x5472746e,
        phEnumUIBitmap = 0x5542746d,
        phEnumUICMYK = 0x55434d59,
        phEnumUIDuotone = 0x5544746e,
        phEnumUIGrayscale = 0x55477279,
        phEnumUIIndexed = 0x55496e64,
        phEnumUILab = 0x554c6162,
        phEnumUIMultichannel = 0x554d6c74,
        phEnumUIRGB = 0x55524742,
        phEnumUndo = 0x556e6420,
        phEnumUniform = 0x556e666d,
        phEnumUniformDistribution = 0x556e6672,
        phEnumUnitsRulersPreferences = 0x556e7452,
        phEnumUpper = 0x55707220,
        phEnumUserStop = 0x55737253,
        phEnumVMPreferences = 0x564d5072,
        phEnumVertical = 0x56727463,
        phEnumVerticalOnly = 0x5672744f,
        phEnumViolet = 0x566c7420,
        phEnumWaveSine = 0x5776536e,
        phEnumWaveSquare = 0x57765371,
        phEnumWaveTriangle = 0x57765472,
        phEnumWeb = 0x57656220,
        phEnumWhite = 0x57687420,
        phEnumWhites = 0x57687473,
        phEnumWinThumbnail = 0x576e5468,
        phEnumWind = 0x576e6420,
        phEnumWindows = 0x57696e20,
        phEnumWindowsSystem = 0x576e6453,
        phEnumWrap = 0x57727020,
        phEnumWrapAround = 0x57727041,
        phEnumWorkPath = 0x57726b50,
        phEnumYellow = 0x596c6c77,
        phEnumYellowColor = 0x596c7720,
        phEnumYellows = 0x596c7773,
        phEnumYes = 0x59732020,
        phEnumZip = 0x5a70456e,
        phEnumZoom = 0x5a6d2020,
        phEnumZoomIn = 0x5a6d496e,
        phEnumZoomOut = 0x5a6d4f74,
        phEvent3DTransform = 0x54645420,
        phEventApplyStyle = 0x41537479,
        phEventAssert = 0x41737274,
        phEventAccentedEdges = 0x41636345,
        phEventAdd = 0x41646420,
        phEventAddNoise = 0x41644e73,
        phEventAddTo = 0x41646454,
        phEventAlign = 0x416c676e,
        phEventAll = 0x416c6c20,
        phEventAngledStrokes = 0x416e6753,
        phEventApplyImage = 0x41707049,
        phEventBasRelief = 0x4273526c,
        phEventBatch = 0x42746368,
        phEventBatchFromDroplet = 0x42746346,
        phEventBlur = 0x426c7220,
        phEventBlurMore = 0x426c724d,
        phEventBorder = 0x42726472,
        phEventBrightness = 0x42726743,
        phEventCanvasSize = 0x436e7653,
        phEventChalkCharcoal = 0x43686c43,
        phEventChannelMixer = 0x43686e4d,
        phEventCharcoal = 0x43687263,
        phEventChrome = 0x4368726d,
        phEventClear = 0x436c6572,
        phEventClose = 0x436c7320,
        phEventClouds = 0x436c6473,
        phEventColorBalance = 0x436c7242,
        phEventColorHalftone = 0x436c7248,
        phEventColorRange = 0x436c7252,
        phEventColoredPencil = 0x436c7250,
        phEventConteCrayon = 0x436e7443,
        phEventContract = 0x436e7463,
        phEventConvertMode = 0x436e764d,
        phEventCopy = 0x636f7079,
        phEventCopyEffects = 0x43704658,
        phEventCopyMerged = 0x4370794d,
        phEventCopyToLayer = 0x4370544c,
        phEventCraquelure = 0x4372716c,
        phEventCreateDroplet = 0x43727444,
        phEventCrop = 0x43726f70,
        phEventCrosshatch = 0x43727368,
        phEventCrystallize = 0x43727374,
        phEventCurves = 0x43727673,
        phEventCustom = 0x4373746d,
        phEventCut = 0x63757420,
        phEventCutToLayer = 0x4374544c,
        phEventCutout = 0x43742020,
        phEventDarkStrokes = 0x44726b53,
        phEventDeInterlace = 0x446e7472,
        phEventDefinePattern = 0x44666e50,
        phEventDefringe = 0x44667267,
        phEventDelete = 0x446c7420,
        phEventDesaturate = 0x44737474,
        phEventDeselect = 0x44736c63,
        phEventDespeckle = 0x44737063,
        phEventDifferenceClouds = 0x44667243,
        phEventDiffuse = 0x44667320,
        phEventDiffuseGlow = 0x44667347,
        phEventDisableLayerFX = 0x646c6678,
        phEventDisplace = 0x4473706c,
        phEventDistribute = 0x44737472,
        phEventDraw = 0x44726177,
        phEventDryBrush = 0x44727942,
        phEventDuplicate = 0x44706c63,
        phEventDustAndScratches = 0x44737453,
        phEventEmboss = 0x456d6273,
        phEventEqualize = 0x45716c7a,
        phEventExchange = 0x45786368,
        phEventExpand = 0x4578706e,
        phEventExport = 0x45787072,
        phEventJumpto = 0x4a70746f,
        phEventExtrude = 0x45787472,
        phEventFacet = 0x46637420,
        phEventFade = 0x46616465,
        phEventFeather = 0x46746872,
        phEventFill = 0x466c2020,
        phEventFilmGrain = 0x466c6d47,
        phEventFilter = 0x466c7472,
        phEventFindEdges = 0x466e6445,
        phEventFlattenImage = 0x466c7449,
        phEventFlip = 0x466c6970,
        phEventFragment = 0x4672676d,
        phEventFresco = 0x46727363,
        phEventGaussianBlur = 0x47736e42,
        phEventGet = 0x67657464,
        phEventGlass = 0x476c7320,
        phEventGlowingEdges = 0x476c7745,
        phEventGradient = 0x4772646e,
        phEventGradientMap = 0x47724d70,
        phEventGrain = 0x47726e20,
        phEventGraphicPen = 0x47726150,
        phEventGroup = 0x4772704c,
        phEventGrow = 0x47726f77,
        phEventHalftoneScreen = 0x486c6653,
        phEventHide = 0x48642020,
        phEventHighPass = 0x48676850,
        phEventHSBHSL = 0x48736250,
        phEventHueSaturation = 0x48537472,
        phEventImageSize = 0x496d6753,
        phEventImport = 0x496d7072,
        phEventInkOutlines = 0x496e6b4f,
        phEventIntersect = 0x496e7472,
        phEventIntersectWith = 0x496e7457,
        phEventInverse = 0x496e7673,
        phEventInvert = 0x496e7672,
        phEventLensFlare = 0x4c6e7346,
        phEventLevels = 0x4c766c73,
        phEventLightingEffects = 0x4c676845,
        phEventLink = 0x4c6e6b20,
        phEventMake = 0x4d6b2020,
        phEventMaximum = 0x4d786d20,
        phEventMedian = 0x4d646e20,
        phEventMergeLayers = 0x4d72674c,
        phEventMergeSpotChannel = 0x4d537074,
        phEventMergeVisible = 0x4d726756,
        phEventMezzotint = 0x4d7a746e,
        phEventMinimum = 0x4d6e6d20,
        phEventMosaic = 0x4d736320,
        phEventMosaic_PLUGIN = 0x4d736354,
        phEventMotionBlur = 0x4d746e42,
        phEventMove = 0x6d6f7665,
        phEventNTSCColors = 0x4e545343,
        phEventNeonGlow = 0x4e476c77,
        phEventNext = 0x4e787420,
        phEventNotePaper = 0x4e745072,
        phEventNotify = 0x4e746679,
        phEventNull = 0x6e756c6c,
        phEventOceanRipple = 0x4f636e52,
        phEventOffset = 0x4f667374,
        phEventOpen = 0x4f706e20,
        phEventPaintDaubs = 0x506e7444,
        phEventPaletteKnife = 0x506c744b,
        phEventPaste = 0x70617374,
        phEventPasteEffects = 0x50614658,
        phEventPasteInto = 0x50737449,
        phEventPasteOutside = 0x5073744f,
        phEventPatchwork = 0x50746368,
        phEventPhotocopy = 0x50687463,
        phEventPinch = 0x506e6368,
        phEventPlace = 0x506c6320,
        phEventPlaster = 0x506c7374,
        phEventPlasticWrap = 0x506c7357,
        phEventPlay = 0x506c7920,
        phEventPointillize = 0x506e746c,
        phEventPolar = 0x506c7220,
        phEventPosterEdges = 0x50737445,
        phEventPosterize = 0x50737472,
        phEventPrevious = 0x50727673,
        phEventPrint = 0x50726e74,
        phEventProfileToProfile = 0x50726654,
        phEventPurge = 0x50726765,
        phEventQuit = 0x71756974,
        phEventRadialBlur = 0x52646c42,
        phEventRasterize = 0x52737472,
        phEventRasterizeTypeSheet = 0x52737454,
        phEventRemoveBlackMatte = 0x526d7642,
        phEventRemoveLayerMask = 0x526d764c,
        phEventRemoveWhiteMatte = 0x526d7657,
        phEventRename = 0x526e6d20,
        phEventReplaceColor = 0x52706c43,
        phEventReset = 0x52736574,
        phEventReticulation = 0x5274636c,
        phEventRevert = 0x52767274,
        phEventRipple = 0x52706c65,
        phEventRotate = 0x52747465,
        phEventRoughPastels = 0x52676850,
        phEventSave = 0x73617665,
        phEventSelect = 0x736c6374,
        phEventSelectiveColor = 0x536c6343,
        phEventSet = 0x73657464,
        phEventSharpenEdges = 0x53687245,
        phEventSharpen = 0x53687270,
        phEventSharpenMore = 0x5368724d,
        phEventShear = 0x53687220,
        phEventShow = 0x53687720,
        phEventSimilar = 0x536d6c72,
        phEventSmartBlur = 0x536d7242,
        phEventSmooth = 0x536d7468,
        phEventSmudgeStick = 0x536d6453,
        phEventSolarize = 0x536c727a,
        phEventSpatter = 0x53707420,
        phEventSpherize = 0x53706872,
        phEventSplitChannels = 0x53706c43,
        phEventSponge = 0x53706e67,
        phEventSprayedStrokes = 0x53707253,
        phEventStainedGlass = 0x53746e47,

June 15, 2016
       phEventStamp = 0x53746d70,
        phEventStop = 0x53746f70,
        phEventStroke = 0x5374726b,
        phEventSubtract = 0x53627472,
        phEventSubtractFrom = 0x53627446,
        phEventSumie = 0x536d6965,
        phEventTakeMergedSnapshot = 0x546b4d72,
        phEventTakeSnapshot = 0x546b536e,
        phEventTextureFill = 0x54787446,
        phEventTexturizer = 0x5478747a,
        phEventThreshold = 0x54687273,
        phEventTiles = 0x546c7320,
        phEventTornEdges = 0x54726e45,
        phEventTraceContour = 0x54726343,
        phEventTransform = 0x54726e66,
        phEventTrap = 0x54726170,
        phEventTwirl = 0x5477726c,
        phEventUnderpainting = 0x556e6472,
        phEventUndo = 0x756e646f,
        phEventUngroup = 0x556e6772,
        phEventUnlink = 0x556e6c6b,
        phEventUnsharpMask = 0x556e734d,
        phEventVariations = 0x5672746e,
        phEventWait = 0x57616974,
        phEventWaterPaper = 0x57747250,
        phEventWatercolor = 0x57747263,
        phEventWave = 0x57617665,
        phEventWind = 0x576e6420,
        phEventZigZag = 0x5a675a67,
        phEventBackLight = 0x4261634c,
        phEventFillFlash = 0x46696c45,
        phEventColorCast = 0x436f6c45,
        phFormClass = 0x436c7373,
        phFormEnumerated = 0x456e6d72,
        phFormIdentifier = 0x49646e74,
        phFormIndex = 0x696e6478,
        phFormOffset = 0x72656c65,
        phFormProperty = 0x70726f70,
        phKey3DAntiAlias = 0x416c6973,
        phKeyA = 0x41202020,
        phKeyAdjustment = 0x41646a73,
        phKeyAligned = 0x416c6764,
        phKeyAlignment = 0x416c676e,
        phKeyAllPS = 0x416c6c20,
        phKeyAllExcept = 0x416c6c45,
        phKeyAllToolOptions = 0x416c546c,
        phKeyAlphaChannelOptions = 0x4143686e,
        phKeyAlphaChannels = 0x416c7043,
        phKeyAmbientBrightness = 0x416d6242,
        phKeyAmbientColor = 0x416d6243,
        phKeyAmount = 0x416d6e74,
        phKeyAmplitudeMax = 0x416d4d78,
        phKeyAmplitudeMin = 0x416d4d6e,
        phKeyAnchor = 0x416e6368,
        phKeyAngle = 0x416e676c,
        phKeyAngle1 = 0x416e6731,
        phKeyAngle2 = 0x416e6732,
        phKeyAngle3 = 0x416e6733,
        phKeyAngle4 = 0x416e6734,
        phKeyAntiAlias = 0x416e7441,
        phKeyAppend = 0x41707065,
        phKeyApply = 0x41706c79,
        phKeyArea = 0x41722020,
        phKeyArrowhead = 0x41727277,
        phKeyAs = 0x41732020,
        phKeyAssumedCMYK = 0x41737343,
        phKeyAssumedGray = 0x41737347,
        phKeyAssumedRGB = 0x41737352,
        phKeyAt = 0x41742020,
        phKeyAuto = 0x4175746f,
        phKeyAutoContrast = 0x4175436f,
        phKeyAutoErase = 0x41747273,
        phKeyAutoKern = 0x41744b72,
        phKeyAutoUpdate = 0x41745570,
        phKeyAxis = 0x41786973,
        phKeyB = 0x42202020,
        phKeyBackground = 0x42636b67,
        phKeyBackgroundColor = 0x42636b43,
        phKeyBackgroundLevel = 0x42636b4c,
        phKeyBackward = 0x42776420,
        phKeyBalance = 0x426c6e63,
        phKeyBaselineShift = 0x42736c6e,
        phKeyBeepWhenDone = 0x42705768,
        phKeyBeginRamp = 0x42676e52,
        phKeyBeginSustain = 0x42676e53,
        phKeyBevelDirection = 0x62766c44,
        phKeyBevelEmboss = 0x6562626c,
        phKeyBevelStyle = 0x62766c53,
        phKeyBevelTechnique = 0x62766c54,
        phKeyBigNudgeH = 0x42674e48,
        phKeyBigNudgeV = 0x42674e56,
        phKeyBitDepth = 0x42744470,
        phKeyBlack = 0x426c636b,
        phKeyBlackClip = 0x426c6343,
        phKeyBlackGeneration = 0x426c636e,
        phKeyBlackGenerationCurve = 0x426c6347,
        phKeyBlackIntensity = 0x426c6349,
        phKeyBlackLevel = 0x426c634c,
        phKeyBlackLimit = 0x426c634c,
        phKeyBleed = 0x426c6420,
        phKeyBlendRange = 0x426c6e64,
        phKeyBlue = 0x426c2020,
        phKeyBlueBlackPoint = 0x426c426c,
        phKeyBlueGamma = 0x426c476d,
        phKeyBlueWhitePoint = 0x426c5768,
        phKeyBlueX = 0x426c5820,
        phKeyBlueY = 0x426c5920,
        phKeyBlur = 0x626c7572,
        phKeyBlurMethod = 0x426c724d,
        phKeyBlurQuality = 0x426c7251,
        phKeyBook = 0x426b2020,
        phKeyBorderThickness = 0x42726454,
        phKeyBottom = 0x42746f6d,
        phKeyBrightness = 0x42726768,
        phKeyBrushDetail = 0x42727344,
        phKeyBrushes = 0x42727368,
        phKeyBrushSize = 0x42727353,
        phKeyBrushType = 0x42727354,
        phKeyBumpAmplitude = 0x426d7041,
        phKeyBumpChannel = 0x426d7043,
        phKeyBy = 0x42792020,
        phKeyByline = 0x42796c6e,
        phKeyBylineTitle = 0x42796c54,
        phKeyByteOrder = 0x4279744f,
        phKeyCachePrefs = 0x43636850,
        phKeyChokeMatte = 0x436b6d74,
        phKeyCloneSource = 0x436c6e53,
        phKeyCMYKSetup = 0x434d5953,
        phKeyCalculation = 0x436c636c,
        phKeyCalibrationBars = 0x436c6272,
        phKeyCaption = 0x4370746e,
        phKeyCaptionWriter = 0x43707457,
        phKeyCategory = 0x43746772,
        phKeyCellSize = 0x436c537a,
        phKeyCenter = 0x436e7472,
        phKeyCenterCropMarks = 0x436e7443,
        phKeyChalkArea = 0x43686c41,
        phKeyChannel = 0x43686e6c,
        phKeyChannelMatrix = 0x43684d78,
        phKeyChannelName = 0x43686e4e,
        phKeyChannels = 0x43686e73,
        phKeyChannelsInterleaved = 0x43686e49,
        phKeyCharcoalAmount = 0x4368416d,
        phKeyCharcoalArea = 0x43687241,
        phKeyChromeFX = 0x43684658,
        phKeyCity = 0x43697479,
        phKeyClearAmount = 0x436c7241,
        phKeyClippingPath = 0x436c5074,
        phKeyClippingPathEPS = 0x436c7050,
        phKeyClippingPathFlatness = 0x436c7046,
        phKeyClippingPathIndex = 0x436c7049,
        phKeyClippingPathInfo = 0x436c7067,
        phKeyClosedSubpath = 0x436c7370,
        phKeyColor = 0x436c7220,
        phKeyColorChannels = 0x436c7268,
        phKeyColorCorrection = 0x436c7243,
        phKeyColorIndicates = 0x436c7249,
        phKeyColorManagement = 0x436c4d67,
        phKeyColorPickerPrefs = 0x436c7272,
        phKeyColorTable = 0x436c7254,
        phKeyColorize = 0x436c727a,
        phKeyColors = 0x436c7273,
        phKeyColorsList = 0x436c724c,
        phKeyColorSpace = 0x436c7253,
        phKeyColumnWidth = 0x436c6d57,
        phKeyCommandKey = 0x436d644b,
        phKeyCompensation = 0x436d706e,
        phKeyCompression = 0x436d7072,
        phKeyConcavity = 0x436e6376,
        phKeyCondition = 0x436e6474,
        phKeyConstant = 0x436e7374,
        phKeyConstrain = 0x436e7374,
        phKeyConstrainProportions = 0x436e7350,
        phKeyConstructionFOV = 0x43666f76,
        phKeyContiguous = 0x436e7467,
        phKeyContinue = 0x436e746e,
        phKeyContinuity = 0x436e7479,
        phKeyContrast = 0x436e7472,
        phKeyConvert = 0x436e7672,
        phKeyCopy = 0x43707920,
        phKeyCopyright = 0x43707972,
        phKeyCopyrightNotice = 0x4370724e,
        phKeyCornerCropMarks = 0x43726e43,
        phKeyCount = 0x436e7420,
        phKeyCountryName = 0x436e744e,
        phKeyCrackBrightness = 0x43726342,
        phKeyCrackDepth = 0x43726344,
        phKeyCrackSpacing = 0x43726353,
        phKeyCreateLayersFromLayerFX = 0x626c666c,
        phKeyCredit = 0x43726474,
        phKeyCrossover = 0x43727373,
        phKeyCurrent = 0x43726e74,
        phKeyCurrentHistoryState = 0x43726e48,
        phKeyCurrentLight = 0x43726e4c,
        phKeyCurrentToolOptions = 0x43726e54,
        phKeyCurve = 0x43727620,
        phKeyCurveFile = 0x43727646,
        phKeyCustom = 0x4373746d,
        phKeyCustomForced = 0x43737446,
        phKeyCustomMatte = 0x4373744d,
        phKeyCustomPalette = 0x43737450,
        phKeyCyan = 0x43796e20,
        phKeyDarkIntensity = 0x44726b49,
        phKeyDarkness = 0x44726b6e,
        phKeyDateCreated = 0x44744372,
        phKeyDatum = 0x44742020,
        phKeyDCS = 0x44435320,
        phKeyDefinition = 0x44666e74,
        phKeyDensity = 0x446e7374,
        phKeyDepth = 0x44707468,
        phKeyDestBlackMax = 0x4473746c,
        phKeyDestBlackMin = 0x44737442,
        phKeyDestinationMode = 0x4473744d,
        phKeyDestWhiteMax = 0x44737474,
        phKeyDestWhiteMin = 0x44737457,
        phKeyDetail = 0x44746c20,
        phKeyDiameter = 0x446d7472,
        phKeyDiffusionDither = 0x44666644,
        phKeyDirection = 0x44726374,
        phKeyDirectionBalance = 0x44726342,
        phKeyDisplaceFile = 0x44737046,
        phKeyDisplacementMap = 0x4473704d,
        phKeyDisplayPrefs = 0x44737050,
        phKeyDistance = 0x4473746e,
        phKeyDistortion = 0x44737472,
        phKeyDistribution = 0x44737472,
        phKeyDither = 0x44746872,
        phKeyDitherAmount = 0x44746841,
        phKeyDitherPreserve = 0x44746870,
        phKeyDitherQuality = 0x44746871,
        phKeyDocumentID = 0x446f6349,
        phKeyDotGain = 0x4474476e,
        phKeyDotGainCurves = 0x44744743,
        phKeyDropShadow = 0x44725368,
        phKeyDuplicate = 0x44706c63,
        phKeyDynamicColorSliders = 0x446e6d43,
        phKeyEdge = 0x45646720,
        phKeyEdgeBrightness = 0x45646742,
        phKeyEdgeFidelity = 0x45646746,
        phKeyEdgeIntensity = 0x45646749,
        phKeyEdgeSimplicity = 0x45646753,
        phKeyEdgeThickness = 0x45646754,
        phKeyEdgeWidth = 0x45646757,
        phKeyEffect = 0x45666663,
        phKeyEmbedProfiles = 0x456d6250,
        phKeyEmbedCMYK = 0x456d6243,
        phKeyEmbedGray = 0x456d6247,
        phKeyEmbedLab = 0x456d624c,
        phKeyEmbedRGB = 0x456d6252,
        phKeyEmulsionDown = 0x456d6c44,
        phKeyEnabled = 0x656e6162,
        phKeyEncoding = 0x456e6364,
        phKeyEnd = 0x456e6420,
        phKeyEndArrowhead = 0x456e6441,
        phKeyEndRamp = 0x456e6452,
        phKeyEndSustain = 0x456e6453,
        phKeyEngine = 0x456e676e,
        phKeyEraserKind = 0x4572734b,
        phKeyEraseToHistory = 0x45727354,
        phKeyExactPoints = 0x45786350,
        phKeyExport = 0x45787072,
        phKeyExportClipboard = 0x45787043,
        phKeyExposure = 0x45787073,
        phKeyExtend = 0x45787464,
        phKeyExtension = 0x4578746e,
        phKeyExtensionsQuery = 0x45787451,
        phKeyExtrudeDepth = 0x45787444,
        phKeyExtrudeMaskIncomplete = 0x4578744d,
        phKeyExtrudeRandom = 0x45787452,
        phKeyExtrudeSize = 0x45787453,
        phKeyExtrudeSolidFace = 0x45787446,
        phKeyExtrudeType = 0x45787454,
        phKeyEyeDropperSample = 0x45794472,
        phKeyFadeoutSteps = 0x46647453,
        phKeyFadeTo = 0x46645420,
        phKeyFalloff = 0x466c4f66,
        phKeyFPXCompress = 0x4678436d,
        phKeyFPXQuality = 0x4678516c,
        phKeyFPXSize = 0x4678537a,
        phKeyFPXView = 0x46785677,
        phKeyFeather = 0x46746872,
        phKeyFiberLength = 0x4662724c,
        phKeyFile = 0x46696c65,
        phKeyFileCreator = 0x466c4372,
        phKeyFileInfo = 0x466c496e,
        phKeyFileReference = 0x46696c52,
        phKeyFileSavePrefs = 0x466c5350,
        phKeyFileType = 0x466c5479,
        phKeyFill = 0x466c2020,
        phKeyFillColor = 0x466c436c,
        phKeyFillNeutral = 0x466c4e74,
        phKeyFingerpainting = 0x466e6772,
        phKeyFlareCenter = 0x466c7243,
        phKeyFlatness = 0x466c746e,
        phKeyFlatten = 0x466c7474,
        phKeyFlipVertical = 0x466c7056,
        phKeyFocus = 0x46637320,
        phKeyFolders = 0x466c6472,
        phKeyFontDesignAxes = 0x466e7444,
        phKeyFontDesignAxesVectors = 0x466e7456,
        phKeyFontName = 0x466e744e,
        phKeyFontScript = 0x53637270,
        phKeyFontStyleName = 0x466e7453,
        phKeyFontTechnology = 0x466e7454,
        phKeyForcedColors = 0x46726343,
        phKeyForegroundColor = 0x46726743,
        phKeyForegroundLevel = 0x4672674c,
        phKeyFormat = 0x466d7420,
        phKeyForward = 0x46776420,
        phKeyFrameFX = 0x46724658,
        phKeyFrameWidth = 0x46726d57,
        phKeyFreeTransformCenterState = 0x46546373,
        phKeyFrequency = 0x4672716e,
        phKeyFrom = 0x46726f6d,
        phKeyFromBuiltin = 0x46726d42,
        phKeyFromMode = 0x46726d4d,
        phKeyFunctionKey = 0x466e634b,
        phKeyFuzziness = 0x467a6e73,
        phKeyGamutWarning = 0x476d7457,
        phKeyGCR = 0x47435220,
        phKeyGeneralPrefs = 0x476e7250,
        phKeyGIFColorFileType = 0x47465054,
        phKeyGIFColorLimit = 0x4746434c,
        phKeyGIFExportCaption = 0x47464543,
        phKeyGIFMaskChannelIndex = 0x47464d49,
        phKeyGIFMaskChannelInverted = 0x47464d56,
        phKeyGIFPaletteFile = 0x47465046,
        phKeyGIFPaletteType = 0x4746504c,
        phKeyGIFRequiredColorSpaceType = 0x47464353,
        phKeyGIFRowOrderType = 0x47464954,
        phKeyGIFTransparentColor = 0x47465443,
        phKeyGIFTransparentIndexBlue = 0x47465442,
        phKeyGIFTransparentIndexGreen = 0x47465447,
        phKeyGIFTransparentIndexRed = 0x47465452,
        phKeyGIFUseBestMatch = 0x4746424d,
        phKeyGamma = 0x476d6d20,
        phKeyGlobalAngle = 0x67626c41,
        phKeyGlobalLightingAngle = 0x6761676c,
        phKeyGloss = 0x476c6f73,
        phKeyGlowAmount = 0x476c7741,
        phKeyGlowTechnique = 0x476c7754,
        phKeyGradient = 0x47726164,
        phKeyGradientFill = 0x47726466,
        phKeyGrain = 0x47726e20,
        phKeyGrainType = 0x47726e74,
        phKeyGraininess = 0x47726e73,
        phKeyGray = 0x47727920,
        phKeyGrayBehavior = 0x47724268,
        phKeyGraySetup = 0x47725374,
        phKeyGreen = 0x47726e20,
        phKeyGreenBlackPoint = 0x47726e42,
        phKeyGreenGamma = 0x47726e47,
        phKeyGreenWhitePoint = 0x47726e57,
        phKeyGreenX = 0x47726e58,
        phKeyGreenY = 0x47726e59,
        phKeyGridColor = 0x47726443,
        phKeyGridCustomColor = 0x47726473,
        phKeyGridMajor = 0x4772644d,
        phKeyGridMinor = 0x4772646e,
        phKeyGridStyle = 0x47726453,
        phKeyGridUnits = 0x47726474,
        phKeyGroup = 0x47727570,
        phKeyGroutWidth = 0x47727457,
        phKeyGuides = 0x47646573,
        phKeyGuidesColor = 0x47647343,
        phKeyGuidesCustomColor = 0x47647373,
        phKeyGuidesStyle = 0x47647353,
        phKeyGuidesPrefs = 0x47645072,
        phKeyGutterWidth = 0x47747457,
        phKeyHalftoneFile = 0x486c6646,
        phKeyHalftoneScreen = 0x486c6653,
        phKeyHalftoneSpec = 0x486c6670,
        phKeyHalftoneSize = 0x486c537a,
        phKeyHardness = 0x4872646e,
        phKeyHeader = 0x48647220,
        phKeyHeadline = 0x48646c6e,
        phKeyHeight = 0x48676874,
        phKeyHostName = 0x4873744e,
        phKeyHighlightArea = 0x48676841,
        phKeyHighlightColor = 0x68676c43,
        phKeyHighlightLevels = 0x4867684c,
        phKeyHighlightMode = 0x68676c4d,
        phKeyHighlightOpacity = 0x68676c4f,
        phKeyHighlightStrength = 0x48676853,
        phKeyHistoryBrushSource = 0x48737442,
        phKeyHistoryPrefs = 0x48737450,
        phKeyHistoryStateSource = 0x48735353,
        phKeyHistoryStates = 0x48735374,
        phKeyHorizontal = 0x48727a6e,
        phKeyHorizontalScale = 0x48727a53,
        phKeyHostVersion = 0x48737456,
        phKeyHue = 0x48202020,
        phKeyICCEngine = 0x49434345,
        phKeyICCSetupName = 0x49434374,
        phKeyID = 0x49646e74,
        phKeyIdle = 0x49646c65,
        phKeyImageBalance = 0x496d6742,
        phKeyImport = 0x496d7072,
        phKeyImpressionist = 0x496d7073,
        phKeyIn = 0x496e2020,
        phKeyInherits = 0x6340235e,
        phKeyInkColors = 0x496e6b43,
        phKeyInks = 0x496e6b73,
        phKeyInnerGlow = 0x4972476c,
        phKeyInnerGlowSource = 0x676c7753,
        phKeyInnerShadow = 0x49725368,
        phKeyInput = 0x496e7074,
        phKeyInputMapRange = 0x496e6d72,
        phKeyInputRange = 0x496e7072,
        phKeyIntensity = 0x496e746e,
        phKeyIntent = 0x496e7465,
        phKeyInterfaceBevelHighlight = 0x496e7448,
        phKeyInterfaceBevelShadow = 0x496e7476,
        phKeyInterfaceBlack = 0x496e7442,
        phKeyInterfaceBorder = 0x496e7464,
        phKeyInterfaceButtonDarkShadow = 0x496e746b,
        phKeyInterfaceButtonDownFill = 0x496e7474,
        phKeyInterfaceButtonUpFill = 0x496e4246,
        phKeyInterfaceColorBlue2 = 0x4943424c,
        phKeyInterfaceColorBlue32 = 0x49434248,
        phKeyInterfaceColorGreen2 = 0x4943474c,
        phKeyInterfaceColorGreen32 = 0x49434748,
        phKeyInterfaceColorRed2 = 0x4943524c,
        phKeyInterfaceColorRed32 = 0x49435248,
        phKeyInterfaceIconFillActive = 0x496e7449,
        phKeyInterfaceIconFillDimmed = 0x496e7446,
        phKeyInterfaceIconFillSelected = 0x496e7463,
        phKeyInterfaceIconFrameActive = 0x496e746d,
        phKeyInterfaceIconFrameDimmed = 0x496e7472,
        phKeyInterfaceIconFrameSelected = 0x496e7453,
        phKeyInterfacePaletteFill = 0x496e7450,
        phKeyInterfaceRed = 0x496e7452,
        phKeyInterfaceWhite = 0x496e7457,
        phKeyInterfaceToolTipBackground = 0x496e7454,
        phKeyInterfaceToolTipText = 0x49545454,
        phKeyInterfaceTransparencyForeground = 0x49544667,
        phKeyInterfaceTransparencyBackground = 0x49544267,
        phKeyInterlace = 0x496e7472,
        phKeyInterlaceCreateType = 0x496e7443,
        phKeyInterlaceEliminateType = 0x496e7445,
        phKeyInterpolation = 0x496e7472,
        phKeyInterpolationMethod = 0x496e744d,
        phKeyInvert = 0x496e7672,
        phKeyInvertMask = 0x496e764d,
        phKeyInvertSource2 = 0x496e7653,
        phKeyInvertTexture = 0x496e7654,
        phKeyIsDirty = 0x49734472,
        phKeyItemIndex = 0x49746d49,
        phKeyJPEGQuality = 0x4a504551,
        phKeyKerning = 0x4b726e67,
        phKeyKeywords = 0x4b797764,
        phKeyKind = 0x4b6e6420,
        phKeyLZWCompression = 0x4c5a5743,
        phKeyLabels = 0x4c626c73,
        phKeyLandscape = 0x4c6e6473,
        phKeyLastTransform = 0x4c737454,
        phKeyLayerEffects = 0x4c656678,
        phKeyLayerFXVisible = 0x6c667876,
        phKeyLayer = 0x4c797220,
        phKeyLayerID = 0x4c797249,
        phKeyLayerName = 0x4c79724e,
        phKeyLayers = 0x4c797273,
        phKeyLeading = 0x4c646e67,
        phKeyLeft = 0x4c656674,
        phKeyLength = 0x4c6e6774,
        phKeyLens = 0x4c6e7320,
        phKeyLevel = 0x4c766c20,
        phKeyLevels = 0x4c766c73,
        phKeyLightDark = 0x4c674472,
        phKeyLightDirection = 0x4c676844,
        phKeyLightIntensity = 0x4c676849,
        phKeyLightPosition = 0x4c676850,
        phKeyLightSource = 0x4c676853,
        phKeyLightType = 0x4c676854,
        phKeyLightenGrout = 0x4c676847,
        phKeyLightness = 0x4c676874,
        phKeyLine = 0x4c696e65,
        phKeyLinkedLayerIDs = 0x4c6e6b4c,
        phKeyLocalLightingAngle = 0x6c61676c,
        phKeyLocalLightingAltitude = 0x4c616c64,
        phKeyLocalRange = 0x4c636c52,
        phKeyLocation = 0x4c63746e,
        phKeyLog = 0x4c6f6720,
        phKeyLowerCase = 0x4c774373,
        phKeyLuminance = 0x4c6d6e63,
        phKeyLUTAnimation = 0x4c546e6d,
        phKeyMagenta = 0x4d676e74,
        phKeyMakeVisible = 0x4d6b5673,
        phKeyManipulationFOV = 0x4d666f76,
        phKeyMapBlack = 0x4d70426c,
        phKeyMapping = 0x4d706e67,
        phKeyMappingShape = 0x4d706753,
        phKeyMaterial = 0x4d74726c,
        phKeyMatrix = 0x4d747278,
        phKeyMatteColor = 0x4d747443,
        phKeyMaximum = 0x4d786d20,
        phKeyMaximumStates = 0x4d786d53,
        phKeyMemoryUsagePercent = 0x4d6d7255,
        phKeyMerge = 0x4d726765,
        phKeyMerged = 0x4d726764,
        phKeyMessage = 0x4d736765,
        phKeyMethod = 0x4d746864,
        phKeyMezzotintType = 0x4d7a7454,
        phKeyMidpoint = 0x4d64706e,
        phKeyMidtoneLevels = 0x4d64744c,
        phKeyMinimum = 0x4d6e6d20,
        phKeyMismatchCMYK = 0x4d736d43,
        phKeyMismatchGray = 0x4d736d47,
        phKeyMismatchRGB = 0x4d736d52,
        phKeyMode = 0x4d642020,
        phKeyMonochromatic = 0x4d6e6368,
        phKeyMoveTo = 0x4d765420,
        phKeyName = 0x4e6d2020,
        phKeyNegative = 0x4e677476,
        phKeyNew = 0x4e772020,
        phKeyNoise = 0x4e6f7365,
        phKeyNonImageData = 0x4e6e496d,
        phKeyNonLinear = 0x4e6e4c6e,
        phKeyNull = 0x6e756c6c,
        phKeyNumLights = 0x4e6d2020,
        phKeyNumber = 0x4e6d6272,
        phKeyNumberOfCacheLevels = 0x4e436368,
        phKeyNumberOfChannels = 0x4e6d624f,
        phKeyNumberOfChildren = 0x4e6d6243,
        phKeyNumberOfDocuments = 0x4e6d6244,
        phKeyNumberOfGenerators = 0x4e6d6247,
        phKeyNumberOfLayers = 0x4e6d624c,
        phKeyNumberOfLevels = 0x4e6d624c,
        phKeyNumberOfPaths = 0x4e6d6250,
        phKeyNumberOfRipples = 0x4e6d6252,
        phKeyNumberOfSiblings = 0x4e6d6253,
        phKeyObjectName = 0x4f626a4e,
        phKeyOffset = 0x4f667374,
        phKeyOn = 0x4f6e2020,
        phKeyOpacity = 0x4f706374,
        phKeyOptimized = 0x4f70746d,
        phKeyOrientation = 0x4f726e74,
        phKeyOriginalHeader = 0x4f726748,
        phKeyOriginalTransmissionReference = 0x4f726754,
        phKeyOtherCursors = 0x4f746843,
        phKeyOuterGlow = 0x4f72476c,
        phKeyOutput = 0x4f747074,
        phKeyOverprintColors = 0x4f767243,
        phKeyOverrideOpen = 0x4f76724f,
        phKeyOverridePrinter = 0x4f627250,
        phKeyOverrideSave = 0x4f767264,
        phKeyPaintCursorKind = 0x506e434b,
        phKeyParentIndex = 0x5072496e,
        phKeyParentName = 0x50724e6d,
        phKeyPNGFilter = 0x504e4766,
        phKeyPNGInterlaceType = 0x50474954,
        phKeyPageFormat = 0x504d7066,
        phKeyPageNumber = 0x50674e6d,
        phKeyPageSetup = 0x50675374,
        phKeyPagePosition = 0x50675073,
        phKeyPaintingCursors = 0x506e7443,
        phKeyPaintType = 0x506e7454,
        phKeyPalette = 0x506c7420,
        phKeyPaletteFile = 0x506c7446,
        phKeyPaperBrightness = 0x50707242,
        phKeyPath = 0x50617468,
        phKeyPathContents = 0x50746843,
        phKeyPathName = 0x5074684e,
        phKeyPattern = 0x5074746e,
        phKeyPencilWidth = 0x506e636c,
        phKeyPerspectiveIndex = 0x50727370,
        phKeyPhosphors = 0x50687370,
        phKeyPickerID = 0x50636b49,
        phKeyPickerKind = 0x50636b72,
        phKeyPixelPaintSize = 0x5050537a,
        phKeyPlatform = 0x506c7466,
        phKeyPluginFolder = 0x506c6746,
        phKeyPluginPrefs = 0x506c6750,
        phKeyPoints = 0x50747320,
        phKeyPosition = 0x5073746e,
        phKeyPosterization = 0x50737472,
        phKeyPostScriptColor = 0x50737453,
        phKeyPredefinedColors = 0x50726443,
        phKeyPreferBuiltin = 0x50726642,
        phKeyPreserveAdditional = 0x50727341,
        phKeyPreserveLuminosity = 0x5072734c,
        phKeyPreserveTransparency = 0x50727354,
        phKeyPressure = 0x50727320,
        phKeyPreferences = 0x50726672,
        phKeyPreview = 0x50727677,
        phKeyPreviewCMYK = 0x5072764b,
        phKeyPreviewFullSize = 0x50727646,
        phKeyPreviewIcon = 0x50727649,
        phKeyPreviewMacThumbnail = 0x5072764d,
        phKeyPreviewWinThumbnail = 0x50727657,
        phKeyPreviewsQuery = 0x50727651,
        phKeyPrintSettings = 0x504d7073,
        phKeyProfileSetup = 0x50726653,
        phKeyProvinceState = 0x50727653,
        phKeyQuality = 0x516c7479,
        phKeyExtendedQuality = 0x45516c74,
        phKeyQuickMask = 0x5175634d,
        phKeyRGBSetup = 0x52474253,
        phKeyRadius = 0x52647320,
        phKeyRandomSeed = 0x526e6453,
        phKeyRatio = 0x52742020,
        phKeyRecentFiles = 0x52636e66,
        phKeyRed = 0x52642020,
        phKeyRedBlackPoint = 0x5264426c,
        phKeyRedGamma = 0x5264476d,
        phKeyRedWhitePoint = 0x52645768,
        phKeyRedX = 0x52645820,
        phKeyRedY = 0x52645920,
        phKeyRegistrationMarks = 0x5267734d,
        phKeyRelative = 0x526c7476,
        phKeyRelief = 0x526c6620,
        phKeyRenderFidelity = 0x52666964,
        phKeyResample = 0x52736d70,
        phKeyResizeWindowsOnZoom = 0x52574f5a,
        phKeyResolution = 0x52736c74,
        phKeyResourceID = 0x52737249,
        phKeyResponse = 0x5273706e,
        phKeyRetainHeader = 0x52746e48,
        phKeyReverse = 0x52767273,
        phKeyRight = 0x52676874,
        phKeyRippleMagnitude = 0x52706c4d,
        phKeyRippleSize = 0x52706c53,
        phKeyRotate = 0x52747420,
        phKeyRoundness = 0x526e646e,
        phKeyRulerOriginH = 0x526c7248,
        phKeyRulerOriginV = 0x526c7256,
        phKeyRulerUnits = 0x526c7255,
        phKeySaturation = 0x53747274,
        phKeySaveAndClose = 0x5376416e,
        phKeySaveComposite = 0x5376436d,
        phKeySavePaletteLocations = 0x506c744c,
        phKeySavePaths = 0x53765074,
        phKeySavePyramids = 0x53765079,
        phKeySaving = 0x53766e67,
        phKeyScale = 0x53636c20,
        phKeyScaleHorizontal = 0x53636c48,
        phKeyScaleVertical = 0x53636c56,
        phKeyScaling = 0x53636c6e,
        phKeyScans = 0x53636e73,
        phKeyScratchDisks = 0x53637244,
        phKeyScreenFile = 0x53637246,
        phKeyScreenType = 0x53637254,
        phKeyShadingIntensity = 0x53686449,
        phKeyShadingNoise = 0x5368644e,
        phKeyShadingShape = 0x53686453,
        phKeyContourType = 0x53687043,
        phKeySerialString = 0x53726c53,
        phKeySeparations = 0x53707274,
        phKeyShadowColor = 0x73647743,
        phKeyShadowIntensity = 0x53686449,
        phKeyShadowLevels = 0x5368644c,
        phKeyShadowMode = 0x7364774d,
        phKeyShadowOpacity = 0x7364774f,
        phKeyShape = 0x53687020,
        phKeySharpness = 0x53687270,
        phKeyShearEd = 0x53687245,
        phKeyShearPoints = 0x53687250,
        phKeyShearSt = 0x53687253,
        phKeyShiftKey = 0x5368664b,
        phKeyShiftKeyToolSwitch = 0x53684b54,
        phKeyShortNames = 0x5368724e,
        phKeyShowEnglishFontNames = 0x53687745,
        phKeyShowToolTips = 0x53687754,
        phKeyShowTransparency = 0x53685472,
        phKeySizeKey = 0x537a2020,
        phKeySkew = 0x536b6577,
        phKeySmartBlurMode = 0x536d424d,
        phKeySmartBlurQuality = 0x536d4251,
        phKeySmooth = 0x536d6f6f,
        phKeySmoothness = 0x536d7468,
        phKeySnapshotInitial = 0x536e7049,
        phKeySoftness = 0x5366746e,
        phKeySolidFill = 0x536f4669,
        phKeySource = 0x53726365,
        phKeySource2 = 0x53726332,
        phKeySourceMode = 0x5372634d,
        phKeySpacing = 0x5370636e,
        phKeySpecialInstructions = 0x53706349,
        phKeySpherizeMode = 0x5370684d,
        phKeySpot = 0x53706f74,
        phKeySprayRadius = 0x53707252,
        phKeySquareSize = 0x53717253,
        phKeySrcBlackMax = 0x5372636c,
        phKeySrcBlackMin = 0x53726342,
        phKeySrcWhiteMax = 0x5372636d,
        phKeySrcWhiteMin = 0x53726357,
        phKeyStart = 0x53747274,
        phKeyStartArrowhead = 0x53747241,
        phKeyState = 0x53747465,
        phKeyStrength = 0x73726768,
        phKeyStrengthRatio = 0x73726752,
        phKeyStrength_PLUGIN = 0x53747267,
        phKeyStrokeDetail = 0x53744474,
        phKeyStrokeDirection = 0x53446972,
        phKeyStrokeLength = 0x5374724c,
        phKeyStrokePressure = 0x53747250,
        phKeyStrokeSize = 0x53747253,
        phKeyStrokeWidth = 0x53747257,
        phKeyStyle = 0x5374796c,
        phKeyStyles = 0x53747973,
        phKeyStylusIsPressure = 0x53746c50,
        phKeyStylusIsColor = 0x53746c43,
        phKeyStylusIsOpacity = 0x53746c4f,
        phKeyStylusIsSize = 0x53746c53,
        phKeySubPathList = 0x5362704c,
        phKeySupplementalCategories = 0x53706c43,
        phKeySystemInfo = 0x53737449,
        phKeySystemPalette = 0x53737450,
        phKeyTarget = 0x6e756c6c,
        phKeyTargetPath = 0x54726770,
        phKeyTargetPathIndex = 0x54726750,
        phKeyText = 0x54787420,
        phKeyTextClickPoint = 0x54787443,
        phKeyTextData = 0x54787444,
        phKeyTextStyle = 0x54787453,
        phKeyTextStyleRange = 0x54787474,
        phKeyTexture = 0x54787472,
        phKeyTextureCoverage = 0x54787443,
        phKeyTextureFile = 0x54787446,
        phKeyTextureType = 0x54787454,
        phKeyThreshold = 0x54687368,
        phKeyTileNumber = 0x546c4e6d,
        phKeyTileOffset = 0x546c4f66,
        phKeyTileSize = 0x546c537a,
        phKeyTitle = 0x54746c20,
        phKeyTo = 0x54202020,
        phKeyToBuiltin = 0x54426c20,
        phKeyToLinked = 0x546f4c6b,
        phKeyToMode = 0x544d6420,
        phKeyToggleOthers = 0x54676c4f,
        phKeyTolerance = 0x546c726e,
        phKeyTop = 0x546f7020,
        phKeyTotalLimit = 0x54746c4c,
        phKeyTracking = 0x5472636b,
        phKeyTransferSpec = 0x54726e53,
        phKeyTransparencyGrid = 0x54726e47,
        phKeyTransferFunction = 0x54726e46,
        phKeyTransparency = 0x54726e73,
        phKeyTransparencyGridColors = 0x54726e43,
        phKeyTransparencyGridSize = 0x54726e47,
        phKeyTransparencyPrefs = 0x54726e50,
        phKeyTransparencyShape = 0x54726e53,
        phKeyTransparentIndex = 0x54726e49,
        phKeyTransparentWhites = 0x54726e57,
        phKeyTwist = 0x54777374,
        phKeyType = 0x54797065,
        phKeyUCA = 0x55432020,
        phKeyUnitsPrefs = 0x556e7450,
        phKeyURL = 0x55524c20,
        phKeyUndefinedArea = 0x556e6441,
        phKeyUnderline = 0x556e646c,
        phKeyUntitled = 0x556e746c,
        phKeyUpperY = 0x55707059,
        phKeyUrgency = 0x5572676e,
        phKeyUseAccurateScreens = 0x41637253,
        phKeyUseAdditionalPlugins = 0x4164506c,
        phKeyUseCacheForHistograms = 0x55734363,
        phKeyUseCurves = 0x55734372,
        phKeyUseDefault = 0x55734466,
        phKeyUseGlobalAngle = 0x75676c67,
        phKeyUseICCProfile = 0x55734943,
        phKeyUseMask = 0x55734d73,
        phKeyUserMaskEnabled = 0x5573724d,
        phKeyUserMaskLinked = 0x55737273,
        phKeyUsing = 0x55736e67,
        phKeyValue = 0x566c2020,
        phKeyVector0 = 0x56637430,
        phKeyVector1 = 0x56637431,
        phKeyVectorColor = 0x56637443,
        phKeyVersionFix = 0x56727346,
        phKeyVersionMajor = 0x5672734d,
        phKeyVersionMinor = 0x5672734e,
        phKeyVertical = 0x56727463,
        phKeyVerticalScale = 0x56727453,
        phKeyVideoAlpha = 0x56646c70,
        phKeyVisible = 0x5673626c,
        phKeyWatchSuspension = 0x57746353,
        phKeyWatermark = 0x77617472,
        phKeyWaveType = 0x57767470,
        phKeyWavelengthMax = 0x574c4d78,
        phKeyWavelengthMin = 0x574c4d6e,
        phKeyWebdavPrefs = 0x57626450,
        phKeyWetEdges = 0x57746467,
        phKeyWhat = 0x57686174,
        phKeyWhiteClip = 0x57687443,
        phKeyWhiteIntensity = 0x57687449,
        phKeyWhiteIsHigh = 0x57684869,
        phKeyWhiteLevel = 0x5768744c,
        phKeyWhitePoint = 0x57687450,
        phKeyWholePath = 0x57685074,
        phKeyWidth = 0x57647468,
        phKeyWindMethod = 0x576e644d,
        phKeyWith = 0x57697468,
        phKeyWorkPath = 0x57725074,
        phKeyWorkPathIndex = 0x57726b50,
        phKeyX = 0x58202020,
        phKeyY = 0x59202020,
        phKeyYellow = 0x596c7720,
        phKeyZigZagType = 0x5a5a5479,
        phKeyLighter = 0x4c696768,
        phKeyDarker = 0x4461726b,
        phKeyLegacySerialString = 0x6c534e73,
        phKey_Source = 0x54202020,
        phPInherits = 0x6340235e,
        phTypeActionReference = 0x23416374,
        phTypeActionData = 0x41637444,
        phTypeAlignDistributeSelector = 0x41445374,
        phTypeAlignment = 0x416c6720,
        phTypeAmount = 0x416d6e74,
        phTypeAntiAlias = 0x416e6e74,
        phTypeAreaSelector = 0x4172536c,
        phTypeAssumeOptions = 0x4173734f,
        phTypeBevelEmbossStampStyle = 0x42455373,
        phTypeBevelEmbossStyle = 0x4245536c,
        phTypeBitDepth = 0x42744470,
        phTypeBlackGeneration = 0x426c6347,
        phTypeBlendMode = 0x426c6e4d,
        phTypeBlurMethod = 0x426c724d,
        phTypeBlurQuality = 0x426c7251,
        phTypeBrushType = 0x42727354,
        phTypeBuiltinProfile = 0x426c7450,
        phTypeBuiltInContour = 0x426c7443,
        phTypeCMYKSetupEngine = 0x434d5945,
        phTypeCalculation = 0x436c636e,
        phTypeChannel = 0x43686e6c,
        phTypeChannelReference = 0x23436852,
        phTypeCheckerboardSize = 0x4368636b,
        phTypeClass = 0x74797065,
        phTypeClassColor = 0x23436c72,
        phTypeClassElement = 0x23436c45,
        phTypeClassExport = 0x23436c65,
        phTypeClassFormat = 0x23436c46,
        phTypeClassHueSatHueSatV2 = 0x23487356,
        phTypeClassImport = 0x23436c49,
        phTypeClassMode = 0x23436c4d,
        phTypeClassStringFormat = 0x23436c53,
        phTypeClassTextExport = 0x23435445,
        phTypeClassTextImport = 0x23436c54,
        phTypeColor = 0x436c7220,
        phTypeColorChannel = 0x23436c43,
        phTypeColorPalette = 0x436c7250,
        phTypeColorSpace = 0x436c7253,
        phTypeColorStopType = 0x436c7279,
        phTypeColors = 0x436c7273,
        phTypeCompensation = 0x436d706e,
        phTypeContourEdge = 0x436e7445,
        phTypeConvert = 0x436e7672,
        phTypeCorrectionMethod = 0x4372634d,
        phTypeCursorKind = 0x4372734b,
        phTypeDCS = 0x44435320,
        phTypeDeepDepth = 0x44704470,
        phTypeDepth = 0x44707468,
        phTypeDiffuseMode = 0x4466734d,
        phTypeDirection = 0x44726374,
        phTypeDisplacementMap = 0x4473704d,
        phTypeDistribution = 0x44737472,
        phTypeDither = 0x44746872,
        phTypeDitherQuality = 0x44746871,
        phTypeDocumentReference = 0x23446352,
        phTypeEPSPreview = 0x45505350,
        phTypeElementReference = 0x23456c52,
        phTypeEncoding = 0x456e6364,
        phTypeEraserKind = 0x4572734b,
        phTypeExtrudeRandom = 0x45787452,
        phTypeExtrudeType = 0x45787454,
        phTypeEyeDropperSample = 0x45794470,
        phTypeFPXCompress = 0x4678436d,
        phTypeFill = 0x466c2020,
        phTypeFillColor = 0x466c436c,
        phTypeFillContents = 0x466c436e,
        phTypeFillMode = 0x466c4d64,
        phTypeForcedColors = 0x46726343,
        phTypeFrameFill = 0x4672466c,
        phTypeFrameStyle = 0x4653746c,
        phTypeGIFColorFileType = 0x47465054,
        phTypeGIFPaletteType = 0x4746504c,
        phTypeGIFRequiredColorSpaceType = 0x47464353,
        phTypeGIFRowOrderType = 0x47464954,
        phTypeGlobalClass = 0x476c6243,
        phTypeGlobalObject = 0x476c624f,
        phTypeGradientType = 0x47726454,
        phTypeGradientForm = 0x47726446,
        phTypeGrainType = 0x47726e74,
        phTypeGrayBehavior = 0x47724268,
        phTypeGuideGridColor = 0x47644772,
        phTypeGuideGridStyle = 0x47644753,
        phTypeHistoryStateSource = 0x48737453,
        phTypeHorizontalLocation = 0x48727a4c,
        phTypeImageReference = 0x23496d52,
        phTypeInnerGlowSource = 0x49475372,
        phTypeIntegerChannel = 0x23696e43,
        phTypeIntent = 0x496e7465,
        phTypeInterlaceCreateType = 0x496e7443,
        phTypeInterlaceEliminateType = 0x496e7445,
        phTypeInterpolation = 0x496e7470,
        phTypeKelvin = 0x4b6c766e,
        phTypeKelvinCustomWhitePoint = 0x234b6c76,
        phTypeLens = 0x4c6e7320,
        phTypeLightDirection = 0x4c676844,
        phTypeLightPosition = 0x4c676850,
        phTypeLightType = 0x4c676854,
        phTypeLocationReference = 0x234c6374,
        phTypeMaskIndicator = 0x4d736b49,
        phTypeMatteColor = 0x4d747443,
        phTypeMatteTechnique = 0x42455445,
        phTypeMenuItem = 0x4d6e4974,
        phTypeMethod = 0x4d746864,
        phTypeMezzotintType = 0x4d7a7454,
        phTypeMode = 0x4d642020,
        phTypeNotify = 0x4e746679,
        phTypeObject = 0x4f626a63,
        phTypeObjectReference = 0x6f626a20,
        phTypeOnOff = 0x4f6e4f66,
        phTypeOrdinal = 0x4f72646e,
        phTypeOrientation = 0x4f726e74,
        phTypePNGFilter = 0x504e4766,
        phTypePNGInterlaceType = 0x50474954,
        phTypePagePosition = 0x50675073,
        phTypePathKind = 0x5074684b,
        phTypePathReference = 0x23507452,
        phTypePhosphors = 0x50687370,
        phTypePhosphorsCustomPhosphors = 0x23506873,
        phTypePickerKind = 0x50636b4b,
        phTypePixelPaintSize = 0x5050537a,
        phTypePlatform = 0x506c7466,
        phTypePreview = 0x50727677,
        phTypePreviewCMYK = 0x50727674,
        phTypeProfileMismatch = 0x5072664d,
        phTypePurgeItem = 0x50726749,
        phTypeQuadCenterState = 0x51435374,
        phTypeQuality = 0x516c7479,
        phTypeQueryState = 0x51757253,
        phTypeRGBSetupSource = 0x52474253,
        phTypeRawData = 0x74647461,
        phTypeRippleSize = 0x52706c53,
        phTypeRulerUnits = 0x526c7255,
        phTypeScreenType = 0x53637254,
        phTypeShape = 0x53687020,
        phTypeSmartBlurMode = 0x536d424d,
        phTypeSmartBlurQuality = 0x536d4251,
        phTypeSourceMode = 0x436e646e,
        phTypeSpherizeMode = 0x5370684d,
        phTypeState = 0x53747465,
        phTypeStringClassFormat = 0x23537443,
        phTypeStringChannel = 0x23737468,
        phTypeStringCompensation = 0x2353746d,
        phTypeStringFSS = 0x23537466,
        phTypeStringInteger = 0x23537449,
        phTypeStrokeDirection = 0x53747244,
        phTypeStrokeLocation = 0x5374724c,
        phTypeText = 0x54455854,
        phTypeTextureType = 0x54787454,
        phTypeTransparencyGridColors = 0x54726e6c,
        phTypeTransparencyGridSize = 0x54726e47,
        phTypeTypeClassModeOrClassMode = 0x2354794d,
        phTypeUndefinedArea = 0x556e6441,
        phTypeUnitFloat = 0x556e7446,
        phTypeUrgency = 0x5572676e,
        phTypeUserMaskOptions = 0x5573724d,
        phTypeValueList = 0x566c4c73,
        phTypeVerticalLocation = 0x5672744c,
        phTypeWaveType = 0x57767470,
        phTypeWindMethod = 0x576e644d,
        phTypeYesNo = 0x59734e20,
        phTypeZigZagType = 0x5a5a5479,
        phUnitAngle = 0x23416e67,
        phUnitDensity = 0x2352736c,
        phUnitDistance = 0x23526c74,
        phUnitNone = 0x234e6e65,
        phUnitPercent = 0x23507263,
        phUnitPixels = 0x2350786c
    } __MIDL___MIDL_itf_OLEActions_0000_0000_0001;

    [
      odl,
      uuid(B249C0B1-A004-11D1-B036-00C04FD7EC47),
      helpstring("Container class for actions system references."),
      dual,
      oleautomation
    ]
    interface IActionReference : IDispatch {
        [id(0x60020000)]
        HRESULT GetForm([out] long* value);
        [id(0x60020001)]
        HRESULT GetDesiredClass([out] long* value);
        [id(0x60020002)]
        HRESULT PutClass([in] long desiredClass);
        [id(0x60020003)]
        HRESULT GetName([out] BSTR* name);
        [id(0x60020004)]
        HRESULT PutName(
                        [in] long desiredClass,
                        [in] BSTR name);
        [id(0x60020005)]
        HRESULT GetIndex([out] long* value);
        [id(0x60020006)]
        HRESULT PutIndex(
                        [in] long desiredClass,
                        [in] long value);
        [id(0x60020007)]
        HRESULT GetIdentifier([out] long* value);
        [id(0x60020008)]
        HRESULT PutIdentifier(
                        [in] long desiredClass,
                        [in] long value);
        [id(0x60020009)]
        HRESULT GetOffset([out] long* value);
        [id(0x6002000a)]
        HRESULT PutOffset(
                        [in] long desiredClass,
                        [in] long value);
        [id(0x6002000b)]
        HRESULT GetEnumerated(
                        [out] long* type,
                        [out] long* enumValue);
        [id(0x6002000c)]
        HRESULT PutEnumerated(
                        [in] long desiredClass,
                        [in] long type,
                        [in] long value);
        [id(0x6002000d)]
        HRESULT GetProperty([out] long* value);
        [id(0x6002000e)]
        HRESULT PutProperty(
                        [in] long desiredClass,
                        [in] long value);
        [id(0x6002000f)]
        HRESULT GetContainer([out] IActionReference** value);
    };

    [
      odl,
      uuid(B249C0B0-A004-11D1-B036-00C04FD7EC47),
      helpstring("Container class for actions system lists."),
      dual,
      oleautomation
    ]
    interface IActionList : IDispatch {
        [id(0x60020000)]
        HRESULT GetType(
                        [in] long index,
                        [out] long* value);
        [id(0x60020001)]
        HRESULT GetCount([out] long* value);
        [id(0x60020002)]
        HRESULT GetInteger(
                        [in] long index,
                        [out] long* value);
        [id(0x60020003)]
        HRESULT PutInteger([in] long value);
        [id(0x60020004)]
        HRESULT GetDouble(
                        [in] long index,
                        [out] double* value);
        [id(0x60020005)]
        HRESULT PutDouble([in] double value);
        [id(0x60020006)]
        HRESULT GetUnitDouble(
                        [in] long index,
                        [out] long* unit,
                        [out] double* value);
        [id(0x60020007)]
        HRESULT PutUnitDouble(
                        [in] long unit,
                        [in] double value);
        [id(0x60020008)]
        HRESULT GetString(
                        [in] long index,
                        [out] BSTR* str);
        [id(0x60020009)]
        HRESULT PutString([in] BSTR str);
        [id(0x6002000a)]
        HRESULT GetBoolean(
                        [in] long index,
                        [out] long* value);
        [id(0x6002000b)]
        HRESULT PutBoolean([in] long value);
        [id(0x6002000c)]
        HRESULT GetList(
                        [in] long index,
                        [out] IActionList** actionList);
        [id(0x6002000d)]
        HRESULT PutList([in] IActionList* actionList);
        [id(0x6002000e)]
        HRESULT GetObject(
                        [in] long index,
                        [out] long* type,
                        [out] IActionDescriptor** value);
        [id(0x6002000f)]
        HRESULT PutObject(
                        [in] long type,
                        [in] IActionDescriptor* value);
        [id(0x60020010)]
        HRESULT GetGlobalObject(
                        [in] long index,
                        [out] long* type,
                        [out] IActionDescriptor** value);
        [id(0x60020011)]
        HRESULT PutGlobalObject(
                        [in] long type,
                        [in] IActionDescriptor* value);
        [id(0x60020012)]
        HRESULT GetEnumerated(
                        [in] long index,
                        [out] long* type,
                        [out] long* value);
        [id(0x60020013)]
        HRESULT PutEnumerated(
                        [in] long type,
                        [in] long value);
        [id(0x60020014)]
        HRESULT GetReference(
                        [in] long index,
                        [out] IActionReference** value);
        [id(0x60020015)]
        HRESULT PutReference([in] IActionReference* value);
        [id(0x60020016)]
        HRESULT GetClass(

June 15, 2016
                        [in] long index,
                        [out] long* value);
        [id(0x60020017)]
        HRESULT PutClass([in] long value);
        [id(0x60020018)]
        HRESULT GetGlobalClass(
                        [in] long index,
                        [out] long* value);
        [id(0x60020019)]
        HRESULT PutGlobalClass([in] long value);
        [id(0x6002001a)]
        HRESULT GetPath(
                        [in] long index,
                        [out] BSTR* pathString);
        [id(0x6002001b)]
        HRESULT PutPath([in] BSTR pathString);
        [id(0x6002001c)]
        HRESULT GetDataLength(
                        [in] long index,
                        [out] long* value);
        [id(0x6002001d)]
        HRESULT GetData(
                        [in] long index,
                        [out] BSTR* value);
        [id(0x6002001e)]
        HRESULT PutData(
                        [in] long length,
                        [in] BSTR value);
    };

    [
      odl,
      uuid(7CA9DE40-9EB3-11D1-B033-00C04FD7EC47),
      helpstring("Container class for actions system parameters."),
      dual,
      oleautomation
    ]
    interface IActionDescriptor : IDispatch {
        [id(0x60020000)]
        HRESULT GetType(
                        [in] long key,
                        [out] long* type);
        [id(0x60020001)]
        HRESULT GetKey(
                        [in] long index,
                        [out] long* key);
        [id(0x60020002)]
        HRESULT HasKey(
                        [in] long key,
                        [out] long* HasKey);
        [id(0x60020003)]
        HRESULT GetCount([out] long* count);
        [id(0x60020004)]
        HRESULT IsEqual(
                        [in] IActionDescriptor* otherDesc,
                        [out] long* IsEqual);
        [id(0x60020005)]
        HRESULT Erase([in] long key);
        [id(0x60020006)]
        HRESULT Clear();
        [id(0x60020007)]
        HRESULT GetInteger(
                        [in] long key,
                        [out] long* retval);
        [id(0x60020008)]
        HRESULT PutInteger(
                        [in] long key,
                        [in] long value);
        [id(0x60020009)]
        HRESULT GetDouble(
                        [in] long key,
                        [out] double* retval);
        [id(0x6002000a)]
        HRESULT PutDouble(
                        [in] long key,
                        [in] double value);
        [id(0x6002000b)]
        HRESULT GetUnitDouble(
                        [in] long key,
                        [out] long* unitID,
                        [out] double* retval);
        [id(0x6002000c)]
        HRESULT PutUnitDouble(
                        [in] long key,
                        [in] long unitID,
                        [in] double value);
        [id(0x6002000d)]
        HRESULT GetString(
                        [in] long key,
                        [out] BSTR* retval);
        [id(0x6002000e)]
        HRESULT PutString(
                        [in] long key,
                        [in] BSTR value);
        [id(0x6002000f)]
        HRESULT GetBoolean(
                        [in] long key,
                        [out] long* retval);
        [id(0x60020010)]
        HRESULT PutBoolean(
                        [in] long key,
                        [in] long value);
        [id(0x60020011)]
        HRESULT GetList(
                        [in] long key,
                        [out] IActionList** list);
        [id(0x60020012)]
        HRESULT PutList(
                        [in] long key,
                        [in] IActionList* list);
        [id(0x60020013)]
        HRESULT GetObject(
                        [in] long key,
                        [out] long* classID,
                        [out] IActionDescriptor** retval);
        [id(0x60020014)]
        HRESULT PutObject(
                        [in] long key,
                        [in] long classID,
                        [in] IActionDescriptor* value);
        [id(0x60020015)]
        HRESULT GetGlobalObject(
                        [in] long key,
                        [out] long* classID,
                        [out] IActionDescriptor** retval);
        [id(0x60020016)]
        HRESULT PutGlobalObject(
                        [in] long key,
                        [in] long classID,
                        [in] IActionDescriptor* value);
        [id(0x60020017)]
        HRESULT GetEnumerated(
                        [in] long key,
                        [out] long* enumType,
                        [out] long* value);
        [id(0x60020018)]
        HRESULT PutEnumerated(
                        [in] long key,
                        [in] long enumType,
                        [in] long value);
        [id(0x60020019)]
        HRESULT GetReference(
                        [in] long key,
                        [out] IActionReference** reference);
        [id(0x6002001a)]
        HRESULT PutReference(
                        [in] long key,
                        [in] IActionReference* reference);
        [id(0x6002001b)]
        HRESULT GetClass(
                        [in] long key,
                        [out] long* classID);
        [id(0x6002001c)]
        HRESULT PutClass(
                        [in] long key,
                        [in] long classID);
        [id(0x6002001d)]
        HRESULT GetGlobalClass(
                        [in] long key,
                        [out] long* classID);
        [id(0x6002001e)]
        HRESULT PutGlobalClass(
                        [in] long key,
                        [in] long classID);
        [id(0x6002001f)]
        HRESULT GetPath(
                        [in] long key,
                        [out] BSTR* pathString);
        [id(0x60020020)]
        HRESULT PutPath(
                        [in] long key,
                        [in] BSTR pathString);
        [id(0x60020021)]
        HRESULT GetDataLength(
                        [in] long key,
                        [out] long* value);
        [id(0x60020022)]
        HRESULT GetData(
                        [in] long key,
                        [out] BSTR* retval);
        [id(0x60020023)]
        HRESULT PutData(
                        [in] long key,
                        [in] BSTR value);
    };

    [
      odl,
      uuid(38FB4290-9DF6-11D1-B032-00C04FD7EC47),
      helpstring("Control interface for Photoshop actions system."),
      dual,
      oleautomation
    ]
    interface IActionControl : IDispatch {
        [id(0x60020000), helpstring("Plays an event.")]
        HRESULT Play(
                        [in] long eventID,
                        [in] IActionDescriptor* parameters,
                        [in] long dialogOptions,
                        [out, retval] IActionDescriptor** result);
        [id(0x60020001)]
        HRESULT GetActionProperty(
                        [in] IActionReference* reference,
                        [out] IActionDescriptor** propertyDesc);
        [id(0x60020002)]
        HRESULT StringIDToTypeID(
                        [in] BSTR stringID,
                        [out] long* typeID);
        [id(0x60020003)]
        HRESULT TypeIDToStringID(
                        [in] long typeID,
                        [out] BSTR* stringID);
    };

    [
      odl,
      uuid(9077D1E1-8959-11CF-86B4-444553540000),
      helpstring("Automation interface to Photoshop Image documeent"),
      dual,
      oleautomation
    ]
    interface IAutoPSDoc : IDispatch {
        [id(0x60020000), propget, helpstring("Title of Image Document")]
        HRESULT Title([out, retval] BSTR* retval);
        [id(0x60020001), helpstring("Closes and saves this document")]
        HRESULT Close();
        [id(0x60020002), helpstring("Save to a different name, but file remains open")]
        HRESULT SaveTo([in] BSTR fileName);
        [id(0x60020003), helpstring("Make this document the current target")]
        HRESULT Activate();
    };

    [
      odl,
      uuid(90CED626-8D78-11CF-86B4-444553540000),
      helpstring("Action."),
      dual,
      oleautomation
    ]
    interface IAction : IDispatch {
        [id(0x60020000), propget, helpstring("Gets name of action")]
        HRESULT name([out, retval] BSTR* retval);
        [id(0x60020001), helpstring("Plays action on active document")]
        HRESULT Play();
    };

    [
      odl,
      uuid(90CED625-8D78-11CF-86B4-444553540000),
      helpstring("Actions collection."),
      dual,
      oleautomation
    ]
    interface IActions : IDispatch {
        [id(0x60020000), propget, helpstring("Returns number of Actions in collection.")]
        HRESULT count([out, retval] long* retval);
        [id(00000000), propget, helpstring("Given an integer index, returns one of the Actions in the collection")]
        HRESULT Item(
                        [in] long index,
                        [out, retval] IAction** retval);
        [id(0xfffffffc), propget, restricted]
        HRESULT _NewEnum([out, retval] IUnknown** retval);
    };

    [
      odl,
      uuid(9414F179-C905-11D1-92CC-00600808FC44),
      helpstring("Adobe Photoshop 12.0 Application"),
      dual,
      oleautomation
    ]
    interface IPhotoshopApplication : IDispatch {
        [id(0x60020000), propget, helpstring("Full name of application")]
        HRESULT FullName([out, retval] BSTR* retval);
        [id(0x60020001), helpstring("Exits the application.")]
        HRESULT Quit();
        [id(0x60020002), helpstring("Opens a Photoshop document.")]
        HRESULT Open(
                        [in] BSTR fileName,
                        [out, retval] IAutoPSDoc** retval);
        [id(0x60020003), helpstring("Plays Action by name on active document")]
        HRESULT PlayAction(
                        [in] BSTR fileName,
                        [out, retval] long* retval);
        [id(0x60020004), propget, helpstring("Returns a collection of all the Actions currently loaded")]
        HRESULT Actions([out, retval] IActions** retval);
        [id(0x60020005), helpstring("Creates an IActionControl object.")]
        HRESULT MakeControlObject([out, retval] IActionControl** retval);
        [id(0x60020006), helpstring("Creates an IActionDescriptor object.")]
        HRESULT MakeDescriptor([out, retval] IActionDescriptor** retval);
        [id(0x60020007), helpstring("Creates an IActionList object.")]
        HRESULT MakeList([out, retval] IActionList** retval);
        [id(0x60020008), helpstring("Creates an IActionReference object.")]
        HRESULT MakeReference([out, retval] IActionReference** retval);
        [id(0x60020009), propget]
        HRESULT Visible([out, retval] long* isVisible);
        [id(0x60020009), propput]
        HRESULT Visible([in] long isVisible);
    };

    [
      uuid(6DECC242-87EF-11CF-86B4-444553540000),
      helpstring("Photoshop Object Type Information"),
      appobject
    ]
    coclass PhotoshopApplication {
        [default] interface IPhotoshopApplication;
        interface IDispatch;
    };
};

June 15, 2016
On Wednesday, 15 June 2016 at 06:09:33 UTC, thedeemon wrote:
> On Monday, 13 June 2016 at 17:38:41 UTC, Incognito wrote:
>
>> Cool. Oleview gives me the idl files. How to convert the idl files to d or possibly c?
>
> There are ready tools idl2d:
> https://github.com/dlang/visuald/tree/master/c2d
>
> and tlb2idl:
> https://github.com/dlang/visuald/tree/master/tools
>
> I've used this idl2d and it works pretty well (although not perfect, sometimes manual editing still required).
>
> Example of real-world DirectShow interfaces translated:
> https://gist.github.com/thedeemon/46748f91afdbcf339f55da9b355a6b56
>
>> Would I just use them in place of IUnknown once I have the interface?
>
> If you have the interface defined AND you know its IID, you can request it from CoCreateInstance and then use as ordinary D object.
>
> You might want to look at this wrapper that takes most of COM machinery:
> https://gist.github.com/thedeemon/3c2989b76004fafe9aa0
>
> Then you just write almost as in C#, something like
>
>   auto pGraph = ComPtr!IGraphBuilder(CLSID_FilterGraph, "pGraph").require;
>
>   ComPtr!ICaptureGraphBuilder2 pBuilder = ComPtr!ICaptureGraphBuilder2(CLSID_CaptureGraphBuilder2).require;
>   pBuilder.SetFiltergraph(pGraph);
>   ...
>   auto CLSID_NullRenderer = Guid!("C1F400A4-3F08-11D3-9F0B-006008039E37"); //qedit.dll
>   auto pNullRendr = ComPtr!IBaseFilter(CLSID_NullRenderer, "nulrend");
>   pGraph.AddFilter(pNullRendr, "Null Renderer"w.ptr);
>   ...
>   auto imf = ComPtr!IMediaFilter(pGraph);
>   imf.SetSyncSource(null);
>
> All the CreateInstance, QueryInterface, AddRef/Release etc. is taken care of. And even HRESULT return codes are automatically checked.

Thanks, if I can get the idl converted I'll test it out. It seems idl2d from VD is not easily compilable?

June 15, 2016
On Wednesday, 15 June 2016 at 06:56:59 UTC, Joerg Joergonson wrote:
> When I try to compile your code I get the following errors:
>
> main.d(953): Error: function core.sys.windows.objbase.CoTaskMemAlloc (uint) is not callable using argument types (immutable(ulong))
> main.d(970): Error: can only slice tuple types, not _error_
> main.d(974): Error: can only slice tuple types, not _error_
>
> coTaskMemAlloc is defined with ULONG in the objbase.d file... so I have no idea what's going on there.
>
>         immutable bufferSize = (funcDesc.cParams + 1) * (wchar*).sizeof;
>         auto names = cast(wchar**)CoTaskMemAlloc(bufferSize);

Looks like bufferSize just needs to be cast to uint. Didn't get that error in DMD.

>
> The other two I also don't know:
>
> params ~= new Parameter(method, (name[0 .. SysStringLen(name)]).toUTF8(),
>
> If I run it in ldc I get the error
>
> Error: forward reference to inferred return type of function call 'getParameters'		
>
>   private static getParameters(MethodImpl method) {
>     Parameter dummy;
>     return getParameters(method, dummy, false);
>   }
>
> It does compile in DMD though.

OK, adding the return type to the signature should fix that. So:

  private static Parameter getParameters(MethodImpl method)

>
> When running I get the error
>
>  Error loading type library/DLL.
>
> The IDL file is in the same directory

Did you try to pass it an IDL file? No wonder it didn't work - you pass in the type library instead, which is a binary file such as a DLL, EXE or TLB file. You can get the file's path from OleView by highlighting the library on the left (eg Photoshop) and on the right it will show a tree with the path beside "win32".
June 15, 2016
On Wednesday, 15 June 2016 at 08:21:06 UTC, John wrote:
> OK, adding the return type to the signature should fix that. So:
>
>   private static Parameter getParameters(MethodImpl method)

Sorry, I meant the getParameter methods should return be:

  private static Parameter[] getParameters(MethodImpl method)

and

  private static Parameter[] getParameters(MethodImpl method, out Parameter returnParameter, bool getReturnParameter)

June 15, 2016
On Wednesday, 15 June 2016 at 07:01:30 UTC, Joerg Joergonson wrote:

> It  seems idl2d from VD is not easily compilable?

I don't remember problems with that, anyway here's the binary I used:
http://stuff.thedeemon.com/idl2d.exe

June 15, 2016
On Monday, 13 June 2016 at 01:22:33 UTC, Incognito wrote:
> I've been reading over D's com and can't find anything useful. It seems there are different ways:
>
> http://www.lunesu.com/uploads/ModernCOMProgramminginD.pdf
>
> which is of no help and requires an idl file, which I don't have.
>
> Then theres this
>
> http://wiki.dlang.org/COM_Programming

There is also:
https://github.com/JesseKPhillips/Juno-Windows-Class-Library

It kind of provides similar highlevel options as the "Modern COM Programming in D."

But I don't use it and have only be somewhat keeping it alive (I had some hiccups in supporting 64bit), so I haven't been working to improve the simplicity of interfacing to COM objects.

It also includes definitions for accessing Windows COM objects which aren't needed when interfacing with your own or other COM objects. I'd like to have two libraries, Juno Library and Juno Windows Class Library.