#include <windows.h>
using namespace std;

#ifndef _GDIMAGE_H
#define _GDIMAGE_H

const wchar_t   *GDImageClassName   = L"ZIMAGECTRL";
const wchar_t   *GLImageClassName   = L"ZOPENGLCTRL";

const int METADATA_SIZE   = 2048;

struct ZOBJECT {
    long     id;           // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< SIZEOF(ZOBJECT) - 131 + 1
    long     clone;        // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< SIZEOF(ZOBJECT) - 42 + 1

    HWND     hwnd;
    long     objtype;
    long     metacount;
    BYTE     metadata[METADATA_SIZE];

    WCHAR    usefont[64];
    long     usesize;
    LONG_PTR fontfam;
    LONG_PTR curfont;
    long     strformat;
    long     argb;
    short    use3d;
    long     x1;
    long     y1;
    long     x2;
    long     y2;
    BYTE     visible;
    long     order;
    BYTE     locked;

    long     style;
    HBITMAP  bitmap;
    HRGN     region;
    WCHAR    objlabel[64];
    long     xcapture;
    long     ycapture;
    float    scale;
    long     xp;
    long     yp;
    WORD     angle;
    BYTE     quality;
    BYTE     flipmode;
    BYTE     userotate;
    BYTE     selected;
    BYTE     hidden;

    BYTE     brightness;
    BYTE     contrast;
    BYTE     red;
    BYTE     green;
    BYTE     blue;
    BYTE     hue;

    BYTE     framecount;
    BYTE     frametouse;

    BYTE     anchor;
    long     left;
    long     top;
    long     right;
    long     bottom;
    long     centerx;
    long     centery;

    long     linked; 

    char     reserved[39];
}; // Total 2528 bytes in 64-bit, 2496 in 32-bit.

struct ZSLIDESHOW {
    WCHAR fullname[MAX_PATH];
    long  delay;
    short effect;
    short grain;
    WCHAR legend[128];
    WCHAR fontname[64];
    short fontsize;
    long  fontcolor;
    BYTE  shadow;
    BYTE  location;
    long  backcolor;
};

const int NM_LASTSLIDE = -23;
// Transition effects
const int ZE_EFFECT_MIN                 = 0;  //
const int ZE_TRANSLUCENT_SPIRAL         = 0;  // Translucent spiral (uGrain to adjust speed).
const int ZE_SMOOTH_FADING              = 1;  // Smooth fading (uGrain to adjust speed).
const int ZE_MOVE_BOTTOM_TO_TOP         = 2;  // Moving from bottom to top (uGrain to adjust speed).
const int ZE_VERTICAL_LINE              = 3;  // Vertical line (use uGrain to change space between lines).
const int ZE_VERTICAL_LINE_FILLED_RIGHT = 4;  // Vertical line (use uGrain to change space between lines).
const int ZE_CHECKER_BOARD              = 5;  // Checker board (use uGrain for larger square).
const int ZE_RANDOM_DOT                 = 6;  // Random dots (use uGrain for larger dots).
const int ZE_WIPE_TO_CENTER             = 7;  // Wipe to center (uGrain to adjust speed).
const int ZE_STRETCH_FROM_CENTER        = 8;  // Stretch from center (uGrain to adjust speed).
const int ZE_PUSH_LEFT_TO_RIGHT         = 9;  // Push from left to right (uGrain to adjust speed).
const int ZE_PUSH_TOP_TO_BOTTOM         = 10; // Push from top to bottom (uGrain to adjust speed).
const int ZE_NO_EFFECT                  = 11; // Cut mode (no transition effect).
const int ZE_EFFECT_MAX                 = 11;
// Legend location
const int ZE_TXT_TOP_LEFT               = 1;  // Text on the top, left justified.
const int ZE_TXT_TOP_CENTER             = 2;  // Text on the top, centered.
const int ZE_TXT_TOP_RIGHT              = 3;  // Text on the top, right justified.
const int ZE_TXT_MIDDLE_CENTER          = 4;  // Text on the middle, centered.
const int ZE_TXT_BOTTOM_LEFT            = 5;  // Text on the bottom, left justified.
const int ZE_TXT_BOTTOM_CENTER          = 0;  // Text on the bottom, centered.
const int ZE_TXT_BOTTOM_RIGHT           = 6;  // Text on the bottom, right justified.

struct ZPOLYGON {
    LPPOINTS pXY;        // 32-bit unsigned POINTS PTR
    short    ArraySize;  // 16-bit signed SHORT integer
    long     ObjID;      // 32-bit signed LONG integer
    long     ColorARGB;  // 32-bit signed LONG integer
    short    PenSize;    // 16-bit signed SHORT integer
    long     ZS_Style ;  // 32-bit signed LONG integer
    long     ZD_Style;   // 32-bit signed LONG integer
};

struct ZGLTEXTUREX {
    long  ID;
    WCHAR FullName[MAX_PATH];
    long  Texture;
    long  Square;  // boolean TRUE or FALSE value 
};

struct ZGLFONT {
    WCHAR fontName[64];
    long  fontBase;
    long  charStart;
    long  charNum;
    long  fontHeight;
    long  fontWeight;
    HFONT fontHandle;
};

struct MyPropertyItem {
    PROPID  id;                 // ID of this property
    ULONG   length;             // Length of the property value, in bytes
    WORD    type;               // Type of Image property
    VOID*   value;              // property value
    WORD    dummy;              // add an extra WORD to be DWORD aligned (for a total of 16 bytes) 
};

// See below the list of GDImage properties:
// Note: Constants prefixed with %ZI_ are for IMAGE control
const int ZI_DC                 = 1;    // Internal DC
const int ZI_Bitmap             = 2;    // Memory Bitmap
const int ZI_Horizontal         = 3;    // Horizontal scrolling position
const int ZI_Vertical           = 4;    // Vertical scrolling position
const int ZI_GradientTop        = 5;    // Top gradiant color backgroud
const int ZI_GradientBottom     = 6;    // Bottom gradiant color backgroud

const int ZI_FitToWindow        = 7;    // Resize the image to fit the view port
const int    ZI_QualityDefault  = -1;   // And use any of this constant as Parameter
const int    ZI_QualityGood     = 1;    // Best performance
const int    ZI_QualityHigh     = 2;    // Best rendering quality
// DO NOT use or alter these properties!
const int ZI_PaintDC            = 8;    // Internal DC
const int ZI_PaintBitmap        = 9;    // Memory Bitmap
const int ZI_Reserved           = 10;   // Animated frame parameters : LOWRD = FrameWidth, HIWRD = FrameCount

const int ZI_ZoomWindow         = 11;   // Version 1.41
const int ZI_ZoomFactor         = 12;   // Version 1.41
const int ZI_Orientation        = 13;   // Version 1.41

const int ZI_FlagByte           = 14;   // Version 2.00 4 bytes reserved for flag
const int    TOOL_CROP          = 1;    // Stored in the first byte
const int    TOOL_CUTTER        = 2;    // Stored in the first byte
const int    TOOL_PENCIL        = 4;    // Stored in the first byte
const int    TOOL_FLOOD         = 8;    // Stored in the first byte
const int    TOOL_AIRBRUSH      = 16;   // Stored in the first byte
const int    TOOL_PIPE          = 32;   // Stored in the first byte
const int    TOOL_MOUSE         = 64;   // Stored in the first byte
const int    TOOL_UNKNOWN       = 128;  // Stored in the first byte

const int Extend_cbWndExtra     = ZI_FlagByte;

const int ZI_GDIPLUSHANDLE      = 1;    // Load GDIPLUS Image handle

