summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-49.1/layout/GlyphIterator.h
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2012-03-04 13:16:15 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2012-03-04 13:16:15 +0000
commit4f735f9c7efbb40316858ad2efed993d860c7461 (patch)
tree43ccf38db72347f7b31eee44ec13854565310706 /Build/source/libs/icu/icu-49.1/layout/GlyphIterator.h
parenta88413671252aebde6da430845232b126d5a71dd (diff)
icu 49.1 (49_rc)
git-svn-id: svn://tug.org/texlive/trunk@25559 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/icu/icu-49.1/layout/GlyphIterator.h')
-rw-r--r--Build/source/libs/icu/icu-49.1/layout/GlyphIterator.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-49.1/layout/GlyphIterator.h b/Build/source/libs/icu/icu-49.1/layout/GlyphIterator.h
new file mode 100644
index 00000000000..5ab8bce1bd1
--- /dev/null
+++ b/Build/source/libs/icu/icu-49.1/layout/GlyphIterator.h
@@ -0,0 +1,105 @@
+/*
+ *
+ * (C) Copyright IBM Corp. 1998-2008 - All Rights Reserved
+ *
+ */
+
+#ifndef __GLYPHITERATOR_H
+#define __GLYPHITERATOR_H
+
+/**
+ * \file
+ * \internal
+ */
+
+#include "LETypes.h"
+#include "OpenTypeTables.h"
+#include "GlyphDefinitionTables.h"
+
+U_NAMESPACE_BEGIN
+
+class LEGlyphStorage;
+class GlyphPositionAdjustments;
+
+class GlyphIterator : public UMemory {
+public:
+ GlyphIterator(LEGlyphStorage &theGlyphStorage, GlyphPositionAdjustments *theGlyphPositionAdjustments, le_bool rightToLeft, le_uint16 theLookupFlags,
+ FeatureMask theFeatureMask, const GlyphDefinitionTableHeader *theGlyphDefinitionTableHeader);
+
+ GlyphIterator(GlyphIterator &that);
+
+ GlyphIterator(GlyphIterator &that, FeatureMask newFeatureMask, le_int32 featureParam = 0);
+
+ GlyphIterator(GlyphIterator &that, le_uint16 newLookupFlags);
+
+ virtual ~GlyphIterator();
+
+ void reset(le_uint16 newLookupFlags, LETag newFeatureTag);
+
+ le_bool next(le_uint32 delta = 1);
+ le_bool prev(le_uint32 delta = 1);
+ le_bool findFeatureTag();
+
+ le_bool isRightToLeft() const;
+ le_bool ignoresMarks() const;
+
+ le_bool baselineIsLogicalEnd() const;
+
+ LEGlyphID getCurrGlyphID() const;
+ le_int32 getCurrStreamPosition() const;
+
+ le_int32 getMarkComponent(le_int32 markPosition) const;
+ le_bool findMark2Glyph();
+
+ le_int32 getFeatureParam() const;
+
+ void getCursiveEntryPoint(LEPoint &entryPoint) const;
+ void getCursiveExitPoint(LEPoint &exitPoint) const;
+
+ void setCurrGlyphID(TTGlyphID glyphID);
+ void setCurrStreamPosition(le_int32 position);
+ void setCurrGlyphBaseOffset(le_int32 baseOffset);
+ void adjustCurrGlyphPositionAdjustment(float xPlacementAdjust, float yPlacementAdjust,
+ float xAdvanceAdjust, float yAdvanceAdjust);
+
+ void setCurrGlyphPositionAdjustment(float xPlacementAdjust, 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, LEErrorCode& success);
+ le_int32 applyInsertions();
+
+private:
+ le_bool filterGlyph(le_uint32 index) const;
+ le_bool hasFeatureTag(le_bool matchGroup); /* not const because it updates the featureParam field */
+ le_bool nextInternal(le_uint32 delta = 1);
+ le_bool prevInternal(le_uint32 delta = 1);
+
+ le_int32 direction;
+ le_int32 position;
+ le_int32 nextLimit;
+ le_int32 prevLimit;
+
+ LEGlyphStorage &glyphStorage;
+ GlyphPositionAdjustments *glyphPositionAdjustments;
+
+ le_int32 srcIndex;
+ le_int32 destIndex;
+ le_uint16 lookupFlags;
+ FeatureMask featureMask;
+ le_int32 featureParam;
+ le_int32 glyphGroup;
+
+ const GlyphClassDefinitionTable *glyphClassDefinitionTable;
+ const MarkAttachClassDefinitionTable *markAttachClassDefinitionTable;
+
+ GlyphIterator &operator=(const GlyphIterator &other); // forbid copying of this class
+};
+
+U_NAMESPACE_END
+#endif