Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1088)

Side by Side Diff: src/sfnt/SkOTTable_EBLC.h

Issue 263503004: Add support for kEmbeddedBitmapText_Flag to DirectWrite. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/sfnt/SkOTTable_EBDT.h ('k') | src/sfnt/SkOTTable_EBSC.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #ifndef SkOTTable_EBLC_DEFINED
9 #define SkOTTable_EBLC_DEFINED
10
11 #include "SkEndian.h"
12 #include "SkOTTable_EBDT.h"
13 #include "SkOTTableTypes.h"
14 #include "SkTypedEnum.h"
15
16 #pragma pack(push, 1)
17
18 struct SkOTTableEmbeddedBitmapLocation {
19 static const SK_OT_CHAR TAG0 = 'E';
20 static const SK_OT_CHAR TAG1 = 'B';
21 static const SK_OT_CHAR TAG2 = 'L';
22 static const SK_OT_CHAR TAG3 = 'C';
23 static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableEmbeddedBitmapLocation> ::value;
24
25 SK_OT_Fixed version;
26 static const SK_OT_Fixed version_initial = SkTEndian_SwapBE32(0x00020000);
27
28 SK_OT_ULONG numSizes;
29
30 struct SbitLineMetrics {
31 SK_OT_CHAR ascender;
32 SK_OT_CHAR descender;
33 SK_OT_BYTE widthMax;
34 SK_OT_CHAR caretSlopeNumerator;
35 SK_OT_CHAR caretSlopeDenominator;
36 SK_OT_CHAR caretOffset;
37 SK_OT_CHAR minOriginSB;
38 SK_OT_CHAR minAdvanceSB;
39 SK_OT_CHAR maxBeforeBL;
40 SK_OT_CHAR minAfterBL;
41 SK_OT_CHAR pad1;
42 SK_OT_CHAR pad2;
43 };
44
45 struct BitmapSizeTable {
46 SK_OT_ULONG indexSubTableArrayOffset; //offset to indexSubtableArray fro m beginning of EBLC.
47 SK_OT_ULONG indexTablesSize; //number of bytes in corresponding index su btables and array
48 SK_OT_ULONG numberOfIndexSubTables; //an index subtable for each range o r format change
49 SK_OT_ULONG colorRef; //not used; set to 0.
50 SbitLineMetrics hori; //line metrics for text rendered horizontally
51 SbitLineMetrics vert; //line metrics for text rendered vertically
52 SK_OT_USHORT startGlyphIndex; //lowest glyph index for this size
53 SK_OT_USHORT endGlyphIndex; //highest glyph index for this size
54 SK_OT_BYTE ppemX; //horizontal pixels per Em
55 SK_OT_BYTE ppemY; //vertical pixels per Em
56 struct BitDepth {
57 SK_TYPED_ENUM(Value, SK_OT_BYTE,
58 ((BW, 1))
59 ((Gray4, 2))
60 ((Gray16, 4))
61 ((Gray256, 8))
62 SK_SEQ_END,
63 SK_SEQ_END)
64 SK_OT_BYTE value;
65 } bitDepth; //the Microsoft rasterizer v.1.7 or greater supports
66 union Flags {
67 struct Field {
68 //0-7
69 SK_OT_BYTE_BITFIELD(
70 Horizontal, // Horizontal small glyph metrics
71 Vertical, // Vertical small glyph metrics
72 Reserved02,
73 Reserved03,
74 Reserved04,
75 Reserved05,
76 Reserved06,
77 Reserved07)
78 } field;
79 struct Raw {
80 static const SK_OT_CHAR Horizontal = 1u << 0;
81 static const SK_OT_CHAR Vertical = 1u << 1;
82 SK_OT_CHAR value;
83 } raw;
84 } flags;
85 }; //bitmapSizeTable[numSizes];
86
87 struct IndexSubTableArray {
88 SK_OT_USHORT firstGlyphIndex; //first glyph code of this range
89 SK_OT_USHORT lastGlyphIndex; //last glyph code of this range (inclusive)
90 SK_OT_ULONG additionalOffsetToIndexSubtable; //add to BitmapSizeTable::i ndexSubTableArrayOffset to get offset from beginning of 'EBLC'
91 }; //indexSubTableArray[BitmapSizeTable::numberOfIndexSubTables];
92
93 struct IndexSubHeader {
94 SK_OT_USHORT indexFormat; //format of this indexSubTable
95 SK_OT_USHORT imageFormat; //format of 'EBDT' image data
96 SK_OT_ULONG imageDataOffset; //offset to image data in 'EBDT' table
97 };
98
99 // Variable metrics glyphs with 4 byte offsets
100 struct IndexSubTable1 {
101 IndexSubHeader header;
102 //SK_OT_ULONG offsetArray[lastGlyphIndex - firstGlyphIndex + 1 + 1]; //l ast element points to one past end of last glyph
103 //glyphData = offsetArray[glyphIndex - firstGlyphIndex] + imageDataOffse t
104 };
105
106 // All Glyphs have identical metrics
107 struct IndexSubTable2 {
108 IndexSubHeader header;
109 SK_OT_ULONG imageSize; // all glyphs are of the same size
110 SkOTTableEmbeddedBitmapData::BigGlyphMetrics bigMetrics; // all glyphs h ave the same metrics; glyph data may be compressed, byte-aligned, or bit-aligned
111 };
112
113 // Variable metrics glyphs with 2 byte offsets
114 struct IndexSubTable3 {
115 IndexSubHeader header;
116 //SK_OT_USHORT offsetArray[lastGlyphIndex - firstGlyphIndex + 1 + 1]; // last element points to one past end of last glyph, may have extra element to for ce even number of elements
117 //glyphData = offsetArray[glyphIndex - firstGlyphIndex] + imageDataOffse t
118 };
119
120 // Variable metrics glyphs with sparse glyph codes
121 struct IndexSubTable4 {
122 IndexSubHeader header;
123 SK_OT_ULONG numGlyphs;
124 struct CodeOffsetPair {
125 SK_OT_USHORT glyphCode;
126 SK_OT_USHORT offset; //location in EBDT
127 }; //glyphArray[numGlyphs+1]
128 };
129
130 // Constant metrics glyphs with sparse glyph codes
131 struct IndexSubTable5 {
132 IndexSubHeader header;
133 SK_OT_ULONG imageSize; //all glyphs have the same data size
134 SkOTTableEmbeddedBitmapData::BigGlyphMetrics bigMetrics; //all glyphs ha ve the same metrics
135 SK_OT_ULONG numGlyphs;
136 //SK_OT_USHORT glyphCodeArray[numGlyphs] //must have even number of entr ies (set pad to 0)
137 };
138
139 union IndexSubTable {
140 IndexSubHeader header;
141 IndexSubTable1 format1;
142 IndexSubTable2 format2;
143 IndexSubTable3 format3;
144 IndexSubTable4 format4;
145 IndexSubTable5 format5;
146 };
147
148 };
149
150 #pragma pack(pop)
151
152 #endif
OLDNEW
« no previous file with comments | « src/sfnt/SkOTTable_EBDT.h ('k') | src/sfnt/SkOTTable_EBSC.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698