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

Side by Side Diff: third_party/woff2/src/glyph.cc

Issue 1913773002: Update woff2 to 2bc6acf (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 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
« no previous file with comments | « third_party/woff2/src/font.cc ('k') | third_party/woff2/src/transform.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 Google Inc. All Rights Reserved. 1 // Copyright 2013 Google Inc. All Rights Reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 if (!buffer.Skip(glyph->instructions_size)) { 115 if (!buffer.Skip(glyph->instructions_size)) {
116 return FONT_COMPRESSION_FAILURE(); 116 return FONT_COMPRESSION_FAILURE();
117 } 117 }
118 118
119 // Read the run-length coded flags. 119 // Read the run-length coded flags.
120 std::vector<std::vector<uint8_t> > flags(num_contours); 120 std::vector<std::vector<uint8_t> > flags(num_contours);
121 uint8_t flag = 0; 121 uint8_t flag = 0;
122 uint8_t flag_repeat = 0; 122 uint8_t flag_repeat = 0;
123 for (int i = 0; i < num_contours; ++i) { 123 for (int i = 0; i < num_contours; ++i) {
124 flags[i].resize(glyph->contours[i].size()); 124 flags[i].resize(glyph->contours[i].size());
125 for (int j = 0; j < glyph->contours[i].size(); ++j) { 125 for (size_t j = 0; j < glyph->contours[i].size(); ++j) {
126 if (flag_repeat == 0) { 126 if (flag_repeat == 0) {
127 if (!buffer.ReadU8(&flag)) { 127 if (!buffer.ReadU8(&flag)) {
128 return FONT_COMPRESSION_FAILURE(); 128 return FONT_COMPRESSION_FAILURE();
129 } 129 }
130 if (flag & kFLAG_REPEAT) { 130 if (flag & kFLAG_REPEAT) {
131 if (!buffer.ReadU8(&flag_repeat)) { 131 if (!buffer.ReadU8(&flag_repeat)) {
132 return FONT_COMPRESSION_FAILURE(); 132 return FONT_COMPRESSION_FAILURE();
133 } 133 }
134 } 134 }
135 } else { 135 } else {
136 flag_repeat--; 136 flag_repeat--;
137 } 137 }
138 flags[i][j] = flag; 138 flags[i][j] = flag;
139 glyph->contours[i][j].on_curve = flag & kFLAG_ONCURVE; 139 glyph->contours[i][j].on_curve = flag & kFLAG_ONCURVE;
140 } 140 }
141 } 141 }
142 142
143 // Read the x coordinates. 143 // Read the x coordinates.
144 int prev_x = 0; 144 int prev_x = 0;
145 for (int i = 0; i < num_contours; ++i) { 145 for (int i = 0; i < num_contours; ++i) {
146 for (int j = 0; j < glyph->contours[i].size(); ++j) { 146 for (size_t j = 0; j < glyph->contours[i].size(); ++j) {
147 uint8_t flag = flags[i][j]; 147 uint8_t flag = flags[i][j];
148 if (flag & kFLAG_XSHORT) { 148 if (flag & kFLAG_XSHORT) {
149 // single byte x-delta coord value 149 // single byte x-delta coord value
150 uint8_t x_delta; 150 uint8_t x_delta;
151 if (!buffer.ReadU8(&x_delta)) { 151 if (!buffer.ReadU8(&x_delta)) {
152 return FONT_COMPRESSION_FAILURE(); 152 return FONT_COMPRESSION_FAILURE();
153 } 153 }
154 int sign = (flag & kFLAG_XREPEATSIGN) ? 1 : -1; 154 int sign = (flag & kFLAG_XREPEATSIGN) ? 1 : -1;
155 glyph->contours[i][j].x = prev_x + sign * x_delta; 155 glyph->contours[i][j].x = prev_x + sign * x_delta;
156 } else { 156 } else {
157 // double byte x-delta coord value 157 // double byte x-delta coord value
158 int16_t x_delta = 0; 158 int16_t x_delta = 0;
159 if (!(flag & kFLAG_XREPEATSIGN)) { 159 if (!(flag & kFLAG_XREPEATSIGN)) {
160 if (!buffer.ReadS16(&x_delta)) { 160 if (!buffer.ReadS16(&x_delta)) {
161 return FONT_COMPRESSION_FAILURE(); 161 return FONT_COMPRESSION_FAILURE();
162 } 162 }
163 } 163 }
164 glyph->contours[i][j].x = prev_x + x_delta; 164 glyph->contours[i][j].x = prev_x + x_delta;
165 } 165 }
166 prev_x = glyph->contours[i][j].x; 166 prev_x = glyph->contours[i][j].x;
167 } 167 }
168 } 168 }
169 169
170 // Read the y coordinates. 170 // Read the y coordinates.
171 int prev_y = 0; 171 int prev_y = 0;
172 for (int i = 0; i < num_contours; ++i) { 172 for (int i = 0; i < num_contours; ++i) {
173 for (int j = 0; j < glyph->contours[i].size(); ++j) { 173 for (size_t j = 0; j < glyph->contours[i].size(); ++j) {
174 uint8_t flag = flags[i][j]; 174 uint8_t flag = flags[i][j];
175 if (flag & kFLAG_YSHORT) { 175 if (flag & kFLAG_YSHORT) {
176 // single byte y-delta coord value 176 // single byte y-delta coord value
177 uint8_t y_delta; 177 uint8_t y_delta;
178 if (!buffer.ReadU8(&y_delta)) { 178 if (!buffer.ReadU8(&y_delta)) {
179 return FONT_COMPRESSION_FAILURE(); 179 return FONT_COMPRESSION_FAILURE();
180 } 180 }
181 int sign = (flag & kFLAG_YREPEATSIGN) ? 1 : -1; 181 int sign = (flag & kFLAG_YREPEATSIGN) ? 1 : -1;
182 glyph->contours[i][j].y = prev_y + sign * y_delta; 182 glyph->contours[i][j].y = prev_y + sign * y_delta;
183 } else { 183 } else {
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 StoreInstructions(glyph, &offset, dst); 371 StoreInstructions(glyph, &offset, dst);
372 if (!StorePoints(glyph, &offset, dst, *dst_size)) { 372 if (!StorePoints(glyph, &offset, dst, *dst_size)) {
373 return FONT_COMPRESSION_FAILURE(); 373 return FONT_COMPRESSION_FAILURE();
374 } 374 }
375 } 375 }
376 *dst_size = offset; 376 *dst_size = offset;
377 return true; 377 return true;
378 } 378 }
379 379
380 } // namespace woff2 380 } // namespace woff2
OLDNEW
« no previous file with comments | « third_party/woff2/src/font.cc ('k') | third_party/woff2/src/transform.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698