Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
bench
PerlinNoiseBench.cpp
Go to the documentation of this file.
1
/*
2
* Copyright 2013 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
#include "
bench/Benchmark.h
"
8
#include "
include/core/SkCanvas.h
"
9
#include "
include/core/SkShader.h
"
10
#include "
include/effects/SkPerlinNoiseShader.h
"
11
12
class
PerlinNoiseBench
:
public
Benchmark
{
13
SkISize
fSize;
14
15
public
:
16
PerlinNoiseBench
() {
17
fSize =
SkISize::Make
(80, 80);
18
}
19
20
protected
:
21
const
char
*
onGetName
()
override
{
22
return
"perlinnoise"
;
23
}
24
25
void
onDraw
(
int
loops,
SkCanvas
* canvas)
override
{
26
this->
test
(loops, canvas, 0, 0, 0.1f, 0.1f, 3, 0,
false
);
27
}
28
29
private
:
30
void
drawClippedRect(
SkCanvas
* canvas,
int
x
,
int
y
,
const
SkPaint
&
paint
) {
31
canvas->
save
();
32
canvas->
clipRect
(
SkRect::MakeXYWH
(
SkIntToScalar
(
x
),
SkIntToScalar
(
y
),
33
SkIntToScalar
(fSize.width()),
SkIntToScalar
(fSize.height())));
34
SkRect
r =
SkRect::MakeXYWH
(
SkIntToScalar
(
x
),
SkIntToScalar
(
y
),
35
SkIntToScalar
(fSize.width()),
36
SkIntToScalar
(fSize.height()));
37
canvas->
drawRect
(r,
paint
);
38
canvas->
restore
();
39
}
40
41
void
test
(
int
loops,
SkCanvas
* canvas,
int
x
,
int
y
,
42
float
baseFrequencyX,
float
baseFrequencyY,
int
numOctaves,
float
seed,
43
bool
stitchTiles) {
44
SkPaint
paint
;
45
paint
.setShader(
SkShaders::MakeFractalNoise
(
46
baseFrequencyX, baseFrequencyY, numOctaves, seed, stitchTiles ? &fSize : nullptr));
47
for
(
int
i = 0; i < loops; i++) {
48
this->drawClippedRect(canvas,
x
,
y
,
paint
);
49
}
50
}
51
52
using
INHERITED =
Benchmark
;
53
};
54
55
///////////////////////////////////////////////////////////////////////////////
56
57
DEF_BENCH
(
return
new
PerlinNoiseBench
(); )
Benchmark.h
DEF_BENCH
#define DEF_BENCH(code)
Definition
Benchmark.h:20
test
#define test(name)
SkCanvas.h
SkPerlinNoiseShader.h
SkIntToScalar
#define SkIntToScalar(x)
Definition
SkScalar.h:57
SkShader.h
Benchmark
Definition
Benchmark.h:36
Benchmark::Benchmark
Benchmark()
Definition
Benchmark.cpp:16
PerlinNoiseBench
Definition
PerlinNoiseBench.cpp:12
PerlinNoiseBench::onGetName
const char * onGetName() override
Definition
PerlinNoiseBench.cpp:21
PerlinNoiseBench::onDraw
void onDraw(int loops, SkCanvas *canvas) override
Definition
PerlinNoiseBench.cpp:25
PerlinNoiseBench::PerlinNoiseBench
PerlinNoiseBench()
Definition
PerlinNoiseBench.cpp:16
SkCanvas
Definition
SkCanvas.h:106
SkCanvas::drawRect
void drawRect(const SkRect &rect, const SkPaint &paint)
Definition
SkCanvas.cpp:1997
SkCanvas::clipRect
void clipRect(const SkRect &rect, SkClipOp op, bool doAntiAlias)
Definition
SkCanvas.cpp:1685
SkCanvas::restore
void restore()
Definition
SkCanvas.cpp:465
SkCanvas::save
int save()
Definition
SkCanvas.cpp:451
SkPaint
Definition
SkPaint.h:44
paint
const Paint & paint
Definition
color_source.cc:38
y
double y
Definition
mouse-input-test.cc:83
x
double x
Definition
mouse-input-test.cc:82
SkShaders::MakeFractalNoise
SK_API sk_sp< SkShader > MakeFractalNoise(SkScalar baseFrequencyX, SkScalar baseFrequencyY, int numOctaves, SkScalar seed, const SkISize *tileSize=nullptr)
Definition
SkPerlinNoiseShaderImpl.cpp:135
SkISize
Definition
SkSize.h:16
SkISize::Make
static constexpr SkISize Make(int32_t w, int32_t h)
Definition
SkSize.h:20
SkRect
Definition
extension.cpp:13
SkRect::MakeXYWH
static constexpr SkRect MakeXYWH(float x, float y, float w, float h)
Definition
SkRect.h:659
Generated on Fri Apr 26 2024 06:15:26 for Flutter Engine by
1.9.8