document.h

Go to the documentation of this file.
00001 // $Id: document.h 1310 2006-06-13 13:03:40Z alex $
00002 /* @@tag:xara-cn@@ DO NOT MODIFY THIS LINE
00003 ================================XARAHEADERSTART===========================
00004  
00005                Xara LX, a vector drawing and manipulation program.
00006                     Copyright (C) 1993-2006 Xara Group Ltd.
00007        Copyright on certain contributions may be held in joint with their
00008               respective authors. See AUTHORS file for details.
00009 
00010 LICENSE TO USE AND MODIFY SOFTWARE
00011 ----------------------------------
00012 
00013 This file is part of Xara LX.
00014 
00015 Xara LX is free software; you can redistribute it and/or modify it
00016 under the terms of the GNU General Public License version 2 as published
00017 by the Free Software Foundation.
00018 
00019 Xara LX and its component source files are distributed in the hope
00020 that it will be useful, but WITHOUT ANY WARRANTY; without even the
00021 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00022 See the GNU General Public License for more details.
00023 
00024 You should have received a copy of the GNU General Public License along
00025 with Xara LX (see the file GPL in the root directory of the
00026 distribution); if not, write to the Free Software Foundation, Inc., 51
00027 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
00028 
00029 
00030 ADDITIONAL RIGHTS
00031 -----------------
00032 
00033 Conditional upon your continuing compliance with the GNU General Public
00034 License described above, Xara Group Ltd grants to you certain additional
00035 rights. 
00036 
00037 The additional rights are to use, modify, and distribute the software
00038 together with the wxWidgets library, the wxXtra library, and the "CDraw"
00039 library and any other such library that any version of Xara LX relased
00040 by Xara Group Ltd requires in order to compile and execute, including
00041 the static linking of that library to XaraLX. In the case of the
00042 "CDraw" library, you may satisfy obligation under the GNU General Public
00043 License to provide source code by providing a binary copy of the library
00044 concerned and a copy of the license accompanying it.
00045 
00046 Nothing in this section restricts any of the rights you have under
00047 the GNU General Public License.
00048 
00049 
00050 SCOPE OF LICENSE
00051 ----------------
00052 
00053 This license applies to this program (XaraLX) and its constituent source
00054 files only, and does not necessarily apply to other Xara products which may
00055 in part share the same code base, and are subject to their own licensing
00056 terms.
00057 
00058 This license does not apply to files in the wxXtra directory, which
00059 are built into a separate library, and are subject to the wxWindows
00060 license contained within that directory in the file "WXXTRA-LICENSE".
00061 
00062 This license does not apply to the binary libraries (if any) within
00063 the "libs" directory, which are subject to a separate license contained
00064 within that directory in the file "LIBS-LICENSE".
00065 
00066 
00067 ARRANGEMENTS FOR CONTRIBUTION OF MODIFICATIONS
00068 ----------------------------------------------
00069 
00070 Subject to the terms of the GNU Public License (see above), you are
00071 free to do whatever you like with your modifications. However, you may
00072 (at your option) wish contribute them to Xara's source tree. You can
00073 find details of how to do this at:
00074   http://www.xaraxtreme.org/developers/
00075 
00076 Prior to contributing your modifications, you will need to complete our
00077 contributor agreement. This can be found at:
00078   http://www.xaraxtreme.org/developers/contribute/
00079 
00080 Please note that Xara will not accept modifications which modify any of
00081 the text between the start and end of this header (marked
00082 XARAHEADERSTART and XARAHEADEREND).
00083 
00084 
00085 MARKS
00086 -----
00087 
00088 Xara, Xara LX, Xara X, Xara X/Xtreme, Xara Xtreme, the Xtreme and Xara
00089 designs are registered or unregistered trademarks, design-marks, and/or
00090 service marks of Xara Group Ltd. All rights in these marks are reserved.
00091 
00092 
00093       Xara Group Ltd, Gaddesden Place, Hemel Hempstead, HP2 6EX, UK.
00094                         http://www.xara.com/
00095 
00096 =================================XARAHEADEREND============================
00097  */
00098            
00099 #ifndef INC_DOCUMENT
00100 #define INC_DOCUMENT
00101 
00102 #include "listitem.h"
00103 #include "list.h"
00104 
00105 #include "basedoc.h"    // base class
00106 
00107 #include "flags.h"
00108 #include "pathname.h"    
00109 //#include "ophist.h"
00110 #include "colcarry.h"
00111 #include "units.h"
00112 #include "monotime.h"
00113 
00114 #include "ralphint.h"
00115 
00116 
00117 // Several mutual dependencies, so forward refs are needed:
00118 class WorkRect;
00119 class Document;
00120 class DocView;
00121 class View;
00122 class CCamDoc;
00123 class Path;
00124 class Spread;
00125 class Node;
00126 class NodeDocument;
00127 class NodeAttribute;
00128 class NodeSetSentinel;
00129 class DocComponent;
00130 class ArrowRec;
00131 class AttributeManager;
00132 class InsertionNode;
00133 class Filter;
00134 class EPSFilter;
00135 class EPSExportDC;
00136 class DragInformation;
00137 class RalphDocument;
00138 class BitmapList;
00139 
00140 // Horizontal gap between each chapter
00141 const INT32 CHAPTERGAP = 5;
00142 
00143 // Function def for ForceRedraw() parameter
00144 typedef BOOL (*FRDocViewFunc)(DocView*);
00145 
00146 /********************************************************************************************
00147 
00148 <   ProcessEPSResult
00149 
00150     Comment:    This typedef is used when reading in EPS comments during an import.  It
00151                 indicates whether the comment was recognised, unknown, contained an error,
00152                 and so on.
00153 
00154                 Possible values:
00155 
00156                     EPSCommentUnknown
00157                     EPSCommentSyntaxError
00158                     EPSCommentSystemError
00159                     EPSCommentOK
00160 
00161     SeeAlso:    Document::ProcessEPSComment; DocComponent::ProcessEPSComment
00162 
00163 ********************************************************************************************/ 
00164 
00165 enum ProcessEPSResult
00166 {
00167     EPSCommentUnknown,
00168     EPSCommentSyntaxError,
00169     EPSCommentSystemError,
00170     EPSCommentOK
00171 };
00172 
00173 /********************************************************************************************
00174 
00175 >   class SafeRenderPointer : public CCObject
00176 
00177     Author:     Will_Cowling (Xara Group Ltd) <camelotdev@xara.com>
00178     Created:    6/9/96
00179     Purpose:    A object to handle the current 'safe' rendering pointer within the document.
00180                 This is used for 'Progressive Rendering' (see kernel\docview.h/cpp), during 
00181                 the loading of a document.
00182 
00183 ********************************************************************************************/
00184 
00185 class SafeRenderPointer : public CCObject
00186 {
00187 public:
00188 
00189     SafeRenderPointer();
00190     ~SafeRenderPointer();
00191 
00192     void SetPointerValid();
00193     void SetPointerInValid();
00194 
00195     BOOL IsPointerValid();
00196 
00197     // Functions to set/get the safe render node
00198     BOOL UpdateLastSafeNode(Node* pNewNode);
00199     Node* GetLastSafeNode();
00200 
00201 protected:
00202 
00203     Node* pLastSafeNodeToRender;
00204     BOOL m_bPointerValid;
00205 
00206     CC_DECLARE_DYNAMIC(SafeRenderPointer)
00207 };
00208 
00209 
00210 
00211 /*********************************************************************************************
00212 >   class Document : public BaseDocument
00213 
00214     Author:     Mario_Shamtani (Xara Group Ltd) <camelotdev@xara.com> (messed about by Tim) (sorted out by JustinF)
00215     Created:    13/4/1993
00216     Purpose:    To represent a platform independent document object.
00217 *********************************************************************************************/
00218 
00219 class Document : public BaseDocument
00220 {
00221 
00223 // Construction & destruction
00224 
00225 public:
00226 
00227     Document(BOOL IsAHiddenDocument = FALSE);
00228     virtual ~Document();
00229 
00230     static  BOOL ReadPrefs();
00231     virtual BOOL Init(CCamDoc* pOilDoc);    // attaches this document to the CCamDoc,
00232     virtual BOOL ReInit();                  // cf. BaseDocument::Init
00233 
00234     virtual BOOL IsNotAClipboard() const        { return TRUE; };
00235     virtual BOOL IsAClipboard() const           { return FALSE; };
00236 
00237 protected:
00238 
00239     BOOL InitFailed();                      // Called to tidy up on fail-exit from Init()
00240     BOOL InitTree(NodeDocument* RootNode);  // Called to build the basic tree structure
00241 
00242     //Counting the number of layers
00243 public:
00244     INT32 GetNumLayers();
00245 
00246 public:
00247     // Returns TRUE if the document is now "born and stable".
00248     BOOL IsStable() const           { return m_fStable; }
00249     void SetStable(BOOL fStable)    { m_fStable = fStable; }
00250 
00251 private:
00252     BOOL m_fStable;
00253 
00254 
00256 // **RALPH** stuff should be moved into a new derived class when time will allow 
00257 
00258 public:
00259 
00260     RalphDocument* GetRalphDoc()                    { return pRalphDocument; }
00261     BOOL IsARalphDoc(void)                          { return IsARalph; }
00262     void SetRalphDoc (BOOL b)                       { IsARalph = b; }
00263 
00264     BOOL ConnectRalphDocument(RalphDocument *pDoc)  { pRalphDocument = pDoc; return TRUE; }
00265 
00266     // ralph docs can have different view modes
00267     //  PAGE_VIEW -     the spread is scaled to the view on every resize
00268     //  DOCUMENT_VIEW - normal view mode
00269     //  DRAWING_VIEW -  the drawing is scaled to the view at creation
00270     //                  paper isn't rendered
00271 
00272     void SetRalphViewMode(ViewMode Vmode)       {Viewmode = Vmode;};
00273 
00274     ViewMode GetRalphViewMode()                 {return Viewmode;};
00275     
00276     // called during rendering to determine whether or not to render paper/pasteboard
00277     BOOL RalphDontShowPaper()                   {return Viewmode == DRAWING_VIEW;}; 
00278 
00279     // Progressive rendering
00280     SafeRenderPointer& GetSafeRenderPointer();
00281 
00282 protected:
00283 
00284     // RALPH
00285     BOOL IsARalph;
00286     ViewMode Viewmode;
00287     RalphDocument* pRalphDocument;
00288 
00289     // Progressive rendering
00290     SafeRenderPointer TheSafeRenderPointer;
00291 
00292 
00294 // Titles, comments, flags, and paths.
00295 
00296 public:
00297 
00298     String_256 GetTitle() const;
00299     String_256 GetDocName(BOOL IncludeFileType = TRUE) const;
00300     String_256 GetPathName(UINT32 MaxSize = 0) const;
00301     String_256 GetLocation(UINT32 MaxSize = 0) const;
00302 
00303     const String_256& GetProducer() const;
00304 
00305     const String_256& GetComment() const;
00306     void SetComment(String_256* NewComment);  
00307 
00308     const time_t& GetCreationTime() const;
00309     void SetCreationTime(time_t);
00310 
00311     const time_t& GetLastSaveTime() const;
00312     void SetLastSaveTime(time_t);
00313     void SetLastSaveTime();
00314 
00315 
00316     void MakeJustCreated();
00317     void SetModified(BOOL fState);      // Mark this document is "dirty"
00318 
00319     BOOL IsModified() const;
00320     BOOL IsReadOnly() const;
00321     BOOL IsACopy() const;
00322 
00323     BOOL IsLoadedAsVersion1File() const;
00324     BOOL SetLoadedAsVersion1File(BOOL NewState);
00325 
00326 private:
00327 
00328     time_t CreationTime;
00329     time_t LastSaveTime;
00330     String_256 Producer;                // name of app that created this doc
00331     String_256 Comment;                 // a comment on the document
00332                                         // the rest is in CCamDoc
00333     // Use with caution!  The value of TRUE for a signed bit-field is -1, not 1, so
00334     // for example:-
00335     //
00336     //          if (DocFlags.AFlag == TRUE) { /* THEN something or another */ }
00337     //
00338     // will NEVER execute the "then" clause!
00339 
00340     struct
00341     {
00342         BOOL SaveWithUndo    : 1;           // TRUE to save undo info in file
00343         BOOL LayerMultilayer : 1;           // TRUE if clicks pass through all layers
00344         BOOL LayerAllVisible : 1;           // TRUE if all layers are visible
00345     } DocFlags;
00346 
00347     // Flag to say that the document was loaded as a version 1 file
00348     // and so the user needs to be given the option of saving it in this form
00349     // when the document is saved
00350     BOOL LoadedAsVersion1File;
00351 
00352 
00354 // "Current" and "selected" document handling
00355 
00356 public:                                                                           
00357 
00358     Spread* FindFirstSpread();
00359     void SetCurrent();
00360 
00361     static Document* GetCurrent();
00362     static void SetNoCurrent();
00363     static Document* GetSelected();
00364     static void SetSelectedViewAndSpread(Document *TheDocument = NULL,
00365                                             DocView *TheView = NULL,
00366                                             Spread *TheSpread = NULL);
00367 
00368     static void SetNoSelectedViewAndSpread(void);
00369     static Spread*  GetSelectedSpread();
00370     static BOOL     SpreadBelongsToDoc(Document* pDoc,Spread* pSpread);
00371 
00372     BOOL IsAnimated();
00373 
00374     // *** DEFUNCT! These now call SetSelectedViewAndSpread! DO NOT USE
00375 //  void SetSelected();
00376 //  static void SetNoSelected();
00377 //  static void SetSelectedSpread(Spread* pNewSelSpread);
00378     // ****
00379 
00380 private:
00381 
00382     Spread* pSelSpread;
00383     static Spread* pGlobalSelSpread;
00384 
00385     static Document* Current;
00386     static Document* Selected;
00387 
00388 
00390 // Accessing the extents etc of the document
00391 
00392 public:
00393 
00394     void GetExtents(DocCoord *Lo, DocCoord *Hi, DocRect* Extent, View *pView);
00395     void UpdateExtents(const DocCoord& Lo, const DocCoord& Hi);
00396 
00397     UnitType GetDocFontUnits();
00398 
00399 /* These functions are not used, so commented out - Markn 11/8/94
00400     Chapter* FindEnclosingChapter(DocCoord&);
00401     Spread* FindEnclosingSpread(DocCoord&);
00402     Layer* FindFirstEnclosingLayer(DocCoord&);
00403     Layer* FindNextEnclosingLayer(Layer*);
00404 */
00405 
00407 // All about Nodes . . .
00408 
00409 public:
00410 
00411     void DeleteContents();
00412     void InsertNewNode(Node* NewNode, Spread *pDestSpread);
00413 //  Node* GetFirstNode() const;
00414     void HandleNodeDeletion(Node* pNode);
00415 
00416     // Deprecated...soon to be forbidden
00417     static void IncCurrentNodeCount();
00418     static void DecCurrentNodeCount();
00419 
00420 
00422 // DocViews and OIL-ey documents.
00423 
00424 public:
00425 
00426     CCamDoc* GetOilDoc() const;
00427 
00428     DocView* GetFirstDocView() const
00429                 { return (DocView*) DocViews.GetHead(); }
00430 
00431     DocView* GetNextDocView(const DocView* pView) const
00432                 { return (DocView*) DocViews.GetNext((const ListItem*) pView); }
00433 
00434     DocView* GetTopmostView() const;
00435 
00436     DocView* GetNewDocView();
00437     DocView* GetSpareDocView();
00438 
00439     void OnDocViewDying(DocView* pdv);
00440 
00441     void ShowViewScrollers(BOOL fIsVisible);
00442     void ShowViewRulers(BOOL fIsVisible);
00443 
00444     BOOL CreateDragTargets(DragInformation * DragInfo);
00445 
00446     void ForceRedraw(FRDocViewFunc = NULL);
00447     void ForceRedraw(WorkRect& forceRect);
00448     void ForceRedraw(Spread* pSpread,
00449                      DocRect SpreadRect,
00450                      BOOL Accumulate = FALSE,
00451                      Node* pInvalidNode = NULL,
00452                      BOOL bAutoRelease = TRUE);
00453     void FlushRedraw();
00454 
00455 protected:
00456 
00457     CCamDoc* OilDoc;        // the attached CCamDoc, if any
00458     List DocViews;
00459 
00460 
00462 // Serial numbers
00463 
00464 public:
00465 
00466     UINT32 GetCreatorSerialNo();            // all unimplemented?
00467     UINT32 GetLastSerialNo();
00468     void SetLastEditorSerialNo(UINT32 sn);
00469 
00470 private:
00471 
00472     UINT32 CreatorSerialNo;             // serial no of creator
00473     UINT32 LastSerialNo;                    // serial no of last editor
00474 
00475 
00477 // Attributes
00478 
00479 public:
00480     // Layer stuff.
00481     BOOL IsMultilayer();
00482     BOOL IsAllVisible();
00483     void SetMultilayer(BOOL state);
00484     void SetAllVisible(BOOL state);
00485 
00486     // Tree initialisation.
00487     AttributeManager& GetAttributeMgr() const;
00488     NodeSetSentinel* GetSetSentinel() const;
00489     NodeAttribute* GetDefaultAttr(CCRuntimeClass* RequiredAttr);
00490 
00491     // Pasteboard.
00492     MILLIPOINT GetBleedOffset() const;  // Get the bleed offset for this document
00493     BOOL SetBleedOffset(MILLIPOINT);    // Set the bleed offset for this document
00494 
00495 private:
00496     // Data.
00497     AttributeManager* AttributeMgr;
00498     NodeSetSentinel* m_pSetSentinel;    // cached pointer to the tree's set attributes sentinel
00499 
00500     MILLIPOINT PasteBoardOffsetWidth;   // width of pasteboard outside spread (doc-coords)
00501     MILLIPOINT PasteBoardOffsetHeight;  // height of pasteboard outside spread (ditto)
00502     MILLIPOINT BleedOffset;             // Distance outside page which is rendered during printing
00503 
00504 
00506 // Operation history management
00507 
00508 public:
00509 
00510     OperationHistory& GetOpHistory();   // finds this docs op. history
00511 
00512     // Function to get rid of everything in the operation history
00513     BOOL EmptyOperationHistory();
00514 
00515 protected:
00516     OperationHistory* OpHistory;        // Documents operation history. 
00517                                         // This has to be a pointer because the
00518                                         // destructor of the  Operation history MUST
00519                                         // get called before the tree is destroyed.
00520 
00521 
00523 // Document lists
00524 
00525 public:
00526     BitmapList*     GetBitmapList();
00527     DocUnitList*    GetDocUnitList()            { return pDocUnitList; }
00528 
00529 private:
00530     DocUnitList*    pDocUnitList;
00531 
00533 // CGS (30/8/2000):  Nudge is now stored within the document ....
00534 // Andy Hills (07-11-00): So is the 'smooth bitmaps when scaled up' flag
00535 
00536     UINT32 m_docNudge;
00537     BOOL m_bSmoothBitmaps;
00538     DocCoord m_DuplicationOffset;
00539 
00540 public:
00541     UINT32 GetDocNudge() { return (m_docNudge); }
00542     BOOL SetDocNudge(UINT32 newVal);
00543 
00544     BOOL GetBitmapSmoothing() { return (m_bSmoothBitmaps); }
00545     void SetBitmapSmoothing(BOOL newVal) { m_bSmoothBitmaps = newVal; }
00546 
00547     DocCoord GetDuplicationOffset() { return (m_DuplicationOffset); }
00548     void SetDuplicationOffset(DocCoord newOffset) { m_DuplicationOffset = newOffset; }
00549 
00550 
00552 // EPS stuff:-
00553 
00554 public:
00555 
00556     virtual BOOL EPSStartImport(EPSFilter *);
00557     virtual void EPSEndImport(EPSFilter *, BOOL);
00558     virtual BOOL EPSStartExport(EPSFilter *);
00559     virtual void EPSEndExport(EPSFilter *);
00560 
00561     virtual BOOL WriteEPSResources(EPSFilter *);
00562     virtual BOOL WriteEPSProlog(EPSFilter *);
00563     virtual BOOL WriteEPSSetup(EPSFilter *);
00564     virtual BOOL WriteEPSFonts(EPSFilter *);
00565     virtual BOOL WriteEPSComments(EPSFilter *);
00566     virtual BOOL WriteEPSTrailer(EPSFilter *);
00567     virtual ProcessEPSResult ProcessEPSComment(EPSFilter *, const TCHAR *);
00568     virtual void EndOfEPSComment(EPSFilter *);
00569 
00570     // More general function to control progress display.
00571     virtual INT32 GetSizeOfExport( Filter * );
00572 
00573     // Function to see if this document is loading or importing a file
00574     BOOL IsImporting();
00575     void SetIsImporting(BOOL NewIsImporting);
00576 
00577     // Function to see if this document is a default or template document being loaded
00578     BOOL IsTemplateLoading();
00579     void SetTemplateLoading(BOOL NewTemplateLoading);
00580 
00581     static BOOL GetRestoreViewOnImport()    { return fRestoreViewOnImport; }
00582     static void ShouldRestoreViewOnImport(BOOL fNewState);
00583 
00584     // Graeme (24/3/00) - Made this public, so that it can be accessed by other classes.
00585     BOOL AIExportExtras(EPSExportDC *pDC);
00586 
00587 protected:
00588 
00589     // Functions to help save out the Document Info and load it back in again
00590     BOOL ExportPageInfo(EPSExportDC *pDC);
00591     BOOL ExportDocumentComment(EPSExportDC *pDC);
00592     BOOL ExportViewInfo(EPSExportDC *pDC);
00593     BOOL ExportStateInfo(EPSExportDC *pDC);
00594     BOOL ExportQualityInfo(EPSExportDC *pDC);
00595     BOOL ExportGridInfo(EPSExportDC *pDC);
00596     BOOL ExportFlagInfo(EPSExportDC *pDC);
00597     BOOL ExportUnitInfo(EPSExportDC *pDC);
00598     BOOL ExportDateInfo(EPSExportDC *pDC);
00599     BOOL ExportTextSetup(EPSFilter *pFilter);
00600     BOOL ExportTextTrailer(EPSFilter *pFilter);
00601 
00602     BOOL ExportRulerState(EPSExportDC *pFilter);
00603     BOOL ExportUndoInfo(EPSExportDC *pDC);
00604     BOOL ExportDefaultUnitsInfo(EPSExportDC *pDC);
00605     BOOL ExportOriginInfo(EPSExportDC *pDC);
00606 
00607     // Functions to explicitly export Illustrator format tokens
00608     BOOL AIExportResources(EPSExportDC *pDC, BOOL);
00609     BOOL AIExportProlog(EPSExportDC *pDC);
00610     BOOL AIExportCharEncoding(EPSExportDC *pDC);
00611     BOOL AIExportFontEncoding(EPSExportDC *pDC);
00612     BOOL AIExportFontEncoding(EPSExportDC *pDC, String_64& FontName, INT32 Style);
00613     BOOL AIExportTrailer(EPSExportDC *pDC);
00614 
00615     // Functions to Import stuff again
00616     ProcessEPSResult ImportPageInfo(TCHAR* Comment);
00617     ProcessEPSResult ImportDocumentComment(TCHAR* Comment);
00618     ProcessEPSResult ImportViewInfo(TCHAR* Comment);
00619     ProcessEPSResult ImportRulerState(TCHAR* Comment);
00620     ProcessEPSResult ImportStateInfo(TCHAR* Comment);
00621     ProcessEPSResult ImportQualityInfo(TCHAR* Comment);
00622     ProcessEPSResult ImportGridInfo(TCHAR* Comment);
00623     ProcessEPSResult ImportFlagInfo(TCHAR* Comment);
00624     ProcessEPSResult ImportUnitInfo(TCHAR* Comment);
00625     ProcessEPSResult ImportDateInfo(TCHAR* Comment);
00626     ProcessEPSResult ImportUndoInfo(TCHAR* Comment);
00627     ProcessEPSResult ImportDefaultUnitsInfo(TCHAR* Comment);
00628     ProcessEPSResult ImportOriginInfo(TCHAR* Comment);
00629 
00630     // Data members.
00631     BOOL DocIsImporting;
00632     BOOL DocTemplateLoading;
00633     static BOOL fRestoreViewOnImport;       // if TRUE will set the view onto this new doc
00634 
00635 private:
00636 
00637     // Implementation.
00638     BOOL InitDefaultAttributeNodes();
00639 
00640     // The point in camelot where we insert new objects
00641     InsertionNode* InsertPos;
00642 
00643     CC_DECLARE_DYNAMIC(Document);
00644 
00645 public:
00646 
00647     // Only for test purposes:-
00648     InsertionNode* GetInsertionPosition();
00649     void ResetInsertionPosition();
00650     void InsertionNodeDying()       { InsertPos = 0; }      // Called by ~InsertionNode
00651 };
00652 
00653 
00654 
00655 /********************************************************************************************
00656 >   class TranspModeMsg : public Msg
00657 
00658     Author:     Justin_Flude (Xara Group Ltd) <camelotdev@xara.com>
00659     Created:    5/1/95
00660     Purpose:    A "transparency mode-change" message class.
00661     SeeAlso:    -
00662 ********************************************************************************************/
00663 
00664 class TranspModeMsg : public Msg
00665 {
00666 public:
00667 
00668     TranspModeMsg(BOOL fInTranspMode);
00669     BOOL InTransparencyMode() const;
00670 
00671 private:
00672 
00673     BOOL    m_fInTranspMode;
00674     CC_DECLARE_DYNAMIC(TranspModeMsg)
00675 };
00676 
00677 #endif  // !INC_DOCUMENT

Generated on Sat Nov 10 03:45:03 2007 for Camelot by  doxygen 1.4.4