const int ZI_GLDC               = 8;    // OpenGL Device Context
const int ZI_GLRC               = 9;    // OpenGL Rendering Context

const int ZD_TOPLEFTCOLOR       = -1;
const int ZD_TRANSCOLOR         = 0XFF00FF;
const int ZD_ARGBTRANSCOLOR     = 0XFFFF00FF;
const int ZD_MAPCOLORFROM       = 0x807F80;   // Maping color for 32-bit alphablending
const int ZI_MAPCOLORFROM       = 0xFF807F80; // Maping color for 32-bit alphablending
const int ZI_MAPCOLORTO         = 0xFF808080; // Maping color for 32-bit alphablending
const int ZI_MAPCOLORNULL       = 0x00807F80; // Maping color for 32-bit alphablending
const int ZI_MAPTRANSCOLOR      = 0x807F80;   // Transparent maped color for 32-bit alphablending
const int ZM_Size               = 2025;       // WM_USER + 1001
const int ZM_Crop               = 2026;       // WM_USER + 1002
const int ZM_CENTER_DIALOG      = 2027;       // WM_USER + 1003
const int ZM_CropRedEye         = 2028;       // WM_USER + 1004

// ZD_DrawText constants
const int ZD_TextHorzUp         = 0;          // Horizontal text orientation
const int ZD_TextVertUp         = 4;          // Vertical text orientation from bottom to top
const int ZD_TextVertDn         = 8;          // Vertical text orientation from top to bottom

const int ZD_HIDE               = 0;          // FALSE
const int ZD_SHOW               = 1;          // TRUE
const int ZS_HIDDEN             = ZD_HIDE;
const int ZS_VISIBLE            = ZD_SHOW;    // VISIBLE, same as WS_VISIBLE
const int ZS_SCROLL             = 2;          // MOVE with scroll bars, default is FIX (do not scroll)
const int ZS_DRAFT              = 4;

const int ZD_ORDER_TOP          = 0xFFFFFF;
const int ZD_ORDER_BOTTOM       = 0xFFFF;

const int ZD_Normal             = 0; // Orientation unchanged (default)
const int ZD_Flip               = 1; // Swap top / bottom
const int ZD_Reverse            = 2; // Swap left / right

const int DRAW_OUTLINE          = 1;
const int DRAW_FILLED           = 2;
const int DRAW_3DIN             = 3;
const int DRAW_3DOUT            = 4;
const int DRAW_OPEN             = 5;

const int ZD_DRAW_OUTLINE       = DRAW_OUTLINE;
const int ZD_DRAW_FILLED        = DRAW_FILLED;
const int ZD_DRAW_3DIN          = DRAW_3DIN;
const int ZD_DRAW_3DOUT         = DRAW_3DOUT;
const int ZD_DRAW_OPEN          = DRAW_OPEN;

const int ZD_DRAW_REDRAW        = -1; // Forces immediate redraw of parent object
const int ZD_DRAW_DEFERRED      = 0;  

const int OBJECT_TEXT           = 1;
const int OBJECT_ELLIPSE        = 2;
const int OBJECT_RECT           = 3;
const int OBJECT_CURVE          = 4;
const int OBJECT_ARROW          = 5;
const int OBJECT_POLYLINE       = 6;
const int OBJECT_BITMAP         = 7;
const int OBJECT_BEZIER         = 8;
const int OBJECT_POLYPOLYGON    = 9;
const int OBJECT_TEXTBITMAP     = 10;

const int Frame_DimensionTime        = 0;
const int Frame_DimensionResolution  = 1;
const int Frame_DimensionPage        = 2;

const int ColorAdjustTypeDefault     = 0;
const int ColorMatrixFlagsDefault    = 0;
const int ColorAdjustTypeBitmap      = 1;

const int StringAlignmentNear        = 0;
const int StringAlignmentCenter      = 1;
const int StringAlignmentFar         = 2;

//const int ANCHOR_NONE                = 0;
//const int ANCHOR_LEFT                = ANCHOR_NONE;
//const int ANCHOR_WIDTH               = 1;
//const int ANCHOR_RIGHT               = 2;
//const int ANCHOR_CENTER_HORZ         = 3;
//const int ANCHOR_HEIGHT              = 4;
//const int ANCHOR_HEIGHT_WIDTH        = 5;
//const int ANCHOR_HEIGHT_RIGHT        = 6;
//const int ANCHOR_BOTTOM              = 7;
//const int ANCHOR_BOTTOM_WIDTH        = 8;
//const int ANCHOR_BOTTOM_RIGHT        = 9;
//const int ANCHOR_CENTER_HORZ_BOTTOM  = 10;
//const int ANCHOR_CENTER_VERT         = 11;
//const int ANCHOR_CENTER_VERT_RIGHT   = 12;
//const int ANCHOR_CENTER              = 13;

const double PI = 3.141592653589793238462;
const double HalfPI = 1.5707963267948965;
const double PiDiv4 = 0.785398163397448;
const float Tension = 0.33f;

#define C_IMPORT EXTERN_C __declspec(dllimport)

C_IMPORT WCHAR*    zGetTempPath();
C_IMPORT WCHAR*    zExeName ();

C_IMPORT WCHAR*    ZD_GetObjectImageLabel (IN long ObjID);
C_IMPORT WCHAR*    ZI_SetSaveExtension (IN WCHAR* sExtension, IN long RW);
C_IMPORT WCHAR*    ZI_ChooseSaveFileName (IN HWND hDlg, IN WCHAR* sPicFile);
C_IMPORT WCHAR*    ZI_GetExifDTOrig (IN WCHAR* ImgName);
C_IMPORT WCHAR*    ZI_GetImageInfoString (IN LONG_PTR img, IN long nProperty);
C_IMPORT WCHAR*    ZI_SetLoadExtension (IN WCHAR* sExtension, IN long RW);
C_IMPORT WCHAR*    ZI_LoadSavePath (IN WCHAR* sPath, IN long RW);
C_IMPORT WCHAR*    ZI_LoadDialog (IN HWND hDlg);
C_IMPORT WCHAR*    ZI_Version();
C_IMPORT WCHAR*    zGetReg (IN HKEY hLocation, IN WCHAR* sSubKeys, IN WCHAR* sValueName);
C_IMPORT long      zSetReg (IN HKEY hLocation, IN WCHAR* SubKeys, IN WCHAR* sRegName, IN WCHAR* RegVal);

