OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/renderer/pepper/pepper_graphics_2d_host.h" | 5 #include "content/renderer/pepper/pepper_graphics_2d_host.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 SkRect image_data_rect = | 347 SkRect image_data_rect = |
348 gfx::RectToSkRect(gfx::Rect(plugin_rect.origin(), image_size)); | 348 gfx::RectToSkRect(gfx::Rect(plugin_rect.origin(), image_size)); |
349 canvas->clipRect(image_data_rect, SkRegion::kDifference_Op); | 349 canvas->clipRect(image_data_rect, SkRegion::kDifference_Op); |
350 | 350 |
351 SkPaint paint; | 351 SkPaint paint; |
352 paint.setXfermodeMode(SkXfermode::kSrc_Mode); | 352 paint.setXfermodeMode(SkXfermode::kSrc_Mode); |
353 paint.setColor(SK_ColorWHITE); | 353 paint.setColor(SK_ColorWHITE); |
354 canvas->drawRect(sk_invalidate_rect, paint); | 354 canvas->drawRect(sk_invalidate_rect, paint); |
355 } | 355 } |
356 | 356 |
357 SkBitmap image; | |
358 // Copy to device independent bitmap when target canvas doesn't support | |
359 // platform paint. | |
360 if (!skia::SupportsPlatformPaint(canvas)) | |
361 backing_bitmap.copyTo(&image, kN32_SkColorType); | |
362 else | |
363 image = backing_bitmap; | |
364 | |
365 SkPaint paint; | 357 SkPaint paint; |
366 if (is_always_opaque_) { | 358 if (is_always_opaque_) { |
367 // When we know the device is opaque, we can disable blending for slightly | 359 // When we know the device is opaque, we can disable blending for slightly |
368 // more optimized painting. | 360 // more optimized painting. |
369 paint.setXfermodeMode(SkXfermode::kSrc_Mode); | 361 paint.setXfermodeMode(SkXfermode::kSrc_Mode); |
370 } | 362 } |
371 | 363 |
372 SkPoint pixel_origin(PointToSkPoint(plugin_rect.origin())); | 364 SkPoint pixel_origin(PointToSkPoint(plugin_rect.origin())); |
373 if (scale_ != 1.0f && scale_ > 0.0f) { | 365 if (scale_ != 1.0f && scale_ > 0.0f) { |
374 canvas->scale(scale_, scale_); | 366 canvas->scale(scale_, scale_); |
375 pixel_origin.scale(1.0f / scale_); | 367 pixel_origin.scale(1.0f / scale_); |
376 } | 368 } |
377 canvas->drawBitmap(image, pixel_origin.x(), pixel_origin.y(), &paint); | 369 canvas->drawBitmap(backing_bitmap, pixel_origin.x(), pixel_origin.y(), |
| 370 &paint); |
378 } | 371 } |
379 | 372 |
380 void PepperGraphics2DHost::ViewInitiatedPaint() { | 373 void PepperGraphics2DHost::ViewInitiatedPaint() { |
381 TRACE_EVENT0("pepper", "PepperGraphics2DHost::ViewInitiatedPaint"); | 374 TRACE_EVENT0("pepper", "PepperGraphics2DHost::ViewInitiatedPaint"); |
382 if (need_flush_ack_) { | 375 if (need_flush_ack_) { |
383 SendFlushAck(); | 376 SendFlushAck(); |
384 need_flush_ack_ = false; | 377 need_flush_ack_ = false; |
385 } | 378 } |
386 } | 379 } |
387 | 380 |
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
835 gfx::Point inverse_scaled_point = | 828 gfx::Point inverse_scaled_point = |
836 gfx::ScaleToFlooredPoint(*delta, inverse_scale); | 829 gfx::ScaleToFlooredPoint(*delta, inverse_scale); |
837 if (original_delta != inverse_scaled_point) | 830 if (original_delta != inverse_scaled_point) |
838 return false; | 831 return false; |
839 } | 832 } |
840 | 833 |
841 return true; | 834 return true; |
842 } | 835 } |
843 | 836 |
844 } // namespace content | 837 } // namespace content |
OLD | NEW |