]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/layout/GlyphIterator.h
ICU-511.27.tar.gz
[apple/icu.git] / icuSources / layout / GlyphIterator.h
index 610a0342b3935bf23a182ab0a7a5b3c6fbecf0d2..2aef81548926a1863f10f60b0dca0c53921e6951 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1998-2008 - All Rights Reserved
  *
  */
 
 #include "LETypes.h"
 #include "OpenTypeTables.h"
 #include "GlyphDefinitionTables.h"
-#include "GlyphPositionAdjustments.h"
 
 U_NAMESPACE_BEGIN
 
 class LEGlyphStorage;
+class GlyphPositionAdjustments;
 
 class GlyphIterator : public UMemory {
 public:
-    GlyphIterator(LEGlyphStorage &theGlyphStorage, GlyphPositionAdjustment *theGlyphPositionAdjustments, le_bool rightToLeft, le_uint16 theLookupFlags, LETag theFeatureTag,
-        const GlyphDefinitionTableHeader *theGlyphDefinitionTableHeader);
+    GlyphIterator(LEGlyphStorage &theGlyphStorage, GlyphPositionAdjustments *theGlyphPositionAdjustments, le_bool rightToLeft, le_uint16 theLookupFlags,
+        FeatureMask theFeatureMask, const GlyphDefinitionTableHeader *theGlyphDefinitionTableHeader);
 
     GlyphIterator(GlyphIterator &that);
 
-    GlyphIterator(GlyphIterator &that, LETag newFeatureTag);
+    GlyphIterator(GlyphIterator &that, FeatureMask newFeatureMask);
 
     GlyphIterator(GlyphIterator &that, le_uint16 newLookupFlags);
 
@@ -44,24 +44,18 @@ public:
     le_bool ignoresMarks() const;
 
     le_bool baselineIsLogicalEnd() const;
-    le_bool hasCursiveFirstExitPoint() const;
-    le_bool hasCursiveLastExitPoint() const;
 
     LEGlyphID getCurrGlyphID() const;
     le_int32  getCurrStreamPosition() const;
-    void   getCurrGlyphPositionAdjustment(GlyphPositionAdjustment &adjustment) const;
 
     le_int32  getMarkComponent(le_int32 markPosition) const;
     le_bool   findMark2Glyph();
 
-    void getCursiveLastExitPoint(LEPoint &exitPoint) const;
-    LEGlyphID getCursiveLastGlyphID() const;
-    float getCursiveBaselineAdjustment() const;
-    void getCursiveLastPositionAdjustment(GlyphPositionAdjustment &adjustment) const;
+    void getCursiveEntryPoint(LEPoint &entryPoint) const;
+    void getCursiveExitPoint(LEPoint &exitPoint) const;
 
     void setCurrGlyphID(TTGlyphID glyphID);
     void setCurrStreamPosition(le_int32 position);
-    void setCurrGlyphPositionAdjustment(const GlyphPositionAdjustment *adjustment);
     void setCurrGlyphBaseOffset(le_int32 baseOffset);
     void adjustCurrGlyphPositionAdjustment(float xPlacementAdjust, float yPlacementAdjust,
                                            float xAdvanceAdjust,   float yAdvanceAdjust);
@@ -69,19 +63,18 @@ public:
     void setCurrGlyphPositionAdjustment(float xPlacementAdjust, float yPlacementAdjust,
                                         float xAdvanceAdjust,   float yAdvanceAdjust);
 
-    void setCursiveFirstExitPoint();
-    void resetCursiveLastExitPoint();
-    void setCursiveLastExitPoint(LEPoint &exitPoint);
-    void setCursiveBaselineAdjustment(float adjustment);
-    void adjustCursiveLastGlyphPositionAdjustment(float xPlacmentAdjust, float yPlacementAdjust,
-                                           float xAdvanceAdjust, float yAdvanceAdjust);
+    void clearCursiveEntryPoint();
+    void clearCursiveExitPoint();
+    void setCursiveEntryPoint(LEPoint &entryPoint);
+    void setCursiveExitPoint(LEPoint &exitPoint);
+    void setCursiveGlyph();
 
-    LEGlyphID *insertGlyphs(le_int32 count);
+    LEGlyphID *insertGlyphs(le_int32 count, LEErrorCode& success);
     le_int32 applyInsertions();
 
 private:
     le_bool filterGlyph(le_uint32 index) const;
-    le_bool hasFeatureTag() const;
+    le_bool hasFeatureTag(le_bool matchGroup) const;
     le_bool nextInternal(le_uint32 delta = 1);
     le_bool prevInternal(le_uint32 delta = 1);
 
@@ -89,16 +82,16 @@ private:
     le_int32  position;
     le_int32  nextLimit;
     le_int32  prevLimit;
-    le_int32  cursiveFirstPosition;
-    le_int32  cursiveLastPosition;
-    float     cursiveBaselineAdjustment;
-    LEPoint   cursiveLastExitPoint;
+
     LEGlyphStorage &glyphStorage;
-    GlyphPositionAdjustment *glyphPositionAdjustments;
-    le_int32 srcIndex;
-    le_int32 destIndex;
-    le_uint16 lookupFlags;
-    LETag    featureTag;
+    GlyphPositionAdjustments *glyphPositionAdjustments;
+
+    le_int32    srcIndex;
+    le_int32    destIndex;
+    le_uint16   lookupFlags;
+    FeatureMask featureMask;
+    le_int32    glyphGroup;
+
     const GlyphClassDefinitionTable *glyphClassDefinitionTable;
     const MarkAttachClassDefinitionTable *markAttachClassDefinitionTable;