C_IMPORT long      INSTR(IN long fromPos, IN WCHAR* sMain, IN WCHAR* sSearch);
C_IMPORT long      LongVAL(IN WCHAR* sNum);
C_IMPORT double    FloatVAL(IN WCHAR* sNum);
C_IMPORT long      RegisterGLImageClass();
C_IMPORT long      RegisterGDImageClass();
C_IMPORT HINSTANCE zInstance();
C_IMPORT BOOL      zExist (IN WCHAR* sFileSpec);
C_IMPORT LONG_PTR  zGdipStart ();
C_IMPORT void      zGdipEnd (IN LONG_PTR hGDIplus);
C_IMPORT void      zSplitColorARGB (IN long ARGB, OUT BYTE &A, OUT BYTE &R, OUT BYTE &G, OUT BYTE &B);
C_IMPORT long      zStretchBlt (IN HDC hDCdst, IN long xDst, IN long yDst, IN long wDst, IN long hDst, IN HDC hDCsrc, IN long xSrc, IN long ySrc, IN long wSrc, IN long hSrc, IN long dwRop);
C_IMPORT HBITMAP   zCreateDIBSection (IN HDC hDC, IN long nWidth, IN long nHeight, IN long nBitCount);
C_IMPORT LONG_PTR  zLoadImageFromFile (IN WCHAR* sImgName, OUT long &imgW, OUT long &imgH, IN long nOrientation);
C_IMPORT void      zKeyBd_Event (IN BYTE K1, IN BYTE K2);
C_IMPORT void      zFocusBeep ();
C_IMPORT void      zDrawImage (IN HDC hDC, IN LONG_PTR Img, IN long x, IN long y, IN long xW, IN long yH);
C_IMPORT void      zAlphaBlend (IN HDC hDCdest, IN long xD, IN long yD, IN long wD, IN long hD, IN HDC hDCsrce, IN long xS, IN long yS, IN long wS, IN long hS);
C_IMPORT LONG_PTR  zBitmapToImage (IN HDC hDC);
C_IMPORT long      zFOpen (IN WCHAR* sFilName, IN long AccessMode, IN long ShareMode, OUT HANDLE &hFile);
C_IMPORT DWORD     zFlof (IN HANDLE hFile);
C_IMPORT long      zFGet (IN HANDLE hFile, OUT string &sBuffer);
C_IMPORT void      zFClose (OUT HANDLE &hFile);
C_IMPORT void      DrawGLSphere (IN float rRadius, IN long nFirst, IN long nLast);
C_IMPORT void      zSplitN (IN WCHAR* sFullName, OUT WCHAR* sPathName, OUT WCHAR* sFilName);
C_IMPORT long      zKillFile (IN WCHAR* sFullName);
C_IMPORT long      zSaveImageToFile (IN WCHAR* sPicFile, IN LONG_PTR Img, IN long nQuality);
C_IMPORT long      zGetCPUspeed ();
C_IMPORT BYTE      Rgb2Alpha (IN DWORD colrRGB);
C_IMPORT void      zCheckName(OUT WCHAR* sImgName);
C_IMPORT HWND      zClockCtrl (IN HWND hOwner, IN WCHAR* zFullpathImageName, IN long x, IN long y, IN long w, IN long h, IN long nID, IN long ARGB1, IN long ARGB2, IN long GMT);
C_IMPORT LONG_PTR  zCloneImage (IN LONG_PTR img);
C_IMPORT HWND      WGL_CreateWindow (IN DWORD dwExStyle, IN DWORD dwStyle, IN long x, IN long y, IN long nWidth, IN long nHeight, IN HWND hWndParent, IN HMENU CtrlID);

C_IMPORT void      GL_DrawCubeBackFace (IN long nTexture);
C_IMPORT void      GL_DrawCubeTopFace (IN long nTexture);
C_IMPORT void      GL_DrawCubeBottomFace (IN long nTexture);
C_IMPORT void      GL_DrawCubeRightFace (IN long nTexture);
C_IMPORT void      GL_DrawCubeLeftFace (IN long nTexture);
C_IMPORT void      GL_DrawCube (IN long nTexture);
C_IMPORT void      GL_DrawCylinder (IN float radius, IN float rValue, IN float R1, IN float R2, IN long nTexture);
C_IMPORT void      GL_DrawDisk (IN float radius, IN long nTexture);
C_IMPORT void      GL_DrawSphere (IN float radius, IN long nTexture);
C_IMPORT void      GL_DrawCubeFrontFace (IN long nTexture);
C_IMPORT void      GL_CreateContext (IN long nWidth, IN long nHeight);
C_IMPORT void      GL_DeleteContext (OUT HDC &hGLDC, OUT HGLRC &hGLRC);
C_IMPORT void      GL_AlphaBlend (IN HDC hDCdest, IN HDC hDCsrce);
C_IMPORT HDC       GL_GLDC ();
C_IMPORT HGLRC     GL_GLRC ();
C_IMPORT HDC       GL_CreateDrawingDC (IN long nWidth, IN long nHeight);
C_IMPORT void      GL_DrawText (IN HWND glWnd, IN ZGLFONT UseFont, IN float x, IN float y, IN float z, IN WCHAR* sTxt, IN long ARGB);
C_IMPORT long      GL_CreateFontTexture (IN HWND glWnd, IN WCHAR* sUseFont, IN long nFontSize, IN long ColrARGB);
C_IMPORT void      GL_ChartLabel (IN HWND glWnd, IN long UseFont, IN float rX, IN float rY, IN float rZ, IN WCHAR* sTxt);
C_IMPORT void      GL_ChartSymbol (IN HWND glWnd, IN long UseFont, IN float rX, IN float rY, IN float rZ, IN WCHAR* sTxt);
C_IMPORT float     GL_ChartGetTextLength (IN long UseFont, IN WCHAR* sTxt);
C_IMPORT void      GL_DrawCup (IN float rRadius, IN long nTexture);
C_IMPORT void      GL_DrawDome (IN float rRadius, IN long nTexture);
C_IMPORT long      GL_GetActiveTexture ();
C_IMPORT void      GL_TexSpec (IN long nMode);
C_IMPORT void      GL_Specular (IN long nMode);
C_IMPORT long      GL_GetSpecularMode ();
C_IMPORT void      GL_ChartAxisPanel (IN float rX, IN float rY, IN float rZ);
C_IMPORT void      GL_ChartRing (IN float RING_MINOR, IN float RING_MAJOR, IN float RING_MINOR_RES, IN float RING_MAJOR_RES);
C_IMPORT WCHAR*    GL_ChartGetFontName (IN long UseFont);
C_IMPORT void      GL_UseMouseManager (IN HWND hWnd);
C_IMPORT void      GL_ChartBar (IN float rX, IN float rY, IN float rZ);
C_IMPORT void      GL_ChartPyramide (IN float rX, IN float rZ);
C_IMPORT void      GL_Cylinder (IN float radiusBottom, IN float radiusTop, IN float height, IN long slices, IN long stacks, IN long UseOperculum);
C_IMPORT void      GL_ChartCylinder (IN float radius, IN float height, IN long slices, IN long stacks);
C_IMPORT void      GL_ChartCone (IN float radius, IN float height, IN long slices, IN long stacks);
C_IMPORT void      GL_DrawQuad (IN float x, IN float y, IN float z);
C_IMPORT void      GL_ChartAxis (IN float rX, IN float rY, IN float rZ);
C_IMPORT void      GL_ChartGetMousing (OUT float &rChartXoff, OUT float &rChartYoff, OUT float &rChartZoff, OUT float &rChartZoom, OUT float &rChartXrot, OUT float &rChartYrot);
C_IMPORT void      GL_ChartSetMousing (IN float rChartXoff, IN float rChartYoff, IN float rChartZoff, IN float rChartZoom, IN float rChartXrot, IN float rChartYrot);
C_IMPORT void      GL_ChartSphere (IN float rRadius, IN float rValue, IN long nCompile);
C_IMPORT void      GL_DeleteTextureFont (IN HWND hWnd);
C_IMPORT void      GL_BillBoard ();
C_IMPORT void      GL_ChartPoint (IN float Radius, IN float rValue);
C_IMPORT float     GL_ChartXoff (IN float rValue, IN long RW);
C_IMPORT float     GL_ChartYoff (IN float rValue, IN long RW);
C_IMPORT float     GL_ChartZoff (IN float rValue, IN long RW);
C_IMPORT float     GL_ChartXrot (IN float rValue, IN long RW);
C_IMPORT float     GL_ChartYrot (IN float rValue, IN long RW);
C_IMPORT float     GL_ChartZoom (IN float rValue, IN long RW);
C_IMPORT long      GL_MultiSampleARB ();

