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/core/maximum_profile_table.h" 18 19 namespace sfntly { 20 /****************************************************************************** 21 * MaximumProfileTable class 22 ******************************************************************************/ 23 MaximumProfileTable::~MaximumProfileTable() {} 24 25 int32_t MaximumProfileTable::TableVersion() { 26 return data_->ReadFixed(Offset::kVersion); 27 } 28 29 int32_t MaximumProfileTable::NumGlyphs() { 30 return data_->ReadUShort(Offset::kNumGlyphs); 31 } 32 33 int32_t MaximumProfileTable::MaxPoints() { 34 return data_->ReadUShort(Offset::kMaxPoints); 35 } 36 37 int32_t MaximumProfileTable::MaxContours() { 38 return data_->ReadUShort(Offset::kMaxContours); 39 } 40 41 int32_t MaximumProfileTable::MaxCompositePoints() { 42 return data_->ReadUShort(Offset::kMaxCompositePoints); 43 } 44 45 int32_t MaximumProfileTable::MaxCompositeContours() { 46 return data_->ReadUShort(Offset::kMaxCompositeContours); 47 } 48 49 int32_t MaximumProfileTable::MaxZones() { 50 return data_->ReadUShort(Offset::kMaxZones); 51 } 52 53 int32_t MaximumProfileTable::MaxTwilightPoints() { 54 return data_->ReadUShort(Offset::kMaxTwilightPoints); 55 } 56 57 int32_t MaximumProfileTable::MaxStorage() { 58 return data_->ReadUShort(Offset::kMaxStorage); 59 } 60 61 int32_t MaximumProfileTable::MaxFunctionDefs() { 62 return data_->ReadUShort(Offset::kMaxFunctionDefs); 63 } 64 65 int32_t MaximumProfileTable::MaxStackElements() { 66 return data_->ReadUShort(Offset::kMaxStackElements); 67 } 68 69 int32_t MaximumProfileTable::MaxSizeOfInstructions() { 70 return data_->ReadUShort(Offset::kMaxSizeOfInstructions); 71 } 72 73 int32_t MaximumProfileTable::MaxComponentElements() { 74 return data_->ReadUShort(Offset::kMaxComponentElements); 75 } 76 77 int32_t MaximumProfileTable::MaxComponentDepth() { 78 return data_->ReadUShort(Offset::kMaxComponentDepth); 79 } 80 81 MaximumProfileTable::MaximumProfileTable(Header* header, 82 ReadableFontData* data) 83 : Table(header, data) { 84 } 85 86 /****************************************************************************** 87 * MaximumProfileTable::Builder class 88 ******************************************************************************/ 89 MaximumProfileTable::Builder::Builder(Header* header, WritableFontData* data) 90 : TableBasedTableBuilder(header, data) { 91 } 92 93 MaximumProfileTable::Builder::Builder(Header* header, ReadableFontData* data) 94 : TableBasedTableBuilder(header, data) { 95 } 96 97 MaximumProfileTable::Builder::~Builder() {} 98 99 CALLER_ATTACH FontDataTable* 100 MaximumProfileTable::Builder::SubBuildTable(ReadableFontData* data) { 101 FontDataTablePtr table = new MaximumProfileTable(header(), data); 102 return table.Detach(); 103 } 104 105 CALLER_ATTACH MaximumProfileTable::Builder* 106 MaximumProfileTable::Builder::CreateBuilder(Header* header, 107 WritableFontData* data) { 108 Ptr<MaximumProfileTable::Builder> builder; 109 builder = new MaximumProfileTable::Builder(header, data); 110 return builder.Detach(); 111 } 112 113 int32_t MaximumProfileTable::Builder::TableVersion() { 114 return InternalReadData()->ReadUShort(Offset::kVersion); 115 } 116 117 void MaximumProfileTable::Builder::SetTableVersion(int32_t version) { 118 InternalWriteData()->WriteUShort(Offset::kVersion, version); 119 } 120 121 int32_t MaximumProfileTable::Builder::NumGlyphs() { 122 return InternalReadData()->ReadUShort(Offset::kNumGlyphs); 123 } 124 125 void MaximumProfileTable::Builder::SetNumGlyphs(int32_t num_glyphs) { 126 InternalWriteData()->WriteUShort(Offset::kNumGlyphs, num_glyphs); 127 } 128 129 int32_t MaximumProfileTable::Builder::MaxPoints() { 130 return InternalReadData()->ReadUShort(Offset::kMaxPoints); 131 } 132 133 void MaximumProfileTable::Builder::SetMaxPoints(int32_t max_points) { 134 InternalWriteData()->WriteUShort(Offset::kMaxPoints, max_points); 135 } 136 137 int32_t MaximumProfileTable::Builder::MaxContours() { 138 return InternalReadData()->ReadUShort(Offset::kMaxContours); 139 } 140 141 void MaximumProfileTable::Builder::SetMaxContours(int32_t max_contours) { 142 InternalWriteData()->WriteUShort(Offset::kMaxContours, max_contours); 143 } 144 145 int32_t MaximumProfileTable::Builder::MaxCompositePoints() { 146 return InternalReadData()->ReadUShort(Offset::kMaxCompositePoints); 147 } 148 149 void MaximumProfileTable::Builder::SetMaxCompositePoints( 150 int32_t max_composite_points) { 151 InternalWriteData()->WriteUShort(Offset::kMaxCompositePoints, 152 max_composite_points); 153 } 154 155 int32_t MaximumProfileTable::Builder::MaxCompositeContours() { 156 return InternalReadData()->ReadUShort(Offset::kMaxCompositeContours); 157 } 158 159 void MaximumProfileTable::Builder::SetMaxCompositeContours( 160 int32_t max_composite_contours) { 161 InternalWriteData()->WriteUShort(Offset::kMaxCompositeContours, 162 max_composite_contours); 163 } 164 165 int32_t MaximumProfileTable::Builder::MaxZones() { 166 return InternalReadData()->ReadUShort(Offset::kMaxZones); 167 } 168 169 void MaximumProfileTable::Builder::SetMaxZones(int32_t max_zones) { 170 InternalWriteData()->WriteUShort(Offset::kMaxZones, max_zones); 171 } 172 173 int32_t MaximumProfileTable::Builder::MaxTwilightPoints() { 174 return InternalReadData()->ReadUShort(Offset::kMaxTwilightPoints); 175 } 176 177 void MaximumProfileTable::Builder::SetMaxTwilightPoints( 178 int32_t max_twilight_points) { 179 InternalWriteData()->WriteUShort(Offset::kMaxTwilightPoints, 180 max_twilight_points); 181 } 182 183 int32_t MaximumProfileTable::Builder::MaxStorage() { 184 return InternalReadData()->ReadUShort(Offset::kMaxStorage); 185 } 186 187 void MaximumProfileTable::Builder::SetMaxStorage(int32_t max_storage) { 188 InternalWriteData()->WriteUShort(Offset::kMaxStorage, max_storage); 189 } 190 191 int32_t MaximumProfileTable::Builder::MaxFunctionDefs() { 192 return InternalReadData()->ReadUShort(Offset::kMaxFunctionDefs); 193 } 194 195 void MaximumProfileTable::Builder::SetMaxFunctionDefs( 196 int32_t max_function_defs) { 197 InternalWriteData()->WriteUShort(Offset::kMaxFunctionDefs, max_function_defs); 198 } 199 200 int32_t MaximumProfileTable::Builder::MaxStackElements() { 201 return InternalReadData()->ReadUShort(Offset::kMaxStackElements); 202 } 203 204 void MaximumProfileTable::Builder::SetMaxStackElements( 205 int32_t max_stack_elements) { 206 InternalWriteData()->WriteUShort(Offset::kMaxStackElements, 207 max_stack_elements); 208 } 209 210 int32_t MaximumProfileTable::Builder::MaxSizeOfInstructions() { 211 return InternalReadData()->ReadUShort(Offset::kMaxSizeOfInstructions); 212 } 213 214 void MaximumProfileTable::Builder::SetMaxSizeOfInstructions( 215 int32_t max_size_of_instructions) { 216 InternalWriteData()->WriteUShort(Offset::kMaxSizeOfInstructions, 217 max_size_of_instructions); 218 } 219 220 int32_t MaximumProfileTable::Builder::MaxComponentElements() { 221 return InternalReadData()->ReadUShort(Offset::kMaxComponentElements); 222 } 223 224 void MaximumProfileTable::Builder::SetMaxComponentElements( 225 int32_t max_component_elements) { 226 InternalWriteData()->WriteUShort(Offset::kMaxComponentElements, 227 max_component_elements); 228 } 229 230 int32_t MaximumProfileTable::Builder::MaxComponentDepth() { 231 return InternalReadData()->ReadUShort(Offset::kMaxComponentDepth); 232 } 233 234 void MaximumProfileTable::Builder::SetMaxComponentDepth( 235 int32_t max_component_depth) { 236 InternalWriteData()->WriteUShort(Offset::kMaxComponentDepth, 237 max_component_depth); 238 } 239 240 } // namespace sfntly 241