a53e8c0623
X-SVN-Rev: 6256
70 lines
1.8 KiB
C++
70 lines
1.8 KiB
C++
/*
|
|
* @(#)ValueRecords.h 1.6 00/03/15
|
|
*
|
|
* (C) Copyright IBM Corp. 1998, 1999, 2000, 2001 - All Rights Reserved
|
|
*
|
|
*/
|
|
|
|
#ifndef __VALUERECORDS_H
|
|
#define __VALUERECORDS_H
|
|
|
|
#include "LETypes.h"
|
|
#include "LEFontInstance.h"
|
|
#include "OpenTypeTables.h"
|
|
#include "GlyphIterator.h"
|
|
#include "GlyphPositionAdjustments.h"
|
|
|
|
U_NAMESPACE_BEGIN
|
|
|
|
typedef le_uint16 ValueFormat;
|
|
typedef le_int16 ValueRecordField;
|
|
|
|
struct ValueRecord
|
|
{
|
|
le_int16 values[ANY_NUMBER];
|
|
|
|
le_int16 getFieldValue(ValueFormat valueFormat, ValueRecordField field) const;
|
|
le_int16 getFieldValue(le_int16 index, ValueFormat valueFormat, ValueRecordField field) const;
|
|
void adjustPosition(ValueFormat valueFormat, const char *base, GlyphPositionAdjustment &positionAdjustment,
|
|
const LEFontInstance *fontInstance) const;
|
|
void adjustPosition(le_int16 index, ValueFormat valueFormat, const char *base, GlyphPositionAdjustment &positionAdjustment,
|
|
const LEFontInstance *fontInstance) const;
|
|
|
|
static le_int16 getSize(ValueFormat valueFormat);
|
|
|
|
private:
|
|
static le_int16 getFieldCount(ValueFormat valueFormat);
|
|
static le_int16 getFieldIndex(ValueFormat valueFormat, ValueRecordField field);
|
|
};
|
|
|
|
enum ValueRecordFields
|
|
{
|
|
vrfXPlacement = 0,
|
|
vrfYPlacement = 1,
|
|
vrfXAdvance = 2,
|
|
vrfYAdvance = 3,
|
|
vrfXPlaDevice = 4,
|
|
vrfYPlaDevice = 5,
|
|
vrfXAdvDevice = 6,
|
|
vrfYAdvDevice = 7
|
|
};
|
|
|
|
enum ValueFormatBits
|
|
{
|
|
vfbXPlacement = 0x0001,
|
|
vfbYPlacement = 0x0002,
|
|
vfbXAdvance = 0x0004,
|
|
vfbYAdvance = 0x0008,
|
|
vfbXPlaDevice = 0x0010,
|
|
vfbYPlaDevice = 0x0020,
|
|
vfbXAdvDevice = 0x0040,
|
|
vfbYAdvDevice = 0x0080,
|
|
vfbReserved = 0xFF00,
|
|
vfbAnyDevice = vfbXPlaDevice + vfbYPlaDevice + vfbXAdvDevice + vfbYAdvDevice
|
|
};
|
|
|
|
U_NAMESPACE_END
|
|
#endif
|
|
|
|
|