C_IMPORT BYTE      ZD_GetObjectFrameCount (IN long ObjID);
C_IMPORT void      ZD_SetObjectFrameCount (IN long ObjID, IN BYTE nCount);
C_IMPORT BYTE      ZD_GetObjectFrameToUse (IN long ObjID);
C_IMPORT void      ZD_SetObjectFrameToUse (IN long ObjID, IN long nFrameToUse, IN long RedrawParent);
C_IMPORT long      ZD_ComputeObjectAngleFromPoint (IN long nObjectID, IN long mX, IN long mY);
C_IMPORT long      ZD_GetObjectLinked (IN long ObjID);
C_IMPORT void      ZD_SetObjectLinked (IN long ObjID, IN long LinkedID);
C_IMPORT void      ZD_MoveLinkedObject (IN long ObjID, IN long x, IN long y, IN long RedrawParent);
C_IMPORT void      ZD_RemoveRedEyeFromBitmapObject (IN long nObjectID, IN long xEye, IN long yEye, IN long EyeWidth, IN long EyeHeight);
C_IMPORT void      ZD_ShowObjectList (IN long* IDlist, IN long ArraySize, IN BYTE ShowOrHide);
C_IMPORT BYTE      ZD_GetObjectBrightness (IN long ObjID);
C_IMPORT void      ZD_SetObjectBrightness (IN long ObjID, IN BYTE Brightness, IN long RedrawParent);
C_IMPORT BYTE      ZD_GetObjectContrast (IN long ObjID);
C_IMPORT void      ZD_SetObjectContrast (IN long ObjID, IN BYTE Contrast, IN long RedrawParent);
C_IMPORT BYTE      ZD_GetObjectRed (IN long ObjID);
C_IMPORT void      ZD_SetObjectRed (IN long ObjID, IN BYTE nRed, IN long RedrawParent);
C_IMPORT BYTE      ZD_GetObjectGreen (IN long ObjID);
C_IMPORT void      ZD_SetObjectGreen (IN long ObjID, IN BYTE nGreen, IN long RedrawParent);
C_IMPORT BYTE      ZD_GetObjectBlue (IN long ObjID);
C_IMPORT void      ZD_SetObjectBlue (IN long ObjID, IN BYTE nBlue, IN long RedrawParent);
C_IMPORT BYTE      ZD_GetObjectHue (IN long ObjID);
C_IMPORT void      ZD_SetObjectHue (IN long ObjID, IN BYTE nHue, IN long RedrawParent);
C_IMPORT HBITMAP   ZD_RenderEffectToBitmapObject (IN long nObjectID, IN long nRedrawParent);
C_IMPORT long      ZD_TwinObject (IN long IDtoTwin, IN long TwinID, IN long x, IN long y);
C_IMPORT long      ZD_CloneObject (IN long IDtoClone, IN long CloneID, IN long x, IN long y);
C_IMPORT void      ZD_SetObjectScale (IN long ObjID, IN float ScaleValue);
C_IMPORT float     ZD_GetObjectScale (IN long ObjID);
C_IMPORT void      ZD_SetStringFormat (IN long ObjID, IN long StrFormat, IN long RedrawParent);
C_IMPORT long      ZD_GetStringFormat (IN long ObjID);
C_IMPORT BYTE      ZD_GetObjectAlpha (IN long ObjID);
C_IMPORT void      ZD_FlipObjectX (IN long nID);
C_IMPORT void      ZD_FlipObjectY (IN long nID);
C_IMPORT void      ZD_SetObjectFlipMode (IN long ObjID, IN long nOrientation);
C_IMPORT void      ZD_ReplaceObjectBitmap (IN HBITMAP hBitmap, IN long ObjID, IN long RedrawParent);
C_IMPORT long      ZD_GetObjectRotation (IN long ObjID);
C_IMPORT void      ZD_RotateObjectCounterclock90 (IN long ObjID);
C_IMPORT void      ZD_RotateObjectClockWise90 (IN long ObjID);
C_IMPORT long      ZD_GetObjectType (IN long ObjID);
C_IMPORT void      ZD_SetObjectType (IN long ObjID, IN long ObjectType);
C_IMPORT long      ZD_GetObjectAngle (IN long ObjID);
C_IMPORT void      ZD_SetObjectAngle (IN long ObjID, IN long AngleDegree, IN long RedrawParent);
C_IMPORT long      ZD_GetObjectQuality (IN long ObjID);
C_IMPORT void      ZD_SetObjectQuality (IN long ObjID, IN long nQuality, IN long RedrawParent);
C_IMPORT void      ZD_SetObjectClone (IN long ObjID, IN long CloneID);
C_IMPORT long      ZD_GetObjectClone (IN long ObjID);
C_IMPORT HBITMAP   ZD_SetObjectBitmapFromFile (IN WCHAR* sImgName, IN long ObjID, IN long RedrawParent);
C_IMPORT void      ZD_SetObjectBitmapFromBitmap (IN HBITMAP hBitmap, IN long ObjID, IN long RedrawParent);
C_IMPORT HBITMAP   ZD_CreateBitmapFromText (IN WCHAR* sUseText, IN WCHAR* sUseFont, IN long UseSize, IN long ColrARGB, IN short Use3D, IN long UseStrFormat);
C_IMPORT void      ZD_SetObjectUse3Dshadow (IN long ObjID, IN short Use3D);
C_IMPORT short     ZD_GetObjectUse3Dshadow (IN long ObjID);
C_IMPORT HBITMAP   ZD_GetObjectBitmap (IN long ObjID);
C_IMPORT void      ZD_GetObjectProperties (IN long nID, OUT ZOBJECT &zDetail);
C_IMPORT void      ZD_SetObjectProperties (IN long nID, IN ZOBJECT zDetail);
C_IMPORT void      ZD_GetObjectXYcapture (IN long ObjID, OUT long &x, OUT long &y);
C_IMPORT void      ZD_CopyToBackground (IN HWND hWnd, IN long ID, IN long BoolClear, IN long RGBColor);
C_IMPORT long      ZD_IsObjectHidden (IN long ObjID);
C_IMPORT void      ZD_SetObjectHidden (IN long ObjID, IN BYTE OnOff);
C_IMPORT long      ZD_ObjectMouseCaptured ();
C_IMPORT void      ZD_SetObjectImageLabel (IN long ObjID, IN WCHAR* sUseText);
C_IMPORT void      ZD_SetObjectScroll (IN long ObjID, IN long TrueFalse);
C_IMPORT long      ZD_GetObjectScroll (IN long ObjID);
C_IMPORT void      ZD_SetObjectLocked (IN long ObjID, IN long TrueFalse);
C_IMPORT long      ZD_GetTextBound (IN WCHAR* sUseText, IN WCHAR* sUseFont, IN long UseSize, OUT long &TextWidth, OUT long TextHeight, IN long UseStrFormat);
C_IMPORT long      ZD_DrawTextToDC (IN HDC hDC, IN WCHAR* sUseText, IN long x, IN long y, IN long ColrARGB, 
                                   IN WCHAR* sUseFont, IN long UseSize, IN short Use3D, IN long UseStrFormat);
C_IMPORT long      ZD_SetObjectText (IN long ObjID, IN WCHAR* sUseText);
C_IMPORT long      ZD_SetObjectTextEx (IN long ObjID, IN WCHAR* sUseText, IN long RedrawParent);
C_IMPORT long      ZD_DrawTextToCtrl (IN HWND hCtrl, IN WCHAR* sUseText, IN long x, IN long y, IN long ColrARGB,
                                      IN WCHAR* sUseFont, IN long UseSize, IN long ObjID, IN long ZS_STYLE, IN short Use3D, IN long UseStrFormat);
C_IMPORT long      ZD_DrawTextToCtrlEx (IN HWND hCtrl, IN WCHAR* sUseText, IN long x, IN long y, IN long w, IN long h, IN long ColrARGB,
                                        IN WCHAR* sUseFont, IN long UseSize, IN long ObjID, IN long ZS_STYLE, IN short Use3D, IN long UseStrFormat);
