| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "base/containers/hash_tables.h" | 5 #include "base/containers/hash_tables.h" |
| 6 #include "base/logging.h" | 6 #include "base/logging.h" |
| 7 #include "base/time/time.h" | 7 #include "base/time/time.h" |
| 8 #include "skia/ext/benchmarking_canvas.h" | 8 #include "skia/ext/benchmarking_canvas.h" |
| 9 #include "third_party/skia/include/utils/SkProxyCanvas.h" | 9 #include "third_party/skia/include/utils/SkProxyCanvas.h" |
| 10 | 10 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 | 22 |
| 23 class TimingCanvas : public SkProxyCanvas { | 23 class TimingCanvas : public SkProxyCanvas { |
| 24 public: | 24 public: |
| 25 TimingCanvas(int width, int height, const BenchmarkingCanvas* track_canvas) | 25 TimingCanvas(int width, int height, const BenchmarkingCanvas* track_canvas) |
| 26 : tracking_canvas_(track_canvas) { | 26 : tracking_canvas_(track_canvas) { |
| 27 canvas_ = skia::AdoptRef(SkCanvas::NewRasterN32(width, height)); | 27 canvas_ = skia::AdoptRef(SkCanvas::NewRasterN32(width, height)); |
| 28 | 28 |
| 29 setProxy(canvas_.get()); | 29 setProxy(canvas_.get()); |
| 30 } | 30 } |
| 31 | 31 |
| 32 virtual ~TimingCanvas() { | 32 ~TimingCanvas() override {} |
| 33 } | |
| 34 | 33 |
| 35 double GetTime(size_t index) { | 34 double GetTime(size_t index) { |
| 36 TimingsMap::const_iterator timing_info = timings_map_.find(index); | 35 TimingsMap::const_iterator timing_info = timings_map_.find(index); |
| 37 return timing_info != timings_map_.end() | 36 return timing_info != timings_map_.end() |
| 38 ? timing_info->second.InMillisecondsF() | 37 ? timing_info->second.InMillisecondsF() |
| 39 : 0.0; | 38 : 0.0; |
| 40 } | 39 } |
| 41 | 40 |
| 42 // SkCanvas overrides. | 41 // SkCanvas overrides. |
| 43 virtual void willSave() override { | 42 void willSave() override { |
| 44 AutoStamper stamper(this); | 43 AutoStamper stamper(this); |
| 45 SkProxyCanvas::willSave(); | 44 SkProxyCanvas::willSave(); |
| 46 } | 45 } |
| 47 | 46 |
| 48 virtual SaveLayerStrategy willSaveLayer(const SkRect* bounds, | 47 SaveLayerStrategy willSaveLayer(const SkRect* bounds, |
| 49 const SkPaint* paint, | 48 const SkPaint* paint, |
| 50 SaveFlags flags) override { | 49 SaveFlags flags) override { |
| 51 AutoStamper stamper(this); | 50 AutoStamper stamper(this); |
| 52 return SkProxyCanvas::willSaveLayer(bounds, paint, flags); | 51 return SkProxyCanvas::willSaveLayer(bounds, paint, flags); |
| 53 } | 52 } |
| 54 | 53 |
| 55 virtual void willRestore() override { | 54 void willRestore() override { |
| 56 AutoStamper stamper(this); | 55 AutoStamper stamper(this); |
| 57 SkProxyCanvas::willRestore(); | 56 SkProxyCanvas::willRestore(); |
| 58 } | 57 } |
| 59 | 58 |
| 60 virtual void drawPaint(const SkPaint& paint) override { | 59 void drawPaint(const SkPaint& paint) override { |
| 61 AutoStamper stamper(this); | 60 AutoStamper stamper(this); |
| 62 SkProxyCanvas::drawPaint(paint); | 61 SkProxyCanvas::drawPaint(paint); |
| 63 } | 62 } |
| 64 | 63 |
| 65 virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[], | 64 void drawPoints(PointMode mode, |
| 66 const SkPaint& paint) override { | 65 size_t count, |
| 66 const SkPoint pts[], |
| 67 const SkPaint& paint) override { |
| 67 AutoStamper stamper(this); | 68 AutoStamper stamper(this); |
| 68 SkProxyCanvas::drawPoints(mode, count, pts, paint); | 69 SkProxyCanvas::drawPoints(mode, count, pts, paint); |
| 69 } | 70 } |
| 70 | 71 |
| 71 virtual void drawOval(const SkRect& rect, const SkPaint& paint) override { | 72 void drawOval(const SkRect& rect, const SkPaint& paint) override { |
| 72 AutoStamper stamper(this); | 73 AutoStamper stamper(this); |
| 73 SkProxyCanvas::drawOval(rect, paint); | 74 SkProxyCanvas::drawOval(rect, paint); |
| 74 } | 75 } |
| 75 | 76 |
| 76 virtual void drawRect(const SkRect& rect, const SkPaint& paint) override { | 77 void drawRect(const SkRect& rect, const SkPaint& paint) override { |
| 77 AutoStamper stamper(this); | 78 AutoStamper stamper(this); |
| 78 SkProxyCanvas::drawRect(rect, paint); | 79 SkProxyCanvas::drawRect(rect, paint); |
| 79 } | 80 } |
| 80 | 81 |
| 81 virtual void drawRRect(const SkRRect& rrect, const SkPaint& paint) override { | 82 void drawRRect(const SkRRect& rrect, const SkPaint& paint) override { |
| 82 AutoStamper stamper(this); | 83 AutoStamper stamper(this); |
| 83 SkProxyCanvas::drawRRect(rrect, paint); | 84 SkProxyCanvas::drawRRect(rrect, paint); |
| 84 } | 85 } |
| 85 | 86 |
| 86 virtual void drawPath(const SkPath& path, const SkPaint& paint) override { | 87 void drawPath(const SkPath& path, const SkPaint& paint) override { |
| 87 AutoStamper stamper(this); | 88 AutoStamper stamper(this); |
| 88 SkProxyCanvas::drawPath(path, paint); | 89 SkProxyCanvas::drawPath(path, paint); |
| 89 } | 90 } |
| 90 | 91 |
| 91 virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, | 92 void drawBitmap(const SkBitmap& bitmap, |
| 92 const SkPaint* paint = NULL) override { | 93 SkScalar left, |
| 94 SkScalar top, |
| 95 const SkPaint* paint = NULL) override { |
| 93 AutoStamper stamper(this); | 96 AutoStamper stamper(this); |
| 94 SkProxyCanvas::drawBitmap(bitmap, left, top, paint); | 97 SkProxyCanvas::drawBitmap(bitmap, left, top, paint); |
| 95 } | 98 } |
| 96 | 99 |
| 97 virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src, | 100 void drawBitmapRectToRect(const SkBitmap& bitmap, |
| 98 const SkRect& dst, | 101 const SkRect* src, |
| 99 const SkPaint* paint, | 102 const SkRect& dst, |
| 100 DrawBitmapRectFlags flags) override { | 103 const SkPaint* paint, |
| 104 DrawBitmapRectFlags flags) override { |
| 101 AutoStamper stamper(this); | 105 AutoStamper stamper(this); |
| 102 SkProxyCanvas::drawBitmapRectToRect(bitmap, src, dst, paint, flags); | 106 SkProxyCanvas::drawBitmapRectToRect(bitmap, src, dst, paint, flags); |
| 103 } | 107 } |
| 104 | 108 |
| 105 virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, | 109 void drawBitmapMatrix(const SkBitmap& bitmap, |
| 106 const SkPaint* paint = NULL) override { | 110 const SkMatrix& m, |
| 111 const SkPaint* paint = NULL) override { |
| 107 AutoStamper stamper(this); | 112 AutoStamper stamper(this); |
| 108 SkProxyCanvas::drawBitmapMatrix(bitmap, m, paint); | 113 SkProxyCanvas::drawBitmapMatrix(bitmap, m, paint); |
| 109 } | 114 } |
| 110 | 115 |
| 111 virtual void drawSprite(const SkBitmap& bitmap, int left, int top, | 116 void drawSprite(const SkBitmap& bitmap, |
| 112 const SkPaint* paint = NULL) override { | 117 int left, |
| 118 int top, |
| 119 const SkPaint* paint = NULL) override { |
| 113 AutoStamper stamper(this); | 120 AutoStamper stamper(this); |
| 114 SkProxyCanvas::drawSprite(bitmap, left, top, paint); | 121 SkProxyCanvas::drawSprite(bitmap, left, top, paint); |
| 115 } | 122 } |
| 116 | 123 |
| 117 virtual void drawVertices(VertexMode vmode, int vertexCount, | 124 void drawVertices(VertexMode vmode, |
| 118 const SkPoint vertices[], const SkPoint texs[], | 125 int vertexCount, |
| 119 const SkColor colors[], SkXfermode* xmode, | 126 const SkPoint vertices[], |
| 120 const uint16_t indices[], int indexCount, | 127 const SkPoint texs[], |
| 121 const SkPaint& paint) override { | 128 const SkColor colors[], |
| 129 SkXfermode* xmode, |
| 130 const uint16_t indices[], |
| 131 int indexCount, |
| 132 const SkPaint& paint) override { |
| 122 AutoStamper stamper(this); | 133 AutoStamper stamper(this); |
| 123 SkProxyCanvas::drawVertices(vmode, vertexCount, vertices, texs, colors, | 134 SkProxyCanvas::drawVertices(vmode, vertexCount, vertices, texs, colors, |
| 124 xmode, indices, indexCount, paint); | 135 xmode, indices, indexCount, paint); |
| 125 } | 136 } |
| 126 | 137 |
| 127 virtual void drawData(const void* data, size_t length) override { | 138 void drawData(const void* data, size_t length) override { |
| 128 AutoStamper stamper(this); | 139 AutoStamper stamper(this); |
| 129 SkProxyCanvas::drawData(data, length); | 140 SkProxyCanvas::drawData(data, length); |
| 130 } | 141 } |
| 131 | 142 |
| 132 protected: | 143 protected: |
| 133 virtual void onDrawText(const void* text, size_t byteLength, SkScalar x, | 144 void onDrawText(const void* text, |
| 134 SkScalar y, const SkPaint& paint) override { | 145 size_t byteLength, |
| 146 SkScalar x, |
| 147 SkScalar y, |
| 148 const SkPaint& paint) override { |
| 135 AutoStamper stamper(this); | 149 AutoStamper stamper(this); |
| 136 SkProxyCanvas::onDrawText(text, byteLength, x, y, paint); | 150 SkProxyCanvas::onDrawText(text, byteLength, x, y, paint); |
| 137 } | 151 } |
| 138 | 152 |
| 139 virtual void onDrawPosText(const void* text, size_t byteLength, | 153 void onDrawPosText(const void* text, |
| 140 const SkPoint pos[], | 154 size_t byteLength, |
| 141 const SkPaint& paint) override { | 155 const SkPoint pos[], |
| 156 const SkPaint& paint) override { |
| 142 AutoStamper stamper(this); | 157 AutoStamper stamper(this); |
| 143 SkProxyCanvas::onDrawPosText(text, byteLength, pos, paint); | 158 SkProxyCanvas::onDrawPosText(text, byteLength, pos, paint); |
| 144 } | 159 } |
| 145 | 160 |
| 146 virtual void onDrawPosTextH(const void* text, size_t byteLength, | 161 void onDrawPosTextH(const void* text, |
| 147 const SkScalar xpos[], SkScalar constY, | 162 size_t byteLength, |
| 148 const SkPaint& paint) override { | 163 const SkScalar xpos[], |
| 164 SkScalar constY, |
| 165 const SkPaint& paint) override { |
| 149 AutoStamper stamper(this); | 166 AutoStamper stamper(this); |
| 150 SkProxyCanvas::onDrawPosTextH(text, byteLength, xpos, constY, paint); | 167 SkProxyCanvas::onDrawPosTextH(text, byteLength, xpos, constY, paint); |
| 151 } | 168 } |
| 152 | 169 |
| 153 virtual void onDrawTextOnPath(const void* text, size_t byteLength, | 170 void onDrawTextOnPath(const void* text, |
| 154 const SkPath& path, const SkMatrix* matrix, | 171 size_t byteLength, |
| 155 const SkPaint& paint) override { | 172 const SkPath& path, |
| 173 const SkMatrix* matrix, |
| 174 const SkPaint& paint) override { |
| 156 AutoStamper stamper(this); | 175 AutoStamper stamper(this); |
| 157 SkProxyCanvas::onDrawTextOnPath(text, byteLength, path, matrix, paint); | 176 SkProxyCanvas::onDrawTextOnPath(text, byteLength, path, matrix, paint); |
| 158 } | 177 } |
| 159 | 178 |
| 160 virtual void onClipRect(const SkRect& rect, SkRegion::Op op, | 179 void onClipRect(const SkRect& rect, |
| 161 ClipEdgeStyle edge_style) override { | 180 SkRegion::Op op, |
| 181 ClipEdgeStyle edge_style) override { |
| 162 AutoStamper stamper(this); | 182 AutoStamper stamper(this); |
| 163 SkProxyCanvas::onClipRect(rect, op, edge_style); | 183 SkProxyCanvas::onClipRect(rect, op, edge_style); |
| 164 } | 184 } |
| 165 | 185 |
| 166 virtual void onClipRRect(const SkRRect& rrect, SkRegion::Op op, | 186 void onClipRRect(const SkRRect& rrect, |
| 167 ClipEdgeStyle edge_style) override { | 187 SkRegion::Op op, |
| 188 ClipEdgeStyle edge_style) override { |
| 168 AutoStamper stamper(this); | 189 AutoStamper stamper(this); |
| 169 SkProxyCanvas::onClipRRect(rrect, op, edge_style); | 190 SkProxyCanvas::onClipRRect(rrect, op, edge_style); |
| 170 } | 191 } |
| 171 | 192 |
| 172 virtual void onClipPath(const SkPath& path, SkRegion::Op op, | 193 void onClipPath(const SkPath& path, |
| 173 ClipEdgeStyle edge_style) override { | 194 SkRegion::Op op, |
| 195 ClipEdgeStyle edge_style) override { |
| 174 AutoStamper stamper(this); | 196 AutoStamper stamper(this); |
| 175 SkProxyCanvas::onClipPath(path, op, edge_style); | 197 SkProxyCanvas::onClipPath(path, op, edge_style); |
| 176 } | 198 } |
| 177 | 199 |
| 178 virtual void onClipRegion(const SkRegion& region, | 200 void onClipRegion(const SkRegion& region, SkRegion::Op op) override { |
| 179 SkRegion::Op op) override { | |
| 180 AutoStamper stamper(this); | 201 AutoStamper stamper(this); |
| 181 SkProxyCanvas::onClipRegion(region, op); | 202 SkProxyCanvas::onClipRegion(region, op); |
| 182 } | 203 } |
| 183 | 204 |
| 184 virtual void onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, | 205 void onDrawPicture(const SkPicture* picture, |
| 185 const SkPaint* paint) override { | 206 const SkMatrix* matrix, |
| 207 const SkPaint* paint) override { |
| 186 AutoStamper stamper(this); | 208 AutoStamper stamper(this); |
| 187 SkProxyCanvas::onDrawPicture(picture, matrix, paint); | 209 SkProxyCanvas::onDrawPicture(picture, matrix, paint); |
| 188 } | 210 } |
| 189 | 211 |
| 190 private: | 212 private: |
| 191 typedef base::hash_map<size_t, base::TimeDelta> TimingsMap; | 213 typedef base::hash_map<size_t, base::TimeDelta> TimingsMap; |
| 192 TimingsMap timings_map_; | 214 TimingsMap timings_map_; |
| 193 | 215 |
| 194 skia::RefPtr<SkCanvas> canvas_; | 216 skia::RefPtr<SkCanvas> canvas_; |
| 195 | 217 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 DCHECK_LT(index, static_cast<size_t>(debug_canvas_->getSize())); | 252 DCHECK_LT(index, static_cast<size_t>(debug_canvas_->getSize())); |
| 231 return debug_canvas_->getDrawCommandAt(index); | 253 return debug_canvas_->getDrawCommandAt(index); |
| 232 } | 254 } |
| 233 | 255 |
| 234 double BenchmarkingCanvas::GetTime(size_t index) { | 256 double BenchmarkingCanvas::GetTime(size_t index) { |
| 235 DCHECK_LT(index, static_cast<size_t>(debug_canvas_->getSize())); | 257 DCHECK_LT(index, static_cast<size_t>(debug_canvas_->getSize())); |
| 236 return timing_canvas_->GetTime(index); | 258 return timing_canvas_->GetTime(index); |
| 237 } | 259 } |
| 238 | 260 |
| 239 } // namespace skia | 261 } // namespace skia |
| OLD | NEW |