00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116 #ifndef INC_NODE
00117 #define INC_NODE
00118
00119
00120 #include <assert.h>
00121
00122 #include "release.h"
00123
00124 class CCAPI NodeRenderablePaper;
00125 class NodeRenderableInk;
00126 class CCAPI Chapter;
00127 class CCAPI Layer;
00128 class RenderRegion;
00129 class NodeAttribute;
00130 class Spread;
00131 class List;
00132 class TransformBase;
00133 class UndoableOperation;
00134 class BaseDocument;
00135 class BecomeA;
00136 class ObjChangeParam;
00137 class Filter;
00138 class KernelBitmap;
00139 class NodeHidden;
00140 class InternalClipboardFormat;
00141 class NodePath;
00142 class BaseCamelotFilter;
00143 class ExtendParams;
00144 class NodeCompound;
00145
00146 #if _RELEASE
00147 #define DEBUG_TREE 0
00148 #else
00149 #define DEBUG_TREE 1
00150 #endif
00151
00152 #ifdef RALPH
00153 #undef DEBUG_TREE
00154 #define DEBUG_TREE 0
00155 #endif
00156
00157
00158
00159
00160 enum AttachNodeDirection { PREV, NEXT, FIRSTCHILD, LASTCHILD };
00161
00162
00163
00164 typedef struct
00165 {
00166 unsigned Required : 1;
00167 unsigned Attribute : 1;
00168 unsigned Renderable : 1;
00169 unsigned Intersects : 1;
00170 } ClippedInkFlags;
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184 typedef enum ChangeCode
00185 {
00186 CC_OK,
00187 CC_NORECORD,
00188 CC_FAIL
00189 };
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203 typedef enum SubtreeRenderState
00204 {
00205 SUBTREE_NORENDER = 0,
00206 SUBTREE_ROOTONLY,
00207 SUBTREE_ROOTANDCHILDREN,
00208 SUBTREE_JUMPTO,
00209 SUBTREE_RUNTO
00210 };
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231 enum OpPermissionState { PERMISSION_UNDEFINED,
00232 PERMISSION_DENIED,
00233 PERMISSION_ALLOWED
00234 };
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252 typedef enum CopyType
00253 {
00254 SIMPLECOPY,
00255 COMPLEXCOPY
00256 };
00257
00258 typedef enum CopyStage
00259 {
00260 COPYOBJECT,
00261 COPYFINISHED
00262 };
00263
00264 typedef enum CopyControlFlags
00265 {
00266 ccALL,
00267 ccLOCKED,
00268 ccMANGLED,
00269 ccMARKED,
00270 ccSELECTED,
00271 ccRENDERABLE
00272 };
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287 class AttrTypeItem: public ListItem
00288 {
00289 public:
00290 CCRuntimeClass* AttributeType;
00291 };
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304 class AttrTypeSet: public List
00305 {
00306 public:
00307
00308
00309 AttrTypeSet* CopySet();
00310
00311
00312 virtual BOOL AddToSet(CCRuntimeClass* AttrType);
00313
00314 virtual BOOL AddToSet(List& AttributeList);
00315
00316
00317 BOOL InSet(CCRuntimeClass* AttrType);
00318
00319 ~AttrTypeSet() { DeleteAll(); };
00320
00321 };
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344 class CCAPI Node: public CCObject
00345 {
00346 CC_DECLARE_DYNAMIC( Node )
00347
00348 public:
00349
00350
00351 Node();
00352 Node(Node* ContextNode,
00353 AttachNodeDirection Direction,
00354 BOOL Locked=FALSE,
00355 BOOL Mangled=FALSE,
00356 BOOL Marked=FALSE,
00357 BOOL Selected=FALSE,
00358 BOOL Renderable=FALSE);
00359
00360
00361 virtual ~Node();
00362
00363 virtual void Render( RenderRegion* pRender );
00364 void RenderTreeAtomic(RenderRegion* pRender);
00365
00366 virtual BOOL NeedsToRender(RenderRegion* pRender);
00367 virtual void PreExportRender( RenderRegion* pRender );
00368 virtual BOOL ExportRender( RenderRegion* pRender );
00369 virtual BOOL NeedsToExport(RenderRegion* pRender, BOOL VisibleLayersOnly = FALSE,
00370 BOOL CheckSelected = FALSE);
00371 virtual String Describe(BOOL Plural, BOOL Verbose = TRUE);
00372
00373
00374 virtual ChangeCode OnChildChange(ObjChangeParam* pParam);
00375
00376
00377 virtual OpPermissionState GetOpPermission();
00378 virtual void SetOpPermission(OpPermissionState NewState,BOOL AndParents = FALSE);
00379
00380
00381 virtual BOOL AllowOp(ObjChangeParam* pParam,BOOL SetOpPermissionState = TRUE,
00382 BOOL DoPreTriggerEdit = TRUE);
00383 virtual BOOL AllowOp_AccountForCompound(ObjChangeParam* pParam,
00384 BOOL SetOpPermissionState=TRUE,
00385 BOOL DoPreTriggerEdit = TRUE);
00386
00387
00388 void CascadeDelete(void);
00389
00390
00391 virtual SubtreeRenderState RenderSubtree(RenderRegion* pRender, Node** ppNextNode = NULL, BOOL bClip = TRUE);
00392 virtual void RenderAfterSubtree(RenderRegion* pRender) {;}
00393
00394
00395 virtual BOOL WritePreChildrenWeb(BaseCamelotFilter* pFilter);
00396 virtual BOOL WritePreChildrenNative(BaseCamelotFilter* pFilter);
00397 virtual BOOL WritePostChildrenWeb(BaseCamelotFilter* pFilter);
00398 virtual BOOL WritePostChildrenNative(BaseCamelotFilter* pFilter);
00399 virtual BOOL CanWriteChildrenWeb(BaseCamelotFilter* pFilter);
00400 virtual BOOL CanWriteChildrenNative(BaseCamelotFilter* pFilter);
00401
00402 virtual BOOL WriteBeginChildRecordsWeb(BaseCamelotFilter* pFilter);
00403 virtual BOOL WriteBeginChildRecordsNative(BaseCamelotFilter* pFilter);
00404 virtual BOOL WriteEndChildRecordsWeb(BaseCamelotFilter* pFilter);
00405 virtual BOOL WriteEndChildRecordsNative(BaseCamelotFilter* pFilter);
00406
00407 virtual BOOL ReadPostChildrenWeb(BaseCamelotFilter* pFilter);
00408 virtual BOOL ReadPostChildrenNative(BaseCamelotFilter* pFilter);
00409
00410
00411 virtual BOOL AreYouSafeToRender();
00412
00413
00414 BOOL CopyNode(Node* DestinationNode,
00415 AttachNodeDirection Direction);
00416 virtual BOOL NodeCopy(Node** ppNodeCopy);
00417 virtual BOOL CloneNode(Node** ppNoeCopy, BOOL bLightweight);
00418 BOOL CopyComplexRange(Range& RangeToCopy);
00419
00420 BOOL CopyChildrenTo(Node* DestinationNode, CopyControlFlags CopyFlags=ccALL);
00421
00422 void MoveNode(Node* DestinationNode,
00423 AttachNodeDirection Direction);
00424
00425 void AttachNode(Node* ContextNode,
00426 AttachNodeDirection Direction,
00427 BOOL fCheckTransparent = TRUE,
00428 BOOL InvalidateChildren = TRUE);
00429
00430
00431 void InsertChainSimple(Node* ContextNode, AttachNodeDirection Direction);
00432
00433 virtual BOOL PostImport();
00434 virtual BOOL PostDuplicate(UndoableOperation* pOp);
00435
00436 UINT32 GetTag() const;
00437
00438 virtual UINT32 GetNodeSize() const;
00439 virtual CopyType GetCopyType();
00440 UINT32 GetSubtreeSize();
00441 BOOL IsUnder(Node* pTestNode, BOOL bFirstCall = TRUE) const;
00442
00443
00444
00445 BOOL IsLocked() const;
00446 BOOL IsMangled() const;
00447 BOOL IsMarked() const;
00448 BOOL IsRenderable() const;
00449 BOOL IsParentOfSelected() const;
00450 BOOL IsSelected() const;
00451 BOOL IsChildOfSelected();
00452
00453 virtual BOOL ShouldBeRendered() const;
00454 virtual BOOL NeedsTransparency() const;
00455 virtual INT32 EstimateNodeComplexity (OpParam* details) { return (1); }
00456
00457
00458
00459
00460 virtual BOOL IsAnObject() const {return FALSE;}
00461 virtual BOOL IsAnAttribute() const {return FALSE;}
00462 virtual BOOL IsKindOfTextAttribute() const { return FALSE; }
00463 virtual BOOL IsPaper() const {return FALSE;}
00464 virtual BOOL IsLayer() const {return FALSE;}
00465 virtual BOOL IsSpread() const {return FALSE;}
00466 virtual BOOL IsChapter() const {return FALSE;}
00467 virtual BOOL IsNodeDocument() const {return FALSE;}
00468 virtual BOOL IsNodeRenderableClass() const {return FALSE;}
00469 virtual BOOL IsNodeHidden() const {return FALSE;}
00470 virtual BOOL IsNodePath() const {return FALSE;}
00471 virtual BOOL IsARegularShape() const {return FALSE;}
00472 virtual BOOL IsOrHidesAnAttribute() const {return FALSE;}
00473 virtual BOOL IsABitmap() const {return FALSE;}
00474 virtual BOOL IsAFillAttr() const {return FALSE;}
00475 virtual BOOL IsABitmapFill() const {return FALSE;}
00476 virtual BOOL IsABitmapColourFill() const {return FALSE;}
00477 virtual BOOL IsABitmapTranspFill() const {return FALSE;}
00478 virtual BOOL IsAFeatherAttr() const { return FALSE; }
00479 virtual BOOL IsAClipViewAttr() const { return FALSE; }
00480 virtual BOOL IsBounded() const {return FALSE;}
00481 virtual BOOL IsDragged() const {return FALSE; }
00482 virtual BOOL IsController() { return FALSE;}
00483 virtual BOOL IsABlend () { return FALSE; }
00484 virtual BOOL IsCompound() const {return FALSE;}
00485 virtual BOOL IsCompoundClass() const {return FALSE;}
00486 virtual BOOL IsAVisibleTextNode() const {return FALSE;}
00487 virtual BOOL IsAnAbstractTextChar() const {return FALSE;}
00488 virtual BOOL IsATextChar() const {return FALSE;}
00489 virtual BOOL IsABaseTextClass() const {return FALSE;}
00490 virtual BOOL IsATypeface() const {return FALSE;}
00491 virtual BOOL IsAnObjectName() const {return FALSE;}
00492 virtual BOOL IsUserAttribute() const {return FALSE;}
00493 virtual BOOL IsSetCandidate() const {return FALSE;}
00494 virtual BOOL IsCacheCompound() const { return FALSE; }
00495 virtual BOOL IsABevel() const { return FALSE; }
00496 virtual BOOL IsABevelController() const { return FALSE; }
00497 virtual BOOL IsAContour() const { return FALSE; }
00498 virtual BOOL IsAContourController() const { return FALSE; }
00499 virtual BOOL IsAShadow() const { return FALSE; }
00500 virtual BOOL IsAShadowController() const { return FALSE; }
00501 virtual BOOL IsABrush() const {return FALSE;}
00502 virtual BOOL IsEffect() const {return FALSE;}
00503 virtual BOOL IsBitmapEffect() const {return FALSE;}
00504 virtual BOOL IsRenderedAsInk() const {return FALSE;}
00505
00506 BOOL IsBrushed() const;
00507
00508 virtual NodePath* IsAnEditablePath();
00509
00510
00511 virtual BOOL IsANodeClipViewController() const { return FALSE; }
00512 virtual BOOL IsANodeClipView() const { return FALSE; }
00513
00514
00515 virtual BOOL IsAGroup() const { return FALSE; }
00516
00517
00518 virtual BOOL IsAnInsertionNode() const { return FALSE; }
00519
00520
00521 virtual BOOL IsANodeMould() const {return FALSE;}
00522
00523
00524 virtual BOOL SupportsClipboardFormat(InternalClipboardFormat *Format) const;
00525
00526
00527
00528
00529 virtual BOOL DiscardsAttributeChildren() const;
00530
00531
00532 virtual Node* HasEditableChild(CCRuntimeClass* ChildClass, Node* pPrevNode);
00533
00534
00535 virtual KernelBitmap* EnumerateBitmaps(UINT32 Count);
00536
00537
00538 virtual double GetEffectiveBitmapMinDPI(KernelBitmap* pBitmap) { return(1e9); }
00539
00540
00541 virtual BOOL ReplaceBitmap(KernelBitmap* pOrigBitmap, KernelBitmap* pNewBitmap) { return(FALSE); }
00542
00543
00544 virtual TCHAR* GetDefaultOpToken() {return NULL;}
00545
00546
00547 void SetLocked(BOOL Status);
00548 void SetMangled(BOOL Status);
00549 void SetMarker(BOOL Status);
00550 virtual void SetSelected(BOOL Status);
00551 void SetRender(BOOL Status, BOOL bAndChildren=FALSE);
00552 void SetParentOfSelected(BOOL Status);
00553
00554
00555 BOOL HasSelectedChildren() const;
00556
00557
00558
00559 void ClearSelection(BOOL AndChildren=FALSE);
00560
00561
00562
00563 BOOL ChildrenNeedTransparency();
00564
00565
00566
00567 Node* FindNext(void) const;
00568 Node* FindPrevious(void) const;
00569 Node* FindParent(void) const;
00570 Node* FindFirstChild(void) const;
00571 Node* FindLastChild(BOOL ExcludeInsertionNode = FALSE) const;
00572
00573 Node* FindParent(CCRuntimeClass* ParentClass) const;
00574 Node* FindNext(CCRuntimeClass* Class) const;
00575 Node* FindPrevious(CCRuntimeClass* Class) const;
00576 Node* FindFirstChild(CCRuntimeClass* Class) const;
00577 Node* FindLastChild(CCRuntimeClass* Class) const;
00578
00579 NodeRenderableInk* FindNextInk() const;
00580 NodeRenderableInk* FindPreviousInk() const;
00581 NodeRenderableInk* FindFirstChildInk() const;
00582 NodeRenderableInk* FindLastChildInk() const;
00583
00584 BaseDocument *FindOwnerDoc() const;
00585
00586
00587
00588 BOOL IsFamily(CCRuntimeClass* ccrcType, Node* pAncestor) const;
00589
00590
00591
00592 void SetParentDangerous(Node* NewParent);
00593 void SetNextDangerous(Node* NewNext);
00594 void SetPreviousDangerous(Node* NewPrev);
00595 void SetChildDangerous(Node* NewChild);
00596
00597
00598
00599
00600
00601 Node* FindNextNonHidden(void) const;
00602 Node* FindPrevNonHidden(void) const;
00603
00604
00605
00606 Spread* FindParentSpread();
00607
00608
00609 static Node* DocFindFirstDepthFirst(BaseDocument *pDocToSearch);
00610 Node* DocFindNextDepthFirst(void);
00611
00612 Node* FindFirstDepthFirst();
00613 Node* FindNextDepthFirst(Node* Subtree);
00614 Node* FindFirstPreorder();
00615 Node* FindNextPreorder(Node* pRoot = NULL, BOOL bSkipSubtree = FALSE);
00616
00617 static Chapter* FindFirstChapter(BaseDocument* pDocToSearch);
00618 Chapter* FindNextChapter(void);
00619
00620 NodeRenderablePaper* FindNextForClippedPaperRender(void);
00621
00622
00623
00624
00625
00626
00627
00628 Node* FindFirstForClippedInkRender(DocRect* pClipRect,
00629 RenderRegion* pRender,
00630 BOOL ExcludeLockedLayers = FALSE,
00631 Node* pStopNode = NULL);
00632
00633 Node* FindNextForClippedInkRender(DocRect* pClipRect,
00634 RenderRegion *pRender,
00635 BOOL ExcludeLockedLayers = FALSE,
00636 Node* pStopNode = NULL);
00637
00638 Node* FindFirstForUnclippedInkRender(RenderRegion* pRender);
00639 Node* FindNextForUnclippedInkRender(RenderRegion *pRender);
00640
00641
00642
00643 Chapter* FindEnclosingChapter(DocCoord* ChapterPos, XLONG* ChapterDepth);
00644
00645
00646 NodeAttribute* FindFirstGeometryLinkedAttr();
00647 NodeAttribute* FindNextGeometryLinkedAttr();
00648
00649 virtual void UnlinkNodeFromTree(BaseDocument *pOwnerDoc = NULL);
00650
00651
00652 Node* FindParentOfSelected();
00653 virtual NodeCompound* GetParentController() const {return NULL;}
00654
00655
00656 virtual BOOL CanBecomeA(BecomeA* pBecomeA);
00657 virtual BOOL DoBecomeA(BecomeA* pBecomeA);
00658
00659 #ifdef _DEBUG
00660 void DT();
00661 void DST();
00662 void DST1(INT32 FormParent=0);
00663 void DST2(INT32 FormParent=0, INT32 MaxDepth=9999);
00664 #endif
00665
00666
00667 ChangeCode WarnParentOfChange(ObjChangeParam* pParam, BOOL AllParents=TRUE);
00668
00669 virtual BOOL AllowSelectInside() const { return TRUE; }
00670
00671
00672 #if !_RELEASE
00673 #ifdef _DEBUG
00674
00675 void ShowDebugTree() const;
00676 virtual void ShowDebugTreeDetails() const;
00677
00678 #endif
00679
00680 virtual void GetDebugDetails(StringBase* Str);
00681
00682 #endif
00683
00684
00685 void IncHiddenCnt(void);
00686 void DecHiddenCnt(void);
00687
00688 UINT32 GetHiddenCnt(void);
00689
00690 #ifdef _DEBUG
00691 const TCHAR* Name() const;
00692 #endif
00693
00694 BOOL OptimiseAttributes();
00695
00696
00697 virtual BOOL HidingNode();
00698 virtual BOOL ShowingNode();
00699 virtual INT32 ComplexHide(UndoableOperation* pOp, Node* pNextInRange);
00700
00701
00702 void MarkNodeAndChildren();
00703 void MarkChildren();
00704 void ClearMarks();
00705 void ClearChildMarks();
00706
00707 public:
00708 virtual BOOL IsDifferent(Node *pOther);
00709
00710
00711
00712
00713
00714
00715
00716 public:
00717
00718 virtual void CountChildNodes(UINT32* pChildCount, UINT32* pChildAttrCount);
00719 virtual BOOL AreChildAttrsIdentical(Node* pOtherNode);
00720 virtual BOOL HasThisChildAttr(NodeAttribute* pAttr);
00721 virtual BOOL CopyChildAttrs(Node* pDestNode);
00722
00723
00724 virtual BOOL IsNodeInSubtree(Node * pNode);
00725
00726
00727
00728
00729
00730
00731
00732
00733 virtual BOOL RegenerateNode(UndoableOperation * pOp = NULL,
00734 BOOL bCacheRender = FALSE,
00735 BOOL bInformParents = TRUE) { return FALSE; }
00736
00737
00738
00739 virtual BOOL PromoteHitTestOnChildrenToMe() const { return TRUE; }
00740
00741
00742 virtual BOOL ShouldITransformWithChildren() const { return FALSE; }
00743
00744
00745 virtual BOOL NeedsParent(Node * pClassNode) const { return FALSE; }
00746
00747
00748 virtual BOOL MarqueeSelectNode() const { return TRUE; }
00749
00750
00751 virtual Node* PublicCopy();
00752
00753 void RemoveAttrTypeFromSubtree(CCRuntimeClass* AttrType, Node* pExceptThis = NULL);
00754
00755 protected:
00756
00757
00758 struct CCAPI NodeFlags
00759 {
00760 BOOL Locked: 1;
00761 BOOL Mangled: 1;
00762 BOOL Marked: 1;
00763
00764
00765 BOOL Selected: 1;
00766 BOOL Renderable:1;
00767 BOOL SelectedChildren: 1;
00768
00769 BOOL OpPermission1: 1;
00770 BOOL OpPermission2: 1;
00771 };
00772
00773 UINT32 Tag;
00774 NodeFlags Flags;
00775
00776
00777 Node *Previous;
00778 Node *Next;
00779 Node *Child;
00780 Node *Parent;
00781
00782
00783
00784 UINT32 HiddenRefCnt;
00785
00786 virtual Node* SimpleCopy();
00787 virtual INT32 ComplexCopy(CopyStage Stage, Range& RangeToCopy, Node** pOutput);
00788 void CopyNodeContents(Node* nodeCopy);
00789
00790
00791 static MILLIPOINT PixelWidth;
00792 static MILLIPOINT PixelHeight;
00793
00794 Node *FindChildToRender(DocRect *const pClipRect, RenderRegion *const pRender,
00795 BOOL ExcludeLockedLayers,
00796 Node* pStopNode = NULL);
00797
00798 Node *FindChildToRenderUnclipped(RenderRegion *const pRender);
00799
00800 private:
00801
00802 void AttachAsPreviousNode(Node* ContextNode);
00803 void AttachAsNextNode(Node* ContextNode);
00804 void AttachAsFirstChildNode(Node* ContextNode);
00805 void AttachAsLastChildNode(Node* ContextNode);
00806
00807 void SetTags(BaseDocument *pOwnerDoc);
00808
00809 public:
00810 void DeleteChildren(Node* FirstChild);
00811
00812 private:
00813 static BOOL HourglassOn;
00814
00815 public:
00816 static void StartHourglass() { HourglassOn = TRUE; };
00817 static void StopHourglass() { HourglassOn = FALSE; };
00818 static BOOL ShowHourglass() { return HourglassOn;}
00819
00820 protected:
00821 BOOL CopyChildren(Node* FirstChild,
00822 Node* NewParent,
00823 CopyControlFlags = ccALL);
00824
00825 private:
00826
00827 #ifdef _DEBUG
00828 void ShowDebugTreeHelper(const Node* const Root,
00829 INT32 TreeLevel,
00830 BYTE* IndentString) const;
00831 #endif
00832
00833
00834 protected:
00835 BOOL DeSelectSubtree();
00836
00837 public:
00838 friend class NodeHidden;
00839 virtual BOOL SetParentLayerAsEdited();
00840
00841 public:
00842
00843
00844
00845 typedef BOOL (Node::*TypeFunc)() const;
00846 NodeAttribute* FindFirstAttr(TypeFunc pfnTest) const;
00847
00848
00849
00850
00851
00852
00853 public:
00854 virtual BOOL IsTypeExtendible() const { return FALSE; }
00855 virtual DocRect ValidateExtend(const ExtendParams& ExtParams);
00856 virtual void Extend(const ExtendParams& ExtParams);
00857 };
00858
00859
00860
00862
00863
00864
00865
00866
00867
00869
00870
00871
00872
00873
00874
00875
00876
00877
00878
00879
00880
00881
00882
00883
00884
00885
00886 inline UINT32 Node::GetTag() const
00887 {
00888 return Tag;
00889 }
00890
00891
00892
00893
00894
00895
00896
00897
00898
00899
00900
00901
00902
00903
00904
00905
00906 inline BOOL Node::IsLocked(void) const
00907 {
00908 return Flags.Locked;
00909 }
00910
00911
00912
00913
00914
00915
00916
00917
00918
00919
00920
00921
00922
00923
00924
00925
00926 inline BOOL Node::IsMangled(void) const
00927 {
00928 return Flags.Mangled;
00929 }
00930
00931
00932
00933
00934
00935
00936
00937
00938
00939
00940
00941
00942
00943
00944
00945
00946 inline BOOL Node::IsMarked(void) const
00947 {
00948 return Flags.Marked;
00949 }
00950
00951
00952
00953
00954
00955
00956
00957
00958
00959
00960
00961
00962
00963
00964
00965
00966 inline BOOL Node::IsRenderable() const
00967 {
00968 return Flags.Renderable;
00969 }
00970
00971
00972
00973
00974
00975
00976
00977
00978
00979
00980
00981
00982
00983
00984
00985
00986 inline BOOL Node::IsSelected() const
00987 {
00988 return Flags.Selected;
00989 }
00990
00991
00992
00993
00994
00995
00996
00997
00998
00999
01000
01001
01002
01003
01004
01005
01006
01007
01008
01009 inline BOOL Node::IsParentOfSelected() const
01010 {
01011 return Flags.SelectedChildren;
01012 }
01013
01014
01015
01016
01017
01018
01019
01020
01021
01022
01023
01024
01025
01026
01027
01028
01029 inline void Node::SetLocked( BOOL Status )
01030 {
01031 Flags.Locked = Status;
01032 }
01033
01034
01035
01036
01037
01038
01039
01040
01041
01042
01043
01044
01045
01046
01047
01048
01049
01050 inline void