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