| 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 "skia/ext/benchmarking_canvas.h" | 5 #include "skia/ext/benchmarking_canvas.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 val->Set("rect", AsValue(rrect.rect())); | 102 val->Set("rect", AsValue(rrect.rect())); |
| 103 val->Set("radii", std::move(radii_val)); | 103 val->Set("radii", std::move(radii_val)); |
| 104 | 104 |
| 105 return std::move(val); | 105 return std::move(val); |
| 106 } | 106 } |
| 107 | 107 |
| 108 WARN_UNUSED_RESULT | 108 WARN_UNUSED_RESULT |
| 109 std::unique_ptr<base::Value> AsValue(const SkMatrix& matrix) { | 109 std::unique_ptr<base::Value> AsValue(const SkMatrix& matrix) { |
| 110 std::unique_ptr<base::ListValue> val(new base::ListValue()); | 110 std::unique_ptr<base::ListValue> val(new base::ListValue()); |
| 111 for (int i = 0; i < 9; ++i) | 111 for (int i = 0; i < 9; ++i) |
| 112 val->Append(AsValue(matrix[i]).release()); // no scoped_ptr-aware Append() v
ariant | 112 val->Append(AsValue(matrix[i])); // no scoped_ptr-aware Append() variant |
| 113 | 113 |
| 114 return std::move(val); | 114 return std::move(val); |
| 115 } | 115 } |
| 116 | 116 |
| 117 WARN_UNUSED_RESULT | 117 WARN_UNUSED_RESULT |
| 118 std::unique_ptr<base::Value> AsValue(SkColor color) { | 118 std::unique_ptr<base::Value> AsValue(SkColor color) { |
| 119 std::unique_ptr<base::DictionaryValue> val(new base::DictionaryValue()); | 119 std::unique_ptr<base::DictionaryValue> val(new base::DictionaryValue()); |
| 120 val->SetInteger("a", SkColorGetA(color)); | 120 val->SetInteger("a", SkColorGetA(color)); |
| 121 val->SetInteger("r", SkColorGetR(color)); | 121 val->SetInteger("r", SkColorGetR(color)); |
| 122 val->SetInteger("g", SkColorGetG(color)); | 122 val->SetInteger("g", SkColorGetG(color)); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 builder.addFlag(flags & SkColorFilter::kAlphaUnchanged_Flag, | 163 builder.addFlag(flags & SkColorFilter::kAlphaUnchanged_Flag, |
| 164 "kAlphaUnchanged_Flag"); | 164 "kAlphaUnchanged_Flag"); |
| 165 | 165 |
| 166 val->SetString("flags", builder.str()); | 166 val->SetString("flags", builder.str()); |
| 167 } | 167 } |
| 168 | 168 |
| 169 SkScalar color_matrix[20]; | 169 SkScalar color_matrix[20]; |
| 170 if (filter.asColorMatrix(color_matrix)) { | 170 if (filter.asColorMatrix(color_matrix)) { |
| 171 std::unique_ptr<base::ListValue> color_matrix_val(new base::ListValue()); | 171 std::unique_ptr<base::ListValue> color_matrix_val(new base::ListValue()); |
| 172 for (unsigned i = 0; i < 20; ++i) | 172 for (unsigned i = 0; i < 20; ++i) |
| 173 color_matrix_val->Append(AsValue(color_matrix[i]).release()); | 173 color_matrix_val->Append(AsValue(color_matrix[i])); |
| 174 | 174 |
| 175 val->Set("color_matrix", std::move(color_matrix_val)); | 175 val->Set("color_matrix", std::move(color_matrix_val)); |
| 176 } | 176 } |
| 177 | 177 |
| 178 SkColor color; | 178 SkColor color; |
| 179 SkXfermode::Mode mode; | 179 SkXfermode::Mode mode; |
| 180 if (filter.asColorMode(&color, &mode)) { | 180 if (filter.asColorMode(&color, &mode)) { |
| 181 std::unique_ptr<base::DictionaryValue> color_mode_val( | 181 std::unique_ptr<base::DictionaryValue> color_mode_val( |
| 182 new base::DictionaryValue()); | 182 new base::DictionaryValue()); |
| 183 color_mode_val->Set("color", AsValue(color)); | 183 color_mode_val->Set("color", AsValue(color)); |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 | 373 |
| 374 for(SkPath::Verb verb = iter.next(points, false); | 374 for(SkPath::Verb verb = iter.next(points, false); |
| 375 verb != SkPath::kDone_Verb; verb = iter.next(points, false)) { | 375 verb != SkPath::kDone_Verb; verb = iter.next(points, false)) { |
| 376 DCHECK_LT(static_cast<size_t>(verb), SK_ARRAY_COUNT(gVerbStrings)); | 376 DCHECK_LT(static_cast<size_t>(verb), SK_ARRAY_COUNT(gVerbStrings)); |
| 377 | 377 |
| 378 std::unique_ptr<base::DictionaryValue> verb_val( | 378 std::unique_ptr<base::DictionaryValue> verb_val( |
| 379 new base::DictionaryValue()); | 379 new base::DictionaryValue()); |
| 380 std::unique_ptr<base::ListValue> pts_val(new base::ListValue()); | 380 std::unique_ptr<base::ListValue> pts_val(new base::ListValue()); |
| 381 | 381 |
| 382 for (int i = 0; i < gPtsPerVerb[verb]; ++i) | 382 for (int i = 0; i < gPtsPerVerb[verb]; ++i) |
| 383 pts_val->Append(AsValue(points[i + gPtOffsetPerVerb[verb]]).release()); | 383 pts_val->Append(AsValue(points[i + gPtOffsetPerVerb[verb]])); |
| 384 | 384 |
| 385 verb_val->Set(gVerbStrings[verb], std::move(pts_val)); | 385 verb_val->Set(gVerbStrings[verb], std::move(pts_val)); |
| 386 | 386 |
| 387 if (SkPath::kConic_Verb == verb) | 387 if (SkPath::kConic_Verb == verb) |
| 388 verb_val->Set("weight", AsValue(iter.conicWeight())); | 388 verb_val->Set("weight", AsValue(iter.conicWeight())); |
| 389 | 389 |
| 390 verbs_val->Append(verb_val.release()); | 390 verbs_val->Append(std::move(verb_val)); |
| 391 } | 391 } |
| 392 val->Set("verbs", std::move(verbs_val)); | 392 val->Set("verbs", std::move(verbs_val)); |
| 393 | 393 |
| 394 return std::move(val); | 394 return std::move(val); |
| 395 } | 395 } |
| 396 | 396 |
| 397 template <typename T> | 397 template <typename T> |
| 398 WARN_UNUSED_RESULT std::unique_ptr<base::Value> AsListValue(const T array[], | 398 WARN_UNUSED_RESULT std::unique_ptr<base::Value> AsListValue(const T array[], |
| 399 size_t count) { | 399 size_t count) { |
| 400 std::unique_ptr<base::ListValue> val(new base::ListValue()); | 400 std::unique_ptr<base::ListValue> val(new base::ListValue()); |
| 401 | 401 |
| 402 for (size_t i = 0; i < count; ++i) | 402 for (size_t i = 0; i < count; ++i) |
| 403 val->Append(AsValue(array[i]).release()); | 403 val->Append(AsValue(array[i])); |
| 404 | 404 |
| 405 return std::move(val); | 405 return std::move(val); |
| 406 } | 406 } |
| 407 | 407 |
| 408 class OverdrawXfermode : public SkXfermode { | 408 class OverdrawXfermode : public SkXfermode { |
| 409 public: | 409 public: |
| 410 SkPMColor xferColor(SkPMColor src, SkPMColor dst) const override { | 410 SkPMColor xferColor(SkPMColor src, SkPMColor dst) const override { |
| 411 // This table encodes the color progression of the overdraw visualization | 411 // This table encodes the color progression of the overdraw visualization |
| 412 static const SkPMColor gTable[] = { | 412 static const SkPMColor gTable[] = { |
| 413 SkPackARGB32(0x00, 0x00, 0x00, 0x00), | 413 SkPackARGB32(0x00, 0x00, 0x00, 0x00), |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 base::TimeDelta ticks = base::TimeTicks::Now() - start_ticks_; | 485 base::TimeDelta ticks = base::TimeTicks::Now() - start_ticks_; |
| 486 op_record_->SetDouble("cmd_time", ticks.InMillisecondsF()); | 486 op_record_->SetDouble("cmd_time", ticks.InMillisecondsF()); |
| 487 | 487 |
| 488 canvas_->op_records_.Append(op_record_); | 488 canvas_->op_records_.Append(op_record_); |
| 489 } | 489 } |
| 490 | 490 |
| 491 void addParam(const char name[], std::unique_ptr<base::Value> value) { | 491 void addParam(const char name[], std::unique_ptr<base::Value> value) { |
| 492 std::unique_ptr<base::DictionaryValue> param(new base::DictionaryValue()); | 492 std::unique_ptr<base::DictionaryValue> param(new base::DictionaryValue()); |
| 493 param->Set(name, std::move(value)); | 493 param->Set(name, std::move(value)); |
| 494 | 494 |
| 495 op_params_->Append(param.release()); | 495 op_params_->Append(std::move(param)); |
| 496 } | 496 } |
| 497 | 497 |
| 498 const SkPaint* paint() const { return &filtered_paint_; } | 498 const SkPaint* paint() const { return &filtered_paint_; } |
| 499 | 499 |
| 500 private: | 500 private: |
| 501 BenchmarkingCanvas* canvas_; | 501 BenchmarkingCanvas* canvas_; |
| 502 base::DictionaryValue* op_record_; | 502 base::DictionaryValue* op_record_; |
| 503 base::ListValue* op_params_; | 503 base::ListValue* op_params_; |
| 504 base::TimeTicks start_ticks_; | 504 base::TimeTicks start_ticks_; |
| 505 | 505 |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 DCHECK(blob); | 798 DCHECK(blob); |
| 799 AutoOp op(this, "DrawTextBlob", &paint); | 799 AutoOp op(this, "DrawTextBlob", &paint); |
| 800 op.addParam("blob", AsValue(*blob)); | 800 op.addParam("blob", AsValue(*blob)); |
| 801 op.addParam("x", AsValue(x)); | 801 op.addParam("x", AsValue(x)); |
| 802 op.addParam("y", AsValue(y)); | 802 op.addParam("y", AsValue(y)); |
| 803 | 803 |
| 804 INHERITED::onDrawTextBlob(blob, x, y, *op.paint()); | 804 INHERITED::onDrawTextBlob(blob, x, y, *op.paint()); |
| 805 } | 805 } |
| 806 | 806 |
| 807 } // namespace skia | 807 } // namespace skia |
| OLD | NEW |