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 #ifndef INC_NODEBLDR
00101 #define INC_NODEBLDR
00102
00103
00104
00105
00106
00107
00108 #include "blendatt.h"
00109
00110
00111 class RenderRegion;
00112 class Spread;
00113 class BecomeA;
00114 class HandleBecomeA;
00115 class CCAttrMap;
00116 class Progress;
00117 class BaseCamelotFilter;
00118 class NodeBlendPath;
00119 class NodeBlend;
00120 class Trans2DMatrix;
00121 class BevelNodeParam;
00122 class NodeCompound;
00123 class BitmapFillAttribute;
00124 class AttrBitmapFill;
00125 class NodeGroup;
00126 class SumAllPathsElem;
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138 class BlendPath: public ListItem
00139 {
00140 CC_DECLARE_MEMDUMP(BlendPath);
00141 public:
00142 BlendPath();
00143 ~BlendPath();
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159 BOOL Initialise( NodeRenderableInk* pThisBlendNode,
00160 INT32 Index,
00161 NodeRenderableInk* pThisCreatedByNode,
00162 UINT32 SubpathID,
00163 UINT32 SubPathNum,
00164 CCAttrMap* pAttrMap,
00165 BOOL CheckDirection = TRUE);
00166
00167
00168
00169 BOOL Initialise( BlendPath *pBlendPath, NodeRenderableInk * pNodeToBlend);
00170
00171
00172 NodeRenderableInk* GetBlendNode() { return m_pBlendNode; }
00173 Path* GetPath() { return m_pPath; }
00174 NodeRenderableInk* GetCreatedByNode() { return m_pCreatedByNode; }
00175 INT32 GetOrigMapping() { return m_OrigMapping; }
00176 PathTypeEnum GetPathType() { return m_PathType; }
00177 UINT32 GetSubPathID() { return m_SubPathID; }
00178 UINT32 GetSubPathNum() { return m_SubPathNum; }
00179 INT32 GetNumElements() { return m_NumElements; }
00180 BOOL UniqueAppliedAttrs(){ return m_UniqueAttrs; }
00181 MILLIPOINT GetAppliedLineWidth();
00182
00183 BOOL IsLine() { return m_PathType == PATHTYPE_LINE; }
00184 BOOL IsShape() { return m_PathType == PATHTYPE_SHAPE; }
00185
00186 void Transform( TransformBase& Trans );
00187 void RenderBlendBlobs(RenderRegion* pRender,Trans2DMatrix* pMatrix);
00188 BOOL IsFilled();
00189 BOOL IsStroked();
00190 DocCoord GetPathCoord(INT32 Index);
00191 BOOL IsPointOverBlob(DocCoord* pPointerPos,INT32* pIndex,Trans2DMatrix* pMatrix);
00192 INT32 MapPath(INT32 Index);
00193 DocCoord MapPath(DocCoord Index);
00194 INT32 FindBottomLeft();
00195
00196 CCAttrMap* FindAppliedAttributes();
00197 void FreeAppliedAttributes();
00198 AttrBitmapFill* GetAppliedBitmapColourFill();
00199 AttrBitmapFill* GetAppliedBitmapTranspFill();
00200
00201
00202
00203
00204 void SetAppliedAttributes(CCAttrMap* pMap);
00205 void SetPath(Path* pPath);
00206 void DeleteAttributesAndPath();
00207
00208
00209 void SetPathType(PathTypeEnum PathType) { m_PathType = PathType; }
00210
00211
00212 void Transform(Matrix* pTransMatrix, BOOL TransformLines, BOOL Tile = FALSE);
00213 BOOL TransformBrushAttributesBeforeSave();
00214 BOOL TransformBrushAttributesAfterSave();
00215 Path* m_pPath;
00216
00217 void SetBlendNode(NodeRenderableInk *pInk) { m_pBlendNode = pInk; }
00218
00219 void SetFreeAttributeFlag(BOOL Value);
00220 void SetCreatedViaNodeBlendPath (BOOL val) { m_bCreatedViaNodeBlendPath = val; }
00221 BOOL GetCreatedViaNodeBlendPath () { return (m_bCreatedViaNodeBlendPath); }
00222
00223
00224
00225 BOOL MakeCopyPathAndAttributes();
00226 BOOL UpdateCopyPathAndAttributes();
00227 CCAttrMap* MakeAttributeMapCopy();
00228 CCAttrMap* UpdateAttributeMapCopy(CCAttrMap* pCopyMap);
00229 void DeleteCopyPathAndAttributes();
00230 void DeleteAttributeMapAndAttributes(CCAttrMap* pMap);
00231 Path* GetCopyPath();
00232 CCAttrMap* GetCopyAttributes();
00233
00234
00235 private:
00236 void ProcessVerbs();
00237 void CorrectDirection(INT32 Index);
00238
00239
00240 NodeRenderableInk* m_pBlendNode;
00241
00242 NodeRenderableInk* m_pCreatedByNode;
00243 CCAttrMap* m_pAppliedAttrs;
00244
00245 UINT32 m_CloseFigure;
00246 INT32 m_OrigMapping;
00247 PathTypeEnum m_PathType;
00248 BOOL m_DirChanged;
00249 BOOL m_UniqueAttrs;
00250
00251 UINT32 m_SubPathID;
00252 UINT32 m_SubPathNum;
00253 INT32 m_NumElements;
00254
00255 DocCoord m_BrushStartCoord;
00256
00257 DocCoord m_BrushCurrentCoord;
00258
00259
00260 BOOL m_bDeleteAll;
00261 BOOL m_bFreeAttrMapOnDestruct;
00262
00263
00264 MILLIPOINT m_AppliedLineWidth;
00265
00266 BOOL m_bCreatedViaNodeBlendPath;
00267
00268
00269
00270 Path* m_pCopyPath;
00271 CCAttrMap* m_pCopyAttrs;
00272 };
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285 class BlendRef : public CC_CLASS_MEMDUMP
00286 {
00287 CC_DECLARE_MEMDUMP(BlendRef);
00288
00289 public:
00290 BlendRef();
00291 ~BlendRef();
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302 BOOL Initialise( NodeRenderableInk* pThisNode,
00303 INT32 Index,
00304 UndoableOperation* pUndoOp,
00305 Progress* pProgress,
00306 BOOL IgnoreEscape,
00307 Trans2DMatrix* pMatrix,
00308 AttrBrushType* pAttrBrush = NULL);
00309
00310 BOOL InitialiseForBrush(NodeRenderableInk* pThisNode);
00311
00312 NodeRenderableInk* GetNode() { return m_pNode; }
00313 void Transform( TransformBase& Trans );
00314 void RenderBlendBlobs(RenderRegion* pRender,Trans2DMatrix* pMatrix);
00315 void PreBlend();
00316 void PostBlend();
00317 CCAttrMap* FindAppliedAttributes(BlendPath* pBlendPath);
00318
00319 BOOL AddBlendPath(BlendPath* pBlendPath);
00320 UINT32 GetNumBlendPaths() { return m_NumBlendPaths; }
00321 BlendPath* GetFirstBlendPath();
00322 BlendPath* GetNextBlendPath(BlendPath* pCurrentBlendPath);
00323 BlendPath* GetBlendPath(INT32 Index);
00324 BOOL IsPointOverBlob(DocCoord* pPointerPos,BlendPath** ppBlendPath,INT32* pIndex,Trans2DMatrix* pMatrix);
00325 INT32 GetOrigMapping();
00326 void SetAWComplex(BOOL state) { m_AWComplex = state; }
00327 BOOL GetAWComplex() { return m_AWComplex; }
00328
00329 DocRect GetBoundingRect();
00330
00331 BOOL RemoveLastBlendPath();
00332
00333
00334
00335
00336 void StripRedundantNodeBlendPaths (BlendRef* spouse);
00337
00338 protected:
00339
00340
00341 NodeRenderableInk* m_pNode;
00342 List m_BlendPathList;
00343 UINT32 m_NumBlendPaths;
00344 CMapPtrToPtr* m_pBlendPathAttrMap;
00345 BOOL m_AWComplex;
00346 };
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360 class NodeBlender : public NodeRenderableInk
00361 {
00362
00363 CC_DECLARE_DYNCREATE(NodeBlender);
00364
00365 public:
00366
00367 NodeBlender();
00368 ~NodeBlender();
00369
00370 NodeBlender(Node* ContextNode,
00371 AttachNodeDirection Direction,
00372 BOOL Locked = FALSE,
00373 BOOL Mangled = FALSE,
00374 BOOL Marked = FALSE,
00375 BOOL Selected = FALSE
00376 );
00377
00378
00379 BOOL Initialise(NodeRenderableInk* pNodeStart,
00380 NodeRenderableInk* pNodeEnd,
00381 INT32 PathIndexStart,
00382 INT32 PathIndexEnd,
00383 UndoableOperation* pUndoOp,
00384 Progress* pProgress,
00385 BOOL IgnoreEscape);
00386
00387
00388
00389
00390
00391 void Deinit(BOOL bNodesMayBeChanged = FALSE);
00392
00393
00394
00395
00396
00397 BOOL Reinit(NodeRenderableInk* pInkNodeStart = NULL,NodeRenderableInk* pInkNodeEnd = NULL,BOOL ProgressBar = TRUE);
00398
00399
00400 NodeRenderableInk* GetNodeStart() { return m_pNodeStart; }
00401 NodeRenderableInk* GetNodeEnd() { return m_pNodeEnd; }
00402
00403
00404 virtual Node* SimpleCopy();
00405
00406
00407 virtual DocRect GetBoundingRect(BOOL DontUseAttrs=FALSE, BOOL HitTest=FALSE);
00408 virtual DocRect GetBlobBoundingRect();
00409 DocRect GetUnionBlendedBounds(DocRect& BoundsStart,DocRect& BoundsEnd);
00410
00411
00412 virtual void Render( RenderRegion* pRender );
00413 virtual void RenderEorDrag( RenderRegion* );
00414 virtual void RenderBlendBlobs(RenderRegion* pRender,BOOL RenderStart,BOOL RenderEnd);
00415 virtual void PreExportRender( RenderRegion* pRender );
00416 virtual BOOL ExportRender( RenderRegion* pRender );
00417
00418
00419 BOOL IsArtWorksEPSCompatible();
00420 BOOL IsComplex();
00421 INT32 GetAWStartPathIndex();
00422 INT32 GetAWEndPathIndex();
00423 INT32 GetAWPathIndex(BlendRef* pRef,INT32 PathIndex);
00424
00425
00426 virtual void Transform( TransformBase& );
00427
00428
00429 BOOL IsPointOverBlob(DocCoord* pPointerPos,BlendPath** ppBlendPath,INT32* pIndex,BOOL* pAStart);
00430 BOOL Remap(DocCoord PosStart,DocCoord PosEnd,DocCoord * pInvPosStart,DocCoord * pInvPosEnd);
00431 BOOL ConvertAWPathIndexesToCamelot(INT32 *pPathIndexStart,INT32* pPathIndexEnd);
00432 BOOL FindPathEndPoint(Node* pNodePath,INT32* pIndex);
00433 NodeRenderableInk* FindObjIndexedNode(INT32 ObjIndex);
00434 virtual BOOL CanSelectAsSimple();
00435
00436
00437 NodeBlend* GetNodeBlend();
00438
00439
00440 BOOL IsOneToOne();
00441
00442
00443 BOOL IsNotAntialiased();
00444
00445
00446 virtual UINT32 GetNodeSize() const;
00447
00448
00449 virtual BOOL CanBecomeA(BecomeA* pBecomeA);
00450 virtual BOOL DoBecomeA(BecomeA* pBecomeA);
00451
00452
00453 #ifdef _DEBUG
00454 void ShowDebugTreeDetails() const;
00455 #endif
00456 void GetDebugDetails( StringBase* Str );
00457 void GetDebugDetails( StringBase* Str,BlendRef* pBlendRef );
00458
00459
00460 virtual BOOL OnClick( DocCoord, ClickType, ClickModifiers, Spread* );
00461 virtual BOOL HidingNode();
00462 virtual BOOL ShowingNode();
00463
00464
00465 virtual BOOL Snap(DocCoord* pDocCoord);
00466 virtual BOOL Snap(DocRect* pDocRect,const DocCoord& PrevCoord,const DocCoord& CurCoord);
00467
00468
00469 UINT32 GetNumBlendSteps();
00470
00471
00472 ColourBlendType GetColourBlendType();
00473
00474
00475 void SetPathIndexStart(INT32 Index) { m_PathIndexStart = Index; }
00476 void SetPathIndexEnd (INT32 Index) { m_PathIndexEnd = Index; }
00477 INT32 GetPathIndexStart() { return m_PathIndexStart; }
00478 INT32 GetPathIndexEnd() { return m_PathIndexEnd; }
00479
00480
00481
00482 void SetObjIndexStart(INT32 ObjIndex) { m_ObjIndexStart = ObjIndex; }
00483 void SetObjIndexEnd (INT32 ObjIndex) { m_ObjIndexEnd = ObjIndex; }
00484 INT32 GetObjIndexStart() { return m_ObjIndexStart; }
00485 INT32 GetObjIndexEnd() { return m_ObjIndexEnd; }
00486
00487
00488 virtual BOOL WritePreChildrenWeb(BaseCamelotFilter* pFilter);
00489 virtual BOOL WritePreChildrenNative(BaseCamelotFilter* pFilter);
00490 virtual BOOL WriteBeginChildRecordsWeb(BaseCamelotFilter* pFilter);
00491 virtual BOOL WriteBeginChildRecordsNative(BaseCamelotFilter* pFilter);
00492 virtual BOOL WriteEndChildRecordsWeb(BaseCamelotFilter* pFilter);
00493 virtual BOOL WriteEndChildRecordsNative(BaseCamelotFilter* pFilter);
00494
00495
00496 virtual BOOL WriteBoundsRecord(BaseCamelotFilter* pFilter) { return(TRUE); }
00497
00498
00499 BOOL GetPointOnNodeBlendPath(double BlendRatio,DocCoord* pPoint,double* pAngle);
00500 BOOL GetPointFromDistance(double Distance, DocCoord* pPoint, double* pAngle);
00501 NodeBlendPath* GetNodeBlendPath();
00502 Trans2DMatrix* GetRotateMatrix(NodeRenderableBounded* pNode,double Angle);
00503
00504 double GetProportionOfPathDistStart();
00505 double GetProportionOfPathDistEnd();
00506 void SetProportionOfPathDistStart(double p);
00507 void SetProportionOfPathDistEnd(double p);
00508
00509 double GetAngleStart();
00510 double GetAngleEnd();
00511 void SetAngleStart(double Angle);
00512 void SetAngleEnd(double Angle);
00513 void RotateBounds(DocRect& Bounds,double Angle);
00514
00515
00516
00517 double GetLinearDistance();
00518 BOOL GetBlendDirection(double* Gradient);
00519 BOOL GetBlendObjectCentres(DocCoord* FirstCentre, DocCoord* LastCentre);
00520
00521 BOOL IsTangential();
00522 void SetUninitialised() { m_Initialised = FALSE;}
00523
00524 void SetBlendedOnCurve(BOOL value) { m_BlendedOnCurve = value;}
00525 BOOL IsBlendedOnCurve() { return m_BlendedOnCurve;}
00526
00527
00528
00529 void SetReversed(BOOL value) { m_Reversed = m_BlendedOnCurve ? value : FALSE; }
00530 BOOL IsReversed() { return m_Reversed; }
00531
00532 void SetNodeBlendPathIndex(INT32 Index);
00533 INT32 GetNodeBlendPathIndex();
00534
00535
00536 BOOL ReverseEnds();
00537
00538
00539 static BOOL ConvertLineToShape(Path* pPath,Path* pShapePath);
00540
00541
00542 static BOOL ProcessBlendedPath(DocCoord* pCoords,PathVerb* pVerbs,PathFlags* pFlags,UINT32 Len,BOOL Filled);
00543 static void SetPathFlags(PathVerb* pVerbs,PathFlags* pFlags,UINT32 Len);
00544 static void ReversePath(DocCoord* Coords,PathVerb* Verbs,UINT32 Len);
00545
00546 void UpdateBlendStartAngles (Trans2DMatrix& trans);
00547
00548 virtual INT32 EstimateNodeComplexity (OpParam* details);
00549
00550 virtual void PolyCopyNodeContents(NodeRenderable* pNodeCopy);
00551
00552 private:
00553
00554 void ResetVars();
00555
00556
00557 void CopyNodeContents(NodeBlender* NodeCopy);
00558
00559
00560 BOOL InitBlendRef( NodeRenderableInk* pNode,
00561 BlendRef** ppRef,
00562 INT32 Index,
00563 UndoableOperation* pUndoOp,
00564 Progress* pProgress,
00565 BOOL IgnoreEscape,
00566 Trans2DMatrix* pMatrix);
00567 BOOL CalcObjIndex(NodeRenderableInk* pInkNode,INT32* pObjIndex);
00568 void CheckFullyInitialised();
00569 BOOL BlendPaths(BlendPath* pBlendPathStart,BlendPath* pBlendPathEnd,double BlendRatio);
00570 void CreateBlends(RenderRegion* pRender,HandleBecomeA* pHandleBecomeA);
00571 Matrix MakeMatrix(BlendPath* pBlendPathStart,BlendPath* pBlendPathEnd,double BlendRatio);
00572 BOOL CheckBoundsIntersect(RenderRegion* pRender,DocRect& BoundsStart,DocRect& BoundsEnd,double BlendRatio);
00573 DocRect BlendBounds(DocRect& BoundsStart,DocRect& BoundsEnd,double BlendRatio,BOOL UseBlendPath);
00574
00575
00576 BOOL BlendAttributes(RenderRegion *pRender, BlendPath* pBlendPathStart,
00577 BlendPath* pBlendPathEnd,CCAttrMap* pBlendedAttribMap,double BlendRatio,
00578 double objectRatio, BOOL objectProfileProcessing);
00579
00580 void RenderAttributes(RenderRegion* pRender,CCAttrMap* pAttribMap);
00581
00582
00583 BOOL PreBlend();
00584 void PostBlend();
00585 BOOL ReallocTempBuffers(UINT32 Size);
00586 void DeallocTempBuffers();
00587
00588
00589 DocCoord* GetCoordArray(UINT32 MinSize);
00590 PathVerb* GetVerbArray(UINT32 MinSize);
00591 PathFlags* GetFlagArray(UINT32 MinSize);
00592 UINT32* GetGBlendBuff(UINT32 MinSize);
00593
00594
00595 double MapObjectBlendRatio(double BlendRatio);
00596 double MapAttrBlendRatio(double BlendRatio);
00597 double MapPositionBlendRatio(double BlendRatio);
00598
00599
00600 double GetObjectRatio();
00601 double GetInvertedAttributeRatio();
00602
00603
00604
00605 BlendRef *m_pRefStart;
00606 BlendRef *m_pRefEnd;
00607
00608
00609
00610 NodeRenderableInk* m_pNodeStart;
00611 NodeRenderableInk* m_pNodeEnd;
00612
00613
00614
00615
00616
00617
00618
00619
00620 INT32 m_ObjIndexStart;
00621 INT32 m_ObjIndexEnd;
00622
00623
00624
00625
00626 BOOL m_Initialised;
00627
00628
00629
00630 UINT32 m_BlendStep;
00631
00632
00633
00634 UINT32 m_TempArraySize;
00635 DocCoord* m_pTempCoords;
00636 PathVerb* m_pTempVerbs;
00637 PathFlags* m_pTempFlags;
00638 UINT32 m_GBlendBuffSize;
00639 UINT32* m_pGBlendBuff;
00640 UINT32 m_ArrayLength;
00641
00642
00643
00644
00645 INT32 m_PathIndexStart;
00646 INT32 m_PathIndexEnd;
00647
00648
00649
00650
00651
00652 double m_ProportionOfPathDistStart;
00653 double m_ProportionOfPathDistEnd;
00654
00655 double m_AngleStart;
00656 double m_AngleEnd;
00657
00658
00659
00660 BOOL m_BlendedOnCurve;
00661 BOOL m_Reversed;
00662
00663
00664 INT32 m_NodeBlendPathIndex;
00665
00666 BOOL CallBeginBlendStep(BlendNodeParam * pParam, BOOL* usingSumAllPathsPathProcessor);
00667 BOOL CallEndBlendStep(BlendNodeParam * pParam);
00668
00669 };
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683
00684
00685
00686
00687
00688
00689
00690
00691
00692
00693
00694
00695
00696
00697
00698 class ListStepper
00699 {
00700 public:
00701 ListStepper() { Min = Max = NextInStart = NextInEnd = Inc = 0; pNextInMin = pNextInMax = NULL;}
00702
00703 void Init(UINT32 NumInStart,UINT32 NumInEnd,UINT32 Start);
00704 void GetNext(INT32* pNextInStart,INT32* pNextInEnd);
00705
00706 private:
00707 UINT32 Min;
00708 UINT32 Max;
00709 UINT32 NextInStart;
00710 UINT32 NextInEnd;
00711 UINT32 Inc;
00712 UINT32* pNextInMin;
00713 UINT32* pNextInMax;
00714 };
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724
00725
00726
00727
00728 class HandleBecomeA : public CC_CLASS_MEMDUMP
00729 {
00730 CC_DECLARE_MEMDUMP(HandleBecomeA);
00731 public:
00732 HandleBecomeA( NodeBlender* pThisNodeBlender,
00733 Node* pThisContextNode,
00734 BecomeA* pThisBecomeA) :
00735 pNodeBlender(pThisNodeBlender),
00736 pBecomeA(pThisBecomeA),
00737 pContextNode(pThisContextNode),
00738 pNodeGroup(NULL),
00739 LastStep(0),
00740 NumPathsPerStep(0) {}
00741
00742 BOOL PassBack(Path* pBlendedPath,CCAttrMap* pBlendedAttrMap,UINT32 Step);
00743
00744 void SetNumPathsPerStep(UINT32 Num) { NumPathsPerStep = Num; }
00745 BOOL MakeGroupPerStep() { return (NumPathsPerStep > 1); }
00746
00747 BecomeA* GetBecomeA () { return (pBecomeA); }
00748 Node* GetContextNode () { return (pContextNode); }
00749
00750 private:
00751 NodeBlender* pNodeBlender;
00752 BecomeA* pBecomeA;
00753 Node* pContextNode;
00754 NodeGroup* pNodeGroup;
00755 UINT32 LastStep;
00756 UINT32 NumPathsPerStep;
00757 };
00758
00759 class NodeCompoundBlendBecomeA : public BecomeA
00760 {
00761 CC_DECLARE_MEMDUMP(NodeCompoundBlendBecomeA);
00762 public:
00763 NodeCompoundBlendBecomeA( BecomeAReason Reason,
00764 CCRuntimeClass* pClass,
00765 UndoableOperation* pOp,
00766 BOOL Sel,
00767 Node* pContext
00768 ) :
00769
00770 BecomeA (Reason,pClass,pOp, Sel)
00771 {
00772 pContextNode = pContext;
00773 pPathsToBecome = NULL;
00774 }
00775
00776
00777
00778
00779 Node* GetContextNode () { return (pContextNode); }
00780 List* GetPathsToBecome () { return (pPathsToBecome); }
00781
00782 void SetPathsToBecome (List* pathsList) { pPathsToBecome = pathsList; }
00783
00784 private:
00785 Node* pContextNode;
00786 List* pPathsToBecome;
00787 };
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797
00798
00799
00800
00801 class BlendBecomeA : public BecomeA
00802 {
00803 CC_DECLARE_MEMDUMP(BlendBecomeA);
00804 public:
00805 BlendBecomeA( BecomeAReason Reason,
00806 CCRuntimeClass* pClass,
00807 UndoableOperation* pOp,
00808 BlendRef* pThisBlendRef,
00809 INT32 ThisIndex,
00810 Progress* pThisProgress,
00811 BOOL IgnoreEsc,
00812 Trans2DMatrix* pMatrix) :
00813
00814 BecomeA(Reason,pClass,pOp),
00815 pBlendRef(pThisBlendRef),
00816 Index(ThisIndex),
00817 SubPathID(0),
00818 pProgress(pThisProgress),
00819 IgnoreEscape(IgnoreEsc),
00820 m_pMatrix(pMatrix) { } ;
00821
00822 BOOL IsBlendBecomeA() { return TRUE; }
00823
00824
00825 virtual BOOL PassBack(NodeRenderableInk* pNewNode,NodeRenderableInk* pCreatedByNode,CCAttrMap* pAttrMap);
00826
00827 private:
00828 BlendRef* pBlendRef;
00829 INT32 Index;
00830 UINT32 SubPathID;
00831 Progress* pProgress;
00832 BOOL IgnoreEscape;
00833 Trans2DMatrix* m_pMatrix;
00834
00835 NodeRenderableInk * CreateWrapNode(NodeRenderableInk * pNode, NodeCompound *pTree,
00836 CCAttrMap * pMap);
00837 };
00838
00839 #endif // INC_NODEBLDR