• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2011 Google Inc. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0  = the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include "sfntly/table/bitmap/bitmap_glyph.h"
18 #include "sfntly/table/bitmap/simple_bitmap_glyph.h"
19 #include "sfntly/table/bitmap/composite_bitmap_glyph.h"
20 
21 namespace sfntly {
22 /******************************************************************************
23  * BitmapGlyph class
24  ******************************************************************************/
~BitmapGlyph()25 BitmapGlyph::~BitmapGlyph() {
26 }
27 
CreateGlyph(ReadableFontData * data,int32_t format)28 CALLER_ATTACH BitmapGlyph* BitmapGlyph::CreateGlyph(ReadableFontData* data,
29                                                     int32_t format) {
30   BitmapGlyphPtr glyph;
31   BitmapGlyphBuilderPtr builder;
32   builder.Attach(Builder::CreateGlyphBuilder(data, format));
33   if (builder) {
34     glyph.Attach(down_cast<BitmapGlyph*>(builder->Build()));
35   }
36   return glyph;
37 }
38 
BitmapGlyph(ReadableFontData * data,int32_t format)39 BitmapGlyph::BitmapGlyph(ReadableFontData* data, int32_t format)
40     : SubTable(data), format_(format) {
41 }
42 
43 /******************************************************************************
44  * BitmapGlyph::Builder class
45  ******************************************************************************/
~Builder()46 BitmapGlyph::Builder::~Builder() {
47 }
48 
49 CALLER_ATTACH BitmapGlyph::Builder*
CreateGlyphBuilder(ReadableFontData * data,int32_t format)50 BitmapGlyph::Builder::CreateGlyphBuilder(ReadableFontData* data,
51                                          int32_t format) {
52   BitmapGlyphBuilderPtr builder;
53   switch (format) {
54     case 1:
55     case 2:
56     case 3:
57     case 4:
58     case 5:
59     case 6:
60     case 7:
61       builder = new SimpleBitmapGlyph::Builder(data, format);
62       break;
63     case 8:
64     case 9:
65       builder = new CompositeBitmapGlyph::Builder(data, format);
66       break;
67   }
68   return builder.Detach();
69 }
70 
Builder(WritableFontData * data,int32_t format)71 BitmapGlyph::Builder::Builder(WritableFontData* data, int32_t format)
72     : SubTable::Builder(data), format_(format) {
73 }
74 
Builder(ReadableFontData * data,int32_t format)75 BitmapGlyph::Builder::Builder(ReadableFontData* data, int32_t format)
76     : SubTable::Builder(data), format_(format) {
77 }
78 
79 CALLER_ATTACH
SubBuildTable(ReadableFontData * data)80 FontDataTable* BitmapGlyph::Builder::SubBuildTable(ReadableFontData* data) {
81   UNREFERENCED_PARAMETER(data);
82   return NULL;
83 }
84 
SubDataSet()85 void BitmapGlyph::Builder::SubDataSet() {
86   // NOP
87 }
88 
SubDataSizeToSerialize()89 int32_t BitmapGlyph::Builder::SubDataSizeToSerialize() {
90   return InternalReadData()->Length();
91 }
92 
SubReadyToSerialize()93 bool BitmapGlyph::Builder::SubReadyToSerialize() {
94   return true;
95 }
96 
SubSerialize(WritableFontData * new_data)97 int32_t BitmapGlyph::Builder::SubSerialize(WritableFontData* new_data) {
98   return InternalReadData()->CopyTo(new_data);
99 }
100 
101 }  // namespace sfntly
102