/*===============================================================*/ /* */ /* IMGDemo.h - LEAD API IMGFEATR header file */ /* */ /* Copyright (C) 1991-2004 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 #include "tchar.h" #include "../../../include/l_bitmap.h" #include "../../../include/LTtmb.h" #include "../../../Include/ltclr.h" #include "resource.h" #include "UndoList.h" #define INIT_MENU_POS 0 #define CHILD_MENU_POS 6 #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 EDT_INT 0 #define EDT_DBL 1 #define APPLY_ON_UP 0 #define APPLY_ON_MOVE 1 #define FROM_180_TO_180 0 #define FROM_0_TO_360 1 #define FROM_0_TO_8 2 #define EDT_MODFY_MIN 0x0000 #define EDT_MODFY_MAX 0x0001 #define EDT_MODFY_INC 0x0010 #define EDT_MODFY_PREC 0x0100 #define EDT_MODFY_TYPE 0x1000 /************************************/ /* 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 CalculateGrayValue(r, g, b) ((L_UCHAR) (((2 * (L_UINT) (r)) + (5 * (L_UINT) (g)) + (L_UINT) (b) + 4) / 8)) #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; extern L_TCHAR szAppName[255]; extern L_TCHAR szFrameClass[255]; extern L_TCHAR szChildClass[255]; extern HINSTANCE hInst; HCURSOR hOldCursor; HMENU hMenuWindow; L_TCHAR pszTitle1[255]; L_UINT uBlkClip; L_UINT uWhtClip; HWND hGlobalWnd; HWND hStatusWnd; FARPROC lpfnStatusBar; STATUSCALLBACK lpfnOldStatus; L_INT nStatusPercent; L_TCHAR szDirectory[1024]; L_TCHAR szColor[20]; L_TCHAR szPos[20]; L_BOOL IsDecimal; L_TCHAR strSection[20]; L_TCHAR strStringItem[20]; L_TCHAR strInt[10]; L_TCHAR StrExt[3]; /************************************/ /* 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_VOID Strip (LPTSTR StripName, LPTSTR pszTitle); L_VOID StripWithExt (LPTSTR StripName, LPTSTR pszTitle); L_VOID GetDir (LPTSTR Dir, LPTSTR pszTitle); L_VOID SetStatusColorAndPixel(HWND hWnd); L_VOID DrawAngleControl (HWND hWnd, L_INT nAngle); L_VOID ShowStatusWindow (L_BOOL bStatus); L_VOID GenerateDefaultFont (HFONT* phFont ); L_VOID SetControlFont (HWND hWnd, HFONT hFont ); L_BOOL CALLBACK SetFontEnumProce (HWND hWnd, LPARAM lParam ); L_VOID MakeRectangleWindow (HWND hWnd, L_INT nID); /***********************************************************************************/ /* Dialog Procedures */ /***********************************************************************************/ L_BOOL CALLBACK ConvertToDlgProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam); /***********************************************************************************************/ /************************************/ /* 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_BOOL FileOpenDlg (HWND hWnd, L_TCHAR * pstrFileName); L_VOID FileInit (HWND hWnd); L_VOID FitImageToWindow (RECT rcImage, pBITMAPHANDLE pBitmap, RECT L_FAR * Rect); L_BOOL CALLBACK L_EXPORT StatusBarProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK L_EXPORT ProgressBarProc (HWND hWnd, L_UINT message, WPARAM wParam, LPARAM lParam); L_VOID SetStatusBarText (LPTSTR pTitle, pBITMAPHANDLE pBitmap, LPTSTR szPos, LPTSTR szColor); L_VOID MoveDialogToMiddle (HWND hWnd); L_VOID L_FileError (HWND hWnd, L_INT nCode, LPTSTR pTitle, LPTSTR pFilename); /************************************/ /* Structure Prototypes */ /************************************/ /*---------- Structure used for MDI ----------------*/ typedef struct tagCHILDDATA { BITMAPHANDLE LeadBitmap; HPALETTE hPalette; RECT rcView; 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 nHScroll; L_INT nVScroll; L_INT nBitmapFormat; LPTSTR pszTitle; POINT ptCenter; L_BOOL bCross; HWND hBitmapWnd; UNDOLIST UndoList; L_UINT uConvertType; L_BOOL bAutoHandle; L_BOOL bCMYKSetting; HANDLE ClrHandle; HANDLE ManualHandle; } 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 the Convert to Colors Dialog ------------*/ typedef struct tagCONVTODLGDATA { BITMAPHANDLE Bitmap; L_INT nRdoBaseID; L_INT nRadioNum; L_UINT uToFlag; L_UINT uConvertType; L_UCHAR L_FAR * pInput; L_UCHAR L_FAR * pOutput; L_UINT uBuffLen; } CONVTODLGDATA, L_FAR * LPCONVTODLGDATA; /*-------------------------------- 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; L_BOOL bStillWork; L_INT nStatusCnt; L_INT nOldStatusCnt; L_INT nPercent; L_BOOL bOneTick; } STATUSPROC, L_FAR * LPSTATUSPROC; STATUSPROC StatusProc; #endif // _IMGDEMO_H_