| 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_op_buffer.h" | 5 #include "cc/paint/paint_op_buffer.h" |
| 6 | 6 |
| 7 #include "base/containers/stack_container.h" | 7 #include "base/containers/stack_container.h" |
| 8 #include "cc/paint/display_item_list.h" | 8 #include "cc/paint/display_item_list.h" |
| 9 #include "cc/paint/paint_record.h" | 9 #include "cc/paint/paint_record.h" |
| 10 #include "third_party/skia/include/core/SkAnnotation.h" | 10 #include "third_party/skia/include/core/SkAnnotation.h" |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 #undef M | 187 #undef M |
| 188 | 188 |
| 189 #undef TYPES | 189 #undef TYPES |
| 190 | 190 |
| 191 SkRect PaintOp::kUnsetRect = {SK_ScalarInfinity, 0, 0, 0}; | 191 SkRect PaintOp::kUnsetRect = {SK_ScalarInfinity, 0, 0, 0}; |
| 192 | 192 |
| 193 void AnnotateOp::Raster(const PaintOp* base_op, | 193 void AnnotateOp::Raster(const PaintOp* base_op, |
| 194 SkCanvas* canvas, | 194 SkCanvas* canvas, |
| 195 const SkMatrix& original_ctm) { | 195 const SkMatrix& original_ctm) { |
| 196 auto* op = static_cast<const AnnotateOp*>(base_op); | 196 auto* op = static_cast<const AnnotateOp*>(base_op); |
| 197 switch (op->annotation_type) { | 197 switch (static_cast<PaintCanvas::AnnotationType>(op->annotation_type)) { |
| 198 case PaintCanvas::AnnotationType::URL: | 198 case PaintCanvas::AnnotationType::URL: |
| 199 SkAnnotateRectWithURL(canvas, op->rect, op->data.get()); | 199 SkAnnotateRectWithURL(canvas, op->rect, op->data.get()); |
| 200 break; | 200 break; |
| 201 case PaintCanvas::AnnotationType::LINK_TO_DESTINATION: | 201 case PaintCanvas::AnnotationType::LINK_TO_DESTINATION: |
| 202 SkAnnotateLinkToDestination(canvas, op->rect, op->data.get()); | 202 SkAnnotateLinkToDestination(canvas, op->rect, op->data.get()); |
| 203 break; | 203 break; |
| 204 case PaintCanvas::AnnotationType::NAMED_DESTINATION: { | 204 case PaintCanvas::AnnotationType::NAMED_DESTINATION: { |
| 205 SkPoint point = SkPoint::Make(op->rect.x(), op->rect.y()); | 205 SkPoint point = SkPoint::Make(op->rect.x(), op->rect.y()); |
| 206 SkAnnotateNamedDestination(canvas, point, op->data.get()); | 206 SkAnnotateNamedDestination(canvas, point, op->data.get()); |
| 207 break; | 207 break; |
| 208 } | 208 } |
| 209 } | 209 } |
| 210 } | 210 } |
| 211 | 211 |
| 212 void ClipPathOp::Raster(const PaintOp* base_op, | 212 void ClipPathOp::Raster(const PaintOp* base_op, |
| 213 SkCanvas* canvas, | 213 SkCanvas* canvas, |
| 214 const SkMatrix& original_ctm) { | 214 const SkMatrix& original_ctm) { |
| 215 auto* op = static_cast<const ClipPathOp*>(base_op); | 215 auto* op = static_cast<const ClipPathOp*>(base_op); |
| 216 canvas->clipPath(op->path, op->op, op->antialias); | 216 canvas->clipPath(op->path, static_cast<SkClipOp>(op->op), op->antialias); |
| 217 } | 217 } |
| 218 | 218 |
| 219 void ClipRectOp::Raster(const PaintOp* base_op, | 219 void ClipRectOp::Raster(const PaintOp* base_op, |
| 220 SkCanvas* canvas, | 220 SkCanvas* canvas, |
| 221 const SkMatrix& original_ctm) { | 221 const SkMatrix& original_ctm) { |
| 222 auto* op = static_cast<const ClipRectOp*>(base_op); | 222 auto* op = static_cast<const ClipRectOp*>(base_op); |
| 223 canvas->clipRect(op->rect, op->op, op->antialias); | 223 canvas->clipRect(op->rect, static_cast<SkClipOp>(op->op), op->antialias); |
| 224 } | 224 } |
| 225 | 225 |
| 226 void ClipRRectOp::Raster(const PaintOp* base_op, | 226 void ClipRRectOp::Raster(const PaintOp* base_op, |
| 227 SkCanvas* canvas, | 227 SkCanvas* canvas, |
| 228 const SkMatrix& original_ctm) { | 228 const SkMatrix& original_ctm) { |
| 229 auto* op = static_cast<const ClipRRectOp*>(base_op); | 229 auto* op = static_cast<const ClipRRectOp*>(base_op); |
| 230 canvas->clipRRect(op->rrect, op->op, op->antialias); | 230 canvas->clipRRect(op->rrect, static_cast<SkClipOp>(op->op), op->antialias); |
| 231 } | 231 } |
| 232 | 232 |
| 233 void ConcatOp::Raster(const PaintOp* base_op, | 233 void ConcatOp::Raster(const PaintOp* base_op, |
| 234 SkCanvas* canvas, | 234 SkCanvas* canvas, |
| 235 const SkMatrix& original_ctm) { | 235 const SkMatrix& original_ctm) { |
| 236 auto* op = static_cast<const ConcatOp*>(base_op); | 236 auto* op = static_cast<const ConcatOp*>(base_op); |
| 237 canvas->concat(op->matrix); | 237 canvas->concat(op->matrix); |
| 238 } | 238 } |
| 239 | 239 |
| 240 void DrawArcOp::RasterWithFlags(const PaintOpWithFlags* base_op, | 240 void DrawArcOp::RasterWithFlags(const PaintOpWithFlags* base_op, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 251 SkCanvas* canvas, | 251 SkCanvas* canvas, |
| 252 const SkMatrix& original_ctm) { | 252 const SkMatrix& original_ctm) { |
| 253 auto* op = static_cast<const DrawCircleOp*>(base_op); | 253 auto* op = static_cast<const DrawCircleOp*>(base_op); |
| 254 canvas->drawCircle(op->cx, op->cy, op->radius, ToSkPaint(*flags)); | 254 canvas->drawCircle(op->cx, op->cy, op->radius, ToSkPaint(*flags)); |
| 255 } | 255 } |
| 256 | 256 |
| 257 void DrawColorOp::Raster(const PaintOp* base_op, | 257 void DrawColorOp::Raster(const PaintOp* base_op, |
| 258 SkCanvas* canvas, | 258 SkCanvas* canvas, |
| 259 const SkMatrix& original_ctm) { | 259 const SkMatrix& original_ctm) { |
| 260 auto* op = static_cast<const DrawColorOp*>(base_op); | 260 auto* op = static_cast<const DrawColorOp*>(base_op); |
| 261 canvas->drawColor(op->color, op->mode); | 261 canvas->drawColor(static_cast<SkColor>(op->color), |
| 262 static_cast<SkBlendMode>(op->mode)); |
| 262 } | 263 } |
| 263 | 264 |
| 264 void DrawDisplayItemListOp::Raster(const PaintOp* base_op, | 265 void DrawDisplayItemListOp::Raster(const PaintOp* base_op, |
| 265 SkCanvas* canvas, | 266 SkCanvas* canvas, |
| 266 const SkMatrix& original_ctm) { | 267 const SkMatrix& original_ctm) { |
| 267 auto* op = static_cast<const DrawDisplayItemListOp*>(base_op); | 268 auto* op = static_cast<const DrawDisplayItemListOp*>(base_op); |
| 268 op->list->Raster(canvas); | 269 op->list->Raster(canvas); |
| 269 } | 270 } |
| 270 | 271 |
| 271 void DrawDRRectOp::RasterWithFlags(const PaintOpWithFlags* base_op, | 272 void DrawDRRectOp::RasterWithFlags(const PaintOpWithFlags* base_op, |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 } | 490 } |
| 490 } | 491 } |
| 491 | 492 |
| 492 int DrawRecordOp::CountSlowPaths() const { | 493 int DrawRecordOp::CountSlowPaths() const { |
| 493 return record->numSlowPaths(); | 494 return record->numSlowPaths(); |
| 494 } | 495 } |
| 495 | 496 |
| 496 AnnotateOp::AnnotateOp(PaintCanvas::AnnotationType annotation_type, | 497 AnnotateOp::AnnotateOp(PaintCanvas::AnnotationType annotation_type, |
| 497 const SkRect& rect, | 498 const SkRect& rect, |
| 498 sk_sp<SkData> data) | 499 sk_sp<SkData> data) |
| 499 : annotation_type(annotation_type), rect(rect), data(std::move(data)) {} | 500 : annotation_type(static_cast<uint8_t>(annotation_type)), |
| 501 rect(rect), |
| 502 data(std::move(data)) {} |
| 500 | 503 |
| 501 AnnotateOp::~AnnotateOp() = default; | 504 AnnotateOp::~AnnotateOp() = default; |
| 502 | 505 |
| 503 DrawDisplayItemListOp::DrawDisplayItemListOp( | 506 DrawDisplayItemListOp::DrawDisplayItemListOp( |
| 504 scoped_refptr<DisplayItemList> list) | 507 scoped_refptr<DisplayItemList> list) |
| 505 : list(list) {} | 508 : list(list) {} |
| 506 | 509 |
| 507 size_t DrawDisplayItemListOp::AdditionalBytesUsed() const { | 510 size_t DrawDisplayItemListOp::AdditionalBytesUsed() const { |
| 508 return list->ApproximateMemoryUsage(); | 511 return list->ApproximateMemoryUsage(); |
| 509 } | 512 } |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 return std::make_pair(op, skip); | 738 return std::make_pair(op, skip); |
| 736 } | 739 } |
| 737 | 740 |
| 738 void PaintOpBuffer::ShrinkToFit() { | 741 void PaintOpBuffer::ShrinkToFit() { |
| 739 if (!used_ || used_ == reserved_) | 742 if (!used_ || used_ == reserved_) |
| 740 return; | 743 return; |
| 741 ReallocBuffer(used_); | 744 ReallocBuffer(used_); |
| 742 } | 745 } |
| 743 | 746 |
| 744 } // namespace cc | 747 } // namespace cc |
| OLD | NEW |