C_IMPORT long      ZD_DrawRectangleToCtrl (IN HWND hCtrl, IN long ox1, IN long oy1, IN long ox2, IN long oy2, IN long ColrARGB, 
                                          IN long BorderSize, IN long ObjID, IN long ZS_STYLE, IN long ZD_STYLE, IN short Use3D);
C_IMPORT long      ZD_DrawArrowToCtrl (IN HWND hCtrl, IN long ox1, IN long oy1, IN long ox2, IN long oy2, IN long ColrARGB,
                                      IN long BorderSize, IN long ObjID, IN long ZS_STYLE, IN long ZD_STYLE, IN short Use3D);
C_IMPORT long      ZD_DrawEllipseToCtrl (IN HWND hCtrl, IN long ox1, IN long oy1, IN long ox2, IN long oy2, IN long ColrARGB,
                                        IN long BorderSize, IN long ObjID, IN long ZS_STYLE, IN long ZD_STYLE, IN short Use3D);
C_IMPORT long      ZD_DrawBitmapToCtrl (IN HWND hCtrl, IN long ox1, IN long oy1, IN HBITMAP hBitmap, IN long ColrARGB, IN long ObjID, IN long ZS_STYLE);
C_IMPORT long      ZD_DrawTextBitmapToCtrl (IN HWND hCtrl, IN long ox1, IN long oy1, IN HBITMAP hBitmap, IN long ColrARGB, IN long ObjID, IN long ZS_STYLE);
C_IMPORT long      ZD_DrawCurveToCtrl (IN HWND hCtrl, IN POINTS* pXY, IN long ArraySize, 
                                      IN long ColrARGB, IN long BorderSize, IN long ObjID, IN long ZS_STYLE, IN long ZD_STYLE, IN short Use3D);
C_IMPORT long      ZD_DrawPolyLineToCtrl (IN HWND hCtrl, IN POINTS* pXY, IN long ArraySize, 
                                         IN long ColrARGB, IN long BorderSize, IN long ObjID, IN long ZS_STYLE, IN long ZD_STYLE, IN short Use3D);
C_IMPORT HWND      ZD_GetObjectParent (IN long ObjID);
C_IMPORT void      ZD_GetObjectXY (IN long ObjID, OUT long &x, OUT long &y);
C_IMPORT void      ZD_SetObjectXY (IN long ObjID, IN long x, IN long y, IN long RedrawParent);
C_IMPORT void      ZD_GetObjectBound (IN long ObjID, OUT long &BoundWidth, OUT long &BoundHeight);
C_IMPORT void      ZD_GetObjectARGB (IN long ObjID, OUT BYTE &A, OUT BYTE &R, OUT BYTE &G, OUT BYTE &B);
C_IMPORT long      ZD_GetObjectARGBcolor (IN long ObjID);
C_IMPORT void      ZD_GetObjectARGB (IN long ObjID, OUT BYTE &A, OUT BYTE &R, OUT BYTE &G, OUT BYTE &B);
C_IMPORT void      ZD_SetObjectARGBcolor (IN long ObjID, IN long UseARGB);
C_IMPORT void      ZD_SetObjectARGB (IN long ObjID, IN BYTE A, IN BYTE R, IN BYTE G, IN BYTE B);
C_IMPORT void      ZD_SetObjectAlpha (IN long ObjID, IN BYTE Alpha, IN long RedrawParent);
C_IMPORT void      ZD_ShowObject (IN long ObjID, IN long ShowOrHide);
C_IMPORT void      ZD_SetObjectVisibility (IN long ObjID, IN long ShowOrHide);
C_IMPORT long      ZD_IsObjectVisible (IN long ObjID);
C_IMPORT long      ZD_GetObjectStyle (IN long ObjID);
C_IMPORT void      ZD_SetObjectStyle (IN long ObjID, IN long UseStyle);
C_IMPORT long      ZD_GetObjectZorder (IN long ObjID);
C_IMPORT long      ZD_GetItemObjectAndColorAtXY (IN HWND hGDImageCtrl, IN long lpx, IN long lpy, OUT long &RGBcolor);
C_IMPORT long      ZD_GetBitmapObjectBits (IN long ObjID, LPVOID lpArray);
C_IMPORT long      ZD_SetBitmapObjectBits (IN long ObjID, LPVOID lpArray);
C_IMPORT long      ZD_GetObjectFlipMode (IN long ObjID);
C_IMPORT long      ZD_SetObjectZorder (IN long ObjID, IN long SetOrder);
C_IMPORT long      ZD_PolyPolygon (IN HWND hCtrl, IN ZPOLYGON* zp, IN long PolygonCount);
C_IMPORT long      ZD_StretchBlt (IN HDC hDCdst, IN long xDst, IN long yDst, IN long wDst, IN long hDst, IN HDC hDCsrc, IN long xSrc, IN long ySrc, IN long wSrc, IN long hSrc);
C_IMPORT void      ZD_DeleteObject (IN long ID);
C_IMPORT long      ZD_SetObjectAnchorMode (IN long nObjID, IN long AnchorMode);
C_IMPORT long      ZD_GetObjectLocked (IN long ObjID);
C_IMPORT long      ZD_GetObjectSelected (IN long ObjID);
C_IMPORT void      ZD_SetObjectSelected (IN long ObjID, IN long OnOff, IN long RedrawParent);    
C_IMPORT void      ZD_ChangeTextFontSize (IN HWND hCtrl, IN long ObjID, IN long UseSize);
C_IMPORT void      ZD_FillRect (IN HDC hDC, IN long x, IN long y, IN long xW, IN long yH, IN long RGBcolor);
C_IMPORT long      ZD_ColorARGB (IN BYTE Alpha, IN DWORD ColrRGB);
C_IMPORT long      ZD_ARGB (IN BYTE A, IN BYTE R, IN BYTE G, IN BYTE B);
C_IMPORT DWORD     ZD_DoEvents ();
C_IMPORT long      ZD_UpdatePoints (IN long ObjectType, IN HWND hCtrl, IN long nID, IN POINTS* pXY, IN long ArraySize);

C_IMPORT long      ZI_LoadDLL (IN WCHAR* sUserName);
C_IMPORT long      ZI_CreateSkinBackgroundEx (IN WCHAR* sImageDest, IN long rwX, IN long rwY, IN WCHAR* sUseBackground, IN WCHAR* sSkinFolder,
                                             IN long UseStretchMode, IN long IsResizable, IN long nOverlayColor);
C_IMPORT long      ZI_CreateSkinBackground (IN WCHAR* sImageDest, IN long rwX, IN long rwY, IN WCHAR* sUseBackground, IN WCHAR* sSkinFolder);
C_IMPORT long      ZI_SetImageFileOrientation (IN WCHAR* sImageSrce, IN long nOrientation);
C_IMPORT LONG_PTR  ZI_SetImageAttributesHue (IN BYTE Hue);
C_IMPORT HBITMAP   ZI_CreateDIBSection (IN HDC hDC, IN long nWidth, IN long nHeight, IN long BitCount);
C_IMPORT void      ZI_RemoveRedEye (IN HDC hDC, IN long x, IN long y, IN long UseWidth, IN long UseHeight);
C_IMPORT void      ZI_CreateTextObject (OUT ZOBJECT &zObj, IN WCHAR* sUseText, IN long x, IN long y, IN long xW, IN long yH, IN long ColrARGB,
                                       IN WCHAR* sUseFont, IN long UseSize, IN long ZS_STYLE, IN short Use3D, IN long UseStrFormat);
