ICMVIEW.H
//THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
//ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
//THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
// PARTICULAR PURPOSE. 
// 
// Copyright  1994-1997  Microsoft Corporation.  All Rights Reserved. 
// 
//  FILE: 
//    ICMVIEW.H 
// 
//  PURPOSE: 
//    Include file for ICMVIEW.C 
// 
//  PLATFORMS: 
//    Windows 95, Windows NT 
// 
//  SPECIAL INSTRUCTIONS: N/A 
// 
 
// General pre-processor macros 
#define APPNAMEA    "ICMVIEW" 
#define APPNAME __TEXT("ICMVIEW") 
 
#ifndef MAX_STRING 
    #define MAX_STRING    256 
#endif 
 
// 
// Constants for use by Windows ICM APIs 
//    These *should* be in WINGDI.H 
// 
//  API:  ColorMatchToTarget. 
#ifndef CS_ENABLE 
    #define CS_ENABLE           1 
    #define CS_DISABLE          2 
    #define CS_DELETE_TRANSFORM 3 
#endif 
 
// Values for BITMAPV5HEADER field bV5CSType 
#ifndef PROFILE_LINKED 
    #define PROFILE_LINKED          'LINK' 
    #define PROFILE_EMBEDDED        'MBED' 
#endif 
 
// Makes it easier to determine appropriate code paths: 
#if defined (WIN32) 
    #define IS_WIN32 TRUE 
#else 
    #define IS_WIN32 FALSE 
#endif 
 
#define IS_NT      (0 != (IS_WIN32 && ((BOOL)(GetVersion() < 0x80000000))) ) 
#define IS_WIN32S  (0 != (IS_WIN32 && (BOOL)(!(IS_NT) && (LOBYTE(LOWORD(GetVersion()))<4)))) 
#define IS_WIN95   (0 != ((BOOL)(!(IS_NT) && !(IS_WIN32S)) && IS_WIN32)) 
 
// Support macros 
#ifndef C1_GAMMA_RAMP 
    #define C1_GAMMA_RAMP 0x00000020 
#endif 
 
#ifndef CAPS1 
    #define CAPS1   94 
#endif 
 
#define SUPPORT_GAMMA_RAMPS(hDC) (BOOL)((GetDeviceCaps(hDC, CAPS1) & C1_GAMMA_RAMP) != 0) 
 
// Default profile to use 
#define DEFAULT_ICM_PROFILE __TEXT("sRGB Color Space Profile.ICM") 
 
// Window extra bytes 
#define GWL_DIBINFO GWL_USERDATA 
 
// DWORD Flag macros 
#define CHECK_DWFLAG(dwFlag,dwBits)((BOOL)((dwFlag & dwBits) != 0)) 
#define ENABLE_DWFLAG(dwFlag,dwBits)   (dwFlag |= dwBits) 
#define CLEAR_DWFLAG(dwFlag,dwBits) (dwFlag &= ~dwBits) 
#define SET_DWFlag(dwFlag, dwBits, bSet) (bSet ? (dwFlag |= dwBits) : (dwFlag &= ~dwFlag)) 
 
#define START_WAIT_CURSOR(hCur) hCur = SetCursor(LoadCursor(NULL,IDC_WAIT)); 
#define END_WAIT_CURSOR(hCur) SetCursor(hCur); 
 
#define IVF_MAXIMIZED   0x1L 
 
// Constants for use in converting ICC Intents to LCS Intents 
#define MAX_ICC_INTENT  INTENT_ABSOLUTE_COLORIMETRIC 
#define ICC_TO_LCS      0 
#define LCS_TO_ICC      1 
 
// General STRUCTS && TYPEDEFS 
#ifndef ICMVIEW_INTERNAL 
 
// Global variables for the application. 
extern  HINSTANCE   ghInst;                 // Global instance handle 
extern  TCHAR       gstTitle[];             // The title bar text 
extern  HWND        ghAppWnd;               // Handle to application window 
extern  HWND        ghWndMDIClient; 
extern  DWORD       gdwLastError;           // Used to track LastError value 
extern  TCHAR       gstProfilesDir[MAX_PATH];       // System directory for ICM profiles 
 
#endif 
 
// Function prototypes 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 
LPTSTR  CopyString(LPTSTR lpszSrc); 
BOOL    UpdateString(LPTSTR *lpszDest, LPTSTR lpszSrc); 
BOOL    CenterWindow(HWND, HWND); 
BOOL    ConvertIntent(DWORD dwOrig, DWORD dwDirection, LPDWORD lpdwXlate); 
DWORD   SetDWFlags(LPDWORD lpdwFlag, DWORD dwBitValue, BOOL bSet); 
HMENU   InitImageMenu(HWND hWnd); 
BOOL    GetBaseFilename(LPTSTR lpszFilename, LPTSTR *lpszBaseFilename);