OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkTextBox.h" | 8 #include "SkTextBox.h" |
9 #include "SkUtils.h" | 9 #include "SkUtils.h" |
10 | 10 |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 for (;;) | 225 for (;;) |
226 { | 226 { |
227 size_t trailing; | 227 size_t trailing; |
228 len = linebreak(text, textStop, paint, marginWidth, &trailing); | 228 len = linebreak(text, textStop, paint, marginWidth, &trailing); |
229 if (y + metrics.fDescent + metrics.fLeading > 0) | 229 if (y + metrics.fDescent + metrics.fLeading > 0) |
230 canvas->drawText(text, len - trailing, x, y, paint); | 230 canvas->drawText(text, len - trailing, x, y, paint); |
231 text += len; | 231 text += len; |
232 if (text >= textStop) | 232 if (text >= textStop) |
233 break; | 233 break; |
234 y += scaledSpacing; | 234 y += scaledSpacing; |
235 if (y + metrics.fAscent >= height) | 235 if (y + metrics.fAscent >= fBox.fBottom) |
236 break; | 236 break; |
237 } | 237 } |
238 } | 238 } |
239 | 239 |
240 /////////////////////////////////////////////////////////////////////////////// | 240 /////////////////////////////////////////////////////////////////////////////// |
241 | 241 |
242 void SkTextBox::setText(const char text[], size_t len, const SkPaint& paint) { | 242 void SkTextBox::setText(const char text[], size_t len, const SkPaint& paint) { |
243 fText = text; | 243 fText = text; |
244 fLen = len; | 244 fLen = len; |
245 fPaint = &paint; | 245 fPaint = &paint; |
246 } | 246 } |
247 | 247 |
248 void SkTextBox::draw(SkCanvas* canvas) { | 248 void SkTextBox::draw(SkCanvas* canvas) { |
249 this->draw(canvas, fText, fLen, *fPaint); | 249 this->draw(canvas, fText, fLen, *fPaint); |
250 } | 250 } |
251 | 251 |
252 int SkTextBox::countLines() const { | 252 int SkTextBox::countLines() const { |
253 return SkTextLineBreaker::CountLines(fText, fLen, *fPaint, fBox.width()); | 253 return SkTextLineBreaker::CountLines(fText, fLen, *fPaint, fBox.width()); |
254 } | 254 } |
255 | 255 |
256 SkScalar SkTextBox::getTextHeight() const { | 256 SkScalar SkTextBox::getTextHeight() const { |
257 SkScalar spacing = SkScalarMul(fPaint->getTextSize(), fSpacingMul) + fSpacin
gAdd; | 257 SkScalar spacing = SkScalarMul(fPaint->getTextSize(), fSpacingMul) + fSpacin
gAdd; |
258 return this->countLines() * spacing; | 258 return this->countLines() * spacing; |
259 } | 259 } |
OLD | NEW |