C_IMPORT void      ZI_CreateCurveObject (OUT ZOBJECT &zObj, IN POINTS* pXY, IN long ArraySize, IN long ColrARGB, IN long BorderSize, IN long ZS_STYLE, IN long ZD_STYLE, IN short Use3D);
C_IMPORT void      ZI_CreatePolyLineObject (OUT ZOBJECT &zObj, IN POINTS* pXY, IN long ArraySize, IN long ColrARGB, IN long BorderSize, IN long ZS_STYLE, IN long ZD_STYLE, IN short Use3D);
C_IMPORT HBITMAP   ZI_CreateImageComposited (IN WCHAR* sImageDest, IN long rwX, IN long rwY, IN ZOBJECT* pSprite, IN long N);;
C_IMPORT long      ZI_GetImageInfoCount (IN LONG_PTR img);
C_IMPORT long      ZI_RemoveImageInfoProperty (IN LONG_PTR img, IN long nID);
C_IMPORT long      ZI_UpdateNamedGLTextureFromFileEx (IN WCHAR* sFullName, IN long NamedTexture, IN long nSquareMode);
C_IMPORT void      ZI_ReplaceARGBColorBitmap (IN HBITMAP hBmp, IN long WasARGB, IN long NewARGB);
C_IMPORT void      ZI_GetDefaultPrinter (OUT WCHAR* &sDriver, OUT WCHAR* &sDevice, OUT WCHAR* &sPort);
C_IMPORT long      ZI_PrintImage (IN HWND hGDImageCtrl);
C_IMPORT long      ZI_PrintFull (IN HWND hGDImageCtrl);
C_IMPORT void      ZI_SlidePlayIncrOrder ();
C_IMPORT void      ZI_SlidePlayDecrOrder ();
C_IMPORT void      ZI_SlidePlay ();
C_IMPORT void      ZI_SlidePause ();
C_IMPORT void      ZI_SlideStop ();
C_IMPORT void      ZI_SlideAnimate (IN HWND hCtrl, IN ZSLIDESHOW* ipt, IN long ImageCount, IN BYTE LoopMode);
C_IMPORT long      ZI_FontBox (IN HWND hParent, IN WCHAR* sCaption, OUT WCHAR* &sUseText, OUT WCHAR* &sUseFont, OUT long &UseSize, OUT long &UseARGB, OUT long &Use3D);
C_IMPORT HBITMAP   ZI_CreateBitmapFromImage (IN LONG_PTR hImage);
C_IMPORT long      ZI_ApplyEffectToFile (IN WCHAR* sImageSrce, IN ZOBJECT zObj, IN WCHAR* sImageDest);
C_IMPORT HWND      ZI_CreateDW (IN HWND hParent);
C_IMPORT void      ZI_DestroyDW (IN HWND hDW);
C_IMPORT void      ZI_ImageTilePaint (IN LONG_PTR graphics, IN LONG_PTR img, IN long xOffset, IN long yOffset, IN long nPaintWidth, IN long nPaintHeight);
C_IMPORT void      ZI_ComputeAspect (IN long xPic, IN long yPic, IN long xCell, IN long yCell, OUT long &xP, OUT long &yP, OUT long &xS, OUT long &yS);
C_IMPORT long      ZI_SIZEL (IN long nSize, IN long RW);
C_IMPORT long      ZI_SIZET (IN long nSize, IN long RW);
C_IMPORT long      ZI_SIZER (IN long nSize, IN long RW);
C_IMPORT long      ZI_SIZEB (IN long nSize, IN long RW);
C_IMPORT long      ZI_CenterDialog (IN long nFlag, IN long RW);
C_IMPORT long      ZI_SaveLayersDialog (IN HWND hDlg, IN HWND hCtrl, IN long nQuality, IN long Rotation, IN long UseWidth, IN long UseHeight);
C_IMPORT long      ZI_GetCtrlObjectCount (IN HWND hParent);
C_IMPORT void      ZI_SetToolTipText (IN HWND hObj, IN WCHAR* sText);
C_IMPORT HWND      ZI_CreateToolTip (IN HWND hObj, IN WCHAR* sText);
C_IMPORT long      ZI_CreateSpriteFileFromBitmap (IN WCHAR* sPicFile, IN HBITMAP BmpSrce, IN long UseSize, IN long JpegQuality);
C_IMPORT void      ZI_EventMessageEx (IN HWND hWnd, IN LONG_PTR pCodePtr, IN long nMsg, IN long SetReset);
C_IMPORT long      ZI_FitImageToPaper (IN WCHAR* sImageSrce, IN long nPaperW, IN long nPaperH, IN WCHAR* sCropedImageDest);
C_IMPORT void      ZI_SetObjectFocusID (IN long CursorOverObject);
C_IMPORT void      ZI_SetCtrlEmptyBitmap (IN HWND hWnd, IN long RGBcolor);
C_IMPORT void      ZI_DestroyTexture (IN ZGLTEXTUREX* mt, IN long mtCount);
C_IMPORT HBITMAP   ZI_FitImageFromFile (IN WCHAR* sFilName, IN long Xin, IN long Yin);
C_IMPORT long      ZI_CreateGLTextureFromFile (IN WCHAR* sFullPath, OUT long &xSize, OUT long &ySize, OUT BYTE* &lpArray);
C_IMPORT long      ZI_SetGLTextureFromFile (IN WCHAR* sFullName);
C_IMPORT void      ZI_InitGLControl (IN long ARGB);
C_IMPORT void      ZI_BuildGLfont (IN HDC hDC, ZGLFONT UseFont);
C_IMPORT void      ZI_DeleteGLFont (IN ZGLFONT UseFont);
C_IMPORT void      ZI_DrawGLText (IN HWND glWnd, IN ZGLFONT UseFont, IN long x, IN long y, IN WCHAR* sTxt, IN long ARGB);
C_IMPORT void      ZI_UseGLPolarView (IN float radius, IN float twist, IN float latitude, IN float longitude);
C_IMPORT void      ZI_UseGLPanoramaView (IN float latitude, IN float longitude);
C_IMPORT long      ZI_GetGLzoom (IN HWND hWnd);
C_IMPORT void      ZI_SetGLzoom (IN HWND hWnd, IN long nFovy);
C_IMPORT long      ZI_MoveToTray (IN WCHAR* sFileName);
C_IMPORT void      ZI_ResizeGLWindow (IN HWND hWnd);
C_IMPORT void      ZI_UpdateGLWindow (IN HWND hWnd);
C_IMPORT void      ZI_GetGLTextExtentFromDC (IN HDC hDC, ZGLFONT UseFont, IN WCHAR* sText, OUT long &stWidth, OUT long &stHeight);
C_IMPORT void      ZI_GetGLTextExtent (IN HWND glWnd, ZGLFONT UseFont, IN WCHAR* sText, OUT long &stWidth, OUT long &stHeight);
C_IMPORT void      ZI_glColor4ub (IN long ARGB);
C_IMPORT long      ZI_UpdateNamedGLTextureFromFile (IN WCHAR* sFullName, IN long NamedTexture);
C_IMPORT void      ZI_ReplaceRGBColor (IN HDC hDC, IN long WasColor, IN long NewColor);
C_IMPORT void      ZI_ReplaceRGBColorBitmap (IN HBITMAP hBmp, IN long WasColor, IN long NewColor);
C_IMPORT HBITMAP   ZI_CropBitmap (IN HBITMAP hBmp, IN long x, IN long y, IN long w, IN long h, IN long FlipReverse);
C_IMPORT long      ZI_RenderLayersToFile (IN HWND hWnd, IN WCHAR* sPicFile, IN long nQuality, IN long Rotation, IN long UseWidth, IN long UseHeight);
C_IMPORT void      ZI_SetFontBoxParameters (IN long SquareSize, IN long MaxFontSize, IN long TextCharLength);
C_IMPORT long      ZI_MouseHoverBoundID ();
C_IMPORT long      ZI_GetObjectFocusID ();
C_IMPORT long      ZI_GetMovingSpriteItem ();
C_IMPORT long      ZI_GetMovingSpriteID ();
C_IMPORT HBITMAP   ZI_FitImageFrom32Bit (IN WCHAR* sImgName, IN long UseW, IN long UseH);
C_IMPORT HBITMAP   ZI_FitBitmapFromFile (IN WCHAR* sFullPath, IN long Xin, IN long Yin);
C_IMPORT void      ZI_DoNotSquareTexture ();
C_IMPORT long      ZI_CreateGLTextureFrom32Bit (IN WCHAR* sFullPath, OUT long &xSize, OUT long &ySize, OUT BYTE* &lpArray);
C_IMPORT HDC       ZI_GetGLDC (IN HWND hWnd);
C_IMPORT HGLRC     ZI_GetGLRC (IN HWND hWnd);
C_IMPORT long      ZI_CreateGLTextureFromFileEX (IN WCHAR* sImgName, OUT long &Xin, OUT long &Yin, OUT BYTE* &lpArray, IN long SquareTexture);
C_IMPORT void      ZI_MakeMultipleTexture (IN ZGLTEXTUREX* mt, IN long mtCount);
C_IMPORT HBITMAP   ZI_ResizeBitmapFromBitmap (IN HBITMAP BmpSrce, IN long xDest, IN long yDest);
C_IMPORT long      ZI_GetToolCropStatus (IN HWND hWnd);
C_IMPORT void      ZI_EnableCropRectangle (IN HWND hWnd);
C_IMPORT void      ZI_EnableCropRedEye (IN HWND hWnd);
C_IMPORT void      ZI_DisableAllTools (IN HWND hWnd);
C_IMPORT void      ZI_GetCropCoordinates (OUT long &x, OUT long &y, OUT long &UseWidth, OUT long &UseHeight);
C_IMPORT void      ZI_SetCropPopupText (IN WCHAR* sMenu);
C_IMPORT HBITMAP   ZI_RenderLayersToBitmap (IN HWND hWnd);
C_IMPORT HBITMAP   ZI_CropWindowToBitmap (IN HWND hWnd, IN long x, IN long y, IN long w, IN long h);
C_IMPORT long      ZI_ObjectSelected (IN HWND hGDImageCtrl);
C_IMPORT long      ZI_SelectedCount (IN HWND hGDImageCtrl);
C_IMPORT HDC       ZI_Create32bitDC (IN long nWidth, IN long nHeight, IN long ARGBcolor);
C_IMPORT LONG_PTR  ZI_RemapImageColor (IN long nColorFrom, IN long nColorTo);
C_IMPORT LONG_PTR  ZI_RemapAlphaColor (IN long nColorFrom, IN long nColorTo);
C_IMPORT void      ZI_DrawAlphaBlend (IN HDC hDCdest, IN long xDest, IN long yDest, IN WCHAR* sImage, IN WCHAR* sMask);
C_IMPORT long      ZI_CreateVariableOpacityPNG (IN WCHAR* sInputName, IN WCHAR* sOutputName);
C_IMPORT HBITMAP   ZI_CreateVariableOpacityBitmap (IN WCHAR* sInputName, OUT long &imgW, OUT long &imgH);
C_IMPORT void      ZI_RotateImage (IN HDC hDC, IN LONG_PTR Img, IN long x, IN long y, IN long AngleDegree, IN BYTE Alpha);
C_IMPORT void      ZI_RenderImageRotationToWindow (IN HWND hWnd, IN LONG_PTR Img, IN long x, IN long y, IN long AngleDegree, IN BYTE UseAlpha);
C_IMPORT HBITMAP   ZI_RenderRotationFromImageToBitmap (IN HBITMAP BmpSrce, IN LONG_PTR Img, IN long AngleDegree, IN BYTE UseAlpha);
C_IMPORT long      ZI_SaveToFile (IN WCHAR* sPicFile, IN HWND hCtrl, IN long nQuality);
C_IMPORT void      ZI_SetZoomScrollInfo (IN HWND hWnd, IN float OldZoomValue, IN float ZoomValue);
C_IMPORT void      ZI_EventMessage (IN LONG_PTR pCodePtr, IN long nMsg, IN long SetReset);
C_IMPORT long      ZI_ColorCount (IN HWND hWnd);
C_IMPORT HBITMAP   ZI_LoadFromResource (IN HWND hWnd, IN WCHAR* sName);
C_IMPORT long      ZI_LoadImageFromStream (IN HWND hWnd, IN BYTE* pBufferData, IN long BufferSize);
C_IMPORT LONG_PTR  ZI_ImageFromResource (IN HMODULE nInstance, IN WCHAR* sName);
C_IMPORT HBITMAP   ZI_LoadBitmap (IN WCHAR* sName);
C_IMPORT LONG_PTR  ZI_SetImageAlpha (IN BYTE Alpha);
C_IMPORT long      ZI_GetDIBits (IN HDC hDC, LPVOID lpArray);
C_IMPORT long      ZI_SetDIBits (IN HDC hDC, LPVOID lpArray);
C_IMPORT HBITMAP   ZI_CreateBitmapFromFile (IN WCHAR* sImgName, OUT long &imgW, OUT long &imgH);
C_IMPORT HBITMAP   ZI_ResizeBitmapFromFile (IN WCHAR* sImgName, IN long UseW, IN long UseH);
C_IMPORT long      ZI_SetFromFileEx (IN HWND hCtrl, IN WCHAR* sFileName, IN long nUseW, IN long nUseH);
C_IMPORT void      ZI_DisableAlphaCoef ();
C_IMPORT void      ZI_EnableAlphaCoef ();
C_IMPORT HBITMAP   ZI_CreateMirrorBitmapFromFile (IN WCHAR* sImgName, OUT long &imgW, OUT long &imgH);
C_IMPORT HDC       ZI_CreateImageBackgroundEx (IN HWND hWnd, IN long imgW, IN long imgH, IN long UseColor, IN long  BitPerPixel);
C_IMPORT HDC       ZI_CreateImageBackground (IN HWND hWnd, IN long imgW, IN long imgH);
C_IMPORT LONG_PTR  ZI_CreateImageFromFile (IN WCHAR* sImgName, OUT long &imgW, OUT long imgH, IN long RemoveARGBColor, IN long ARGBColorToRemove);
C_IMPORT void      ZI_DeleteImageObject (OUT LONG_PTR &img);
C_IMPORT long      ZI_SetTiledBackground (IN HWND hWnd, IN HBITMAP UseBitmap);
C_IMPORT HBITMAP   ZI_GetTiledBackground (IN HWND hWnd);
C_IMPORT void      ZI_UseWinLIFTbackground (IN HWND hWnd, IN long nUseBack, IN long RedrawParent);
C_IMPORT long      ZI_SetCtrlBitmapBackground (IN HWND hWnd, IN HBITMAP hBmp);
C_IMPORT long      ZI_ClipboardCopy (IN HWND hWnd);
C_IMPORT long      ZI_PutBitmapToClipboard (IN HBITMAP ThisBitmap);
C_IMPORT long      ZI_SaveBitmapToFile (IN WCHAR* sPicFile, IN HBITMAP hBitmap, IN long nQuality);
C_IMPORT long      ZI_ClipboardPaste (IN HWND hWnd);     
C_IMPORT void      ZI_CreateBitmapObject (OUT ZOBJECT &zObjItem, IN long ox1, IN long oy1, IN HBITMAP hBitmap, IN long ColrARGB, IN long ZS_STYLE);
C_IMPORT void      ZI_CreateRectangleObject (OUT ZOBJECT &zObjItem, IN long ox1, IN long oy1, IN long ox2, IN long oy2,
                                            IN long ColrARGB, IN long BorderSize, IN long ZS_STYLE, IN long ZD_STYLE, IN short Use3D);
