Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(392)

Side by Side Diff: cc/paint/skia_paint_canvas.cc

Issue 2752593002: cc: Make PaintCanvas abstract (Closed)
Patch Set: Separate files Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "cc/paint/paint_canvas.h"
6
7 #include "base/memory/ptr_util.h"
8 #include "cc/paint/paint_record.h"
9 #include "cc/paint/paint_recorder.h"
10 #include "third_party/skia/include/core/SkAnnotation.h"
11 #include "third_party/skia/include/core/SkMetaData.h"
12 #include "third_party/skia/include/utils/SkNWayCanvas.h"
13
14 namespace cc {
15
16 SkiaPaintCanvas::SkiaPaintCanvas(SkCanvas* canvas) : canvas_(canvas) {}
17
18 SkiaPaintCanvas::SkiaPaintCanvas(const SkBitmap& bitmap)
19 : canvas_(new SkCanvas(bitmap)), owned_(canvas_) {}
20
21 SkiaPaintCanvas::SkiaPaintCanvas(const SkBitmap& bitmap,
22 const SkSurfaceProps& props)
23 : canvas_(new SkCanvas(bitmap, props)), owned_(canvas_) {}
24
25 SkiaPaintCanvas::~SkiaPaintCanvas() = default;
26
27 SkMetaData& SkiaPaintCanvas::getMetaData() {
28 return canvas_->getMetaData();
29 }
30 SkImageInfo SkiaPaintCanvas::imageInfo() const {
31 return canvas_->imageInfo();
32 }
33 bool SkiaPaintCanvas::getProps(SkSurfaceProps* props) const {
34 return canvas_->getProps(props);
35 }
36 void SkiaPaintCanvas::flush() {
37 canvas_->flush();
38 }
39
40 SkISize SkiaPaintCanvas::getBaseLayerSize() const {
41 return canvas_->getBaseLayerSize();
42 }
43 bool SkiaPaintCanvas::peekPixels(SkPixmap* pixmap) {
44 return canvas_->peekPixels(pixmap);
45 }
46 bool SkiaPaintCanvas::readPixels(const SkImageInfo& dest_info,
47 void* dest_pixels,
48 size_t dest_row_bytes,
49 int src_x,
50 int src_y) {
51 return canvas_->readPixels(dest_info, dest_pixels, dest_row_bytes, src_x,
52 src_y);
53 }
54 bool SkiaPaintCanvas::readPixels(SkBitmap* bitmap, int src_x, int src_y) {
55 return canvas_->readPixels(bitmap, src_x, src_y);
56 }
57 bool SkiaPaintCanvas::readPixels(const SkIRect& srcRect, SkBitmap* bitmap) {
58 return canvas_->readPixels(srcRect, bitmap);
59 }
60 bool SkiaPaintCanvas::writePixels(const SkImageInfo& info,
61 const void* pixels,
62 size_t row_bytes,
63 int x,
64 int y) {
65 return canvas_->writePixels(info, pixels, row_bytes, x, y);
66 }
67 int SkiaPaintCanvas::save() {
68 return canvas_->save();
69 }
70 int SkiaPaintCanvas::saveLayer(const SkRect* bounds, const PaintFlags* flags) {
71 return canvas_->saveLayer(bounds, ToSkPaint(flags));
72 }
73 int SkiaPaintCanvas::saveLayer(const SkRect& bounds, const PaintFlags* flags) {
74 return canvas_->saveLayer(bounds, ToSkPaint(flags));
75 }
76 int SkiaPaintCanvas::saveLayerPreserveLCDTextRequests(const SkRect* bounds,
77 const PaintFlags* flags) {
78 return canvas_->saveLayerPreserveLCDTextRequests(bounds, ToSkPaint(flags));
79 }
80 int SkiaPaintCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha) {
81 return canvas_->saveLayerAlpha(bounds, alpha);
82 }
83
84 void SkiaPaintCanvas::restore() {
85 canvas_->restore();
86 }
87 int SkiaPaintCanvas::getSaveCount() const {
88 return canvas_->getSaveCount();
89 }
90 void SkiaPaintCanvas::restoreToCount(int save_count) {
91 canvas_->restoreToCount(save_count);
92 }
93 void SkiaPaintCanvas::translate(SkScalar dx, SkScalar dy) {
94 canvas_->translate(dx, dy);
95 }
96 void SkiaPaintCanvas::scale(SkScalar sx, SkScalar sy) {
97 canvas_->scale(sx, sy);
98 }
99 void SkiaPaintCanvas::rotate(SkScalar degrees) {
100 canvas_->rotate(degrees);
101 }
102 void SkiaPaintCanvas::rotate(SkScalar degrees, SkScalar px, SkScalar py) {
103 canvas_->rotate(degrees, px, py);
104 }
105 void SkiaPaintCanvas::skew(SkScalar sx, SkScalar sy) {
106 canvas_->skew(sx, sy);
107 }
108 void SkiaPaintCanvas::concat(const SkMatrix& matrix) {
109 canvas_->concat(matrix);
110 }
111 void SkiaPaintCanvas::setMatrix(const SkMatrix& matrix) {
112 canvas_->setMatrix(matrix);
113 }
114 void SkiaPaintCanvas::resetMatrix() {
115 canvas_->resetMatrix();
116 }
117 void SkiaPaintCanvas::clipRect(const SkRect& rect,
118 SkClipOp op,
119 bool do_anti_alias) {
120 canvas_->clipRect(rect, op, do_anti_alias);
121 }
122 void SkiaPaintCanvas::clipRect(const SkRect& rect, bool do_anti_alias) {
123 canvas_->clipRect(rect, do_anti_alias);
124 }
125 void SkiaPaintCanvas::clipRRect(const SkRRect& rrect,
126 SkClipOp op,
127 bool do_anti_alias) {
128 canvas_->clipRRect(rrect, op, do_anti_alias);
129 }
130 void SkiaPaintCanvas::clipRRect(const SkRRect& rrect, SkClipOp op) {
131 canvas_->clipRRect(rrect, op);
132 }
133 void SkiaPaintCanvas::clipRRect(const SkRRect& rrect, bool do_anti_alias) {
134 canvas_->clipRRect(rrect, do_anti_alias);
135 }
136 void SkiaPaintCanvas::clipPath(const SkPath& path,
137 SkClipOp op,
138 bool do_anti_alias) {
139 canvas_->clipPath(path, op, do_anti_alias);
140 }
141 void SkiaPaintCanvas::clipPath(const SkPath& path, SkClipOp op) {
142 canvas_->clipPath(path, op);
143 }
144 void SkiaPaintCanvas::clipPath(const SkPath& path, bool do_anti_alias) {
145 canvas_->clipPath(path, do_anti_alias);
146 }
147 void SkiaPaintCanvas::clipRegion(const SkRegion& device_region, SkClipOp op) {
148 canvas_->clipRegion(device_region, op);
149 }
150 bool SkiaPaintCanvas::quickReject(const SkRect& rect) const {
151 return canvas_->quickReject(rect);
152 }
153 bool SkiaPaintCanvas::quickReject(const SkPath& path) const {
154 return canvas_->quickReject(path);
155 }
156 SkRect SkiaPaintCanvas::getLocalClipBounds() const {
157 return canvas_->getLocalClipBounds();
158 }
159 bool SkiaPaintCanvas::getLocalClipBounds(SkRect* bounds) const {
160 return canvas_->getLocalClipBounds(bounds);
161 }
162 SkIRect SkiaPaintCanvas::getDeviceClipBounds() const {
163 return canvas_->getDeviceClipBounds();
164 }
165 bool SkiaPaintCanvas::getDeviceClipBounds(SkIRect* bounds) const {
166 return canvas_->getDeviceClipBounds(bounds);
167 }
168 void SkiaPaintCanvas::drawColor(SkColor color, SkBlendMode mode) {
169 canvas_->drawColor(color, mode);
170 }
171 void SkiaPaintCanvas::clear(SkColor color) {
172 canvas_->clear(color);
173 }
174 void SkiaPaintCanvas::discard() {
175 canvas_->discard();
176 }
177
178 void SkiaPaintCanvas::drawLine(SkScalar x0,
179 SkScalar y0,
180 SkScalar x1,
181 SkScalar y1,
182 const PaintFlags& flags) {
183 SkiaPaintCanvas::canvas_->drawLine(x0, y0, x1, y1, ToSkPaint(flags));
184 }
185 void SkiaPaintCanvas::drawRect(const SkRect& rect, const PaintFlags& flags) {
186 canvas_->drawRect(rect, ToSkPaint(flags));
187 }
188 void SkiaPaintCanvas::drawIRect(const SkIRect& rect, const PaintFlags& flags) {
189 canvas_->drawIRect(rect, ToSkPaint(flags));
190 }
191 void SkiaPaintCanvas::drawOval(const SkRect& oval, const PaintFlags& flags) {
192 canvas_->drawOval(oval, ToSkPaint(flags));
193 }
194 void SkiaPaintCanvas::drawRRect(const SkRRect& rrect, const PaintFlags& flags) {
195 canvas_->drawRRect(rrect, ToSkPaint(flags));
196 }
197 void SkiaPaintCanvas::drawDRRect(const SkRRect& outer,
198 const SkRRect& inner,
199 const PaintFlags& flags) {
200 canvas_->drawDRRect(outer, inner, ToSkPaint(flags));
201 }
202 void SkiaPaintCanvas::drawCircle(SkScalar cx,
203 SkScalar cy,
204 SkScalar radius,
205 const PaintFlags& flags) {
206 canvas_->drawCircle(cx, cy, radius, ToSkPaint(flags));
207 }
208 void SkiaPaintCanvas::drawArc(const SkRect& oval,
209 SkScalar start_angle,
210 SkScalar sweep_angle,
211 bool use_center,
212 const PaintFlags& flags) {
213 canvas_->drawArc(oval, start_angle, sweep_angle, use_center,
214 ToSkPaint(flags));
215 }
216 void SkiaPaintCanvas::drawRoundRect(const SkRect& rect,
217 SkScalar rx,
218 SkScalar ry,
219 const PaintFlags& flags) {
220 canvas_->drawRoundRect(rect, rx, ry, ToSkPaint(flags));
221 }
222 void SkiaPaintCanvas::drawPath(const SkPath& path, const PaintFlags& flags) {
223 canvas_->drawPath(path, ToSkPaint(flags));
224 }
225 void SkiaPaintCanvas::drawImage(const SkImage* image,
226 SkScalar left,
227 SkScalar top,
228 const PaintFlags* flags) {
229 canvas_->drawImage(image, left, top, ToSkPaint(flags));
230 }
231 void SkiaPaintCanvas::drawImage(const sk_sp<SkImage>& image,
232 SkScalar left,
233 SkScalar top,
234 const PaintFlags* flags) {
235 canvas_->drawImage(image, left, top, ToSkPaint(flags));
236 }
237
238 void SkiaPaintCanvas::drawImageRect(const SkImage* image,
239 const SkRect& src,
240 const SkRect& dst,
241 const PaintFlags* flags,
242 SrcRectConstraint constraint) {
243 canvas_->drawImageRect(image, src, dst, ToSkPaint(flags),
244 static_cast<SkCanvas::SrcRectConstraint>(constraint));
245 }
246 void SkiaPaintCanvas::drawImageRect(const SkImage* image,
247 const SkIRect& isrc,
248 const SkRect& dst,
249 const PaintFlags* flags,
250 SrcRectConstraint constraint) {
251 canvas_->drawImageRect(image, isrc, dst, ToSkPaint(flags),
252 static_cast<SkCanvas::SrcRectConstraint>(constraint));
253 }
254 void SkiaPaintCanvas::drawImageRect(const SkImage* image,
255 const SkRect& dst,
256 const PaintFlags* flags,
257 SrcRectConstraint constraint) {
258 canvas_->drawImageRect(image, dst, ToSkPaint(flags),
259 static_cast<SkCanvas::SrcRectConstraint>(constraint));
260 }
261 void SkiaPaintCanvas::drawImageRect(const sk_sp<SkImage>& image,
262 const SkRect& src,
263 const SkRect& dst,
264 const PaintFlags* flags,
265 SrcRectConstraint constraint) {
266 canvas_->drawImageRect(image, src, dst, ToSkPaint(flags),
267 static_cast<SkCanvas::SrcRectConstraint>(constraint));
268 }
269 void SkiaPaintCanvas::drawImageRect(const sk_sp<SkImage>& image,
270 const SkIRect& isrc,
271 const SkRect& dst,
272 const PaintFlags* flags,
273 SrcRectConstraint cons) {
274 canvas_->drawImageRect(image, isrc, dst, ToSkPaint(flags),
275 static_cast<SkCanvas::SrcRectConstraint>(cons));
276 }
277 void SkiaPaintCanvas::drawImageRect(const sk_sp<SkImage>& image,
278 const SkRect& dst,
279 const PaintFlags* flags,
280 SrcRectConstraint cons) {
281 canvas_->drawImageRect(image, dst, ToSkPaint(flags),
282 static_cast<SkCanvas::SrcRectConstraint>(cons));
283 }
284 void SkiaPaintCanvas::drawBitmap(const SkBitmap& bitmap,
285 SkScalar left,
286 SkScalar top,
287 const PaintFlags* flags) {
288 canvas_->drawBitmap(bitmap, left, top, ToSkPaint(flags));
289 }
290 void SkiaPaintCanvas::drawBitmapRect(const SkBitmap& bitmap,
291 const SkRect& src,
292 const SkRect& dst,
293 const PaintFlags* flags,
294 SrcRectConstraint constraint) {
295 canvas_->drawBitmapRect(bitmap, src, dst, ToSkPaint(flags),
296 static_cast<SkCanvas::SrcRectConstraint>(constraint));
297 }
298 void SkiaPaintCanvas::drawBitmapRect(const SkBitmap& bitmap,
299 const SkIRect& isrc,
300 const SkRect& dst,
301 const PaintFlags* flags,
302 SrcRectConstraint constraint) {
303 canvas_->drawBitmapRect(bitmap, isrc, dst, ToSkPaint(flags),
304 static_cast<SkCanvas::SrcRectConstraint>(constraint));
305 }
306 void SkiaPaintCanvas::drawBitmapRect(const SkBitmap& bitmap,
307 const SkRect& dst,
308 const PaintFlags* flags,
309 SrcRectConstraint constraint) {
310 canvas_->drawBitmapRect(bitmap, dst, ToSkPaint(flags),
311 static_cast<SkCanvas::SrcRectConstraint>(constraint));
312 }
313
314 void SkiaPaintCanvas::drawText(const void* text,
315 size_t byte_length,
316 SkScalar x,
317 SkScalar y,
318 const PaintFlags& flags) {
319 canvas_->drawText(text, byte_length, x, y, ToSkPaint(flags));
320 }
321 void SkiaPaintCanvas::drawPosText(const void* text,
322 size_t byte_length,
323 const SkPoint pos[],
324 const PaintFlags& flags) {
325 canvas_->drawPosText(text, byte_length, pos, ToSkPaint(flags));
326 }
327 void SkiaPaintCanvas::drawTextBlob(const SkTextBlob* blob,
328 SkScalar x,
329 SkScalar y,
330 const PaintFlags& flags) {
331 canvas_->drawTextBlob(blob, x, y, ToSkPaint(flags));
332 }
333 void SkiaPaintCanvas::drawTextBlob(const sk_sp<SkTextBlob>& blob,
334 SkScalar x,
335 SkScalar y,
336 const PaintFlags& flags) {
337 canvas_->drawTextBlob(blob, x, y, ToSkPaint(flags));
338 }
339
340 void SkiaPaintCanvas::drawPicture(const PaintRecord* record) {
341 canvas_->drawPicture(ToSkPicture(record));
342 }
343 void SkiaPaintCanvas::drawPicture(const PaintRecord* record,
344 const SkMatrix* matrix,
345 const PaintFlags* flags) {
346 canvas_->drawPicture(ToSkPicture(record), matrix, ToSkPaint(flags));
347 }
348 void SkiaPaintCanvas::drawPicture(sk_sp<PaintRecord> record) {
349 drawPicture(record.get());
350 }
351
352 bool SkiaPaintCanvas::isClipEmpty() const {
353 return canvas_->isClipEmpty();
354 }
355 bool SkiaPaintCanvas::isClipRect() const {
356 return canvas_->isClipRect();
357 }
358 const SkMatrix& SkiaPaintCanvas::getTotalMatrix() const {
359 return canvas_->getTotalMatrix();
360 }
361
362 void SkiaPaintCanvas::temporary_internal_describeTopLayer(
363 SkMatrix* matrix,
364 SkIRect* clip_bounds) {
365 return canvas_->temporary_internal_describeTopLayer(matrix, clip_bounds);
366 }
367
368 bool SkiaPaintCanvas::ToPixmap(SkPixmap* output) {
369 SkImageInfo info;
370 size_t row_bytes;
371 void* pixels = canvas_->accessTopLayerPixels(&info, &row_bytes);
372 if (!pixels) {
373 output->reset();
374 return false;
375 }
376
377 output->reset(info, pixels, row_bytes);
378 return true;
379 }
380
381 void SkiaPaintCanvas::AnnotateRectWithURL(const SkRect& rect, SkData* data) {
382 SkAnnotateRectWithURL(canvas_, rect, data);
383 }
384
385 void SkiaPaintCanvas::AnnotateNamedDestination(const SkPoint& point,
386 SkData* data) {
387 SkAnnotateNamedDestination(canvas_, point, data);
388 }
389
390 void SkiaPaintCanvas::AnnotateLinkToDestination(const SkRect& rect,
391 SkData* data) {
392 SkAnnotateLinkToDestination(canvas_, rect, data);
393 }
394
395 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698