InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SLCGlyphNode.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Adobe Developer Technologies
6 //
7 // $Author$
8 //
9 // $DateTime$
10 //
11 // $Revision$
12 //
13 // $Change$
14 //
15 // Copyright 1997-2010 Adobe Systems Incorporated. All rights reserved.
16 //
17 // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
18 // with the terms of the Adobe license agreement accompanying it. If you have received
19 // this file from a source other than Adobe, then your use, modification, or
20 // distribution of it requires the prior written permission of Adobe.
21 //
22 //========================================================================================
23 
24 #ifndef __SLCGlyphNode_h__
25 #define __SLCGlyphNode_h__
26 
27 class IComposeScanner;
28 class IDrawingStyle;
29 class IWaxLine;
30 class IWaxRun;
31 class IFontInstance;
32 class PMRect;
33 
34 
52 {
53 public:
54 
59  {
60  kGNTText = 0,
61  kGNTInlineGraphic
62  };
63 
72  SLCGlyphNode( IComposeScanner* composeScanner,
73  IDrawingStyle* drawingStyle,
74  TextIndex startingIndex,
75  const PMReal& xOffset,
76  GlyphNodeType glyphNodeType);
77 
82  {
83  return fStatus;
84  };
85 
88  virtual ~SLCGlyphNode();
89 
98  virtual SLComposerStatusCode GetGlyph(const UTF32TextChar& character,
99  Text::GlyphID& glyphID,
100  PMReal& glyphWidth) = 0;
101 
112  virtual SLComposerStatusCode BufferGlyph(const UTF32TextChar& character, const Text::GlyphID& glyphID, const PMReal& glyphWidth) = 0;
113 
116  virtual PMReal GetWidth() const = 0;
117 
122  virtual SLComposerStatusCode FindTextBreak() = 0;
123 
127  virtual bool16 GetTrailingWhiteSpaceWidth(PMReal& width) const = 0;
128 
129 
136  virtual bool16 FitTrailingWhiteSpace(const PMReal& widthScaleFactor) = 0;
137 
142  virtual SLComposerStatusCode CreateWax(const IWaxLine* waxLine) const = 0;
143 
147  virtual IWaxRun* CreateWaxRun() const = 0;
148 
152  {
153  return fDrawingStyle;
154  }
155 
158  virtual const int32& GetTextSpan() const
159  {
160  return fTextSpan;
161  };
162 
165  inline const PMReal& GetLeading() const
166  {
167  return fLeading;
168  }
169 
172  inline const PMReal& GetAscent() const
173  {
174  return fAscent;
175  }
176 
179  inline const PMReal& GetCapHeight() const
180  {
181  return fCapHeight;
182  }
183 
187  inline const PMReal& GetXHeight() const
188  {
189  return fXHeight;
190  }
191 
195  inline const TextIndex& GetTextIndex() const
196  {
197  return fTextIndex;
198  };
199 
204  bool16 IsTrailingWhiteSpace(const UTF32TextChar& character) const;
205 
208  virtual void Dump(const char* msg) const;
209 
213  void SetTextSpan(int32 count)
214  {
215  fTextSpan = count;
216  };
217 
218 protected:
222 
226 
230 
234 
237  TextIndex fTextIndex;
238 
239  /* Cached metrics for the font.
240  */
241  PMReal fLeading;
242  PMReal fAscent;
243  PMReal fCapHeight;
244  PMReal fXHeight;
245 
248  int32 fTextSpan;
249 
252  const GlyphNodeType fGlyphNodeType;
253 };
254 
255 #endif // __SLCGlyphNode_h__
256 
257 // End, SLCGlyphNode.h
258