233 lines
7.7 KiB
C++
Executable File
233 lines
7.7 KiB
C++
Executable File
/* -----------------------------------------------------------------------------
|
|
// -----------------------------------------------------------------------------
|
|
|
|
FILE: iImageViewer.h
|
|
|
|
DESCRIPTION: abstract class for image viewers
|
|
|
|
CREATED BY: michael malone (mjm)
|
|
|
|
HISTORY: created April 13, 2000
|
|
|
|
Copyright (c) 2000, All Rights Reserved
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// -------------------------------------------------------------------------- */
|
|
|
|
#if !defined( I_IMAGE_VIEWER_H_INCLUDED )
|
|
#define I_IMAGE_VIEWER_H_INCLUDED
|
|
|
|
#include "maxtypes.h" // Interface_ID
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#ifdef IMAGE_VIEW_EXPORTS
|
|
#define IMAGE_VIEW_API __declspec(dllexport)
|
|
#else
|
|
#define IMAGE_VIEW_API __declspec(dllimport)
|
|
#endif
|
|
|
|
class CropCallback;
|
|
|
|
// sent by a docked bitmap viewer window to its parent when the user right clicks on dead area of the toolbar
|
|
// mouse points are relative to the client area of the schematic view window
|
|
//
|
|
// LOWORD(wParam) = mouse x
|
|
// HIWORD(wParam) = mouse y
|
|
// lparam = bitmap viewer window handle
|
|
#define WM_BV_TOOLBAR_RIGHTCLICK WM_USER + 0x8ac4
|
|
|
|
#define MAX_BITMAP_VIEWER_CLASS _T("MaxBitmapViewerClass") // windows class name
|
|
|
|
|
|
// aszabo | Nov.16.2000
|
|
// For the exported abstract classes in this header I am just adding
|
|
// a GetInterface method to them instead of deriving them from InterfaceServer
|
|
// in order to make it ready for extending it later with additional interfaces
|
|
class BaseInterface;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// -----------------------------------------------------------------------------
|
|
|
|
class IMAGE_VIEW_API IImageViewer
|
|
|
|
// PURPOSE:
|
|
// Abstract class (Interface) for an image viewer
|
|
//
|
|
// NOTES:
|
|
// created: 04.13.00 - mjm
|
|
//
|
|
// -----------------------------------------------------------------------------
|
|
// -----------------------------------------------------------------------------
|
|
|
|
{
|
|
public:
|
|
enum DisplayStyle { IV_FLOATING = 0, IV_DOCKED };
|
|
|
|
enum WindowPosition
|
|
{
|
|
WPos_NULL = 0,
|
|
WPos_UpperLeft,
|
|
WPos_LowerLeft,
|
|
WPos_UpperRight,
|
|
WPos_LowerRight,
|
|
WPos_Center,
|
|
|
|
// the following are used for automatic save and restore
|
|
WPos_Renderer = 10,
|
|
WPos_VideoPostPrimary,
|
|
WPos_VideoPostSecondary,
|
|
};
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// -----------------------------------------------------------------------------
|
|
|
|
class PostDisplayCallback
|
|
|
|
// PURPOSE:
|
|
// Abstract class (Interface) for a callback that allows post-display access
|
|
// to an image viewer
|
|
//
|
|
// NOTES:
|
|
// created: 04.13.00 - mjm
|
|
//
|
|
// -----------------------------------------------------------------------------
|
|
// -----------------------------------------------------------------------------
|
|
|
|
{
|
|
public:
|
|
virtual void PostDisplayCB(HWND hWnd) = 0;
|
|
|
|
// provides a way for extending it with interfaces
|
|
virtual BaseInterface* GetInterface (Interface_ID id) { return NULL; }
|
|
};
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// -----------------------------------------------------------------------------
|
|
|
|
class PreEventHandlerCallback
|
|
|
|
// PURPOSE:
|
|
// Abstract class (Interface) for a callback that allows pre-event handler
|
|
// access to an image viewer
|
|
//
|
|
// NOTES:
|
|
// created: 04.13.00 - mjm
|
|
//
|
|
// -----------------------------------------------------------------------------
|
|
// -----------------------------------------------------------------------------
|
|
|
|
{
|
|
public:
|
|
virtual LRESULT EventHandlerCB(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, bool &propagate) = 0;
|
|
// provides a way for extending it with interfaces
|
|
virtual BaseInterface* GetInterface (Interface_ID id) { return NULL; }
|
|
};
|
|
|
|
// shows/hides the viewer window
|
|
virtual void Show() = 0;
|
|
virtual void Hide() = 0;
|
|
|
|
// gets the handle to display window
|
|
virtual HWND GetHDisplayWindow() = 0;
|
|
|
|
// sets the screen
|
|
virtual void SetPos(int x, int y, int w, int h) = 0;
|
|
|
|
// gets the display style
|
|
virtual DisplayStyle GetDisplayStyle() const = 0;
|
|
|
|
// sets/gets the context help id
|
|
virtual void SetContextHelpId(DWORD helpID) = 0;
|
|
virtual DWORD GetContextHelpId() const = 0;
|
|
|
|
// sets/gets the DADMgr (allows override of DADMgr methods)
|
|
virtual void SetDADMgr(DADMgr *pDADMgr) = 0;
|
|
virtual DADMgr *GetDADMgr() const = 0;
|
|
|
|
// sets/gets the pre-event handler callback
|
|
virtual void SetPreEventHandlerCallback(PreEventHandlerCallback* pPreEventHandlerCB) = 0;
|
|
virtual PreEventHandlerCallback* GetPreEventHandlerCallback() const = 0;
|
|
|
|
// sets/gets the post-display callback
|
|
virtual void SetPostDisplayCallback(PostDisplayCallback* pPostDisplayCB) = 0;
|
|
virtual PostDisplayCallback* GetPostDisplayCallback() const = 0;
|
|
|
|
// provides a way for extending it with interfaces
|
|
virtual BaseInterface* GetInterface (Interface_ID id) { return NULL; }
|
|
};
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// -----------------------------------------------------------------------------
|
|
|
|
class IMAGE_VIEW_API IMaxBitmapViewer : public IImageViewer
|
|
|
|
// PURPOSE:
|
|
// Abstract class (Interface) for an default max bitmap viewer
|
|
//
|
|
// NOTES:
|
|
// created: 04.13.00 - mjm
|
|
//
|
|
// -----------------------------------------------------------------------------
|
|
// -----------------------------------------------------------------------------
|
|
|
|
{
|
|
public:
|
|
// sets/gets the bitmap
|
|
virtual void SetBitmap(Bitmap* pBitmap) = 0;
|
|
virtual Bitmap* GetBitmap() const = 0;
|
|
|
|
// sets/gets the crop callback
|
|
virtual void SetCropCB(CropCallback* pCropCallback) = 0;
|
|
virtual CropCallback* GetCropCB() const = 0;
|
|
|
|
// sets/gets the autonomous state
|
|
virtual void SetAutonomous(bool isAutonomous) = 0;
|
|
virtual bool GetAutonomous() const = 0;
|
|
|
|
// sets/gets the current position
|
|
virtual void SetCurrentPosition(WindowPosition currentPosition) = 0;
|
|
virtual WindowPosition GetCurrentPosition() const = 0;
|
|
|
|
// sets/gets whether to show the save button
|
|
virtual void SetShowSaveButton(bool showSaveButton) = 0;
|
|
virtual bool GetShowSaveButton() const = 0;
|
|
|
|
// (un)displays the viewer
|
|
virtual bool Display(TCHAR *title, WindowPosition position = WPos_Center) = 0;
|
|
// parameters x, y, w, & h will be ignored unless 'Current Position' is WPos_NULL
|
|
virtual bool Display(TCHAR *title, HWND hParent, int x, int y, int w, int h) = 0;
|
|
virtual bool UnDisplay() = 0;
|
|
virtual void ClearScreen() = 0;
|
|
|
|
// transforms point/rect between window's client coords and bitmap's coords
|
|
virtual POINT XFormScreenToBitmap(const POINT &pt) const = 0;
|
|
virtual POINT XFormBitmapToScreen(const POINT &pt) const = 0;
|
|
virtual Rect XFormScreenToBitmap(const Rect &rect) const = 0;
|
|
virtual Rect XFormBitmapToScreen(const Rect &rect) const = 0;
|
|
|
|
// shows/hides/toggles the toolbar
|
|
virtual void ShowToolbar(bool show) = 0;
|
|
virtual void ToggleToolbar() = 0;
|
|
|
|
// gets the portion of the window's client area that is safe to draw in (in client coordinates)
|
|
virtual void GetDrawableRect(Rect& drawableRect) = 0;
|
|
|
|
// refreshes the region of the window, or the entire window if region is NULL
|
|
virtual void RefreshWindow(Rect* pRefreshRegion = NULL) = 0;
|
|
|
|
// provides a way for extending it with interfaces
|
|
virtual BaseInterface* GetInterface (Interface_ID id) { return NULL; }
|
|
};
|
|
|
|
|
|
IMAGE_VIEW_API IMaxBitmapViewer* CreateIMaxBitmapViewer(Bitmap* pBitmap, IImageViewer::DisplayStyle displayStyle);
|
|
IMAGE_VIEW_API void ReleaseIMaxBitmapViewer(IMaxBitmapViewer *);
|
|
|
|
|
|
#endif // !defined( I_IMAGE_VIEWER_H_INCLUDED )
|