Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
skiagm::TextBlobMixedSizes Class Reference
Inheritance diagram for skiagm::TextBlobMixedSizes:
skiagm::GM

Public Member Functions

 TextBlobMixedSizes (bool useDFT)
 
- Public Member Functions inherited from skiagm::GM
 GM (SkColor backgroundColor=SK_ColorWHITE)
 
virtual ~GM ()
 
void setMode (Mode mode)
 
Mode getMode () const
 
DrawResult gpuSetup (SkCanvas *, SkString *errorMsg, GraphiteTestContext *=nullptr)
 
void gpuTeardown ()
 
void onceBeforeDraw ()
 
DrawResult draw (SkCanvas *canvas)
 
DrawResult draw (SkCanvas *, SkString *errorMsg)
 
void drawBackground (SkCanvas *)
 
DrawResult drawContent (SkCanvas *canvas)
 
DrawResult drawContent (SkCanvas *, SkString *errorMsg)
 
virtual bool runAsBench () const
 
SkScalar width ()
 
SkScalar height ()
 
SkColor getBGColor () const
 
void setBGColor (SkColor)
 
void drawSizeBounds (SkCanvas *, SkColor)
 
bool animate (double)
 
virtual bool onChar (SkUnichar)
 
bool getControls (SkMetaData *controls)
 
void setControls (const SkMetaData &controls)
 
virtual void modifyGrContextOptions (GrContextOptions *)
 
virtual void modifyGraphiteContextOptions (skgpu::graphite::ContextOptions *) const
 
virtual bool isBazelOnly () const
 
virtual std::map< std::string, std::string > getGoldKeys () const
 

Protected Member Functions

void onOnceBeforeDraw () override
 
SkString getName () const override
 
SkISize getISize () override
 
void onDraw (SkCanvas *inputCanvas) override
 
- Protected Member Functions inherited from skiagm::GM
virtual DrawResult onGpuSetup (SkCanvas *, SkString *, GraphiteTestContext *)
 
virtual void onGpuTeardown ()
 
virtual DrawResult onDraw (SkCanvas *, SkString *errorMsg)
 
virtual bool onAnimate (double)
 
virtual bool onGetControls (SkMetaData *)
 
virtual void onSetControls (const SkMetaData &)
 
GraphiteTestContextgraphiteTestContext () const
 

Additional Inherited Members

- Public Types inherited from skiagm::GM
enum  Mode { kGM_Mode , kSample_Mode , kBench_Mode }
 
using DrawResult = skiagm::DrawResult
 
using GraphiteTestContext = skiatest::graphite::GraphiteTestContext
 
- Static Public Attributes inherited from skiagm::GM
static constexpr char kErrorMsg_DrawSkippedGpuOnly []
 

Detailed Description

Definition at line 39 of file textblobmixedsizes.cpp.

Constructor & Destructor Documentation

◆ TextBlobMixedSizes()

skiagm::TextBlobMixedSizes::TextBlobMixedSizes ( bool  useDFT)
inline

Definition at line 42 of file textblobmixedsizes.cpp.

42: fUseDFT(useDFT) {}

Member Function Documentation

◆ getISize()

SkISize skiagm::TextBlobMixedSizes::getISize ( )
inlineoverrideprotectedvirtual

Implements skiagm::GM.

Definition at line 106 of file textblobmixedsizes.cpp.

106{ return SkISize::Make(kWidth, kHeight); }
static constexpr SkISize Make(int32_t w, int32_t h)
Definition SkSize.h:20

◆ getName()

SkString skiagm::TextBlobMixedSizes::getName ( ) const
inlineoverrideprotectedvirtual

Implements skiagm::GM.

Definition at line 101 of file textblobmixedsizes.cpp.

101 {
102 return SkStringPrintf("textblobmixedsizes%s",
103 fUseDFT ? "_df" : "");
104 }
SK_API SkString static SkString SkStringPrintf()
Definition SkString.h:287

◆ onDraw()

void skiagm::TextBlobMixedSizes::onDraw ( SkCanvas inputCanvas)
inlineoverrideprotectedvirtual

Reimplemented from skiagm::GM.

