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 "webkit/plugins/ppapi/ppapi_plugin_instance.h" | 5 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 1148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1159 | 1159 |
1160 // We specifically want to compare against the area covered by the backing | 1160 // We specifically want to compare against the area covered by the backing |
1161 // store when seeing if we cover the given paint bounds, since the backing | 1161 // store when seeing if we cover the given paint bounds, since the backing |
1162 // store could be smaller than the declared plugin area. | 1162 // store could be smaller than the declared plugin area. |
1163 PPB_ImageData_Impl* image_data = GetBoundGraphics2D()->image_data(); | 1163 PPB_ImageData_Impl* image_data = GetBoundGraphics2D()->image_data(); |
1164 // ImageDatas created by NaCl don't have a PlatformImage, so can't be | 1164 // ImageDatas created by NaCl don't have a PlatformImage, so can't be |
1165 // optimized this way. | 1165 // optimized this way. |
1166 if (!image_data->PlatformImage()) | 1166 if (!image_data->PlatformImage()) |
1167 return false; | 1167 return false; |
1168 | 1168 |
1169 gfx::Point plugin_origin = PP_ToGfxPoint(view_data_.rect.point); | 1169 gfx::Point plugin_origin = PP_ToGfxPoint(view_data_.rect.point); |
Peter Kasting
2012/10/30 01:14:14
Nit: Construct a Vector2d here instead. Then you
| |
1170 // Convert |paint_bounds| to be relative to the left-top corner of the plugin. | 1170 // Convert |paint_bounds| to be relative to the left-top corner of the plugin. |
1171 gfx::Rect relative_paint_bounds(paint_bounds); | 1171 gfx::Rect relative_paint_bounds(paint_bounds); |
1172 relative_paint_bounds.Offset(-plugin_origin.x(), -plugin_origin.y()); | 1172 relative_paint_bounds.Offset(-plugin_origin.x(), -plugin_origin.y()); |
1173 | 1173 |
1174 gfx::Rect pixel_plugin_backing_store_rect( | 1174 gfx::Rect pixel_plugin_backing_store_rect( |
1175 0, 0, image_data->width(), image_data->height()); | 1175 0, 0, image_data->width(), image_data->height()); |
1176 float scale = GetBoundGraphics2D()->GetScale(); | 1176 float scale = GetBoundGraphics2D()->GetScale(); |
1177 gfx::RectF scaled_backing_store_rect = pixel_plugin_backing_store_rect; | 1177 gfx::RectF scaled_backing_store_rect = pixel_plugin_backing_store_rect; |
1178 scaled_backing_store_rect.Scale(scale); | 1178 scaled_backing_store_rect.Scale(scale); |
1179 gfx::Rect plugin_backing_store_rect = | 1179 gfx::Rect plugin_backing_store_rect = |
1180 gfx::ToEnclosedRect(scaled_backing_store_rect); | 1180 gfx::ToEnclosedRect(scaled_backing_store_rect); |
1181 | 1181 |
1182 gfx::Rect clip_page = PP_ToGfxRect(view_data_.clip_rect); | 1182 gfx::Rect clip_page = PP_ToGfxRect(view_data_.clip_rect); |
1183 gfx::Rect plugin_paint_rect = plugin_backing_store_rect; | 1183 gfx::Rect plugin_paint_rect = plugin_backing_store_rect; |
1184 plugin_paint_rect.Intersect(clip_page); | 1184 plugin_paint_rect.Intersect(clip_page); |
1185 if (!plugin_paint_rect.Contains(relative_paint_bounds)) | 1185 if (!plugin_paint_rect.Contains(relative_paint_bounds)) |
1186 return false; | 1186 return false; |
1187 | 1187 |
1188 // Don't do optimized painting if the area to paint intersects with the | 1188 // Don't do optimized painting if the area to paint intersects with the |
1189 // cut-out rects, otherwise we will paint over them. | 1189 // cut-out rects, otherwise we will paint over them. |
1190 for (std::vector<gfx::Rect>::const_iterator iter = cut_outs_rects_.begin(); | 1190 for (std::vector<gfx::Rect>::const_iterator iter = cut_outs_rects_.begin(); |
1191 iter != cut_outs_rects_.end(); ++iter) { | 1191 iter != cut_outs_rects_.end(); ++iter) { |
1192 if (relative_paint_bounds.Intersects(*iter)) | 1192 if (relative_paint_bounds.Intersects(*iter)) |
1193 return false; | 1193 return false; |
1194 } | 1194 } |
1195 | 1195 |
1196 *dib = image_data->PlatformImage()->GetTransportDIB(); | 1196 *dib = image_data->PlatformImage()->GetTransportDIB(); |
1197 plugin_backing_store_rect.Offset(plugin_origin); | 1197 plugin_backing_store_rect.Offset(plugin_origin.OffsetFromOrigin()); |
1198 *location = plugin_backing_store_rect; | 1198 *location = plugin_backing_store_rect; |
1199 clip_page.Offset(plugin_origin); | 1199 clip_page.Offset(plugin_origin.OffsetFromOrigin()); |
1200 *clip = clip_page; | 1200 *clip = clip_page; |
1201 // The plugin scale factor is inverted, e.g. for a device scale factor of 2x | 1201 // The plugin scale factor is inverted, e.g. for a device scale factor of 2x |
1202 // the plugin scale factor is 0.5. | 1202 // the plugin scale factor is 0.5. |
1203 *scale_factor = 1.0 / scale; | 1203 *scale_factor = 1.0 / scale; |
1204 return true; | 1204 return true; |
1205 } | 1205 } |
1206 | 1206 |
1207 string16 PluginInstance::GetSelectedText(bool html) { | 1207 string16 PluginInstance::GetSelectedText(bool html) { |
1208 // Keep a reference on the stack. See NOTE above. | 1208 // Keep a reference on the stack. See NOTE above. |
1209 scoped_refptr<PluginInstance> ref(this); | 1209 scoped_refptr<PluginInstance> ref(this); |
(...skipping 2018 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3228 screen_size_for_fullscreen_ = gfx::Size(); | 3228 screen_size_for_fullscreen_ = gfx::Size(); |
3229 WebElement element = container_->element(); | 3229 WebElement element = container_->element(); |
3230 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); | 3230 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); |
3231 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); | 3231 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); |
3232 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); | 3232 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); |
3233 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); | 3233 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); |
3234 } | 3234 } |
3235 | 3235 |
3236 } // namespace ppapi | 3236 } // namespace ppapi |
3237 } // namespace webkit | 3237 } // namespace webkit |
OLD | NEW |