NT4/private/wangview/norway/iedit95/ieditdoc.h
2020-09-30 17:12:29 +02:00

1067 lines
36 KiB
C++

#ifndef _IEDITDOC_H_
#define _IEDITDOC_H_
//=============================================================================
// (c) Copyright Wang Laboratories, Inc. 1995 All rights reserved.
//-----------------------------------------------------------------------------
// Project: Norway - Image Editor
//
// Component: CIEditDoc
//
// File Name: ieditdoc.h
//-----------------------------------------------------------------------------
// Maintenance Log:
/*
$Header: S:\products\wangview\norway\iedit95\ieditdoc.h_v 1.130 11 Apr 1996 14:58:42 GMP $
$Log: S:\products\wangview\norway\iedit95\ieditdoc.h_v $
*
* Rev 1.130 11 Apr 1996 14:58:42 GMP
* removed m_hEvent.
*
* Rev 1.129 05 Apr 1996 15:10:10 PXJ53677
* Added new scan status.
*
* Rev 1.128 04 Apr 1996 16:57:12 GMP
* removed caching
*
* Rev 1.127 19 Mar 1996 11:21:36 GSAGER
* added new methods for onthumbctxrefresh for updating thumbnail with the
* context menu
*
* Rev 1.126 19 Mar 1996 10:55:12 PXJ53677
* Added OnFileSelectScanner and OnFileScanPreferences.
*
* Rev 1.125 13 Mar 1996 16:42:34 GMP
* ifdef INSERT and APPEND menu item indexes for WITH_AWD.
*
* Rev 1.124 22 Feb 1996 08:36:56 GSAGER
* changed the litteral numbers for insert and append bug 5875 zero based #s
*
* Rev 1.123 24 Jan 1996 13:40:50 GSAGER
* changed to support resize in word 7.0 in on draw.
*
* Rev 1.122 19 Jan 1996 11:19:18 GMP
* added support for normscrn bar.
*
* Rev 1.121 18 Jan 1996 11:52:00 GSAGER
* added new flag to track when in copy drag
*
* Rev 1.120 12 Jan 1996 12:59:48 GSAGER
* added paramater to setpageandthumbnailview
*
* Rev 1.119 11 Jan 1996 12:21:32 GSAGER
* added m_maintmpfile for objects embedded in exchange
*
* Rev 1.118 09 Jan 1996 13:55:36 GSAGER
* added changes for ole
*
* Rev 1.117 13 Dec 1995 12:34:34 MMB
* remove withsendmail stuff
*
* Rev 1.116 01 Dec 1995 14:44:04 LMACLENNAN
* back from VC++2.2
*
* Rev 1.115 01 Dec 1995 13:05:28 LMACLENNAN
* DispEmbeddedImage has input parm
*
* Rev 1.114 29 Nov 1995 12:10:44 LMACLENNAN
* SetNullView Enum Definition
*
* Rev 1.113 16 Nov 1995 13:04:20 LMACLENNAN
* new var m_bsendingmail
*
* Rev 1.112 09 Nov 1995 15:16:32 LMACLENNAN
* from VC++4.0
*
* Rev 1.114 07 Nov 1995 15:39:38 LMACLENNAN
* OnFileUpdate, INternalSaveAs 3rd parm
*
* Rev 1.113 07 Nov 1995 11:12:14 GMP
* added HelpRegister to allow CApp access to RegisterIfServerAttached.
*
* Rev 1.112 07 Nov 1995 08:38:32 LMACLENNAN
* InternalSaveAs
*
* Rev 1.111 06 Nov 1995 18:21:36 GMP
* added FindPopupMenuFromID helper function.
*
* Rev 1.110 03 Nov 1995 18:02:44 MMB
* change CachePage to accept name in ref instead of on the stack
*
* Rev 1.109 31 Oct 1995 15:49:28 LMACLENNAN
* FinishInit, PostFinishInit
*
* Rev 1.108 24 Oct 1995 09:29:16 JPRATT
* added new data member m_hCacheEvent for page cache
* added new member functions cachepage and createcachepage for page cache
*
* Rev 1.107 17 Oct 1995 16:36:48 JPRATT
* added new data member m_uTempFileNeeded used to create temporary documents
* when the file has been modified
*
* Rev 1.106 10 Oct 1995 13:14:40 LMACLENNAN
* OLE State Struct, LoadFromStorage, IsSettingscalegray, DIsplayImageFile
* m_bStartScaleGray
*
* Rev 1.105 09 Oct 1995 11:31:18 LMACLENNAN
* VC++4.0
*
* Rev 1.104 09 Oct 1995 10:34:44 LMACLENNAN
* DoFileSaveAs
*
* Rev 1.103 06 Oct 1995 11:58:56 LMACLENNAN
* FreeCLipboard
*
* Rev 1.102 29 Sep 1995 11:01:08 LMACLENNAN
* new selectionscrollX, Y variables
*
* Rev 1.101 26 Sep 1995 15:16:34 MMB
* initial path fix
*
* Rev 1.100 26 Sep 1995 14:24:42 LMACLENNAN
* OnShowViews, m_bdocwindowdeact
*
* Rev 1.99 25 Sep 1995 14:47:18 LMACLENNAN
* new getapphmenu
*
* Rev 1.98 23 Sep 1995 16:13:10 MMB
* added thread to Setdefaultambient props
*
* Rev 1.97 22 Sep 1995 15:54:16 JPRATT
* removed prompt for burnin for awd added warning for burn in on save
*
* Rev 1.96 22 Sep 1995 15:33:26 LMACLENNAN
* new vars, functs
*
* Rev 1.95 21 Sep 1995 16:46:10 LMACLENNAN
* oleprint
*
* Rev 1.94 20 Sep 1995 13:42:38 MMB
* added bMustDisplay
*
* Rev 1.93 20 Sep 1995 08:20:16 JPRATT
* add two member variable m_lMarkLeft and m_lMarkTop
* for last annotation marks selected to allow edit of text marks
*
* Rev 1.92 19 Sep 1995 16:32:28 MMB
* changed DispGroupEvent & some AWD save code
*
* Rev 1.91 18 Sep 1995 18:09:36 JPRATT
* updates for annotation context menu
*
* Rev 1.90 18 Sep 1995 16:25:30 LMACLENNAN
* new vars, functs
*
* Rev 1.89 16 Sep 1995 16:40:12 LMACLENNAN
* update a couple functs
*
* Rev 1.88 16 Sep 1995 14:01:16 LMACLENNAN
* new functs, vars
*
* Rev 1.87 14 Sep 1995 11:59:18 LMACLENNAN
* new variables
*
* Rev 1.86 13 Sep 1995 17:23:06 LMACLENNAN
* var m_bStartOcx
*
* Rev 1.85 13 Sep 1995 08:37:06 LMACLENNAN
* ENUM for annotforceoff, remove IPParent var
*
* Rev 1.84 12 Sep 1995 14:07:22 LMACLENNAN
* new annotforceoff var
*
* Rev 1.83 12 Sep 1995 11:41:24 MMB
* bug fixes
*
* Rev 1.82 11 Sep 1995 18:54:58 MMB
* annotations toggling
*
* Rev 1.81 08 Sep 1995 16:05:10 MMB
* add GetCurrAnnTool fn.
*
* Rev 1.80 08 Sep 1995 15:39:30 LMACLENNAN
* new variable
*
* Rev 1.79 08 Sep 1995 10:22:28 LMACLENNAN
* EDIT-CLEAR
*
* Rev 1.78 07 Sep 1995 16:31:08 MMB
* perf changes to AWD
*
* Rev 1.77 06 Sep 1995 16:18:00 LMACLENNAN
* GetOleView, hViewmenu
*
* Rev 1.76 03 Sep 1995 11:37:20 LMACLENNAN
* add OLEDIRTY_AWDSAVE
*
* Rev 1.75 02 Sep 1995 13:06:48 MMB
* made OleSaveModified public
*
* Rev 1.74 01 Sep 1995 17:53:14 MMB
* added code to clear document on error on save
*
* Rev 1.73 01 Sep 1995 14:11:00 LMACLENNAN
* updates for AWD native Fax operation
*
* Rev 1.72 30 Aug 1995 18:14:04 LMACLENNAN
* overrides to test dyn view GetDefaultxxxx
*
* Rev 1.71 30 Aug 1995 16:58:52 MMB
* added code to read the Open read only mode from the open dlg box
*
* Rev 1.70 29 Aug 1995 15:41:04 LMACLENNAN
* new var InOleMethod
*
* Rev 1.69 28 Aug 1995 10:27:46 LMACLENNAN
* m_OleRefersh
*
* Rev 1.68 25 Aug 1995 16:17:42 LMACLENNAN
* new m_olecleardoc
*
* Rev 1.66 25 Aug 1995 15:08:16 MMB
* add rotateall code
*
* Rev 1.64 25 Aug 1995 10:26:08 MMB
* move to document model
*
* Rev 1.63 24 Aug 1995 11:34:30 LMACLENNAN
* new m_awdOlefile
*
* Rev 1.62 23 Aug 1995 15:48:22 LMACLENNAN
* new override of savetostorage
*
* Rev 1.61 22 Aug 1995 14:04:20 MMB
* added clipstate for Larry & made m_eFitTo public
*
* Rev 1.60 18 Aug 1995 15:28:06 LMACLENNAN
* New StartAllOcx parms, new StartOleOcx
*
* Rev 1.59 17 Aug 1995 14:26:30 LMACLENNAN
* new funct StartOleOcx
*
* Rev 1.58 17 Aug 1995 09:42:22 LMACLENNAN
* new variable startallocx
*
* Rev 1.57 16 Aug 1995 15:13:32 LMACLENNAN
* timer for dragdrop
*
* Rev 1.56 14 Aug 1995 13:54:50 LMACLENNAN
* include 2 new nested headers mainfrm and ipframe
*
* Rev 1.55 12 Aug 1995 13:01:56 MMB
* added fn to tell if the ann palette is showing
*
* Rev 1.54 10 Aug 1995 12:55:06 LMACLENNAN
* new funct GetSelectionState, rename SetSelectionActive to State
*
* Rev 1.53 09 Aug 1995 11:34:46 LMACLENNAN
* new define for OleDirtyset
*
* Rev 1.52 07 Aug 1995 14:14:02 LMACLENNAN
* copyPage function, new type for OnCutCopy
*
* Rev 1.51 07 Aug 1995 09:25:38 MMB
* new selection status instead of BOOL
*
* Rev 1.50 04 Aug 1995 14:35:42 MMB
* changed DoZoom & added StartAllOcxs
*
* Rev 1.49 04 Aug 1995 09:56:12 LMACLENNAN
* new overrides for OLE linking
*
* Rev 1.48 03 Aug 1995 10:50:08 LMACLENNAN
* re-use m_fEmbObjDIsplayed
*
* Rev 1.47 02 Aug 1995 11:22:10 MMB
* changed SetPageTo from long to BOOL - in conformance with new error process
* ing
*
* Rev 1.46 01 Aug 1995 16:32:54 PAJ
* Added replace (ON_REPLACE) to the Redisplay function for rescan.
*
* Rev 1.45 01 Aug 1995 16:16:22 MMB
* changed over to new error handling method
*
* Rev 1.44 31 Jul 1995 16:10:08 LMACLENNAN
* new prototype allocOleBuffer
*
* Rev 1.43 31 Jul 1995 16:02:08 PAJ
* Added m_nScanStatus for scanning progress and results.
*
* Rev 1.42 31 Jul 1995 13:59:38 LMACLENNAN
* new X,Y scroll variables for OLE
*
* Rev 1.41 28 Jul 1995 16:09:46 LMACLENNAN
* new defines for oledirtyset
*
* Rev 1.40 27 Jul 1995 13:39:46 MMB
* added m_eFileStatus to keep track of file perm status
*
* Rev 1.39 26 Jul 1995 15:43:56 LMACLENNAN
* new OnNewBlankdocument helper routine
*
* Rev 1.38 21 Jul 1995 11:25:04 LMACLENNAN
* new flag m_oledirty and defines
*
* Rev 1.37 19 Jul 1995 13:13:34 MMB
* added code to prompt for burn in of annotations when file format is not TIFF
*
* Rev 1.36 18 Jul 1995 14:08:22 LMACLENNAN
* new defines for m_fromShowDOc
*
* Rev 1.35 18 Jul 1995 10:44:46 LMACLENNAN
* new funct MakeTempFile, make some OLE functs Private
*
* Rev 1.34 17 Jul 1995 09:07:38 MMB
* added UI update for Thumb context Show Page
*
* Rev 1.33 14 Jul 1995 09:34:42 MMB
* added fn to handle Thumb Context - Show Page and fixed CANCEL on SaveAS
*
* Rev 1.32 13 Jul 1995 13:41:30 MMB
* changed fn SetAnnotationTool to accept InEvent or not
*
* Rev 1.31 12 Jul 1995 16:28:56 LMACLENNAN
* new funct DelTmpFile
*
* Rev 1.30 12 Jul 1995 10:43:54 LMACLENNAN
* new member KnownPage on OLESTATE, new funct SetOleState
*
* Rev 1.29 07 Jul 1995 15:56:44 LMACLENNAN
* updated ShowScrollBars and ne m_bScrollBarProfile
*
* Rev 1.28 07 Jul 1995 14:31:50 MMB
* make m_embedType public
*
* Rev 1.27 07 Jul 1995 09:47:50 MMB
* added fn prototype for DoFilePrint
*
* Rev 1.26 06 Jul 1995 13:51:28 LMACLENNAN
* new funct OleSaveModified, Flag m_bOurSaveMod for OLE multi-page
*
* Rev 1.25 06 Jul 1995 13:04:42 MMB
* added fn prototype for Annotation Tool Palette
*
* Rev 1.24 06 Jul 1995 09:43:34 LMACLENNAN
* Override of OnUpdateDocument
*
* Rev 1.23 28 Jun 1995 13:32:42 LMACLENNAN
* added edit-cut and -paste
*
* Rev 1.22 26 Jun 1995 15:30:16 LMACLENNAN
* new DIspGroupEvent function
*
* Rev 1.21 26 Jun 1995 11:10:06 PAJ
* Added variable and routines to handle scanner available. Added routine
* to set scanner defaults.
*
* Rev 1.20 23 Jun 1995 15:57:40 LMACLENNAN
* new OLE save state structure
*
* Rev 1.19 22 Jun 1995 06:58:40 LMACLENNAN
* from miki
*
* Rev 1.18 21 Jun 1995 07:01:08 LMACLENNAN
* from miki
*
* Rev 1.17 20 Jun 1995 16:06:40 LMACLENNAN
* new override for In Place debug
*
* Rev 1.16 19 Jun 1995 09:51:12 PAJ
* Added scan menu items to the message map.
*
* Rev 1.15 16 Jun 1995 15:56:38 LMACLENNAN
* edit paste
*
* Rev 1.14 16 Jun 1995 07:21:12 LMACLENNAN
* from miki
*
* Rev 1.13 15 Jun 1995 07:20:22 LMACLENNAN
* from miki
*
* Rev 1.12 14 Jun 1995 07:21:14 LMACLENNAN
* from Miki
*
* Rev 1.11 13 Jun 1995 15:29:18 LMACLENNAN
* setnullview takes BOOL
*
* Rev 1.10 13 Jun 1995 08:08:06 LMACLENNAN
* from miki
*
* Rev 1.9 12 Jun 1995 11:48:10 MMB
* from miki
*
* Rev 1.8 09 Jun 1995 12:16:06 LMACLENNAN
* new variable m_fromshow
*
* Rev 1.7 09 Jun 1995 11:09:38 MMB
* added primary code for File/New/Scan
*
* Rev 1.6 05 Jun 1995 15:59:00 MMB
* added fn defns for Insert & Append existing pages
*
* Rev 1.5 05 Jun 1995 09:55:12 MMB
* added Drag functionality, fixed a bug where the second file open would
* not display the image file page in the IE OCX
*
* Rev 1.4 02 Jun 1995 10:17:00 MMB
* added File Save & Save As functionality
*
* Rev 1.3 01 Jun 1995 14:53:40 LMACLENNAN
* added ole overrides
*
* Rev 1.2 31 May 1995 16:07:42 MMB
* changed DoZoom & DisplayImageFile to accept more parameters
*
* Rev 1.1 31 May 1995 16:03:14 LMACLENNAN
* add OLE stuff back in
*/
//=============================================================================
// ----------------------------> Includes <---------------------------
#include "mainfrm.h" // for definition of CIEMainToolBar below...
#include "ipframe.h" // for definitiln of CInPlaceFrame
#include "ieditctl.h"
#include "ieditetc.h"
#include "occopy.h"
// ----------------------------> typedefs <---------------------------
#define MAX_STD_APROP_CT (32)
// Used to pass into OleDirtyset()
// THESE ARE BITWISE VALUES.. for a UINT
#define OLEDIRTY_DEFAULT 0
#define OLEDIRTY_ANNOT 1 // annotations have been seen
#define OLEDIRTY_SCROLL 2 // Scrolled...
#define OLEDIRTY_PAGINS 4 // Page Insert
#define OLEDIRTY_PAGDEL 8 // Page Delete
#define OLEDIRTY_PAGAPP 16 // Page Append
#define OLEDIRTY_PAGMOV 32 // Page Move
#define OLEDIRTY_ZOOM 64 // Zoom..
#define OLEDIRTY_ROTATE 128 // Rotate left/right
#define OLEDIRTY_AWDSAVE 256 // AWD FAX implicit save happened
#define OLEDIRTY_PASTE 512 // paste complete
#define OLEDIRTY_TOGSCROLL 1024 // scroll bars on/off
#define OLEDIRTY_TOGANNOT 2048 // annot show/hide
#define OLEDIRTY_WINSIZE 4096 // window resized
#define OLEDIRTY_SCALEGREY 8192 // scale to grey happened
#define OLEDIRTY_CONVERT 16384 // convert page happened
// for OLE for m_awdOlefax (BITWISE VALUES)
#define AWDOLE_FAXDOC 1
#define AWDOLE_TIFF 2
#define AWDOLE_NATIVE 4
#define AWDOLE_FINISHINIT 8
// For OLE m_fromShowDoc
// THESE ARE BITWISE VALUES....
// VALUE of 0 is cleared...
// the 1,2,4 bits are original functionality
// the
#define SHOWCLEAR 0
#define SHOWTRUE 1 // OnShowDocument(TRUE)
#define SHOWFALSE 2 // OnShowDocument(FALSE)
#define FROMONHIDE 4 // processing SrvrItem::OnHide now
#define SHOWHIDEFALSE 6 // combines SHOWFALSE and FROMMONHIDE
#define INONSHOW 8 // processing Srvritem::OnShow now
// Used to grey the page insert/append menu picks
// NOTE: if changes are made to the page menu, these numbers must be adjusted accordingly.
#ifdef WITH_AWD
#define INSERTPOS 15
#define APPENDPOS 16
#else
#define INSERTPOS 14
#define APPENDPOS 15
#endif
// for OLE m_embedType types
// Initial value is NOSTATE.
// States are set based on wether we see filenames at key overridable routines
typedef enum
{
EMBEDTYPE_NOSTATE = 0, // Could be treated equivalent to _REG
EMBEDTYPE_NONE, // not embedded (Could be a Link, though)
EMBEDTYPE_REG, // Regular embedded data (activate or create NEW OBJ)
EMBEDTYPE_CREATFIL // EMBED-Create from file
} EMBEDTYPE;
// this is the header data that the OLE EMbedding code will
// use to store the state of the displayed image. This will
// allow them to get back where they were when they re-activate it
// Track revisions of state struct here, please
// DATE Ver Comment
// 06/23/95 1 Initial.
// 07/12/95 2 KnownPages
// 07/31/95 3 DataLength
// 10/10/95 4 ScaleGray, Witdh, Height, reserved
#define STATE_STRUCT_VER 4 // THIS CHANGES IF THE STRUCT CHANGES!!!
typedef struct
{
float ZoomFactor;
ScaleFactors FitTo;
long PageNum;
long XScroll;
long YScroll;
long KnownPages;
DWORD DataLength; // length of file data
ScaleGray SclGray; // 10/10/95 scale to gray status
RECT AppRect; // 10/10/95 Apps rectangle
SIZE PresExtent; // 10/10/95 Last presentation extent
SIZE OcxExtent; // 10/10/95 Last OCX extent
RECT PosRect; // 10/10/95 Last Position rect in container
RECT ClipRect; // 10/10/95 Last Position rect in container
long reserved[32]; // reserved space
} OLESTATEINFO;
// for OleRectOrSize function
typedef enum
{
SETAppRect = 0,
GETAppRect,
SETPosRect,
GETPosRect,
SETClipRect,
GETClipRect,
SETPresExt,
GETPresExt,
SETOcxExt,
GETOcxExt
} OLERECTPARM;
// for OnCutCopy function
typedef enum
{
CLIP_COPY = 0,
CLIP_CUT,
CLIP_COPYPAGE,
CLIP_PASTE
} CLIPTYPE;
// for m_clipstate
typedef enum
{
CLIP_NONE = 0,
CLIP_OLE,
CLIP_OI
} CLIPSTATE;
// for m_bAnnotationPaletteForceOff variable
typedef enum
{
CLEAR_FORCEOFF = 0,
NOTCHANGE_FORCEOFF,
APPMINIMIZE_FORCEOFF,
OLEINPLACE_FORCEOFF
}
FORCEDBYWHO;
// for SetNullView.
typedef enum
{
CLEAR_NOTHING = 0,
CLEAR_OCX_ONLY,
CLEAR_ALL
}
NULLVIEWOPT;
typedef struct
{
short sCompType;
long lCompInfo;
short sFileType;
} NewCompressionstruct;
// used for page cache
/*typedef struct
{
long Page;
long TotalPages;
CString ImageFile;
HANDLE hEvent;
} CACHEINFO, *FAR LPCACHEINFO;*/
// ----------------------------> externs <---------------------------
class CIEditSrvrItem;
HRESULT TFVarCopy (VARIANT * pvarDest, VARIANT * pvarSrc);
// ----------------------------> defines <---------------------------
#define ON_INSERT 0
#define ON_APPEND 1
#define ON_DELETE 2
#define ON_REPLACE 3
// Used in m_nScanStatus
// THESE ARE BITWISE VALUES..
#define SCANSTATUS_NONE 0
#define SCANSTATUS_STARTED 1
#define SCANSTATUS_PAGEDONE 2
#define SCANSTATUS_DONE 4
#define SCANSTATUS_DONTCLEAR 8
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-> Class <-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
class CIEditDoc : public COleServerDoc
{
protected: // create from serialization only
CIEditDoc();
DECLARE_DYNCREATE(CIEditDoc)
public :
void ClearDocument ();
// Attributes
public:
CIEditSrvrItem* GetEmbeddedItem()
{ return (CIEditSrvrItem*)COleServerDoc::GetEmbeddedItem(); }
CLIPFORMAT GetCfFormat(UINT); //OLE to get clipboard format registered
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CIEditDoc)
protected:
virtual COleServerItem* OnGetEmbeddedItem();
public:
virtual BOOL OnNewDocument();
virtual BOOL SaveModified ();
virtual BOOL DoFileSave ();
virtual BOOL DoFileSaveAs ();
// document handling overrides
virtual void DeleteContents(); // delete client items in list
virtual void PreCloseFrame(CFrameWnd* pFrame);
//}}AFX_VIRTUAL
protected:
virtual void OnCloseDocument();
// OLE override to intercept open for Linking....
virtual BOOL OnOpenDocument(const char* pszPathName);
// OLE OVERRIDE to gain flag for embedding
virtual BOOL OnSaveDocument(const char* pszPathName);
virtual BOOL DoSave (LPCTSTR lpszPathName, BOOL bReplace = TRUE);
public:
// Overridables for standard user interface (full server)
virtual BOOL OnUpdateDocument(); // implementation of embedded update
// called during app-idle when visibility of a document has changed
virtual void OnShowViews(BOOL bVisible);
protected:
// Overridables you do not have to implement
virtual void OnClose(OLECLOSE dwCloseOption);
virtual void OnSetHostNames(LPCSTR lpszHost, LPCSTR lpszHostObj);
// Advanced overridables
virtual void OnShowDocument(BOOL bShow);
// show first frame for document or hide all frames for document
// overridables for OLE LINKING
virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
// return item for the named linked item (only if supporting links)
virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
// return item for the named embedded item (for links to embeddings)
virtual COleClientItem* OnFindEmbeddedItem(LPCTSTR lpszItemName);
// overrides to handle server user-interface
virtual HMENU GetDefaultMenu(); // return menu based on doc type
virtual HACCEL GetDefaultAccelerator(); // return accel table based on doc type
// virtual BOOL GetFileTypeString(CString& rString);
// Advanced overridables for in-place activation
virtual void OnDeactivate();
public: // for IEditVw
virtual void OnDeactivateUI(BOOL bUndoable);
virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
protected:
virtual void OnSetItemRects(LPCRECT lpPosRect, LPCRECT lpClipRect);
virtual BOOL OnReactivateAndUndo();
virtual void OnFrameWindowActivate(BOOL bActivate);
virtual void OnDocWindowActivate(BOOL bActivate);
virtual void OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow);
virtual void OnResizeBorder(LPCRECT lpRectBorder,
LPOLEINPLACEUIWINDOW lpUIWindow, BOOL bFrame);
virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);
virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);
// IPersistStorage implementation
virtual void OnNewEmbedding(LPSTORAGE lpStorage);
virtual void OnOpenEmbedding(LPSTORAGE lpStorage);
virtual void OnSaveEmbedding(LPSTORAGE lpStorage);
virtual void SaveToStorage(CObject* pObject = NULL);
virtual void LoadFromStorage();
// Implementation
public:
virtual ~CIEditDoc();
virtual void Serialize(CArchive& ar); // overridden for document i/o
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
public :
void OcxDeactivate(OCXTYPE ocx); // HELPER handshake w/ocx for view maint.
BOOL StartAllOcx(BOOL dothumb, BOOL onlyimage); // HELPER to start OCXs for error processing
CIEMainToolBar* GetAppToolBar(); // HELPER to deliver regular or INPLACE toolbar
HMENU GetApphMenu(); // HELPER to deliver regular or INPLACE menu handle
CMenu* FindPopupMenuFromID(CMenu* pMenu, UINT nID);//HELPER to get popupmenu from ID
BOOL HelpRegister( LPCSTR szFileName, BOOL bMessage );
public :
BOOL SetDefaultAmbientProps ();
void DestroyAmbientProps (BOOL bInitializing = FALSE);
LPAPROP FindAprop (DISPID dispid);
LPAPROP FindAprop (OLECHAR FAR* FAR* pszName);
BOOL SetUserMode (BOOL bToWhat);
public :
TheViews GetCurrentView ();
BOOL SetAppDocStatus (AppDocStatus eDocStatus);
AppDocStatus GetAppDocStatus ();
long GetPageCount ();
long GetCurrentPage ();
float GetCurrentZoomFactor ();
MouseMode GetCurrPtrMode ();
AnnotationTool GetCurrAnnTool ();
int OurGetAnnotMarkCount(); // works with m_bFloatingPaste
BOOL OurGetImageModified(); // also works with m_bFloatingPaste
BOOL FinishPasteNow(UINT event = 0); // also works with m_bFloatingPaste
BOOL FreeClipboard(DWORD millisec);
BOOL IsSettingScaletogray();
BOOL FinishInit(WPARAM wParam, LPARAM lParam); // postmessage to finish up our init for AWD FAX
void PostFinishInit(); // called to complete initialization
BOOL InternalSaveAs(CString& lpszPathName, short sUseFileType, short sUsePageType);
public :
BOOL DisplayImageFile (CString& szFileName, TheViews eWhichView = One_Page,
long lPageNumber = 1,float fZoomFactor = 100.00, ScaleFactors eSclFac = Custom,
BOOL bForceReadOnly = FALSE, ScaleGray eSclGray = Default_Gray);
BOOL ReDisplayImageFile (int nAction, long lPageBefore = 1, long lPageNum = 1);
BOOL DisplayEmbeddedImage(UINT fromwhere); // OLE HELPER
BOOL DispGroupEvent(float fZoom); // response to control's GROUP event
BOOL SetOnePageView (BOOL bForceRefresh = FALSE);
BOOL SetThumbnailView (BOOL bForceRefresh = FALSE);
BOOL SetThumbnailAndPageView (BOOL bForceRefresh = FALSE, BOOL bUpdateThumbSize = FALSE);
BOOL SetNullView (NULLVIEWOPT option);
BOOL DoZoom (ScaleFactors eSclFac, float fZoomTo = 0.0, BOOL bRefresh = TRUE, BOOL bHandleError = TRUE);
BOOL DoZoomWithDlg ();
BOOL SetPageTo (long lPage, BOOL bUpdateOnly = FALSE, BOOL bHandleError = TRUE, BOOL bCenterThumb = TRUE);
void DoPageGotoDlg ();
BOOL ShowScrollBars (BOOL bShowScrollBars, BOOL bProfile = FALSE);
BOOL SetAnnotationTool (AnnotationTool eTool, BOOL bInEvent = FALSE);
BOOL ShowAnnotationPalette (BOOL bStatus, FORCEDBYWHO forceopt);
BOOL IsAnnotationPaletteShowing ();
void DoFilePrint(BOOL bPrintAndClose = FALSE, BOOL bShowPrintDlg = TRUE);
UINT DoNewBlankdocument(BOOL oleCreatenew = FALSE, LPCTSTR szNewFile = NULL); // helper to share function
BOOL ClearSelectionRect(SelectionStatus clearwhat);
BOOL RestoreSelectionRect();
void SetInitialPath (CString& szPath);
public :
BOOL SetSelectionState (SelectionStatus eStatus);
SelectionStatus GetSelectionState();
BOOL AdminShowFileDialogBox (CString& szTitle, long lFlags);
BOOL ShowAdminSaveAsDialog (short &FileType);
int PromptForBurnIn (short sFileType);
// OLE Helper functions
public :
void OleFrame(CRect& rc, OLERECTPARM parm);
void OleFrame(CSize& sz, OLERECTPARM parm);
void InitOleVariables();
BOOL IsitEmbed();
void OleDirtyset(UINT howDirty = OLEDIRTY_DEFAULT);
void SetClip(UINT); //OLE helper funct for clipboard data
void IPDebugDmp(const char*); // DEBUGGING ONLY....INPLACE
void DragMouseDown(BOOL setting);
void StartDragDrop();
BOOL InOleMethod(BOOL inmethod, BOOL permission);
HMENU GetOleViewMenu(UINT);
void calculateExtent(CSize& rSize) ; // RESIZE
private:
void OleRectOrSize(CRect& rc, CSize& sz, OLERECTPARM parm);
void MakeTempFile(LPCTSTR szPrefix, CString& szTheFile, short FileType = 0);
BOOL DelTempFile(CString&, DWORD, DWORD);
void SetOleState(UINT);
UINT AllocOleBuffer(char far* far*);
BOOL StartOleOcx(HRESULT hr, BOOL onlyimage);
public :
BOOL InternalSaveModified (UINT option = 0);
BOOL OleSaveModified(); // makes things more efficient...
public:
BOOL GetScanAvailable();
void SetScanAvailable(BOOL bScanAvailable);
protected:
void SetScanDefaults();
void OnCutCopy(CLIPTYPE type); // services cut/copy
// Generated message map functions
protected:
//{{AFX_MSG(CIEditDoc)
afx_msg void OnIeditFileOpen();
afx_msg void OnUpdatePageRanges(CCmdUI* pCmdUI);
afx_msg void OnUpdatePageGoback(CCmdUI* pCmdUI);
afx_msg void OnPageFirst();
afx_msg void OnPageGoto();
afx_msg void OnPageLast();
afx_msg void OnPageNext();
afx_msg void OnPagePrevious();
afx_msg void OnPageGoback();
afx_msg void OnUpdateZoomFactorStatus (CCmdUI* pCmdUI);
afx_msg void OnUpdatePageNumberStatus (CCmdUI* pCmdUI);
afx_msg void OnUpdateEditRotate(CCmdUI* pCmdUI);
afx_msg void OnEditFlip();
afx_msg void OnEditRotateleft();
afx_msg void OnEditRotateright();
afx_msg void OnUpdateWhichView(CCmdUI* pCmdUI);
afx_msg void OnViewOnepage();
afx_msg void OnViewPageandthumbnails();
afx_msg void OnViewThumbnails();
afx_msg void OnUpdateEditSelect(CCmdUI* pCmdUI);
afx_msg void OnEditSelect();
afx_msg void OnUpdateEditDrag(CCmdUI* pCmdUI);
afx_msg void OnEditDrag();
afx_msg void OnUpdateZoom(CCmdUI* pCmdUI);
afx_msg void OnZoom100();
afx_msg void OnZoom200();
afx_msg void OnZoom25();
afx_msg void OnZoom400();
afx_msg void OnZoom50();
afx_msg void OnZoom75();
afx_msg void OnZoomActualsize();
afx_msg void OnZoomBestfit();
afx_msg void OnZoomCustom();
afx_msg void OnZoomFittoheight();
afx_msg void OnZoomFittowidth();
afx_msg void OnZoomZoomin();
afx_msg void OnZoomZoomout();
afx_msg void OnZoomZoomtoselection();
afx_msg void OnScaleBoxSel();
afx_msg void OnUpdateFileNewBlankdocument(CCmdUI* pCmdUI);
afx_msg void OnFileNewBlankdocument();
afx_msg void OnUpdateViewScaletogray(CCmdUI* pCmdUI);
afx_msg void OnViewScaletogray();
afx_msg void OnEditCopy();
afx_msg void OnUpdateEditCopy(CCmdUI* pCmdUI);
afx_msg void OnUpdateIeditFileSave(CCmdUI* pCmdUI);
afx_msg void OnIeditFileSave();
afx_msg void OnUpdateIeditFileSaveAs(CCmdUI* pCmdUI);
afx_msg void OnIeditFileSaveAs();
afx_msg void OnUpdatePageInsertExistingpage(CCmdUI* pCmdUI);
afx_msg void OnPageInsertExistingpage();
afx_msg void OnUpdatePageAppendExistingpage(CCmdUI* pCmdUI);
afx_msg void OnPageAppendExistingpage();
afx_msg void OnUpdateFileNewScan(CCmdUI* pCmdUI);
afx_msg void OnFileNewScan();
afx_msg void OnViewOptionsGeneral();
afx_msg void OnViewOptionsThumbnail();
afx_msg void OnUpdateIeditFilePrint(CCmdUI* pCmdUI);
afx_msg void OnIeditFilePrint();
afx_msg void OnPagePrintpage();
afx_msg void OnUpdatePagePrintpage(CCmdUI* pCmdUI);
afx_msg void OnPageDelete();
afx_msg void OnUpdatePageDelete(CCmdUI* pCmdUI);
afx_msg void OnUpdatePageConvert(CCmdUI* pCmdUI);
afx_msg void OnPageConvert();
afx_msg void OnUpdateFileSendMail(CCmdUI* pCmdUI);
afx_msg void OnFileSendMail();
afx_msg void OnEditPaste();
afx_msg void OnUpdateEditPaste(CCmdUI* pCmdUI);
afx_msg void OnUpdateScanPage(CCmdUI* pCmdUI);
afx_msg void OnPageAppendScanpage();
afx_msg void OnPageInsertScanpage();
afx_msg void OnPageRescan();
afx_msg void OnUpdateShowAnntoolbox(CCmdUI* pCmdUI);
afx_msg void OnShowAnntoolbox();
afx_msg void OnUpdateAnnTool(CCmdUI* pCmdUI);
afx_msg void OnUpdateHideAnn(CCmdUI* pCmdUI);
afx_msg void OnHideAnnotations();
afx_msg void OnUpdateBurnInAnn(CCmdUI* pCmdUI);
afx_msg void OnBurnInAnn();
afx_msg void OnAnnotationAttachanote();
afx_msg void OnAnnotationFilledrectangle();
afx_msg void OnAnnotationFreehandline();
afx_msg void OnAnnotationHighlightline();
afx_msg void OnAnnotationHollowrectangle();
afx_msg void OnAnnotationNotool();
afx_msg void OnAnnotationRubberstamps();
afx_msg void OnAnnotationSelectionpointer();
afx_msg void OnAnnotationStraightline();
afx_msg void OnAnnotationTextfromfile();
afx_msg void OnAnnotationTypedtext();
afx_msg void OnEditCut();
afx_msg void OnUpdateThumbctxtShowpage(CCmdUI* pCmdUI);
afx_msg void OnThumbctxtShowpage();
afx_msg void OnUpdateThumbctxtRefresh(CCmdUI* pCmdUI);
afx_msg void OnThumbctxtRefresh();
afx_msg void OnEditCopypage();
afx_msg void OnUpdateEditCopypage(CCmdUI* pCmdUI);
afx_msg void OnUpdatePageRotateall(CCmdUI* pCmdUI);
afx_msg void OnPageRotateall();
afx_msg void OnEditClear();
afx_msg void OnUpdateEditClear(CCmdUI* pCmdUI);
afx_msg void OnAnnotationctxtEdit();
afx_msg void OnAnnotationctxtProperties();
afx_msg void OnFileUpdate();
afx_msg void OnFileSelectscanner();
afx_msg void OnFileScanPreferences();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
// Generated OLE dispatch map functions
//{{AFX_DISPATCH(CIEditDoc)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()
protected:
// Ambient Property Attributes
APROP m_apropStd[MAX_STD_APROP_CT];
int m_nStdApropCt;
CFontHolder* m_lpFontHolder;
CString m_strFaceName;
FONTDESC m_fntdesc;
private:
// OLE Server variables
CLIPFORMAT m_cf1; //"Wang Annotated Image"
CLIPFORMAT m_cf2; //"Wang Annotation"
UINT m_isClip; // clipboard data
BOOL m_bOurSaveMod; // special control of SaveModified for EMbedding
CString m_oldObjDisplayed; // remembers last name is switching embedded data
UINT m_oleDirty; // remembers how dirty we got;
long m_lastXScroll; // scrolling position
long m_lastYScroll; // scrolling position
UINT m_fEmbObjDisplayed; // displayed data for OLE USE BITWISE
CInPlaceFrame* m_IPFrameWnd; // InPlace Frame Window
BOOL m_bDragMouseDown; // works with timer for dragdrop
BOOL m_OleRefresh; // handles special resize problem
BOOL m_inOleMethod; // error recovery...
BOOL m_DocWindowDeact; // Called to deactivate the doc (MDI container)
BOOL m_bInitialSetItemRect;// Set for setitemrect to check for reesize
BOOL m_bUpdateExt; // Set for setitemrect to force saveext for reesize
BOOL m_bNewFact; // Set for initial zoom display for OLEe
UINT m_awdOlefax; // native AWD fax data (or TIFF subs)
UINT m_OleCloseFlag; // AWD special program flow...
HMENU m_hMenuViewInplace; // OLE view menu
HMENU m_hMenuViewEmbed; // OLE view menu
public :
// OLE header data saved with embedded data
OLESTATEINFO m_embedstate; // struct with the information
// made it public so that we can set it to EMBEDTYPE_NONE when there is a command line
EMBEDTYPE m_embedType; // embedded data
public: // OLE Server variables... allow access for srvritem
long m_SelectionScrollX; // scrolling position from ocxevent
long m_SelectionScrollY; // scrolling position from ocxevent
CRect m_SelectionRect; // set from ocxevent
CString m_onOpenFile; // from OnOpenDocument for Links/Create from File
CString m_embedTmpFile; // data loaded/stored from container
CString m_mailTmpFile; // only used for inbox
UINT m_isInPlace; // remembers state....
UINT m_fromShowDoc; // USES BITWISE DEFINES....
BOOL m_needPresentation; // prevents wasteful updates...
BOOL m_OleClearDoc; // dying from cleardocument...
BOOL m_bStartOcx; // for ITEMS.CPP, tells trying to start..
BOOL m_OlePrint; // prevent dirtyset if in print
CSize m_docOcxExtent; // HIMETRIC size of OCX
BOOL m_bIsScaled; // controls OLE inplace sizing
CSize m_OrigSize; // original size of when displayed
CSize m_OrigExtent; // original extent when displayed
float m_newfact; // new zoom multiplier
BOOL m_bNewEmbed; // to tell that a new embedded object is being created
public :
// use this with care - setting this will NOT update JACK!!
ScaleFactors m_eFitTo;
BOOL m_bFloatingPaste; // Tracks floating paste state
public :
// used for context menus for annotation marks (Edit)
long m_lMarkLeft; // last selected annotation mark x pos
long m_lMarkTop; // last selected annnotation mark y pos
UINT m_nFinishInit; // Used for performance startup
private :
// used when adding new annotations for AWD files in this session
BOOL m_bNewAnnotationsAdded;
private :
UINT m_ocxsFlag;
AppDocStatus m_eCurrentAppDocStatus;
//CString m_szCurrObjDisplayed;
TheViews m_eCurrentView;
long m_lCurrPageNumber;
long m_lPreviousPageNumber;
MouseMode m_eCurrPtrMode;
CString m_szInitialPath;
CLIPSTATE m_clipstate;
BOOL m_bStartScaleGray; // forces app choice of scale-to gray on display
UINT m_uTempFileNeeded; // controls "new" doc model 10/17/95
BOOL m_bSendingMail;
private :
float m_fZoomFactor;
float m_fOrigZoomFactor; // for Aggravate Wang Developers file format crap
long m_lPageCount;
BOOL m_bAnnotationPaletteShowing;
SelectionStatus m_bSelectionState;
BOOL m_bAnnotationsHidden;
BOOL m_bAnnotationsHiddenToggled;
BOOL m_bCanBeMultiPage;
AnnotationTool m_nCurrAnnTool;
private :
BOOL m_bShowScrollBars; // Tells current scroll bar setting
BOOL m_bScrollBarProfile; // current registry setting of scrollbar
private :
BOOL m_bScanAvailable; // TRUE - scanner software available
public:
UINT m_nScanStatus; // Reflects the state of the events...
BOOL m_bShowNormScrnBar;//put up return to normal view tool bar
private :
NewCompressionstruct m_CompStruct;
public:
FORCEDBYWHO m_bAnnotationPaletteForceOff; // public for MAINFRM.CPP
// use this with care - simply setting this might render the application's internal data useless
// this string contains the real file name that was opened by the user
CString m_szCurrObjDisplayed; // OLE let it be public for SrvrItem code
// member variables used to support the document model.
// this string contains the temporary file name that is currently displayed.
CString m_szInternalObjDisplayed;
ModificationStatus m_bWasModified; // signifies whether an explicit save was ever done on this image.
FilePermissions m_eFileStatus;
#ifdef THUMBGEN
public :
BOOL m_bMustDisplay; // must we display the image in the IEOCX or can we do a Refresh
#endif
};
#endif