OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/paint/paint_canvas.h" | 5 #include "cc/paint/paint_canvas.h" |
6 | 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" |
7 #include "third_party/skia/include/core/SkMetaData.h" | 11 #include "third_party/skia/include/core/SkMetaData.h" |
| 12 #include "third_party/skia/include/utils/SkNWayCanvas.h" |
8 | 13 |
9 #if defined(OS_MACOSX) | 14 #if defined(OS_MACOSX) |
10 namespace { | 15 namespace { |
11 const char kIsPreviewMetafileKey[] = "CrIsPreviewMetafile"; | 16 const char kIsPreviewMetafileKey[] = "CrIsPreviewMetafile"; |
12 } | 17 } |
13 #endif | 18 #endif |
14 | 19 |
15 namespace cc { | 20 namespace cc { |
16 | 21 |
17 PaintCanvasPassThrough::PaintCanvasPassThrough(SkCanvas* canvas) | 22 PaintCanvas::PaintCanvas(SkCanvas* canvas) : canvas_(canvas) {} |
18 : SkNWayCanvas(canvas->getBaseLayerSize().width(), | |
19 canvas->getBaseLayerSize().height()) { | |
20 SkIRect raster_bounds; | |
21 canvas->getDeviceClipBounds(&raster_bounds); | |
22 clipRect(SkRect::MakeFromIRect(raster_bounds)); | |
23 setMatrix(canvas->getTotalMatrix()); | |
24 addCanvas(canvas); | |
25 } | |
26 | 23 |
27 PaintCanvasPassThrough::PaintCanvasPassThrough(int width, int height) | 24 PaintCanvas::PaintCanvas(const SkBitmap& bitmap) |
28 : SkNWayCanvas(width, height) {} | 25 : canvas_(new SkCanvas(bitmap)), owned_(canvas_) {} |
29 | 26 |
30 PaintCanvasPassThrough::~PaintCanvasPassThrough() = default; | 27 PaintCanvas::PaintCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props) |
| 28 : canvas_(new SkCanvas(bitmap, props)), owned_(canvas_) {} |
| 29 |
| 30 PaintCanvas::PaintCanvas() = default; |
| 31 |
| 32 PaintCanvas::~PaintCanvas() = default; |
31 | 33 |
32 bool ToPixmap(PaintCanvas* canvas, SkPixmap* output) { | 34 bool ToPixmap(PaintCanvas* canvas, SkPixmap* output) { |
33 SkImageInfo info; | 35 SkImageInfo info; |
34 size_t row_bytes; | 36 size_t row_bytes; |
35 void* pixels = canvas->accessTopLayerPixels(&info, &row_bytes); | 37 void* pixels = canvas->canvas_->accessTopLayerPixels(&info, &row_bytes); |
36 if (!pixels) { | 38 if (!pixels) { |
37 output->reset(); | 39 output->reset(); |
38 return false; | 40 return false; |
39 } | 41 } |
40 | 42 |
41 output->reset(info, pixels, row_bytes); | 43 output->reset(info, pixels, row_bytes); |
42 return true; | 44 return true; |
43 } | 45 } |
44 | 46 |
45 #if defined(OS_MACOSX) | 47 #if defined(OS_MACOSX) |
46 void SetIsPreviewMetafile(PaintCanvas* canvas, bool is_preview) { | 48 void SetIsPreviewMetafile(PaintCanvas* canvas, bool is_preview) { |
47 SkMetaData& meta = canvas->getMetaData(); | 49 SkMetaData& meta = canvas->getMetaData(); |
48 meta.setBool(kIsPreviewMetafileKey, is_preview); | 50 meta.setBool(kIsPreviewMetafileKey, is_preview); |
49 } | 51 } |
50 | 52 |
51 bool IsPreviewMetafile(PaintCanvas* canvas) { | 53 bool IsPreviewMetafile(PaintCanvas* canvas) { |
52 bool value; | 54 bool value; |
53 SkMetaData& meta = canvas->getMetaData(); | 55 SkMetaData& meta = canvas->getMetaData(); |
54 if (!meta.findBool(kIsPreviewMetafileKey, &value)) | 56 if (!meta.findBool(kIsPreviewMetafileKey, &value)) |
55 value = false; | 57 value = false; |
56 return value; | 58 return value; |
57 } | 59 } |
58 #endif | 60 #endif |
59 | 61 |
| 62 void PaintCanvasAnnotateRectWithURL(PaintCanvas* canvas, |
| 63 const SkRect& rect, |
| 64 SkData* data) { |
| 65 SkAnnotateRectWithURL(canvas->canvas_, rect, data); |
| 66 } |
| 67 |
| 68 void PaintCanvasAnnotateNamedDestination(PaintCanvas* canvas, |
| 69 const SkPoint& point, |
| 70 SkData* data) { |
| 71 SkAnnotateNamedDestination(canvas->canvas_, point, data); |
| 72 } |
| 73 |
| 74 void PaintCanvasAnnotateLinkToDestination(PaintCanvas* canvas, |
| 75 const SkRect& rect, |
| 76 SkData* data) { |
| 77 SkAnnotateLinkToDestination(canvas->canvas_, rect, data); |
| 78 } |
| 79 |
60 } // namespace cc | 80 } // namespace cc |
OLD | NEW |