@@ -9,7 +9,8 @@ static plutovg_fill_rule_t to_plutovg_fill_rule(WindRule winding);
9
9
static plutovg_operator_t to_plutovg_operator (BlendMode mode);
10
10
static plutovg_line_cap_t to_plutovg_line_cap (LineCap cap);
11
11
static plutovg_line_join_t to_plutovg_line_join (LineJoin join);
12
- static plutovg_spread_method_t to_plutovg_spread_methood (SpreadMethod spread);
12
+ static plutovg_spread_method_t to_plutovg_spread_method (SpreadMethod spread);
13
+ static plutovg_texture_type_t to_plutovg_texture_type (TextureType type);
13
14
static void to_plutovg_stops (plutovg_gradient_t * gradient, const GradientStops& stops);
14
15
static void to_plutovg_path (plutovg_t * pluto, const Path& path);
15
16
@@ -59,43 +60,32 @@ Canvas::~Canvas()
59
60
60
61
void Canvas::setColor (const Color& color)
61
62
{
62
- plutovg_set_source_rgba (pluto, color.r , color.g , color.b , color.a );
63
+ plutovg_set_rgba (pluto, color.red () / 255.0 , color.green () / 255.0 , color.blue () / 255.0 , color.alpha () / 255.0 );
63
64
}
64
65
65
66
void Canvas::setLinearGradient (double x1, double y1, double x2, double y2, const GradientStops& stops, SpreadMethod spread, const Transform& transform)
66
67
{
67
- auto gradient = plutovg_gradient_create_linear ( x1, y1 , x2, y2);
68
+ auto gradient = plutovg_set_linear_gradient (pluto, x1, y1 , x2, y2);
68
69
auto matrix = to_plutovg_matrix (transform);
69
70
to_plutovg_stops (gradient, stops);
70
- plutovg_gradient_set_spread (gradient, to_plutovg_spread_methood (spread));
71
+ plutovg_gradient_set_spread (gradient, to_plutovg_spread_method (spread));
71
72
plutovg_gradient_set_matrix (gradient, &matrix);
72
- plutovg_set_source_gradient (pluto, gradient);
73
- plutovg_gradient_destroy (gradient);
74
73
}
75
74
76
75
void Canvas::setRadialGradient (double cx, double cy, double r, double fx, double fy, const GradientStops& stops, SpreadMethod spread, const Transform& transform)
77
76
{
78
- auto gradient = plutovg_gradient_create_radial ( cx, cy, r, fx, fy, 0 );
77
+ auto gradient = plutovg_set_radial_gradient (pluto, cx, cy, r, fx, fy, 0 );
79
78
auto matrix = to_plutovg_matrix (transform);
80
79
to_plutovg_stops (gradient, stops);
81
- plutovg_gradient_set_spread (gradient, to_plutovg_spread_methood (spread));
80
+ plutovg_gradient_set_spread (gradient, to_plutovg_spread_method (spread));
82
81
plutovg_gradient_set_matrix (gradient, &matrix);
83
- plutovg_set_source_gradient (pluto, gradient);
84
- plutovg_gradient_destroy (gradient);
85
82
}
86
83
87
84
void Canvas::setTexture (const Canvas* source, TextureType type, const Transform& transform)
88
85
{
89
- auto texture = plutovg_texture_create ( source->surface );
86
+ auto texture = plutovg_set_texture (pluto, source->surface , to_plutovg_texture_type (type) );
90
87
auto matrix = to_plutovg_matrix (transform);
91
- if (type == TextureType::Plain)
92
- plutovg_texture_set_type (texture, plutovg_texture_type_plain);
93
- else
94
- plutovg_texture_set_type (texture, plutovg_texture_type_tiled);
95
-
96
88
plutovg_texture_set_matrix (texture, &matrix);
97
- plutovg_set_source_texture (pluto, texture);
98
- plutovg_texture_destroy (texture);
99
89
}
100
90
101
91
void Canvas::fill (const Path& path, const Transform& transform, WindRule winding, BlendMode mode, double opacity)
@@ -128,7 +118,7 @@ void Canvas::stroke(const Path& path, const Transform& transform, double width,
128
118
129
119
void Canvas::blend (const Canvas* source, BlendMode mode, double opacity)
130
120
{
131
- plutovg_set_source_surface (pluto, source->surface , source->rect .x , source->rect .y );
121
+ plutovg_set_texture_surface (pluto, source->surface , source->rect .x , source->rect .y );
132
122
plutovg_set_operator (pluto, to_plutovg_operator (mode));
133
123
plutovg_set_opacity (pluto, opacity);
134
124
plutovg_set_matrix (pluto, &translation);
@@ -145,69 +135,23 @@ void Canvas::mask(const Rect& clip, const Transform& transform)
145
135
plutovg_add_path (pluto, path);
146
136
plutovg_path_destroy (path);
147
137
148
- plutovg_set_source_rgba (pluto, 0 , 0 , 0 , 0 );
138
+ plutovg_set_rgba (pluto, 0 , 0 , 0 , 0 );
149
139
plutovg_set_fill_rule (pluto, plutovg_fill_rule_even_odd);
150
140
plutovg_set_operator (pluto, plutovg_operator_src);
151
141
plutovg_set_opacity (pluto, 0.0 );
152
142
plutovg_set_matrix (pluto, &translation);
153
143
plutovg_fill (pluto);
154
144
}
155
145
156
- void Canvas::clear (unsigned int value)
157
- {
158
- auto r = (value >> 24 ) & 0xFF ;
159
- auto g = (value >> 16 ) & 0xFF ;
160
- auto b = (value >> 8 ) & 0xFF ;
161
- auto a = (value >> 0 ) & 0xFF ;
162
-
163
- plutovg_set_source_rgba (pluto, r / 255.0 , g / 255.0 , b / 255.0 , a / 255.0 );
164
- plutovg_set_opacity (pluto, 1.0 );
165
- plutovg_set_operator (pluto, plutovg_operator_src);
166
- plutovg_paint (pluto);
167
- }
168
-
169
- void Canvas::rgba ()
170
- {
171
- auto width = plutovg_surface_get_width (surface);
172
- auto height = plutovg_surface_get_height (surface);
173
- auto stride = plutovg_surface_get_stride (surface);
174
- auto data = plutovg_surface_get_data (surface);
175
- for (int y = 0 ;y < height;y++)
176
- {
177
- auto pixels = reinterpret_cast <uint32_t *>(data + stride * y);
178
- for (int x = 0 ;x < width;x++)
179
- {
180
- auto pixel = pixels[x];
181
- auto a = (pixel >> 24 ) & 0xFF ;
182
- if (a == 0 )
183
- continue ;
184
-
185
- auto r = (pixel >> 16 ) & 0xFF ;
186
- auto g = (pixel >> 8 ) & 0xFF ;
187
- auto b = (pixel >> 0 ) & 0xFF ;
188
- if (a != 255 )
189
- {
190
- r = (r * 255 ) / a;
191
- g = (g * 255 ) / a;
192
- b = (b * 255 ) / a;
193
- }
194
-
195
- pixels[x] = (a << 24 ) | (b << 16 ) | (g << 8 ) | r;
196
- }
197
- }
198
- }
199
-
200
146
void Canvas::luminance ()
201
147
{
202
148
auto width = plutovg_surface_get_width (surface);
203
149
auto height = plutovg_surface_get_height (surface);
204
150
auto stride = plutovg_surface_get_stride (surface);
205
151
auto data = plutovg_surface_get_data (surface);
206
- for (int y = 0 ;y < height;y++)
207
- {
152
+ for (int y = 0 ; y < height; y++) {
208
153
auto pixels = reinterpret_cast <uint32_t *>(data + stride * y);
209
- for (int x = 0 ;x < width;x++)
210
- {
154
+ for (int x = 0 ; x < width; x++) {
211
155
auto pixel = pixels[x];
212
156
auto r = (pixel >> 16 ) & 0xFF ;
213
157
auto g = (pixel >> 8 ) & 0xFF ;
@@ -271,27 +215,30 @@ plutovg_line_join_t to_plutovg_line_join(LineJoin join)
271
215
return join == LineJoin::Miter ? plutovg_line_join_miter : join == LineJoin::Round ? plutovg_line_join_round : plutovg_line_join_bevel;
272
216
}
273
217
274
- static plutovg_spread_method_t to_plutovg_spread_methood (SpreadMethod spread)
218
+ static plutovg_spread_method_t to_plutovg_spread_method (SpreadMethod spread)
275
219
{
276
220
return spread == SpreadMethod::Pad ? plutovg_spread_method_pad : spread == SpreadMethod::Reflect ? plutovg_spread_method_reflect : plutovg_spread_method_repeat;
277
221
}
278
222
223
+ static plutovg_texture_type_t to_plutovg_texture_type (TextureType type)
224
+ {
225
+ return type == TextureType::Plain ? plutovg_texture_type_plain : plutovg_texture_type_tiled;
226
+ }
227
+
279
228
static void to_plutovg_stops (plutovg_gradient_t * gradient, const GradientStops& stops)
280
229
{
281
- for (const auto & stop : stops)
282
- {
230
+ for (const auto & stop : stops) {
283
231
auto offset = std::get<0 >(stop);
284
232
auto & color = std::get<1 >(stop);
285
- plutovg_gradient_add_stop_rgba (gradient, offset, color.r , color.g , color.b , color.a );
233
+ plutovg_gradient_add_stop_rgba (gradient, offset, color.red () / 255.0 , color.green () / 255.0 , color.blue () / 255.0 , color.alpha () / 255.0 );
286
234
}
287
235
}
288
236
289
237
void to_plutovg_path (plutovg_t * pluto, const Path& path)
290
238
{
291
239
PathIterator it (path);
292
240
std::array<Point , 3 > p;
293
- while (!it.isDone ())
294
- {
241
+ while (!it.isDone ()) {
295
242
switch (it.currentSegment (p)) {
296
243
case PathCommand::MoveTo:
297
244
plutovg_move_to (pluto, p[0 ].x , p[0 ].y );
0 commit comments