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

Side by Side Diff: cc/paint/paint_canvas.h

Issue 2768143002: Back PaintRecord with PaintOpBuffer instead of SkPicture (Closed)
Patch Set: Change allocation behavior of PaintOpBuffer to x2 Created 3 years, 8 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
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 #ifndef CC_PAINT_PAINT_CANVAS_H_ 5 #ifndef CC_PAINT_PAINT_CANVAS_H_
6 #define CC_PAINT_PAINT_CANVAS_H_ 6 #define CC_PAINT_PAINT_CANVAS_H_
7 7
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
11 #include "build/build_config.h" 11 #include "build/build_config.h"
12 #include "cc/paint/paint_export.h" 12 #include "cc/paint/paint_export.h"
13 #include "cc/paint/paint_image.h" 13 #include "cc/paint/paint_image.h"
14 #include "cc/paint/paint_record.h"
15 #include "third_party/skia/include/core/SkCanvas.h" 14 #include "third_party/skia/include/core/SkCanvas.h"
16 15
17 namespace cc { 16 namespace cc {
18 17
19 class DisplayItemList; 18 class DisplayItemList;
20 class PaintFlags; 19 class PaintFlags;
20 class PaintOpBuffer;
21
22 using PaintRecord = PaintOpBuffer;
21 23
22 class CC_PAINT_EXPORT PaintCanvas { 24 class CC_PAINT_EXPORT PaintCanvas {
23 public: 25 public:
24 virtual ~PaintCanvas() {} 26 virtual ~PaintCanvas() {}
25 27
26 virtual SkMetaData& getMetaData() = 0; 28 virtual SkMetaData& getMetaData() = 0;
29
30 // TODO(enne): this only appears to mostly be used to determine if this is
31 // recording or not, so could be simplified or removed.
27 virtual SkImageInfo imageInfo() const = 0; 32 virtual SkImageInfo imageInfo() const = 0;
28 33
29 // TODO(enne): It would be nice to get rid of flush() entirely, as it 34 // TODO(enne): It would be nice to get rid of flush() entirely, as it
30 // doesn't really make sense for recording. However, this gets used by 35 // doesn't really make sense for recording. However, this gets used by
31 // SkCanvasVideoRenderer which takes a PaintCanvas to paint both 36 // SkCanvasVideoRenderer which takes a PaintCanvas to paint both
32 // software and hardware video. This is super entangled with ImageBuffer 37 // software and hardware video. This is super entangled with ImageBuffer
33 // and canvas/video painting in Blink where the same paths are used for 38 // and canvas/video painting in Blink where the same paths are used for
34 // both recording and gpu work. 39 // both recording and gpu work.
35 virtual void flush() = 0; 40 virtual void flush() = 0;
36 41
37 virtual SkISize getBaseLayerSize() const = 0; 42 virtual SkISize getBaseLayerSize() const = 0;
38 virtual bool writePixels(const SkImageInfo& info, 43 virtual bool writePixels(const SkImageInfo& info,
39 const void* pixels, 44 const void* pixels,
40 size_t row_bytes, 45 size_t row_bytes,
41 int x, 46 int x,
42 int y) = 0; 47 int y) = 0;
43 virtual int save() = 0; 48 virtual int save() = 0;
44 virtual int saveLayer(const SkRect* bounds, const PaintFlags* flags) = 0; 49 virtual int saveLayer(const SkRect* bounds, const PaintFlags* flags) = 0;
45 virtual int saveLayerAlpha(const SkRect* bounds, U8CPU alpha) = 0; 50 virtual int saveLayerAlpha(const SkRect* bounds, uint8_t alpha) = 0;
46 51
47 virtual void restore() = 0; 52 virtual void restore() = 0;
48 virtual int getSaveCount() const = 0; 53 virtual int getSaveCount() const = 0;
49 virtual void restoreToCount(int save_count) = 0; 54 virtual void restoreToCount(int save_count) = 0;
50 virtual void translate(SkScalar dx, SkScalar dy) = 0; 55 virtual void translate(SkScalar dx, SkScalar dy) = 0;
51 virtual void scale(SkScalar sx, SkScalar sy) = 0; 56 virtual void scale(SkScalar sx, SkScalar sy) = 0;
52 virtual void rotate(SkScalar degrees) = 0; 57 virtual void rotate(SkScalar degrees) = 0;
53 virtual void concat(const SkMatrix& matrix) = 0; 58 virtual void concat(const SkMatrix& matrix) = 0;
54 virtual void setMatrix(const SkMatrix& matrix) = 0; 59 virtual void setMatrix(const SkMatrix& matrix) = 0;
55 60
(...skipping 30 matching lines...) Expand all
86 } 91 }
87 92
88 virtual bool quickReject(const SkRect& rect) const = 0; 93 virtual bool quickReject(const SkRect& rect) const = 0;
89 virtual bool quickReject(const SkPath& path) const = 0; 94 virtual bool quickReject(const SkPath& path) const = 0;
90 virtual SkRect getLocalClipBounds() const = 0; 95 virtual SkRect getLocalClipBounds() const = 0;
91 virtual bool getLocalClipBounds(SkRect* bounds) const = 0; 96 virtual bool getLocalClipBounds(SkRect* bounds) const = 0;
92 virtual SkIRect getDeviceClipBounds() const = 0; 97 virtual SkIRect getDeviceClipBounds() const = 0;
93 virtual bool getDeviceClipBounds(SkIRect* bounds) const = 0; 98 virtual bool getDeviceClipBounds(SkIRect* bounds) const = 0;
94 virtual void drawColor(SkColor color, SkBlendMode mode) = 0; 99 virtual void drawColor(SkColor color, SkBlendMode mode) = 0;
95 void drawColor(SkColor color) { drawColor(color, SkBlendMode::kSrcOver); } 100 void drawColor(SkColor color) { drawColor(color, SkBlendMode::kSrcOver); }
101
102 // TODO(enne): This is a synonym for drawColor with kSrc. Remove it.
96 virtual void clear(SkColor color) = 0; 103 virtual void clear(SkColor color) = 0;
97 104
98 virtual void drawLine(SkScalar x0, 105 virtual void drawLine(SkScalar x0,
99 SkScalar y0, 106 SkScalar y0,
100 SkScalar x1, 107 SkScalar x1,
101 SkScalar y1, 108 SkScalar y1,
102 const PaintFlags& flags) = 0; 109 const PaintFlags& flags) = 0;
103 virtual void drawRect(const SkRect& rect, const PaintFlags& flags) = 0; 110 virtual void drawRect(const SkRect& rect, const PaintFlags& flags) = 0;
104 virtual void drawIRect(const SkIRect& rect, const PaintFlags& flags) = 0; 111 virtual void drawIRect(const SkIRect& rect, const PaintFlags& flags) = 0;
105 virtual void drawOval(const SkRect& oval, const PaintFlags& flags) = 0; 112 virtual void drawOval(const SkRect& oval, const PaintFlags& flags) = 0;
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 // Following routines are used in print preview workflow to mark the 242 // Following routines are used in print preview workflow to mark the
236 // preview metafile. 243 // preview metafile.
237 #if defined(OS_MACOSX) 244 #if defined(OS_MACOSX)
238 CC_PAINT_EXPORT void SetIsPreviewMetafile(PaintCanvas* canvas, bool is_preview); 245 CC_PAINT_EXPORT void SetIsPreviewMetafile(PaintCanvas* canvas, bool is_preview);
239 CC_PAINT_EXPORT bool IsPreviewMetafile(PaintCanvas* canvas); 246 CC_PAINT_EXPORT bool IsPreviewMetafile(PaintCanvas* canvas);
240 #endif 247 #endif
241 248
242 } // namespace cc 249 } // namespace cc
243 250
244 #endif // CC_PAINT_PAINT_CANVAS_H_ 251 #endif // CC_PAINT_PAINT_CANVAS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698