C_IMPORT void      ZI_CreateArrowObject (OUT ZOBJECT &zObjItem, IN long ox1, IN long oy1, IN long ox2, IN long oy2,
                                       IN long ColrARGB, IN long BorderSize, IN long ZS_STYLE, IN long ZD_STYLE, IN short Use3D);
C_IMPORT void      ZI_CreateEllipseObject (OUT ZOBJECT &zObjItem, IN long ox1, IN long oy1, IN long ox2, IN long oy2,
                                          IN long ColrARGB, IN long BorderSize, IN long ZS_STYLE, IN long ZD_STYLE, IN short Use3D);
C_IMPORT void      ZI_SetSaveDialogMsg (IN WCHAR* sCaptionLoad, IN WCHAR* sCaptionSave, IN WCHAR* sDefaultName);
C_IMPORT long      ZI_SetAnchorMode (IN HWND hWnd, IN long AnchorMode);
C_IMPORT long      ZI_ConvertToGray (IN HDC hDC);
C_IMPORT void      ZI_ClearObjectSelected (IN HWND hGDImageCtrl);
C_IMPORT long      ZI_GetManualSelection ();
C_IMPORT void      ZI_SetManualSelection (IN long nMode);
C_IMPORT HWND      ZI_CreateWindowFromImage (IN long nStyle, IN WCHAR* sImgName, IN long x, IN long y, IN HWND hParent, IN HMENU UseID, IN long nStyleEx, IN long UseTransColor);
C_IMPORT void      ZI_GetImageSizeFromFile (IN WCHAR* sImgName, OUT long &imgW, OUT long &imgH);
C_IMPORT long      ZI_SetLayeredAlpha (IN HWND hWnd, IN BYTE TransLevel);
C_IMPORT void      ZI_DrawObject (IN HDC hDC, IN ZOBJECT zObjItem, IN long InPrintMode);
C_IMPORT long      ZI_GetXscroll (IN HWND hWnd);
C_IMPORT long      ZI_GetYscroll (IN HWND hWnd);
C_IMPORT void      ZI_DrawObject (IN HDC hDC, IN ZOBJECT zObjItem, IN long InPrintMode);
C_IMPORT long      ZI_BoostSprite (IN long nFlag, IN long RW);
C_IMPORT long      ZI_TransparentColor (IN long nFlag, IN long RW);
C_IMPORT void      ZI_RenderAttributes (IN HDC hDCdest, IN long xD, IN long yD, IN long wD, IN long hD,
                                       IN HDC hDCsrce, IN long xS, IN long yS, IN long wS, IN long hS,
                                       IN BYTE nAlpha, IN ZOBJECT zObjItem);
