nodetxts.h

Go to the documentation of this file.
00001 // $Id: nodetxts.h 1405 2006-07-04 19:58:04Z gerry $
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_NODETXTS
00100 #define INC_NODETXTS
00101 
00102 //#include "node.h" - in camtypes.h [AUTOMATICALLY REMOVED]
00103 //#include "matrix.h" - in camtypes.h [AUTOMATICALLY REMOVED]
00104 
00105 class NodePath;
00106 class CaretNode; 
00107 class VisibleTextNode;
00108 class TextLine;
00109 class TextStory;
00110 class BaseCamelotFilter;
00111 class ImportedStringList;
00112 class ImportedString;
00113 class DocColour;
00114 class ExtendParams;
00115 class FormatRegion;
00116 
00117 /********************************************************************************************
00118 >   class BaseTextClass: public BaseTextClass
00119 
00120     Author:     Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com>
00121     Created:    21/12/94
00122     Purpose:    The root of the TextObject hierarchy
00123 ********************************************************************************************/
00124 
00125 class BaseTextClass: public NodeRenderableInk
00126 {
00127     CC_DECLARE_DYNAMIC(BaseTextClass)
00128     
00129 public:
00130     BaseTextClass();    
00131     ~BaseTextClass();
00132     BaseTextClass(Node* ContextNode, AttachNodeDirection Direction);
00133     void Init();
00134 
00135     void CopyNodeContents(BaseTextClass* NodeCopy);
00136     virtual Node* SimpleCopy() { ERROR2(NULL,"BaseTextClass::SimpleCopy() - this is an abstract class!!!!"); }
00137     virtual void PolyCopyNodeContents(NodeRenderable* pNodeCopy);
00138 
00139     virtual BOOL IsABaseTextClass() const       { return TRUE; }
00140     virtual BOOL IsSetCandidate() const         { return FALSE; }
00141 
00142     // All text objects need to be associated with the BaseTextClass current attribute group
00143     virtual CCRuntimeClass* GetCurrentAttribGroup(); 
00144 
00145     virtual BOOL AllowOp(ObjChangeParam* pParam, BOOL SetOpPermissionState=TRUE,
00146                                                  BOOL DoPreTriggerEdit = TRUE);
00147     BOOL PreOpProcessing(ObjChangeParam* pParam);
00148 
00149     TextStory* FindParentStory();
00150 
00151     // abstraction of undo/non-undoable ops
00152     BOOL DoHideNode(UndoableOperation* pUndoOp);
00153     BOOL DoInsertNewNode(UndoableOperation* pUndoOp, Node* pContextNode, AttachNodeDirection Direction);
00154     BOOL DoFactorOutCommonChildAttributes(UndoableOperation* pUndoOp, BOOL Global, AttrTypeSet* pAffectedAttrTypes);
00155     BOOL DoLocaliseCommonAttributes(UndoableOperation* pUndoOp, BOOL CheckForDuplicates, 
00156                                     BOOL Global, AttrTypeSet* pAffectedAttrTypes);
00157     void GetAttachNodeAndDirectionToAttachFirstChildObject(Node** ppNode, AttachNodeDirection* pDir);
00158     BOOL AddNonLineLevelDescendantAttrsToSet(AttrTypeSet* pAttrTypeSet);
00159 
00160     void UnionNodeAndDescendantsOldAndNewBounds(DocRect* pBounds, BOOL ParentModifiedByOp=FALSE);
00161     BOOL ReCacheNodeAndDescendantsMetrics(FormatRegion* pFormatRegion);
00162     virtual BOOL ReCacheMetrics(FormatRegion* pFormatRegion);
00163 
00164     void FlagNodeAndDescendantsModifiedByOpAndParentsHaveDescendantModifiedByOp();
00165     void FlagNodeAndDescendantsAffectedAndParentsHaveDescendantAffected();
00166     void FlagPrevTextCharAndDescendantsModifiedByOpAndParentsHaveDescendantModifiedByOp(); // Jonathan 17/10/2000
00167     void ClearNodeAndDescendantsFlags();
00168 
00169     inline BOOL ModifiedByOp()                 { return mModifiedByOpFlag; }
00170     inline BOOL DescendantModifiedByOp()       { return mDescendantModifiedByOpFlag; }
00171     inline BOOL NodeOrDescendantModifiedByOp() { return mModifiedByOpFlag || mDescendantModifiedByOpFlag; }
00172     inline BOOL Affected()                     { return mAffectedFlag; }
00173     inline BOOL DescendantAffected()           { return mDescendantAffectedFlag; }
00174     inline BOOL NodeOrDescendantAffected()     { return mAffectedFlag || mDescendantAffectedFlag; }
00175     inline BOOL AlreadyWritten()               { return mAlreadyWritten; }
00176 
00177     inline void SetAlreadyWritten(BOOL f) { mAlreadyWritten = f; }
00178 
00179 private:
00180     void FlagParentsHaveDescendantModifiedByOp();
00181     void FlagDescendantsModifiedByOp();
00182     void FlagParentsHaveDescendantAffected();
00183     void FlagDescendantsAffected();
00184 
00185     inline void FlagModifiedByOp()           { mModifiedByOpFlag           = TRUE; mAffectedFlag           = TRUE; }
00186     inline void FlagDescendantModifiedByOp() { mDescendantModifiedByOpFlag = TRUE; mDescendantAffectedFlag = TRUE; }
00187     inline void FlagAffected()               { mAffectedFlag               = TRUE; }
00188     inline void FlagDescendantAffected()     { mDescendantAffectedFlag     = TRUE; }
00189     inline void ClearFlags();
00190 
00191 private:
00192     // the following flags are set by AllowOp/OnChildChange, and cleared at end of UpdateChangedNodes
00193     BYTE mModifiedByOpFlag           : 1;   // node modified directly by op
00194     BYTE mDescendantModifiedByOpFlag : 1;   // descendant of node directly modified by an op
00195     BYTE mAffectedFlag               : 1;   // node affect by op, wordwrap or format
00196     BYTE mDescendantAffectedFlag     : 1;   // descendant of node affected
00197     BYTE mAlreadyWritten             : 1;   // node has already been written to the file (see TextChar and v2 file format)
00198 };
00199 
00200 
00201 /********************************************************************************************
00202 >   enum BaseShiftEnum
00203 
00204     Author:     Ed_Cornes (Xara Group Ltd) <camelotdev@xara.com>
00205     Created:    5/7/95
00206     Purpose:    enum to represent alignment of baseline relative to the path text is on
00207                 when imported from Corel
00208 ********************************************************************************************/
00209 
00210 enum BaseShiftEnum { AlignBaseline, AlignAscenders, AlignDescenders, AlignCentres };
00211 
00212 
00213 // These will eventually become user changable - but for the mo they are here
00214 const double Text_SuperScriptSize   =  0.5;
00215 const double Text_SuperScriptOffset =  0.33;
00216 const double Text_SubScriptSize     =  0.5;
00217 const double Text_SubScriptOffset   = -0.1;
00218 
00219 
00220 /********************************************************************************************
00221 >   class TextStoryInfo: public CC_CLASS_MEMDUMP
00222 
00223     Author:     Ed_Cornes (Xara Group Ltd) <camelotdev@xara.com>
00224     Created:    4/2/96
00225     Purpose:    Hold story level information
00226 ********************************************************************************************/
00227 
00228 class TextStoryInfo : public CC_CLASS_MEMDUMP
00229 {
00230     CC_DECLARE_MEMDUMP(TextStoryInfo);
00231 
00232 public:
00233     TextStoryInfo();
00234 
00235     UndoableOperation* pUndoOp;
00236     BOOL               WordWrap;        // indicated if wrapping shoulf be undertaken
00237                                         // eg FALSE for undo/redo and stories on clipboard
00238     MILLIPOINT         StoryWidth;
00239     BOOL               WordWrapping;    // indicates story is word wrapping
00240     Path*              pPath;
00241     MILLIPOINT         PathLength;
00242     MILLIPOINT         PathClosed;
00243     double             UnitDirectionVectorX;
00244     double             UnitDirectionVectorY;
00245     MILLIPOINT         LeftPathIndent;
00246     MILLIPOINT         RightPathIndent;
00247     MILLIPOINT         DescentLine;
00248     BOOL               DescentLineValid;
00249 };
00250 
00251 
00252 /********************************************************************************************
00253 >   class TextStory: public BaseTextClass
00254 
00255     Author:     Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com>
00256     Created:    21/12/94
00257     Purpose:    The root of the TextObject hierarchy
00258 ********************************************************************************************/
00259 
00260 class TextStory: public BaseTextClass
00261 {
00262     CC_DECLARE_DYNAMIC(TextStory)
00263     
00264 public:
00265     static TextStory* CreateTextObject(DocCoord Anchor);
00266     static TextStory* CreateTextObject(Matrix TheMatrix);
00267     static TextStory* CreateFromChars(DocCoord Pos, char* pChars, WCHAR* pWChars, Document* pCreateDoc,
00268                     LOGFONT* pLogFont=NULL, BOOL ControlCodes=FALSE, DocColour* pColour=NULL);
00269     TextStory();    
00270     ~TextStory();
00271     TextStory(Node* ContextNode, AttachNodeDirection Direction);
00272     void Init();
00273 
00274     String_256 GetStoryAsString();
00275 
00276     virtual BOOL IsSetCandidate() const     { return TRUE; }
00277     virtual BOOL IsCompound() const             { return TRUE; }        // See also NodeCompound
00278 
00279     virtual Node* SimpleCopy();
00280     void CopyNodeContents(TextStory* NodeCopy);
00281     virtual void PolyCopyNodeContents(NodeRenderable* pNodeCopy);
00282     INT32 BaseComplexCopy(CopyStage Stage, Range& RangeToCopy, Node** pOutput);
00283     INT32 BaseComplexHide(UndoableOperation *pOp);
00284     virtual BOOL HidingNode();
00285 
00286     virtual BOOL CanBecomeA(BecomeA* pBecomeA);
00287     virtual BOOL DoBecomeA(BecomeA* pBecomeA); 
00288 
00289     virtual String Describe(BOOL Plural, BOOL Verbose);            
00290     virtual UINT32 GetNodeSize() const;
00291     virtual void GetDebugDetails(StringBase* Str);
00292 
00293     virtual BOOL OnNodePopUp(Spread* pSpread, DocCoord PointerPos, ContextMenu* pMenu);
00294 
00295     virtual DocRect GetBlobBoundingRect(); 
00296     virtual void RenderObjectBlobs(RenderRegion* pRender);
00297     virtual void RenderTinyBlobs(RenderRegion* pRender);
00298     DocCoord GetBlobPosAndSize(INT32* pSize=NULL);
00299 
00300     // Clever bits to allow the TextStory to reformat itself when an operation effects its children
00301 
00302     virtual BOOL AllowOp(ObjChangeParam* pParam, BOOL SetOpPermissionState = TRUE,
00303                                                  BOOL DoPreTriggerEdit = TRUE);
00304     virtual BOOL AllowOp_AccountForCompound(ObjChangeParam* pParam,
00305                                             BOOL SetOpPermissionState=TRUE,
00306                                             BOOL DoPreTriggerEdit = TRUE);
00307     virtual ChangeCode OnChildChange(ObjChangeParam* pParam);
00308 
00309     BOOL MoveCaretLeftAChar(); 
00310     BOOL MoveCaretRightAChar(); 
00311     BOOL MoveCaretLeftAWord(); 
00312     BOOL MoveCaretRightAWord(); 
00313     BOOL MoveCaretToStartOfLine(); 
00314     BOOL MoveCaretToEndOfLine();
00315     BOOL MoveCaretToCharacter(VisibleTextNode* pChar, AttachNodeDirection Dir);
00316     BOOL AttachCaretAttributes();
00317     VisibleTextNode* GetPrevWordChar(VisibleTextNode* pStartChar);
00318     VisibleTextNode* GetNextWordChar(VisibleTextNode* pStartChar);
00319 
00320     VisibleTextNode* GetSelectionEnd(BOOL* pDirection = NULL);
00321     BOOL GetCharacterAtPoint(BOOL InBounds, DocCoord Point, VisibleTextNode** pHitChar, BOOL* ToLeft);
00322     
00323     static TextStory* GetFocusStory();
00324     static void SetFocusStory(TextStory* pNewStory);
00325     CaretNode* GetCaret();
00326 
00327     NodePath*        GetTextPath() const;
00328     TextLine*        FindFirstLine() const;
00329     TextLine*        FindLastLine() const;
00330     VisibleTextNode* FindFirstVTN() const;
00331     VisibleTextNode* FindLastVTN() const;
00332 
00333     virtual void Transform(TransformBase& transform);
00334 
00335     DocRect GetUTStoryBounds();
00336     BOOL CreateUntransformedPath(TextStoryInfo* pPathInfo);
00337     void MatrixFitToPath();
00338     void MatrixRemoveFromPath();
00339 
00340     virtual BOOL FormatAndChildren(UndoableOperation* pUndoOp=NULL,
00341                                     BOOL UseNodeFlags=FALSE, BOOL WordWrap=TRUE);
00342     BOOL         UnWrapStory(UndoableOperation* pUndoOp);
00343 
00344     BOOL DeleteSelectedText(UndoableOperation* pUndoOp);
00345     BOOL DeleteSelectedTextLines(UndoableOperation* pUndoOp);
00346     BOOL DeleteSelectedTextCharacters(UndoableOperation* pUndoOp);
00347     
00348     void PreExportRender(RenderRegion* pRegion);
00349     BOOL ExportRender(RenderRegion* pRegion);
00350     BOOL PostImport();
00351     BOOL PostDuplicate(UndoableOperation* pOp);
00352     BOOL ImportFix_MoveScaleToAttrs();
00353     BOOL CorelStyleBaselineShift(BaseShiftEnum BaseShift);
00354 
00355     // Version 2 file format functions
00356     // Export
00357     BOOL OKToExport();
00358     virtual BOOL WritePreChildrenWeb(BaseCamelotFilter* pFilter);
00359     virtual BOOL WritePreChildrenNative(BaseCamelotFilter* pFilter);
00360     virtual BOOL CanWriteChildrenWeb(BaseCamelotFilter* pFilter);
00361     virtual BOOL CanWriteChildrenNative(BaseCamelotFilter* pFilter);
00362     virtual BOOL WriteBeginChildRecordsWeb(BaseCamelotFilter* pFilter);
00363     virtual BOOL WriteBeginChildRecordsNative(BaseCamelotFilter* pFilter);
00364     virtual BOOL WriteEndChildRecordsWeb(BaseCamelotFilter* pFilter);
00365     virtual BOOL WriteEndChildRecordsNative(BaseCamelotFilter* pFilter);
00366     // Import
00367     void ResetStringList();                                     // Deletes the imported string list
00368     void AddImportedString(ImportedString* pImportedString);    // Adds the string to the list
00369     BOOL EnsureStoryHasCaret();                                 // Used at post import time.
00370 
00371     // debug validation code for story - not very oops but all in one place
00372     void Validate(BOOL EnsureOpFlagsReset=TRUE);
00373     void CheckLeaf(Node* pLeafNode);
00374     void CheckSubtree(Node* pNode, AttrTypeSet* pParentAttrSet=NULL, BOOL* pDescendantSelected=NULL);
00375     TCHAR* GetNodeInfo(Node* pNode);
00376 
00377     void ResetEOLs(BOOL Status);
00378     BOOL WillStoryWrapOnPath();
00379 
00380 protected:
00381     BOOL Copy(Range& RangeToCopy, Node** pOutput);
00382     void SetStoryMarkers(Range& RangeToCopy);
00383     static BOOL DeleteChildAttribute(NodeRenderableInk* pParent, CCRuntimeClass* ReqdAttrib);   // Helper for CreateFromChars
00384 
00385     BOOL ExpandImportedStrings();   // Expands the imported strings into a series of TextChars
00386     
00387     // (ChrisG 8/11/00 Added so that Text with gradient fills can be identified.
00388     BOOL IsGradientFilled ();
00389 
00390 public:
00391     const Matrix* GetpStoryMatrix() const   { return &StoryMatrix; }
00392     Matrix* GetpStoryMatrix()               { return &StoryMatrix; }
00393     Matrix  GetStoryMatrix() const          { return  StoryMatrix; }
00394     void    SetStoryMatrix(Matrix& matrix)  { StoryMatrix=matrix;  }
00395 
00396     DocRect GetRedrawRect() const           { return RedrawRect; }
00397     void    SetRedrawRect(DocRect rect)     { RedrawRect=rect; }
00398     void    UpdateRedrawRect(DocRect rect)  { RedrawRect=RedrawRect.Union(rect); }
00399 
00400     MILLIPOINT GetStoryWidth() const        { return StoryWidth; }
00401     void SetStoryWidth(MILLIPOINT NewValue) { StoryWidth      = NewValue; }
00402 
00403     MILLIPOINT GetImportFormatWidth() const     { return ImportFormatWidth; }
00404     BaseShiftEnum GetImportBaseShift() const    { return ImportBaseShift; }
00405     void SetImportFormatWidth(MILLIPOINT width) { ImportFormatWidth=width;  }
00406     void SetImportBaseShift(BaseShiftEnum shift) { ImportBaseShift=shift;  }
00407 
00408     BOOL IsTextOnPathReversed() const   { return TextOnPathReversed; }
00409     BOOL IsTextOnPathTangential() const { return TextOnPathTangential; }
00410     BOOL IsPrintingAsShapes() const     { return PrintAsShapes; }
00411     BOOL IsWordWrapping() const         { return WordWrapping; }
00412     void ReverseTextOnPath()                 { TextOnPathReversed   = !TextOnPathReversed; }
00413     void ToggleTextOnPathTangentialness()    { TextOnPathTangential = !TextOnPathTangential; }
00414     void SetPrintingAsShapes(BOOL NewValues) { PrintAsShapes        =  NewValues; }
00415     void SetWordWrapping(    BOOL NewValues) { WordWrapping         =  NewValues; }
00416 
00417     FIXED16 GetCharsScale() const       { return CharsScale; }
00418     FIXED16 GetCharsAspect() const      { return CharsAspect; }
00419     ANGLE   GetCharsRotation() const    { return CharsRotation; }
00420     ANGLE   GetCharsShear() const       { return CharsShear; }
00421     void SetCharsScale(FIXED16 scale)     { CharsScale    = scale; }
00422     void SetCharsAspect(FIXED16 aspect)   { CharsAspect   = aspect; }
00423     void SetCharsRotation(ANGLE rotation) { CharsRotation = rotation; }
00424     void SetCharsShear(ANGLE shear)       { CharsShear    = shear; }
00425 
00426     // Jonathan 24/10/2000
00427     BOOL IsAutoKerning()                { return AutoKern; }
00428     void SetAutoKerning(BOOL NewValue)  { AutoKern = NewValue; }
00429 
00430     // Functions for the indents along a path
00431     MILLIPOINT GetLeftIndent()  const   {return mLeftIndent;} 
00432     MILLIPOINT GetRightIndent() const   {return mRightIndent;} 
00433     DocCoord GetLeftIndentPos() const;
00434     DocCoord GetRightIndentPos() const;
00435     static DocCoord GetPathBlobPos(MILLIPOINT IndentLength, NodePath* pPath);
00436     void SetLeftIndent(MILLIPOINT NewIndent)        {mLeftIndent = NewIndent;}
00437     void SetRightIndent(MILLIPOINT NewIndent)       {mRightIndent = NewIndent;}
00438 
00439 // Karim MacDonald 1/12/1999
00440 public:
00441     // Extend functions.
00442     // Note that if a sub-class returns TRUE from IsTypeExtendible, it must
00443     // also provide complete implementations of ValidateExtend and Extend,
00444     // which should usually check/extend its children.
00445     virtual BOOL IsTypeExtendible() const { return TRUE; }
00446     virtual DocRect ValidateExtend(const ExtendParams& ExtParams);
00447     virtual void Extend(const ExtendParams& ExtParams);
00448 
00449     // Find the extend-centre of this text-story, for use with Extension.
00450     DocCoord FindExtendCentre();
00451 
00452     // Determine the justification of this text story, for use with Extension.
00453     Justification FindJustification();
00454 
00455 private:
00456     static TextStory* pFocusStory;  // Pointer to the TextStory with the input focus
00457 
00458     Matrix     StoryMatrix;         // transform matrix for whole text story
00459     DocRect    RedrawRect;
00460     CaretNode* CachedCaret;         // A pointer to the caret
00461     MILLIPOINT mLeftIndent;         // left indent along path (from LHS)
00462     MILLIPOINT mRightIndent;        // right indent along path (from RHS)
00463     MILLIPOINT StoryWidth;          // width of story WHEN NOT ON A PATH (0 => text at point)
00464 
00465     BOOL TextOnPathReversed   : 1;  // text is reversed on the path
00466     BOOL TextOnPathTangential : 1;  // text on path tangential to path (as opposed to horizontal)
00467     BOOL PrintAsShapes        : 1;  // print the story as shapes
00468     BOOL WordWrapping         : 1;  // the story is word wrapping
00469     BOOL BeingCopied          : 1;  // Are we currently in a complex copy?
00470 
00471     MILLIPOINT    ImportFormatWidth;// format width           for 1 off format on import (for CDR)
00472     BaseShiftEnum ImportBaseShift;  // type of baseline shift for 1 off change on import (for CDR)
00473 
00474     FIXED16 CharsScale;             // transforms applied to chars before fitted to a path
00475     FIXED16 CharsAspect;
00476     ANGLE   CharsRotation;
00477     ANGLE   CharsShear;
00478 
00479     ImportedStringList* pImportedStringList;    // Used when importing strings in the v2 file format
00480 
00481     // Jonathan Payne 24/10/2000
00482     bool    AutoKern;               // Story has autokerning
00483 };
00484 #endif

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