1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "LETypes.h" 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "LEFontInstance.h" 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "OpenTypeTables.h" 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "AnchorTables.h" 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "MarkArrays.h" 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "LESwaps.h" 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_BEGIN 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_int32 MarkArray::getMarkClass(LEGlyphID glyphID, le_int32 coverageIndex, const LEFontInstance *fontInstance, 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LEPoint &anchor) const 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int32 markClass = -1; 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if (coverageIndex >= 0) { 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 mCount = SWAPW(markCount); 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if (coverageIndex < mCount) { 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const MarkRecord *markRecord = &markRecordArray[coverageIndex]; 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru Offset anchorTableOffset = SWAPW(markRecord->markAnchorTableOffset); 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const AnchorTable *anchorTable = (AnchorTable *) ((char *) this + anchorTableOffset); 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru anchorTable->getAnchor(glyphID, fontInstance, anchor); 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru markClass = SWAPW(markRecord->markClass); 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // XXXX If we get here, the table is mal-formed 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return markClass; 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_END 40