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