Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
gm
getpostextpath.cpp
Go to the documentation of this file.
1
/*
2
* Copyright 2012 Google Inc.
3
*
4
* Use of this source code is governed by a BSD-style license that can be
5
* found in the LICENSE file.
6
*/
7
8
#include "
gm/gm.h
"
9
#include "
include/core/SkCanvas.h
"
10
#include "
include/core/SkColor.h
"
11
#include "
include/core/SkFont.h
"
12
#include "
include/core/SkFontTypes.h
"
13
#include "
include/core/SkPaint.h
"
14
#include "
include/core/SkPath.h
"
15
#include "
include/core/SkPoint.h
"
16
#include "
include/core/SkScalar.h
"
17
#include "
include/core/SkTextBlob.h
"
18
#include "
include/core/SkTypeface.h
"
19
#include "
include/private/base/SkTemplates.h
"
20
#include "
src/base/SkRandom.h
"
21
#include "
src/core/SkFontPriv.h
"
22
#include "
tools/ToolUtils.h
"
23
#include "
tools/fonts/FontToolUtils.h
"
24
25
#include <string.h>
26
27
using namespace
skia_private
;
28
29
static
void
strokePath
(
SkCanvas
* canvas,
const
SkPath
& path) {
30
SkPaint
paint
;
31
paint
.setAntiAlias(
true
);
32
paint
.setColor(
SK_ColorRED
);
33
paint
.setStyle(
SkPaint::kStroke_Style
);
34
canvas->
drawPath
(path,
paint
);
35
}
36
DEF_SIMPLE_GM
(getpostextpath, canvas, 480, 780) {
37
// explicitly add spaces, to test a prev. bug
38
const
char
*
text
=
"Ham bur ge fons"
;
39
size_t
len = strlen(
text
);
40
SkPath
path;
41
42
SkFont
font =
ToolUtils::DefaultPortableFont
();
43
font.setSize(48);
44
45
SkPaint
paint
;
46
paint
.setAntiAlias(
true
);
47
48
canvas->translate(
SkIntToScalar
(10),
SkIntToScalar
(64));
49
50
canvas->drawSimpleText(
text
, len,
SkTextEncoding::kUTF8
, 0, 0, font,
paint
);
51
ToolUtils::get_text_path
(font,
text
, len,
SkTextEncoding::kUTF8
, &path,
nullptr
);
52
strokePath
(canvas, path);
53
path.reset();
54
55
SkAutoToGlyphs
atg(font,
text
, len,
SkTextEncoding::kUTF8
);
56
const
int
count
= atg.
count
();
57
AutoTArray<SkPoint>
pos
(
count
);
58
AutoTArray<SkScalar>
widths
(
count
);
59
font.getWidths(atg.
glyphs
(),
count
, &
widths
[0]);
60
61
SkRandom
rand;
62
SkScalar
x
=
SkIntToScalar
(20);
63
SkScalar
y
=
SkIntToScalar
(100);
64
for
(
int
i = 0; i <
count
; ++i) {
65
pos
[i].
set
(
x
,
y
+ rand.
nextSScalar1
() * 24);
66
x
+=
widths
[i];
67
}
68
69
canvas->translate(0,
SkIntToScalar
(64));
70
71
canvas->drawTextBlob(
SkTextBlob::MakeFromPosText
(
text
, len, &
pos
[0], font), 0, 0,
paint
);
72
ToolUtils::get_text_path
(font,
text
, len,
SkTextEncoding::kUTF8
, &path, &
pos
[0]);
73
strokePath
(canvas, path);
74
}
count
int count
Definition
FontMgrTest.cpp:50
FontToolUtils.h
pos
SkPoint pos
Definition
ImageShaderTest.cpp:27
SkCanvas.h
SkColor.h
SK_ColorRED
constexpr SkColor SK_ColorRED
Definition
SkColor.h:126
SkFontPriv.h
SkFontTypes.h
SkTextEncoding::kUTF8
@ kUTF8
uses bytes to represent UTF-8 or ASCII
SkFont.h
SkPaint.h
SkPath.h
SkPoint.h
SkRandom.h
SkScalar.h
SkIntToScalar
#define SkIntToScalar(x)
Definition
SkScalar.h:57
SkTemplates.h
SkTextBlob.h
SkTypeface.h
widths
const SkScalar widths[]
Definition
StrokerTest.cpp:39
ToolUtils.h
SkAutoToGlyphs
Definition
SkFontPriv.h:93
SkAutoToGlyphs::count
int count() const
Definition
SkFontPriv.h:110
SkAutoToGlyphs::glyphs
const uint16_t * glyphs() const
Definition
SkFontPriv.h:111
SkCanvas
Definition
SkCanvas.h:106
SkCanvas::drawPath
void drawPath(const SkPath &path, const SkPaint &paint)
Definition
SkCanvas.cpp:2071
SkFont
Definition
SkFont.h:35
SkPaint
Definition
SkPaint.h:44
SkPaint::kStroke_Style
@ kStroke_Style
set to stroke geometry
Definition
SkPaint.h:194
SkPath
Definition
SkPath.h:59
SkRandom
Definition
SkRandom.h:27
SkRandom::nextSScalar1
SkScalar nextSScalar1()
Definition
SkRandom.h:113
SkTextBlob::MakeFromPosText
static sk_sp< SkTextBlob > MakeFromPosText(const void *text, size_t byteLength, const SkPoint pos[], const SkFont &font, SkTextEncoding encoding=SkTextEncoding::kUTF8)
Definition
SkTextBlob.cpp:803
skia_private::AutoTArray
Definition
SkTemplates.h:99
paint
const Paint & paint
Definition
color_source.cc:38
SkScalar
float SkScalar
Definition
extension.cpp:12
strokePath
static void strokePath(SkCanvas *canvas, const SkPath &path)
Definition
getpostextpath.cpp:29
gm.h
DEF_SIMPLE_GM
#define DEF_SIMPLE_GM(NAME, CANVAS, W, H)
Definition
gm.h:50
text
std::u16string text
Definition
keyboard_unittests.cc:332
y
double y
Definition
mouse-input-test.cc:83
x
double x
Definition
mouse-input-test.cc:82
ToolUtils::DefaultPortableFont
SkFont DefaultPortableFont()
Definition
FontToolUtils.cpp:202
ToolUtils::get_text_path
void get_text_path(const SkFont &font, const void *text, size_t length, SkTextEncoding encoding, SkPath *dst, const SkPoint pos[])
Definition
ToolUtils.cpp:236
skia_private
Definition
SkTArray.h:32
SkPoint::set
void set(float x, float y)
Definition
SkPoint_impl.h:200
Generated on Fri Apr 26 2024 06:16:03 for Flutter Engine by
1.9.8