C_IMPORT void      ZI_AlphaBlend (IN HDC hDCdest, IN long xDest, IN long yDest, IN long nWidth, IN long nHeight, 
                                 IN HDC hDCsrce, IN long xCurrentScroll, IN long yCurrentScroll);
C_IMPORT void      ZI_ReleaseCapture ();
C_IMPORT void      ZI_DeleteCtrlObject (IN HWND hWnd);
C_IMPORT long      ZI_MouseOverObjectID ();
C_IMPORT HBITMAP   ZI_GetBitmapFromDC(IN HDC hDC);
C_IMPORT long      ZI_DeleteControlBitmap (IN HWND hWnd);
C_IMPORT void      ZI_Iconise (IN long xPicSize, IN long yPicSize, IN long xCell, IN long yCell, OUT long &xPos, OUT long &yPos, OUT long &xSize, OUT long &ySize);
C_IMPORT void      ZI_SetZoomValue (IN HWND hWnd, IN float rV);
C_IMPORT float     ZI_GetZoomValue(IN HWND hWnd);
C_IMPORT void      ZI_AlphaBlendEx (IN HDC hDCdest, IN long xDest, IN long yDest, IN long wDest, IN long hDest,
                                   IN HDC hDCsrce, IN long xSrce, IN long ySrce, IN long wSrce, IN long hSrce,
                                   IN BYTE Alpha, IN long AngleDegree, IN long nQuality);
C_IMPORT long      ZI_IsKeyDown (IN long CheckKey);
C_IMPORT long      ZI_IsAnyArrowPressed ();
C_IMPORT long      ZI_IsShiftKeyPressed ();
C_IMPORT long      ZI_IsCtrlKeyPressed ();
C_IMPORT long      ZI_IsLButtonDown ();
C_IMPORT long      ZI_IsRButtonDown ();
C_IMPORT HWND      ZI_CreateWindow (IN HWND hParent, IN long x, IN long y, IN long xW, IN long yH, IN HMENU ControlID);
C_IMPORT LONG_PTR  ZI_CreateImageFromBitmap (IN HBITMAP hBmp);
C_IMPORT long      ZI_IsTrialVersion ();
C_IMPORT void      ZI_DisableCropRectangle (IN HWND hWnd);
C_IMPORT void      ZI_UpdateWindow (IN HWND hWnd, IN long nFlag);
C_IMPORT void      ZI_DisableCropRectangle (IN HWND hWnd);
C_IMPORT void      ZI_SetFromFile (IN HWND hCtrl, IN WCHAR* sUseText);
C_IMPORT long      ZI_GetImageFrameCount (IN LONG_PTR lpImg);
C_IMPORT void      ZI_UpdateWindow (IN HWND hWnd, IN long nFlag);
C_IMPORT void      ZI_DisableCropRectangle (IN HWND hWnd);
C_IMPORT LONG_PTR  ZI_CreateMultiFrameImage (IN LONG_PTR lpImg, IN long nUseBit, IN long nFit);
C_IMPORT void      ZI_GradientPaintDC (IN HDC hDC, IN long x, IN long y, IN long xW, IN long yH, IN long TopRGB, IN long BottomRGB);
C_IMPORT void      ZI_SetProperty (IN HWND hWnd, IN long nItem, IN LONG_PTR nValue);
C_IMPORT LONG_PTR  ZI_GetProperty (IN HWND hWnd, IN long nItem);
C_IMPORT void      ZI_GetBitmapSize (IN HBITMAP hBmp, OUT long &xWidth, OUT long &yHeight);
C_IMPORT HBITMAP   ZI_GetBMP (IN HWND hWnd);
C_IMPORT void      ZI_GetImageSizeFromControl (IN HWND hWnd, OUT long &imgW, OUT long &imgH);
C_IMPORT HBITMAP   ZI_GetPaintBitmap (IN HWND hWnd);
C_IMPORT HDC       ZI_GetPaintDC (IN HWND hWnd);
C_IMPORT HDC       ZI_GetDC (IN HWND hWnd);
C_IMPORT long      ZI_GetImageInfoList (IN LONG_PTR img, IN long numOfProperty, OUT DWORD* ArrayList);
C_IMPORT long      ZI_GetImageInfoProperty (IN LONG_PTR img, IN ULONG nID, IN ULONG nLength, OUT MyPropertyItem* buffer);
C_IMPORT long      ZI_SetImageInfoProperty (IN LONG_PTR img, IN ULONG nID, IN ULONG nLength, IN WORD nType, IN VOID* nValue);
#endif // !_GDIMAGE_H
