/*===============================================================*/ /* */ /* IMGDemo.h - LEAD API IMGFEATR header file */ /* */ /* Copyright (C) 1991-2001 by LEAD Technologies, Inc. */ /* */ /* All Rights Reserved */ /* */ /*===============================================================*/ #ifndef _IMGPF_H_ #define _IMGPF_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include "tchar.h" #include "../../../include/l_bitmap.h" #include "../../../include/LTtmb.h" #include "resource.h" #include "UndoList.h" #define INIT_MENU_POS 0 #define CHILD_MENU_POS 8 #define IDM_FIRSTCHILD 5000 #define SCROLL_RATIO 10 #define L_SRCCOPY (CB_DST_0 | CB_OP_OR) #define WM_USER_UPDATEVIEW WM_USER + 1 #define WM_USER_CHANGECURSOR WM_USER + 2 #define WM_USER_ADDDATA WM_USER + 3 #define EDT_INT 0 #define EDT_DBL 1 /************************************/ /* Macro's definition */ /************************************/ #ifdef WIN32 #define HWNDCTL(w, l) ((HWND) (l)) #define NOTIFYCODE(w, l) HIWORD(w) #define CTLID(w, l) LOWORD(w) #define SCROLLPOS(w, l) ((L_INT16) HIWORD(w)) #define SCROLLCODE(w, l) LOWORD(w) #else #define HWNDCTL(w, l) ((HWND) LOWORD(l)) #define NOTIFYCODE(w, l) HIWORD(l) #define CTLID(w, l) (w) #define SCROLLPOS(w, l) ((L_INT16) LOWORD(l)) #define SCROLLCODE(w, l) (w) #endif #define GWL_CHILDDATA 0 #define GWL_CHILDEXTRA 4 #define RECTWIDTH(lpRect) (((LPRECT) lpRect)->right - ((LPRECT) lpRect)->left) #define RECTHEIGHT(lpRect) (((LPRECT) lpRect)->bottom - ((LPRECT) lpRect)->top) #define CHILDCREATELPARAM(lpCreateStruct) \ (((LPMDICREATESTRUCT) ((lpCreateStruct)->lpCreateParams))->lParam) #define Trackbar_SetRange(hwnd, redraw, low, high) \ (LRESULT)SendMessage((hwnd), TBM_SETRANGE, (WPARAM) (BOOL)(redraw), (LPARAM)MAKELONG((low), (high))) #define Trackbar_SetPos(hwnd, moveit, pos) \ (LRESULT)SendMessage((hwnd), TBM_SETPOS, (WPARAM) (BOOL)(moveit), (LPARAM)(pos)) #define Progress_SetRange(hwnd, low, high) \ (LRESULT)SendMessage((hwnd), PBM_SETRANGE, (WPARAM) 0, (LPARAM)MAKELONG((low), (high))) #define Trackbar_GetPos(hwnd) \ (LRESULT)SendMessage((hwnd), TBM_GETPOS, 0, 0) #define Trackbar_SetPageSize(hWnd, nSize) \ (int)SendMessage(hWnd, TBM_SETPAGESIZE, 0, nSize) #define Trackbar_SetLineSize(hWnd, nSize) \ (int)SendMessage(hWnd, TBM_SETLINESIZE, 0, nSize); #define Progress_SetPos(hwnd, pos) \ (int)SendMessage((hwnd), PBM_SETPOS, (WPARAM)(pos), 0) #define Trackbar_SetMinRange(hwnd, redraw, minRange) \ (LRESULT)SendMessage((hwnd), TBM_SETRANGEMIN, (WPARAM) (BOOL)(redraw), (LPARAM)(minRange)) #define Trackbar_SetMaxRange(hwnd, redraw, maxRange) \ (LRESULT)SendMessage((hwnd), TBM_SETRANGEMAX, (WPARAM) (BOOL)(redraw), (LPARAM)(maxRange)) #define Trackbar_SetTheRange(hwnd, redraw, low, high) \ Trackbar_SetMinRange(hwnd, (redraw), (low)); \ Trackbar_SetMaxRange(hwnd, (redraw), (high)) #define SETCHILDDATA(hwnd, h) SetWindowLong(hwnd, GWL_CHILDDATA, (LONG)(L_INT)(HANDLE)(h)) #define LOCKCHILDDATA(hwnd) ((pCHILDDATA) GlobalLock((HANDLE)(L_INT)GetWindowLong(hwnd, GWL_CHILDDATA))) #define UNLOCKCHILDDATA(hwnd) GlobalUnlock((HANDLE)(L_INT)GetWindowLong(hwnd, GWL_CHILDDATA)) #define FREECHILDDATA(hwnd) GlobalFree((HANDLE)(L_INT)GetWindowLong(hwnd, GWL_CHILDDATA)) #ifdef WIN32 #define GETHBRBACKGROUND(hwnd) ((HBRUSH) GetClassLong(hwnd, GCL_HBRBACKGROUND)) #endif /************************************/ /* Global Variables */ /************************************/ extern HWND hWndFrame, hWndClient; extern HMENU hMenuInitWindow, hMenuChildWindow; extern HMENU hMenuInit, hMenuChild, hMenuDisChild; extern L_TCHAR szAppName[255]; extern L_TCHAR szFrameClass[255]; extern L_TCHAR szChildClass[255]; extern HINSTANCE hInst; BITMAPHANDLE FadeBitmap; HCURSOR hOldCursor; HMENU hMenuWindow; LPTSTR pszTitle1[255]; L_BOOL fValidDraw; L_INT nRgnType; L_INT nRgn; L_INT nRgnType; L_UINT uCombineMode; L_BOOL bDoProcess; L_UINT uBlkClip; L_UINT uWhtClip; HWND hGlobalWnd; L_BOOL bMagicWndDlg; HWND hStatusWnd; L_INT nStatusPercent; L_UINT uColorSpace; L_TCHAR szDirectory[1024]; L_TCHAR szColor[20]; L_TCHAR szPos[20]; FARPROC lpfnStatusBar; STATUSCALLBACK lpfnOldStatus; L_BOOL IsDecimal; /************************************/ /* Dialog's CALLBACK Prototypes */ /************************************/ HWND CreateChildWindow (L_TCHAR L_FAR *, pBITMAPHANDLE, pBITMAPHANDLE, L_INT, L_BOOL); LRESULT CALLBACK FrameWndProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK ChildWndProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam); L_BOOL CALLBACK AboutDlgProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam); L_BOOL CALLBACK CloseEnumProc (HWND hWnd, LPARAM lParam); L_BOOL CALLBACK RefDataDlgProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam); L_BOOL CALLBACK RefNextDataDlgProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam); L_BOOL CALLBACK L_EXPORT StatusBarProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK L_EXPORT ProgressBarProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam); L_VOID SetStatusBarText(LPTSTR pTitle, pBITMAPHANDLE pBitmap, LPTSTR szPos, LPTSTR szColor); L_VOID MoveDialogToMiddle(HWND hWnd); /***********************************************************************************/ /* Dialog Procedures */ /***********************************************************************************/ L_BOOL CALLBACK MagicWandDlgProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam); L_INT SetNumericEditBox (HWND hEditWnd, L_DOUBLE dMinRange, L_DOUBLE dMaxRange, L_DOUBLE dIncrement, L_UINT uPrecesion, L_BOOL bIsDouble); /***********************************************************************************************/ /************************************/ /* Function's Prototypes */ /************************************/ L_INT PasteBitmap (HWND hWnd); L_INT DoDialogBoxParam (L_INT, HWND, DLGPROC, LPARAM); L_INT L_FAR L_EXPORT StatusCallBack (L_INT nPercent, L_VOID L_FAR *pUserData); static L_VOID FRAME_OnInitMenuPopup (HWND hWnd, HMENU hMenu, L_INT nItem, L_BOOL fSystemMenu); L_VOID Dialog_Timer (L_INT id); L_VOID FileInit (HWND hWnd); L_VOID FitImageToWindow (RECT rcImage, pBITMAPHANDLE pBitmap, RECT L_FAR * Rect); L_VOID SaveRefData (HWND hWnd); L_VOID LoadRefData (HWND hWnd); L_VOID TransToStatusBar (pBITMAPHANDLE pTempBitmap, pBITMAPHANDLE pLeadBitmap); L_VOID TransBack (pBITMAPHANDLE pTempBitmap, pBITMAPHANDLE pLeadBitmap, L_INT nRet); /************************************/ /* Structure Prototypes */ /************************************/ /*---------- Structure used for MDI ----------------*/ typedef struct tagCHILDDATA { BITMAPHANDLE LeadBitmap; BITMAPHANDLE UndoBitmap; BITMAPHANDLE bmFloater, bmSave; HPALETTE hPalette; RECT rcView, rcSetRegion ; L_UINT uFrameType; L_BOOL bMovingFloater; L_BOOL bDrawShape; L_BOOL bDrawFrame; L_BOOL bMagGlass ; HBITMAP hbmSave, hbmFloater; HRGN hrgnRegion, hrgnFloater; L_INT cxClient; L_INT cyClient; L_INT nHScrollPos; L_INT nVScrollPos; L_INT nHScrollMax; L_INT nVScrollMax; L_INT nHScrollStep; L_INT nVScrollStep; L_INT xMoveSrc, yMoveSrc; L_INT nMoveWidth, nMoveHeight; L_INT xAnchor, yAnchor; L_INT deltaX, deltaY; L_INT xFloaterDest, yFloaterDest; L_INT nFloaterWidth, nFloaterHeight; L_INT nHScroll; L_INT nVScroll; L_INT nBitmapFormat; L_INT nPtCount; L_INT nZoom; L_INT nScalar; LPTSTR pszTitle; POINT ptBeg; POINT ptEnd; POINT L_FAR * pPolyPt; L_UINT uTimerID; L_BOOL bCapWnd; RECT rcFrame, rcRgn; POINT ptMovePnt; L_BOOL bMoveView; POINT ptCenter; POINT ptCenter1; POINT ptCenter2; L_BOOL bCross; HWND hBitmapWnd; L_INT xSaveSrc, ySaveSrc; /* the point where the region was in bitmap coordinates */ L_BOOL bLineHistogram; L_BOOL bDetails; POINT ptBegLn; POINT ptEndLn; UNDOLIST UndoList; L_UINT uThreshold; POINT uThrPt; L_UINT uCombineMode; HWND hMagicWand; HWND hMagicWandEx; COLORREF crLowerTolerance; COLORREF crUpperTolerance; L_BOOL bNextAddPoint; L_BOOL bNextArea; L_BOOL bFilled; RECT rcMarkRect; RECT rcSearchRect; HWND NextDlgWnd; L_UINT uMarkMaxPrc; L_UINT uMarkMinPrc; L_UINT uMarkWidth; L_UINT uMarkHeight; L_UINT uMarkType; L_BOOL bDetected; POINT pDetcCMPoints[3]; L_BOOL bApplyTrans; L_BOOL bFrameMenu; L_BOOL bHasBeenApplied; } CHILDDATA, L_FAR *pCHILDDATA; /*---------- Structure used for New MDI ----------------*/ typedef struct tagCREATEDATA { L_INT nBitmapFormat; LPTSTR pszTitle; L_BOOL bIsFile; pBITMAPHANDLE pBitmap; pBITMAPHANDLE pThumbnel; } CREATEDATA, L_FAR * LPCREATEDATA; /***********************************************************************************/ /* Dialog Structures */ /***********************************************************************************/ /*---------- Structure used for Wind filters Dialog-------------*/ typedef struct tagTSHAPEDLGDATA { L_INT nPostionH[5]; L_UINT uMaxSize; L_UINT uMinSize; L_UINT uWidth; L_UINT uHeight; BITMAPHANDLE Bitmap; L_INT nSlideNum; L_INT nSldBaseID; L_INT nEdtBaseID; } TSHAPEDLGDATA, L_FAR * LPTSHAPEDLGDATA; /*------------------- Progress Structure --------------------------*/ typedef struct tagSTATUSPROC { HWND hProgressDlg, hwndCtl; L_INT ProgressValue; STATUSCALLBACK lpfnStatusCB; STATUSCALLBACK lpfnOldStatusCB; L_BOOL bProgress; L_BOOL bKillProgress ; L_BOOL bInvalidate; L_BOOL bEnd; HWND DlgWnd; HWND ProgWnd; } STATUSPROC, L_FAR * LPSTATUSPROC; STATUSPROC StatusProc; /*------------------- Referance Data Structure --------------------------*/ typedef struct tagREFDATA { POINT CntMassRgMrkPt1; POINT CntMassRgMrkPt2; POINT CenterPoint; L_DOUBLE dDistCentoPt2; L_DOUBLE dDistPt1toPt2; L_DOUBLE dAngPt1toPt2; L_DOUBLE dAngleCentoPt2; L_DOUBLE dAngDif; RECT rcArea1; RECT rcArea2; L_UINT uAngRange; } REFDATA, L_FAR * LPREFDATA; typedef struct tagREFDATADLG { L_UINT uTypeIndex; L_UINT uMinRatio; L_UINT uMaxRatio; L_UINT uWidth; L_UINT uHeight; RECT L_FAR * pRects; RECT L_FAR * pMarkRects; POINT L_FAR * pPoints; L_BOOL L_FAR * pFilled; L_UINT uNumber; L_UINT uIndex; } REFDATADLG, L_FAR * LPREFDATADLG; ///////////////////////////////////////////// ///////////////////////////////////////////// L_UINT guNumberOfMarks; LPSEARCHMARKS gpSearchData; POINT RefCMPoints[3]; L_BOOL bRefDone; //////////////////////////////////////////// //////////////////////////////////////////// L_VOID L_FillRefData (pBITMAPHANDLE pBitmap, LPREFDATA pRefData); #endif // _IMGDEMO_H_