Definition at line 108 of file textblobmixedsizes.cpp.

108 {
109 SkCanvas* canvas = inputCanvas;
111 if (fUseDFT) {
112 // Create a new Canvas to enable DFT
113 auto ctx = inputCanvas->recordingContext();
115 sk_sp<SkColorSpace> colorSpace = inputCanvas->imageInfo().refColorSpace();
116 SkImageInfo info = SkImageInfo::MakeN32(size.width(), size.height(),
117 kPremul_SkAlphaType, colorSpace);
118 SkSurfaceProps inputProps;
119 inputCanvas->getProps(&inputProps);
120 SkSurfaceProps props(
122 inputProps.pixelGeometry());
124 canvas = surface ? surface->getCanvas() : inputCanvas;
125 // init our new canvas with the old canvas's matrix
126 canvas->setMatrix(inputCanvas->getTotalMatrix());
127 }
128 canvas->drawColor(SK_ColorWHITE);
129
130 SkRect bounds = fBlob->bounds();
131
132 const int kPadX = SkScalarFloorToInt(bounds.width() / 3);
133 const int kPadY = SkScalarFloorToInt(bounds.height() / 3);
134
135 int rowCount = 0;
136 canvas->translate(SkIntToScalar(kPadX), SkIntToScalar(kPadY));
137 canvas->save();
138 SkRandom random;
139
141 if (!fUseDFT) {
142 paint.setColor(SK_ColorWHITE);
143 }
144 paint.setAntiAlias(false);
145
147
148 // setup blur paint
149 SkPaint blurPaint(paint);
150 blurPaint.setColor(SK_ColorBLACK);
151 blurPaint.setMaskFilter(SkMaskFilter::MakeBlur(kNormal_SkBlurStyle, kSigma));
152
153 for (int i = 0; i < 4; i++) {
154 canvas->save();
155 switch (i % 2) {
156 case 0:
157 canvas->rotate(random.nextF() * 45.f);
158 break;
159 case 1:
160 canvas->rotate(-random.nextF() * 45.f);
161 break;
162 }
163 if (!fUseDFT) {
164 canvas->drawTextBlob(fBlob, 0, 0, blurPaint);
165 }
166 canvas->drawTextBlob(fBlob, 0, 0, paint);
167 canvas->restore();
168 canvas->translate(bounds.width() + SK_Scalar1 * kPadX, 0);
169 ++rowCount;
170 if ((bounds.width() + 2 * kPadX) * rowCount > kWidth) {
171 canvas->restore();
172 canvas->translate(0, bounds.height() + SK_Scalar1 * kPadY);
173 canvas->save();
174 rowCount = 0;
175 }
176 }
177 canvas->restore();
178
179 // render offscreen buffer
180 if (surface) {
181 SkAutoCanvasRestore acr(inputCanvas, true);
182 // since we prepended this matrix already, we blit using identity
183 inputCanvas->resetMatrix();
184 inputCanvas->drawImage(surface->makeImageSnapshot().get(), 0, 0);
185 }
186 }
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
Definition DM.cpp:213
@ kPremul_SkAlphaType
pixel components are premultiplied by alpha
Definition SkAlphaType.h:29
@ kNormal_SkBlurStyle
fuzzy inside and outside
Definition SkBlurTypes.h:12
constexpr SkColor SK_ColorBLACK
Definition SkColor.h:103
constexpr SkColor SK_ColorWHITE
Definition SkColor.h:122
#define SK_Scalar1
Definition SkScalar.h:18
#define SkIntToScalar(x)
Definition SkScalar.h:57
#define SkScalarFloorToInt(x)
Definition SkScalar.h:35
static SkScalar SK_SPI ConvertRadiusToSigma(SkScalar radius)
bool getProps(SkSurfaceProps *props) const
void restore()
Definition SkCanvas.cpp:465
void translate(SkScalar dx, SkScalar dy)
void drawColor(SkColor color, SkBlendMode mode=SkBlendMode::kSrcOver)
Definition SkCanvas.h:1182
virtual GrRecordingContext * recordingContext() const
void rotate(SkScalar degrees)
SkMatrix getTotalMatrix() const
void resetMatrix()
int save()
Definition SkCanvas.cpp:451
void setMatrix(const SkM44 &matrix)
SkImageInfo imageInfo() const
void drawTextBlob(const SkTextBlob *blob, SkScalar x, SkScalar y, const SkPaint &paint)
void drawImage(const SkImage *image, SkScalar left, SkScalar top)
Definition SkCanvas.h:1528
static sk_sp< SkMaskFilter > MakeBlur(SkBlurStyle style, SkScalar sigma, bool respectCTM=true)
float nextF()
Definition SkRandom.h:55
@ kUseDeviceIndependentFonts_Flag
uint32_t flags() const
SkPixelGeometry pixelGeometry() const
const SkRect & bounds() const
Definition SkTextBlob.h:53
const Paint & paint
VkSurfaceKHR surface
Definition main.cc:49
float SkScalar
Definition extension.cpp:12
Optional< SkRect > bounds
Definition SkRecords.h:189
SK_API sk_sp< SkSurface > RenderTarget(GrRecordingContext *context, skgpu::Budgeted budgeted, const SkImageInfo &imageInfo, int sampleCount, GrSurfaceOrigin surfaceOrigin, const SkSurfaceProps *surfaceProps, bool shouldCreateWithMips=false, bool isProtected=false)
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
Definition switches.h:259
sk_sp< SkColorSpace > refColorSpace() const
static SkImageInfo MakeN32(int width, int height, SkAlphaType at)

