TextBlob_bounds.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. #if 0 // Disabled until updated to use current API.
  2. // Copyright 2019 Google LLC.
  3. // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
  4. #include "tools/fiddle/examples.h"
  5. // HASH=fb8b2502bbe52d2029aecdf569dd9fdb
  6. REG_FIDDLE(TextBlob_bounds, 256, 70, false, 0) {
  7. void draw(SkCanvas* canvas) {
  8. SkTextBlobBuilder textBlobBuilder;
  9. const char bunny[] = "/(^x^)\\";
  10. const int len = sizeof(bunny) - 1;
  11. uint16_t glyphs[len];
  12. SkPaint paint;
  13. paint.textToGlyphs(bunny, len, glyphs);
  14. paint.setTextEncoding(SkTextEncoding::kGlyphID);
  15. SkFont font;
  16. int runs[] = { 3, 1, 3 };
  17. SkPoint textPos = { 20, 50 };
  18. int glyphIndex = 0;
  19. for (auto runLen : runs) {
  20. font.setSize(1 == runLen ? 20 : 50);
  21. paint.setTextSize(1 == runLen ? 20 : 50);
  22. const SkTextBlobBuilder::RunBuffer& run =
  23. textBlobBuilder.allocRun(font, runLen, textPos.fX, textPos.fY);
  24. memcpy(run.glyphs, &glyphs[glyphIndex], sizeof(glyphs[0]) * runLen);
  25. textPos.fX += paint.measureText(&glyphs[glyphIndex], sizeof(glyphs[0]) * runLen, nullptr);
  26. glyphIndex += runLen;
  27. }
  28. sk_sp<const SkTextBlob> blob = textBlobBuilder.make();
  29. canvas->drawTextBlob(blob.get(), 0, 0, paint);
  30. paint.setStyle(SkPaint::kStroke_Style);
  31. canvas->drawRect(blob->bounds(), paint);
  32. }
  33. } // END FIDDLE
  34. #endif // Disabled until updated to use current API.