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

Side by Side Diff: content/renderer/pepper/pepper_plugin_instance_impl.cc

Issue 1881603002: Added SetLayerTransform to PPAPI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added Graphics2D 1.2 to histograms Created 4 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
« no previous file with comments | « content/renderer/pepper/pepper_plugin_instance_impl.h ('k') | ppapi/api/ppb_graphics_2d.idl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_plugin_instance_impl.h" 5 #include "content/renderer/pepper/pepper_plugin_instance_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bit_cast.h" 10 #include "base/bit_cast.h"
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 RenderFrameImpl* render_frame, 472 RenderFrameImpl* render_frame,
473 PluginModule* module, 473 PluginModule* module,
474 ppapi::PPP_Instance_Combined* instance_interface, 474 ppapi::PPP_Instance_Combined* instance_interface,
475 WebPluginContainer* container, 475 WebPluginContainer* container,
476 const GURL& plugin_url) 476 const GURL& plugin_url)
477 : RenderFrameObserver(render_frame), 477 : RenderFrameObserver(render_frame),
478 render_frame_(render_frame), 478 render_frame_(render_frame),
479 module_(module), 479 module_(module),
480 instance_interface_(instance_interface), 480 instance_interface_(instance_interface),
481 pp_instance_(0), 481 pp_instance_(0),
482 graphics2d_translation_(0, 0),
483 graphics2d_scale_(1.f),
482 container_(container), 484 container_(container),
483 layer_bound_to_fullscreen_(false), 485 layer_bound_to_fullscreen_(false),
484 layer_is_hardware_(false), 486 layer_is_hardware_(false),
485 plugin_url_(plugin_url), 487 plugin_url_(plugin_url),
486 document_url_(container ? GURL(container->element().document().url()) 488 document_url_(container ? GURL(container->element().document().url())
487 : GURL()), 489 : GURL()),
488 is_flash_plugin_(module->name() == kFlashPluginName), 490 is_flash_plugin_(module->name() == kFlashPluginName),
489 has_been_clicked_(false), 491 has_been_clicked_(false),
490 javascript_used_(false), 492 javascript_used_(false),
491 full_frame_(false), 493 full_frame_(false),
(...skipping 1046 matching lines...) Expand 10 before | Expand all | Expand 10 after
1538 1540
1539 bool PepperPluginInstanceImpl::LoadTextInputInterface() { 1541 bool PepperPluginInstanceImpl::LoadTextInputInterface() {
1540 if (!plugin_textinput_interface_) { 1542 if (!plugin_textinput_interface_) {
1541 plugin_textinput_interface_ = static_cast<const PPP_TextInput_Dev*>( 1543 plugin_textinput_interface_ = static_cast<const PPP_TextInput_Dev*>(
1542 module_->GetPluginInterface(PPP_TEXTINPUT_DEV_INTERFACE)); 1544 module_->GetPluginInterface(PPP_TEXTINPUT_DEV_INTERFACE));
1543 } 1545 }
1544 1546
1545 return !!plugin_textinput_interface_; 1547 return !!plugin_textinput_interface_;
1546 } 1548 }
1547 1549
1550 void PepperPluginInstanceImpl::SetGraphics2DTransform(
1551 const float& scale,
1552 const gfx::PointF& translation) {
1553 graphics2d_scale_ = scale;
1554 graphics2d_translation_ = translation;
1555
1556 UpdateLayerTransform();
1557 }
1558
1548 void PepperPluginInstanceImpl::UpdateLayerTransform() { 1559 void PepperPluginInstanceImpl::UpdateLayerTransform() {
1549 if (!bound_graphics_2d_platform_ || !texture_layer_) { 1560 if (!bound_graphics_2d_platform_ || !texture_layer_) {
1550 // Currently the transform is only applied for Graphics2D. 1561 // Currently the transform is only applied for Graphics2D.
1551 return; 1562 return;
1552 } 1563 }
1553 // Set the UV coordinates of the texture based on the size of the Graphics2D 1564 // Set the UV coordinates of the texture based on the size of the Graphics2D
1554 // context. By default a texture gets scaled to the size of the layer. But 1565 // context. By default a texture gets scaled to the size of the layer. But
1555 // if the size of the Graphics2D context doesn't match the size of the plugin 1566 // if the size of the Graphics2D context doesn't match the size of the plugin
1556 // then it will be incorrectly stretched. This also affects how the plugin 1567 // then it will be incorrectly stretched. This also affects how the plugin
1557 // is painted when it is being resized. If the Graphics2D contents are 1568 // is painted when it is being resized. If the Graphics2D contents are
1558 // stretched when a plugin is resized while waiting for a new frame from the 1569 // stretched when a plugin is resized while waiting for a new frame from the
1559 // plugin to be rendered, then flickering behavior occurs as in 1570 // plugin to be rendered, then flickering behavior occurs as in
1560 // crbug.com/353453. 1571 // crbug.com/353453.
1561 gfx::SizeF graphics_2d_size_in_dip = 1572 gfx::SizeF graphics_2d_size_in_dip =
1562 gfx::ScaleSize(gfx::SizeF(bound_graphics_2d_platform_->Size()), 1573 gfx::ScaleSize(gfx::SizeF(bound_graphics_2d_platform_->Size()),
1563 bound_graphics_2d_platform_->GetScale()); 1574 bound_graphics_2d_platform_->GetScale());
1564 gfx::Size plugin_size_in_dip(view_data_.rect.size.width, 1575 gfx::Size plugin_size_in_dip(view_data_.rect.size.width,
1565 view_data_.rect.size.height); 1576 view_data_.rect.size.height);
1566 1577
1578 // Adding the SetLayerTransform from Graphics2D to the UV.
1579 // If graphics2d_scale_ is 1.f and graphics2d_translation_ is 0 then UV will
1580 // be top_left (0,0) and lower_right (plugin_size_in_dip.width() /
1581 // graphics_2d_size_in_dip.width(), plugin_size_in_dip.height() /
1582 // graphics_2d_size_in_dip.height())
1583 gfx::PointF top_left =
1584 gfx::PointF(-graphics2d_translation_.x() / graphics2d_scale_,
1585 -graphics2d_translation_.y() / graphics2d_scale_);
1586 gfx::PointF lower_right =
1587 gfx::PointF((1 / graphics2d_scale_) * plugin_size_in_dip.width() -
1588 graphics2d_translation_.x() / graphics2d_scale_,
1589 (1 / graphics2d_scale_) * plugin_size_in_dip.height() -
1590 graphics2d_translation_.y() / graphics2d_scale_);
1567 texture_layer_->SetUV( 1591 texture_layer_->SetUV(
1568 gfx::PointF(0.0f, 0.0f), 1592 gfx::PointF(top_left.x() / graphics_2d_size_in_dip.width(),
1569 gfx::PointF( 1593 top_left.y() / graphics_2d_size_in_dip.height()),
1570 plugin_size_in_dip.width() / graphics_2d_size_in_dip.width(), 1594 gfx::PointF(lower_right.x() / graphics_2d_size_in_dip.width(),
1571 plugin_size_in_dip.height() / graphics_2d_size_in_dip.height())); 1595 lower_right.y() / graphics_2d_size_in_dip.height()));
1572 } 1596 }
1573 1597
1574 bool PepperPluginInstanceImpl::PluginHasFocus() const { 1598 bool PepperPluginInstanceImpl::PluginHasFocus() const {
1575 return flash_fullscreen_ || (has_webkit_focus_ && has_content_area_focus_); 1599 return flash_fullscreen_ || (has_webkit_focus_ && has_content_area_focus_);
1576 } 1600 }
1577 1601
1578 void PepperPluginInstanceImpl::SendFocusChangeNotification() { 1602 void PepperPluginInstanceImpl::SendFocusChangeNotification() {
1579 // Keep a reference on the stack. RenderViewImpl::PepperFocusChanged may 1603 // Keep a reference on the stack. RenderViewImpl::PepperFocusChanged may
1580 // remove the <embed> from the DOM, which will make the PepperWebPluginImpl 1604 // remove the <embed> from the DOM, which will make the PepperWebPluginImpl
1581 // drop its reference, usually the last one. This is similar to possible 1605 // drop its reference, usually the last one. This is similar to possible
(...skipping 1742 matching lines...) Expand 10 before | Expand all | Expand 10 after
3324 } 3348 }
3325 3349
3326 void PepperPluginInstanceImpl::ConvertDIPToViewport(gfx::Rect* rect) const { 3350 void PepperPluginInstanceImpl::ConvertDIPToViewport(gfx::Rect* rect) const {
3327 rect->set_x(rect->x() / viewport_to_dip_scale_); 3351 rect->set_x(rect->x() / viewport_to_dip_scale_);
3328 rect->set_y(rect->y() / viewport_to_dip_scale_); 3352 rect->set_y(rect->y() / viewport_to_dip_scale_);
3329 rect->set_width(rect->width() / viewport_to_dip_scale_); 3353 rect->set_width(rect->width() / viewport_to_dip_scale_);
3330 rect->set_height(rect->height() / viewport_to_dip_scale_); 3354 rect->set_height(rect->height() / viewport_to_dip_scale_);
3331 } 3355 }
3332 3356
3333 } // namespace content 3357 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/pepper/pepper_plugin_instance_impl.h ('k') | ppapi/api/ppb_graphics_2d.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698