◆ onOnceBeforeDraw()

void skiagm::TextBlobMixedSizes::onOnceBeforeDraw ( )
inlineoverrideprotectedvirtual

Reimplemented from skiagm::GM.

Definition at line 45 of file textblobmixedsizes.cpp.

45 {
47
48 // make textblob. To stress distance fields, we choose sizes appropriately
50 if (!tf) {
52 }
53 SkFont font(tf, 262);
54 font.setSubpixel(true);
56
57 const char* text = "Skia";
58
59 ToolUtils::add_to_text_blob(&builder, text, font, 0, 0);
60
61 // large
63 font.measureText(text, strlen(text), SkTextEncoding::kUTF8, &bounds);
64 SkScalar yOffset = bounds.height();
65 font.setSize(162);
66
67 ToolUtils::add_to_text_blob(&builder, text, font, 0, yOffset);
68
69 // Medium
70 font.measureText(text, strlen(text), SkTextEncoding::kUTF8, &bounds);
71 yOffset += bounds.height();
72 font.setSize(72);
73
74 ToolUtils::add_to_text_blob(&builder, text, font, 0, yOffset);
75
76 // Small
77 font.measureText(text, strlen(text), SkTextEncoding::kUTF8, &bounds);
78 yOffset += bounds.height();
79 font.setSize(32);
80
81 ToolUtils::add_to_text_blob(&builder, text, font, 0, yOffset);
82
83 // micro (will fall out of distance field text even if distance field text is enabled)
84 font.measureText(text, strlen(text), SkTextEncoding::kUTF8, &bounds);
85 yOffset += bounds.height();
86 font.setSize(14);
87
88 ToolUtils::add_to_text_blob(&builder, text, font, 0, yOffset);
89
90 // Zero size.
91 font.measureText(text, strlen(text), SkTextEncoding::kUTF8, &bounds);
92 yOffset += bounds.height();
93 font.setSize(0);
94
95 ToolUtils::add_to_text_blob(&builder, text, font, 0, yOffset);
96
97 // build
98 fBlob = builder.make();
99 }
@ kUTF8
uses bytes to represent UTF-8 or ASCII
@ kSubpixelAntiAlias
glyph positioned in pixel using transparency
std::u16string text
sk_sp< SkTypeface > DefaultPortableTypeface()
void add_to_text_blob(SkTextBlobBuilder *builder, const char *text, const SkFont &font, SkScalar x, SkScalar y)
sk_sp< SkTypeface > CreateTypefaceFromResource(const char *resource, int ttcIndex)
font
Font Metadata and Metrics.

The documentation for this class was generated from the following file: