1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef __VALUERECORDS_H
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define __VALUERECORDS_H
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \file
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \internal
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "LETypes.h"
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "LEFontInstance.h"
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "OpenTypeTables.h"
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "GlyphIterator.h"
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_BEGIN
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_uint16 ValueFormat;
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_int16 ValueRecordField;
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct ValueRecord
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    le_int16   values[ANY_NUMBER];
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    le_int16   getFieldValue(ValueFormat valueFormat, ValueRecordField field) const;
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    le_int16   getFieldValue(le_int16 index, ValueFormat valueFormat, ValueRecordField field) const;
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void    adjustPosition(ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator,
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                const LEFontInstance *fontInstance) const;
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void    adjustPosition(le_int16 index, ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator,
34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                const LEFontInstance *fontInstance) const;
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    static le_int16    getSize(ValueFormat valueFormat);
37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruprivate:
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    static le_int16    getFieldCount(ValueFormat valueFormat);
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    static le_int16    getFieldIndex(ValueFormat valueFormat, ValueRecordField field);
41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruenum ValueRecordFields
44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vrfXPlacement   = 0,
46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vrfYPlacement   = 1,
47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vrfXAdvance     = 2,
48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vrfYAdvance     = 3,
49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vrfXPlaDevice   = 4,
50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vrfYPlaDevice   = 5,
51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vrfXAdvDevice   = 6,
52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vrfYAdvDevice   = 7
53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruenum ValueFormatBits
56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vfbXPlacement   = 0x0001,
58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vfbYPlacement   = 0x0002,
59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vfbXAdvance     = 0x0004,
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vfbYAdvance     = 0x0008,
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vfbXPlaDevice   = 0x0010,
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vfbYPlaDevice   = 0x0020,
63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vfbXAdvDevice   = 0x0040,
64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vfbYAdvDevice   = 0x0080,
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vfbReserved     = 0xFF00,
66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    vfbAnyDevice    = vfbXPlaDevice + vfbYPlaDevice + vfbXAdvDevice + vfbYAdvDevice
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_END
70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
73