I have just completed the translation of my GDImage graphic DLL from PB to plain C/C++
Original PB's 32-bit size: 353 Kb.
VS2010 C/C++ 32-bit size : 288 Kb.
VS2010 C/C++ 64-bit size : 460 Kb.
I have tortured my brain for monthes in order to compile everything without error.
And now comes the time to start the debug session...
Translating everything by hand forced me to learn the arcane of C/C++, but i couldn't have done the job, without the help of the fantastic Visual Studio intelli-sense editor.
I am exhausted ???
...
Champagne... :-)
Glad you managed it Patrice! Take a day off and enjoy the Spring! Its beautiful here today.
Fred
I have started to work on optimization, and so far i have been able to get these results
32-bit C/C++ original translation 288 Kb ---> down to 237 Kb (saving 51 Kb)
64-bit C/C++ original translation 460 Kb ---> down to 387 Kb (saving 73 Kb)
GDImage.dll PowerBASIC 9.05, 32-bit version: 353 Kb.
(I do not use version 10.04 for GDImage production, because it produces larger code)
And you know what, it seems to be amazingly fast (probably the result of my very liberal use of pointers, and because i am using only the FLAT API).
8)
Hi Patrice, What kinds of optimisation are you performing on your code?
Charles--
I am exporting using only "C" like this:
extern "C" _declspec (dllexport)
rather than that
extern _declspec (dllexport)
also while i keep using wstring internaly, i always use WCHAR* for IN/OUT parameters (and for compatibility with the other languages i am working with).
I avoid to use any class encapsulation, except for the use of <vector> to deal with dynamic array.
And i am using const rather than #define.
Here is my GDImage header that is 32-64-bit compatible:
#include <windows.h>
#include <iostream>
using namespace std;
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;
};
// 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_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 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 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 Export extern _declspec (dllexport)
#define ExportC extern "C" _declspec (dllexport)
//Export wstring UCASE$(IN wstring sBuf);
//Export wstring LCASE$(IN wstring sBuf);
//Export wstring LTRIM$(IN wstring sBuf, IN wstring sChar);
//Export wstring RTRIM$(IN wstring sBuf, IN wstring sChar);
//Export wstring TRIM$(IN wstring sBuf, IN wstring sChar);
//Export wstring LEFT$(IN wstring sBuf, IN long nLeft);
//Export wstring RIGHT$(IN wstring sBuf, IN long nRight);
//Export wstring MID$(IN wstring sBuf, IN long nStart, IN long nMid);
//Export wstring PARSE$(IN wstring sMain, IN wstring sDelim, IN long nIndex);
//Export wstring NAMEX$(IN wstring sBuf);
//Export wstring EXTRACT$(IN long nIndex, IN wstring sMain, IN wstring sSearch);
//Export wstring HEX$(IN long nVal);
//Export wstring zDateTime();
ExportC WCHAR* zGetTempPath();
ExportC WCHAR* zExeName ();
ExportC WCHAR* ZD_GetObjectImageLabel (IN long ObjID);
ExportC WCHAR* ZI_SetSaveExtension (IN WCHAR* sExtension, IN long RW);
ExportC WCHAR* ZI_ChooseSaveFileName (IN HWND hDlg, IN WCHAR* sPicFile);
ExportC WCHAR* ZI_GetExifDTOrig (IN WCHAR* ImgName);
ExportC WCHAR* ZI_GetImageInfoString (IN LONG_PTR img, IN long nProperty);
ExportC WCHAR* ZI_SetLoadExtension (IN WCHAR* sExtension, IN long RW);
ExportC WCHAR* ZI_LoadSavePath (IN WCHAR* sPath, IN long RW);
ExportC WCHAR* ZI_LoadDialog (IN HWND hDlg);
ExportC WCHAR* ZI_Version();
ExportC WCHAR* zGetReg (IN HKEY hLocation, IN WCHAR* sSubKeys, IN WCHAR* sValueName);
ExportC long zSetReg (IN HKEY hLocation, IN WCHAR* SubKeys, IN WCHAR* sRegName, IN WCHAR* RegVal);
ExportC long INSTR(IN long fromPos, IN WCHAR* sMain, IN WCHAR* sSearch);
ExportC long LongVAL(IN WCHAR* sNum);
ExportC double FloatVAL(IN WCHAR* sNum);
ExportC long RegisterGLImageClass();
ExportC long RegisterGDImageClass();
ExportC HINSTANCE zInstance();
ExportC BOOL zExist (IN WCHAR* sFileSpec);
ExportC LONG_PTR zGdipStart ();
ExportC void zGdipEnd (IN LONG_PTR hGDIplus);
ExportC void zSplitColorARGB (IN long ARGB, OUT BYTE &A, OUT BYTE &R, OUT BYTE &G, OUT BYTE &B);
ExportC 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);
ExportC HBITMAP zCreateDIBSection (IN HDC hDC, IN long nWidth, IN long nHeight, IN long nBitCount);
ExportC LONG_PTR zLoadImageFromFile (IN WCHAR* sImgName, OUT long &imgW, OUT long &imgH, IN long nOrientation);
ExportC void zKeyBd_Event (IN BYTE K1, IN BYTE K2);
ExportC void zFocusBeep ();
ExportC void zDrawImage (IN HDC hDC, IN LONG_PTR Img, IN long x, IN long y, IN long xW, IN long yH);
ExportC 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);
ExportC LONG_PTR zBitmapToImage (IN HDC hDC);
ExportC long zFOpen (IN WCHAR* sFilName, IN long AccessMode, IN long ShareMode, OUT HANDLE &hFile);
ExportC DWORD zFlof (IN HANDLE hFile);
ExportC long zFGet (IN HANDLE hFile, OUT string &sBuffer);
ExportC void zFClose (OUT HANDLE &hFile);
ExportC void DrawGLSphere (IN float rRadius, IN long nFirst, IN long nLast);
ExportC void zSplitN (IN WCHAR* sFullName, OUT WCHAR* sPathName, OUT WCHAR* sFilName);
ExportC long zKillFile (IN WCHAR* sFullName);
ExportC long zSaveImageToFile (IN WCHAR* sPicFile, IN LONG_PTR Img, IN long nQuality);
ExportC long zGetCPUspeed ();
ExportC BYTE Rgb2Alpha (IN DWORD colrRGB);
ExportC 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);
ExportC LONG_PTR zCloneImage (IN LONG_PTR img);
ExportC 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);
ExportC void GL_DrawCubeBackFace (IN long nTexture);
ExportC void GL_DrawCubeTopFace (IN long nTexture);
ExportC void GL_DrawCubeBottomFace (IN long nTexture);
ExportC void GL_DrawCubeRightFace (IN long nTexture);
ExportC void GL_DrawCubeLeftFace (IN long nTexture);
ExportC void GL_DrawCube (IN long nTexture);
ExportC void GL_DrawCylinder (IN float radius, IN float rValue, IN float R1, IN float R2, IN long nTexture);
ExportC void GL_DrawDisk (IN float radius, IN long nTexture);
ExportC void GL_DrawSphere (IN float radius, IN long nTexture);
ExportC void GL_DrawCubeFrontFace (IN long nTexture);
ExportC void GL_CreateContext (IN long nWidth, IN long nHeight);
ExportC void GL_DeleteContext (OUT HDC &hGLDC, OUT HGLRC &hGLRC);
ExportC void GL_AlphaBlend (IN HDC hDCdest, IN HDC hDCsrce);
ExportC HDC GL_GLDC ();
ExportC HGLRC GL_GLRC ();
ExportC HDC GL_CreateDrawingDC (IN long nWidth, IN long nHeight);
ExportC void GL_DrawText (IN HWND glWnd, IN ZGLFONT UseFont, IN float x, IN float y, IN float z, IN WCHAR* sTxt, IN long ARGB);
ExportC long GL_CreateFontTexture (IN HWND glWnd, IN WCHAR* sUseFont, IN long nFontSize, IN long ColrARGB);
ExportC void GL_ChartLabel (IN HWND glWnd, IN long UseFont, IN float rX, IN float rY, IN float rZ, IN WCHAR* sTxt);
ExportC void GL_ChartSymbol (IN HWND glWnd, IN long UseFont, IN float rX, IN float rY, IN float rZ, IN WCHAR* sTxt);
ExportC float GL_ChartGetTextLength (IN long UseFont, IN WCHAR* sTxt);
ExportC void GL_DrawCup (IN float rRadius, IN long nTexture);
ExportC void GL_DrawDome (IN float rRadius, IN long nTexture);
ExportC long GL_GetActiveTexture ();
ExportC void GL_TexSpec (IN long nMode);
ExportC void GL_Specular (IN long nMode);
ExportC long GL_GetSpecularMode ();
ExportC void GL_ChartAxisPanel (IN float rX, IN float rY, IN float rZ);
ExportC void GL_ChartRing (IN float RING_MINOR, IN float RING_MAJOR, IN float RING_MINOR_RES, IN float RING_MAJOR_RES);
ExportC WCHAR* GL_ChartGetFontName (IN long UseFont);
ExportC void GL_UseMouseManager (IN HWND hWnd);
ExportC void GL_ChartBar (IN float rX, IN float rY, IN float rZ);
ExportC void GL_ChartPyramide (IN float rX, IN float rZ);
ExportC void GL_Cylinder (IN float radiusBottom, IN float radiusTop, IN float height, IN long slices, IN long stacks, IN long UseOperculum);
ExportC void GL_ChartCylinder (IN float radius, IN float height, IN long slices, IN long stacks);
ExportC void GL_ChartCone (IN float radius, IN float height, IN long slices, IN long stacks);
ExportC void GL_DrawQuad (IN float x, IN float y, IN float z);
ExportC void GL_ChartAxis (IN float rX, IN float rY, IN float rZ);
ExportC void GL_ChartGetMousing (OUT float &rChartXoff, OUT float &rChartYoff, OUT float &rChartZoff, OUT float &rChartZoom, OUT float &rChartXrot, OUT float &rChartYrot);
ExportC void GL_ChartSetMousing (IN float rChartXoff, IN float rChartYoff, IN float rChartZoff, IN float rChartZoom, IN float rChartXrot, IN float rChartYrot);
ExportC void GL_ChartSphere (IN float rRadius, IN float rValue, IN long nCompile);
ExportC void GL_DeleteTextureFont (IN HWND hWnd);
ExportC void GL_BillBoard ();
ExportC void GL_ChartPoint (IN float Radius, IN float rValue);
ExportC float GL_ChartXoff (IN float rValue, IN long RW);
ExportC float GL_ChartYoff (IN float rValue, IN long RW);
ExportC float GL_ChartZoff (IN float rValue, IN long RW);
ExportC float GL_ChartXrot (IN float rValue, IN long RW);
ExportC float GL_ChartYrot (IN float rValue, IN long RW);
ExportC float GL_ChartZoom (IN float rValue, IN long RW);
ExportC long GL_MultiSampleARB ();
ExportC BYTE ZD_GetObjectFrameCount (IN long ObjID);
ExportC void ZD_SetObjectFrameCount (IN long ObjID, IN BYTE nCount);
ExportC BYTE ZD_GetObjectFrameToUse (IN long ObjID);
ExportC void ZD_SetObjectFrameToUse (IN long ObjID, IN long nFrameToUse, IN long RedrawParent);
ExportC long ZD_ComputeObjectAngleFromPoint (IN long nObjectID, IN long mX, IN long mY);
ExportC long ZD_GetObjectLinked (IN long ObjID);
ExportC void ZD_SetObjectLinked (IN long ObjID, IN long LinkedID);
ExportC void ZD_MoveLinkedObject (IN long ObjID, IN long x, IN long y, IN long RedrawParent);
ExportC void ZD_RemoveRedEyeFromBitmapObject (IN long nObjectID, IN long xEye, IN long yEye, IN long EyeWidth, IN long EyeHeight);
ExportC void ZD_ShowObjectList (IN long* IDlist, IN long ArraySize, IN BYTE ShowOrHide);
ExportC BYTE ZD_GetObjectBrightness (IN long ObjID);
ExportC void ZD_SetObjectBrightness (IN long ObjID, IN BYTE Brightness, IN long RedrawParent);
ExportC BYTE ZD_GetObjectContrast (IN long ObjID);
ExportC void ZD_SetObjectContrast (IN long ObjID, IN BYTE Contrast, IN long RedrawParent);
ExportC BYTE ZD_GetObjectRed (IN long ObjID);
ExportC void ZD_SetObjectRed (IN long ObjID, IN BYTE nRed, IN long RedrawParent);
ExportC BYTE ZD_GetObjectGreen (IN long ObjID);
ExportC void ZD_SetObjectGreen (IN long ObjID, IN BYTE nGreen, IN long RedrawParent);
ExportC BYTE ZD_GetObjectBlue (IN long ObjID);
ExportC void ZD_SetObjectBlue (IN long ObjID, IN BYTE nBlue, IN long RedrawParent);
ExportC BYTE ZD_GetObjectHue (IN long ObjID);
ExportC void ZD_SetObjectHue (IN long ObjID, IN BYTE nHue, IN long RedrawParent);
ExportC HBITMAP ZD_RenderEffectToBitmapObject (IN long nObjectID, IN long nRedrawParent);
ExportC long ZD_TwinObject (IN long IDtoTwin, IN long TwinID, IN long x, IN long y);
ExportC long ZD_CloneObject (IN long IDtoClone, IN long CloneID, IN long x, IN long y);
ExportC void ZD_SetObjectScale (IN long ObjID, IN float ScaleValue);
ExportC float ZD_GetObjectScale (IN long ObjID);
ExportC void ZD_SetStringFormat (IN long ObjID, IN long StrFormat, IN long RedrawParent);
ExportC long ZD_GetStringFormat (IN long ObjID);
ExportC BYTE ZD_GetObjectAlpha (IN long ObjID);
ExportC void ZD_FlipObjectX (IN long nID);
ExportC void ZD_FlipObjectY (IN long nID);
ExportC void ZD_SetObjectFlipMode (IN long ObjID, IN long nOrientation);
ExportC void ZD_ReplaceObjectBitmap (IN HBITMAP hBitmap, IN long ObjID, IN long RedrawParent);
ExportC long ZD_GetObjectRotation (IN long ObjID);
ExportC void ZD_RotateObjectCounterclock90 (IN long ObjID);
ExportC void ZD_RotateObjectClockWise90 (IN long ObjID);
ExportC long ZD_GetObjectType (IN long ObjID);
ExportC void ZD_SetObjectType (IN long ObjID, IN long ObjectType);
ExportC long ZD_GetObjectAngle (IN long ObjID);
ExportC void ZD_SetObjectAngle (IN long ObjID, IN long AngleDegree, IN long RedrawParent);
ExportC long ZD_GetObjectQuality (IN long ObjID);
ExportC void ZD_SetObjectQuality (IN long ObjID, IN long nQuality, IN long RedrawParent);
ExportC void ZD_SetObjectClone (IN long ObjID, IN long CloneID);
ExportC long ZD_GetObjectClone (IN long ObjID);
ExportC HBITMAP ZD_SetObjectBitmapFromFile (IN WCHAR* sImgName, IN long ObjID, IN long RedrawParent);
ExportC void ZD_SetObjectBitmapFromBitmap (IN HBITMAP hBitmap, IN long ObjID, IN long RedrawParent);
ExportC HBITMAP ZD_CreateBitmapFromText (IN WCHAR* sUseText, IN WCHAR* sUseFont, IN long UseSize, IN long ColrARGB, IN short Use3D, IN long UseStrFormat);
ExportC void ZD_SetObjectUse3Dshadow (IN long ObjID, IN short Use3D);
ExportC short ZD_GetObjectUse3Dshadow (IN long ObjID);
ExportC HBITMAP ZD_GetObjectBitmap (IN long ObjID);
ExportC void ZD_GetObjectProperties (IN long nID, OUT ZOBJECT &zDetail);
ExportC void ZD_SetObjectProperties (IN long nID, IN ZOBJECT zDetail);
ExportC void ZD_GetObjectXYcapture (IN long ObjID, OUT long &x, OUT long &y);
ExportC void ZD_CopyToBackground (IN HWND hWnd, IN long ID, IN long BoolClear, IN long RGBColor);
ExportC long ZD_IsObjectHidden (IN long ObjID);
ExportC void ZD_SetObjectHidden (IN long ObjID, IN BYTE OnOff);
ExportC long ZD_ObjectMouseCaptured ();
ExportC void ZD_SetObjectImageLabel (IN long ObjID, IN WCHAR* sUseText);
ExportC void ZD_SetObjectScroll (IN long ObjID, IN long TrueFalse);
ExportC long ZD_GetObjectScroll (IN long ObjID);
ExportC void ZD_SetObjectLocked (IN long ObjID, IN long TrueFalse);
ExportC long ZD_GetTextBound (IN WCHAR* sUseText, IN WCHAR* sUseFont, IN long UseSize, OUT long &TextWidth, OUT long TextHeight, IN long UseStrFormat);
ExportC 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);
ExportC long ZD_SetObjectText (IN long ObjID, IN WCHAR* sUseText);
ExportC long ZD_SetObjectTextEx (IN long ObjID, IN WCHAR* sUseText);
ExportC 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);
ExportC 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);
ExportC 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);
ExportC 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);
ExportC 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);
ExportC 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);
ExportC 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);
ExportC 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);
ExportC HWND ZD_GetObjectParent (IN long ObjID);
ExportC void ZD_GetObjectXY (IN long ObjID, OUT long &x, OUT long &y);
ExportC void ZD_SetObjectXY (IN long ObjID, IN long x, IN long y, IN long RedrawParent);
ExportC void ZD_GetObjectBound (IN long ObjID, OUT long &BoundWidth, OUT long BoundHeight);
ExportC void ZD_GetObjectARGB (IN long ObjID, OUT BYTE &A, OUT BYTE &R, OUT BYTE &G, OUT BYTE &B);
ExportC long ZD_GetObjectARGBcolor (IN long ObjID);
ExportC void ZD_GetObjectARGB (IN long ObjID, OUT BYTE &A, OUT BYTE &R, OUT BYTE &G, OUT BYTE &B);
ExportC void ZD_SetObjectARGBcolor (IN long ObjID, IN long UseARGB);
ExportC void ZD_SetObjectAlpha (IN long ObjID, IN BYTE Alpha, IN long RedrawParent);
ExportC void ZD_ShowObject (IN long ObjID, IN long ShowOrHide);
ExportC void ZD_SetObjectVisibility (IN long ObjID, IN long ShowOrHide);
ExportC long ZD_IsObjectVisible (IN long ObjID);
ExportC long ZD_GetObjectStyle (IN long ObjID);
ExportC void ZD_SetObjectStyle (IN long ObjID, IN long UseStyle);
ExportC long ZD_GetObjectZorder (IN long ObjID);
ExportC long ZD_GetItemObjectAndColorAtXY (IN HWND hGDImageCtrl, IN long lpx, IN long lpy, OUT long &RGBcolor);
ExportC long ZD_GetBitmapObjectBits (IN long ObjID, LPVOID lpArray);
ExportC long ZD_SetBitmapObjectBits (IN long ObjID, LPVOID lpArray);
ExportC long ZD_GetObjectFlipMode (IN long ObjID);
ExportC long ZD_SetObjectZorder (IN long ObjID, IN long SetOrder);
ExportC long ZD_PolyPolygon (IN HWND hCtrl, IN ZPOLYGON* zp, IN long PolygonCount);
ExportC 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);
ExportC void ZD_DeleteObject (IN long ID);
ExportC long ZD_SetObjectAnchorMode (IN long nObjID, IN long AnchorMode);
ExportC long ZD_GetObjectLocked (IN long ObjID);
ExportC long ZD_GetObjectSelected (IN long ObjID);
ExportC void ZD_SetObjectSelected (IN long ObjID, IN long OnOff, IN long RedrawParent);
ExportC void ZD_ChangeTextFontSize (IN HWND hCtrl, IN long ObjID, IN long UseSize);
ExportC void ZD_FillRect (IN HDC hDC, IN long x, IN long y, IN long xW, IN long yH, IN long RGBcolor);
ExportC long ZD_ColorARGB (IN BYTE Alpha, IN DWORD ColrRGB);
ExportC long ZD_ARGB (IN BYTE A, IN BYTE R, IN BYTE G, IN BYTE B);
ExportC long ZI_LoadDLL (IN WCHAR* sUserName);
ExportC 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);
ExportC long ZI_CreateSkinBackground (IN WCHAR* sImageDest, IN long rwX, IN long rwY, IN WCHAR* sUseBackground, IN WCHAR* sSkinFolder);
ExportC long ZI_SetImageFileOrientation (IN WCHAR* sImageSrce, IN long nOrientation);
ExportC LONG_PTR ZI_SetImageAttributesHue (IN BYTE Hue);
ExportC HBITMAP ZI_CreateDIBSection (IN HDC hDC, IN long nWidth, IN long nHeight, IN long BitCount);
ExportC void ZI_RemoveRedEye (IN HDC hDC, IN long x, IN long y, IN long UseWidth, IN long UseHeight);
ExportC 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);
ExportC 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);
ExportC 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);
ExportC HBITMAP ZI_CreateImageComposited (IN WCHAR* sImageDest, IN long rwX, IN long rwY, IN ZOBJECT* pSprite, IN long N);;
ExportC long ZI_GetImageInfoCount (IN LONG_PTR img);
ExportC long ZI_RemoveImageInfoProperty (IN LONG_PTR img, IN long nID);
ExportC long ZI_UpdateNamedGLTextureFromFileEx (IN WCHAR* sFullName, IN long NamedTexture, IN long nSquareMode);
ExportC void ZI_ReplaceARGBColorBitmap (IN HBITMAP hBmp, IN long WasARGB, IN long NewARGB);
ExportC void ZI_GetDefaultPrinter (OUT WCHAR* &sDriver, OUT WCHAR* &sDevice, OUT WCHAR* &sPort);
ExportC long ZI_PrintImage (IN HWND hGDImageCtrl);
ExportC long ZI_PrintFull (IN HWND hGDImageCtrl);
ExportC void ZI_SlidePlayIncrOrder ();
ExportC void ZI_SlidePlayDecrOrder ();
ExportC void ZI_SlidePlay ();
ExportC void ZI_SlidePause ();
ExportC void ZI_SlideAnimate (IN HWND hCtrl, IN ZSLIDESHOW* ipt, IN long ImageCount, IN BYTE LoopMode);
ExportC long ZI_FontBox (IN HWND hParent, IN WCHAR* sCaption, OUT WCHAR* &sUseText, OUT WCHAR* &sUseFont, OUT long &UseSize, OUT long &UseARGB, OUT long &Use3D);
ExportC HBITMAP ZI_CreateBitmapFromImage (IN LONG_PTR hImage);
ExportC long ZI_ApplyEffectToFile (IN WCHAR* sImageSrce, IN ZOBJECT zObj, IN WCHAR* sImageDest);
ExportC HWND ZI_CreateDW (IN HWND hParent);
ExportC void ZI_DestroyDW (IN HWND hDW);
ExportC void ZI_ImageTilePaint (IN LONG_PTR graphics, IN LONG_PTR img, IN long xOffset, IN long yOffset, IN long nPaintWidth, IN long nPaintHeight);
ExportC 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);
ExportC long ZI_SIZEL (IN long nSize, IN long RW);
ExportC long ZI_SIZET (IN long nSize, IN long RW);
ExportC long ZI_SIZER (IN long nSize, IN long RW);
ExportC long ZI_SIZEB (IN long nSize, IN long RW);
ExportC long ZI_CenterDialog (IN long nFlag, IN long RW);
ExportC long ZI_SaveLayersDialog (IN HWND hDlg, IN HWND hCtrl, IN long nQuality, IN long Rotation, IN long UseWidth, IN long UseHeight);
ExportC long ZI_GetCtrlObjectCount (IN HWND hParent);
ExportC void ZI_SetToolTipText (IN HWND hObj, IN WCHAR* sText);
ExportC HWND ZI_CreateToolTip (IN HWND hObj, IN WCHAR* sText);
ExportC long ZI_CreateSpriteFileFromBitmap (IN WCHAR* sPicFile, IN HBITMAP BmpSrce, IN long UseSize, IN long JpegQuality);
ExportC void ZI_EventMessageEx (IN HWND hWnd, IN LONG_PTR pCodePtr, IN long nMsg, IN long SetReset);
ExportC long ZI_FitImageToPaper (IN WCHAR* sImageSrce, IN long nPaperW, IN long nPaperH, IN WCHAR* sCropedImageDest);
ExportC void ZI_SetObjectFocusID (IN long CursorOverObject);
ExportC void ZI_SetCtrlEmptyBitmap (IN HWND hWnd, IN long RGBcolor);
ExportC void ZI_DestroyTexture (IN ZGLTEXTUREX* mt, IN long mtCount);
ExportC HBITMAP ZI_FitImageFromFile (IN WCHAR* sFilName, IN long Xin, IN long Yin);
ExportC long ZI_CreateGLTextureFromFile (IN WCHAR* sFullPath, OUT long &xSize, OUT long &ySize, OUT BYTE* &lpArray);
ExportC long ZI_SetGLTextureFromFile (IN WCHAR* sFullName);
ExportC void ZI_InitGLControl (IN long ARGB);
ExportC void ZI_BuildGLfont (IN HDC hDC, ZGLFONT UseFont);
ExportC void ZI_DeleteGLFont (IN ZGLFONT UseFont);
ExportC void ZI_DrawGLText (IN HWND glWnd, IN ZGLFONT UseFont, IN long x, IN long y, IN WCHAR* sTxt, IN long ARGB);
ExportC void ZI_UseGLPolarView (IN float radius, IN float twist, IN float latitude, IN float longitude);
ExportC void ZI_UseGLPanoramaView (IN float latitude, IN float longitude);
ExportC long ZI_GetGLzoom (IN HWND hWnd);
ExportC void ZI_SetGLzoom (IN HWND hWnd, IN long nFovy);
ExportC long ZI_MoveToTray (IN WCHAR* sFileName);
ExportC void ZI_ResizeGLWindow (IN HWND hWnd);
ExportC void ZI_UpdateGLWindow (IN HWND hWnd);
ExportC void ZI_GetGLTextExtentFromDC (IN HDC hDC, ZGLFONT UseFont, IN WCHAR* sText, OUT long &stWidth, OUT long &stHeight);
ExportC void ZI_GetGLTextExtent (IN HWND glWnd, ZGLFONT UseFont, IN WCHAR* sText, OUT long &stWidth, OUT long &stHeight);
ExportC void ZI_glColor4ub (IN long ARGB);
ExportC long ZI_UpdateNamedGLTextureFromFile (IN WCHAR* sFullName, IN long NamedTexture);
ExportC void ZI_ReplaceRGBColor (IN HDC hDC, IN long WasColor, IN long NewColor);
ExportC void ZI_ReplaceRGBColorBitmap (IN HBITMAP hBmp, IN long WasColor, IN long NewColor);
ExportC HBITMAP ZI_CropBitmap (IN HBITMAP hBmp, IN long x, IN long y, IN long w, IN long h, IN long FlipReverse);
ExportC long ZI_RenderLayersToFile (IN HWND hWnd, IN WCHAR* sPicFile, IN long nQuality, IN long Rotation, IN long UseWidth, IN long UseHeight);
ExportC void ZI_SetFontBoxParameters (IN long SquareSize, IN long MaxFontSize, IN long TextCharLength);
ExportC long ZI_MouseHoverBoundID ();
ExportC long ZI_GetObjectFocusID ();
ExportC long ZI_GetMovingSpriteItem ();
ExportC long ZI_GetMovingSpriteID ();
ExportC HBITMAP ZI_FitImageFrom32Bit (IN WCHAR* sImgName, IN long UseW, IN long UseH);
ExportC HBITMAP ZI_FitBitmapFromFile (IN WCHAR* sFullPath, IN long Xin, IN long Yin);
ExportC void ZI_DoNotSquareTexture ();
ExportC long ZI_CreateGLTextureFrom32Bit (IN WCHAR* sFullPath, OUT long &xSize, OUT long &ySize, OUT BYTE* &lpArray);
ExportC HDC ZI_GetGLDC (IN HWND hWnd);
ExportC HGLRC ZI_GetGLRC (IN HWND hWnd);
ExportC long ZI_CreateGLTextureFromFileEX (IN WCHAR* sImgName, OUT long &Xin, OUT long &Yin, OUT BYTE* &lpArray, IN long SquareTexture);
ExportC void ZI_MakeMultipleTexture (IN ZGLTEXTUREX* mt, IN long mtCount);
ExportC HBITMAP ZI_ResizeBitmapFromBitmap (IN HBITMAP BmpSrce, IN long xDest, IN long yDest);
ExportC long ZI_GetToolCropStatus (IN HWND hWnd);
ExportC void ZI_EnableCropRectangle (IN HWND hWnd);
ExportC void ZI_EnableCropRedEye (IN HWND hWnd);
ExportC void ZI_DisableAllTools (IN HWND hWnd);
ExportC void ZI_GetCropCoordinates (OUT long &x, OUT long &y, OUT long &UseWidth, OUT long &UseHeight);
ExportC void ZI_SetCropPopupText (IN WCHAR* sMenu);
ExportC HBITMAP ZI_RenderLayersToBitmap (IN HWND hWnd);
ExportC HBITMAP ZI_CropWindowToBitmap (IN HWND hWnd, IN long x, IN long y, IN long w, IN long h);
ExportC long ZI_ObjectSelected (IN HWND hGDImageCtrl);
ExportC long ZI_SelectedCount (IN HWND hGDImageCtrl);
ExportC HDC ZI_Create32bitDC (IN long nWidth, IN long nHeight, IN long ARGBcolor);
ExportC LONG_PTR ZI_RemapImageColor (IN long nColorFrom, IN long nColorTo);
ExportC LONG_PTR ZI_RemapAlphaColor (IN long nColorFrom, IN long nColorTo);
ExportC void ZI_DrawAlphaBlend (IN HDC hDCdest, IN long xDest, IN long yDest, IN WCHAR* sImage, IN WCHAR* sMask);
ExportC long ZI_CreateVariableOpacityPNG (IN WCHAR* sInputName, IN WCHAR* sOutputName);
ExportC HBITMAP ZI_CreateVariableOpacityBitmap (IN WCHAR* sInputName, OUT long &imgW, OUT long &imgH);
ExportC void ZI_RotateImage (IN HDC hDC, IN LONG_PTR Img, IN long x, IN long y, IN long AngleDegree, IN BYTE Alpha);
ExportC void ZI_RenderImageRotationToWindow (IN HWND hWnd, IN LONG_PTR Img, IN long x, IN long y, IN long AngleDegree, IN BYTE UseAlpha);
ExportC HBITMAP ZI_RenderRotationFromImageToBitmap (IN HBITMAP BmpSrce, IN LONG_PTR Img, IN long AngleDegree, IN BYTE UseAlpha);
ExportC long ZI_SaveToFile (IN WCHAR* sPicFile, IN HWND hCtrl, IN long nQuality);
ExportC void ZI_SetZoomScrollInfo (IN HWND hWnd, IN float OldZoomValue, IN float ZoomValue);
ExportC void ZI_EventMessage (IN LONG_PTR pCodePtr, IN long nMsg, IN long SetReset);
ExportC long ZI_ColorCount (IN HWND hWnd);
ExportC HBITMAP ZI_LoadFromResource (IN HWND hWnd, IN WCHAR* sName);
ExportC long ZI_LoadImageFromStream (IN HWND hWnd, IN BYTE* pBufferData, IN long BufferSize);
ExportC LONG_PTR ZI_ImageFromResource (IN HMODULE nInstance, IN WCHAR* sName);
ExportC HBITMAP ZI_LoadBitmap (IN WCHAR* sName);
ExportC LONG_PTR ZI_SetImageAlpha (IN BYTE Alpha);
ExportC long ZI_GetDIBits (IN HDC hDC, LPVOID lpArray);
ExportC long ZI_SetDIBits (IN HDC hDC, LPVOID lpArray);
ExportC HBITMAP ZI_CreateBitmapFromFile (IN WCHAR* sImgName, OUT long &imgW, OUT long &imgH);
ExportC HBITMAP ZI_ResizeBitmapFromFile (IN WCHAR* sImgName, IN long UseW, IN long UseH);
ExportC long ZI_SetFromFileEx (IN HWND hCtrl, IN WCHAR* sFileName, IN long nUseW, IN long nUseH);
ExportC void ZI_DisableAlphaCoef ();
ExportC void ZI_EnableAlphaCoef ();
ExportC HBITMAP ZI_CreateMirrorBitmapFromFile (IN WCHAR* sImgName, OUT long &imgW, OUT long &imgH);
ExportC HDC ZI_CreateImageBackgroundEx (IN HWND hWnd, IN long imgW, IN long imgH, IN long UseColor, IN long BitPerPixel);
ExportC HDC ZI_CreateImageBackground (IN HWND hWnd, IN long imgW, IN long imgH);
ExportC LONG_PTR ZI_CreateImageFromFile (IN WCHAR* sImgName, OUT long &imgW, OUT long imgH, IN long RemoveARGBColor, IN long ARGBColorToRemove);
ExportC void ZI_DeleteImageObject (OUT LONG_PTR &img);
ExportC long ZI_SetTiledBackground (IN HWND hWnd, IN HBITMAP UseBitmap);
ExportC HBITMAP ZI_GetTiledBackground (IN HWND hWnd);
ExportC void ZI_UseWinLIFTbackground (IN HWND hWnd, IN long nUseBack, IN long RedrawParent);
ExportC long ZI_SetCtrlBitmapBackground (IN HWND hWnd, IN HBITMAP hBmp);
ExportC long ZI_ClipboardCopy (IN HWND hWnd);
ExportC long ZI_PutBitmapToClipboard (IN HBITMAP ThisBitmap);
ExportC long ZI_SaveBitmapToFile (IN WCHAR* sPicFile, IN HBITMAP hBitmap, IN long nQuality);
ExportC long ZI_ClipboardPaste (IN HWND hWnd);
ExportC void ZI_CreateBitmapObject (OUT ZOBJECT &zObjItem, IN long ox1, IN long oy1, IN HBITMAP hBitmap, IN long ColrARGB, IN long ZS_STYLE);
ExportC 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);
ExportC 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);
ExportC 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);
ExportC void ZI_SetSaveDialogMsg (IN WCHAR* sCaptionLoad, IN WCHAR* sCaptionSave, IN WCHAR* sDefaultName);
ExportC long ZI_SetAnchorMode (IN HWND hWnd, IN long AnchorMode);
ExportC long ZI_ConvertToGray (IN HDC hDC);
ExportC void ZI_ClearObjectSelected (IN HWND hGDImageCtrl);
ExportC long ZI_GetManualSelection ();
ExportC void ZI_SetManualSelection (IN long nMode);
ExportC HWND ZI_CreateWindowFromImage (IN long nStyle, IN WCHAR* sImgName, IN long x, IN long y, IN HWND hParent, IN long UseID, IN long nStyleEx, IN long UseTransColor);
ExportC void ZI_GetImageSizeFromFile (IN WCHAR* sImgName, OUT long &imgW, OUT long &imgH);
ExportC long ZI_SetLayeredAlpha (IN HWND hWnd, IN BYTE TransLevel);
ExportC void ZI_DrawObject (IN HDC hDC, IN ZOBJECT zObjItem, IN long InPrintMode);
ExportC long ZI_GetXscroll (IN HWND hWnd);
ExportC long ZI_GetYscroll (IN HWND hWnd);
ExportC void ZI_DrawObject (IN HDC hDC, IN ZOBJECT zObjItem, IN long InPrintMode);
ExportC long ZI_BoostSprite (IN long nFlag, IN long RW);
ExportC long ZI_TransparentColor (IN long nFlag, IN long RW);
ExportC 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);
ExportC 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);
ExportC void ZI_ReleaseCapture ();
ExportC void ZI_DeleteCtrlObject (IN HWND hWnd);
ExportC long ZI_MouseOverObjectID ();
ExportC HBITMAP ZI_GetBitmapFromDC(IN HDC hDC);
ExportC long ZI_DeleteControlBitmap (IN HWND hWnd);
ExportC 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);
ExportC void ZI_SetZoomValue (IN HWND hWnd, IN float rV);
ExportC float ZI_GetZoomValue(IN HWND hWnd);
ExportC 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);
ExportC long ZI_IsKeyDown (IN long CheckKey);
ExportC long ZI_IsAnyArrowPressed ();
ExportC long ZI_IsShiftKeyPressed ();
ExportC long ZI_IsCtrlKeyPressed ();
ExportC long ZI_IsLButtonDown ();
ExportC long ZI_IsRButtonDown ();
ExportC HWND ZI_CreateWindow (IN HWND hParent, IN long x, IN long y, IN long xW, IN long yH, IN HMENU ControlID);
ExportC LONG_PTR ZI_CreateImageFromBitmap (IN HBITMAP hBmp);
ExportC long ZI_IsTrialVersion ();
ExportC void ZI_DisableCropRectangle (IN HWND hWnd);
ExportC void ZI_UpdateWindow (IN HWND hWnd, IN long nFlag);
ExportC void ZI_DisableCropRectangle (IN HWND hWnd);
ExportC void ZI_SetFromFile (IN HWND hCtrl, IN WCHAR* sUseText);
ExportC long ZI_GetImageFrameCount (IN LONG_PTR lpImg);
ExportC void ZI_UpdateWindow (IN HWND hWnd, IN long nFlag);
ExportC void ZI_DisableCropRectangle (IN HWND hWnd);
ExportC LONG_PTR ZI_CreateMultiFrameImage (IN LONG_PTR lpImg, IN long nUseBit, IN long nFit);
ExportC void ZI_GradientPaintDC (IN HDC hDC, IN long x, IN long y, IN long xW, IN long yH, IN long TopRGB, IN long BottomRGB);
ExportC void ZI_SetProperty (IN HWND hWnd, IN long nItem, IN LONG_PTR nValue);
ExportC LONG_PTR ZI_GetProperty (IN HWND hWnd, IN long nItem);
ExportC void ZI_GetBitmapSize (IN HANDLE hBmp, OUT long &xWidth, OUT long &yHeight);
ExportC HBITMAP ZI_GetBMP (IN HWND hWnd);
ExportC void ZI_GetImageSizeFromControl (IN HWND hWnd, OUT long &imgW, OUT long &imgH);
ExportC HBITMAP ZI_GetPaintBitmap (IN HWND hWnd);
ExportC HDC ZI_GetPaintDC (IN HWND hWnd);
ExportC HDC ZI_GetDC (IN HWND hWnd);
Thanks Patrice,
I think the main PB overheads you have dispensed with are the dynamic string library, garbage collection, and variable-initialisation. Optimised C will also use spare registers instead of local variables where possible.
Not sure about the difference between const and #define. These should not have any effect on the binary.
And you forget the ugly DDT engine, that makes the code larger each time Bob added new core API encapsulations ;)
Patrice,
I hear Broadway is casting for a Moses part. I could see you standing on top of Mt. C and demanding to let your people go. ;D