summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authorjhorwich@chromium.org <jhorwich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-23 00:47:54 +0000
committerjhorwich@chromium.org <jhorwich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-23 00:47:54 +0000
commit2d5977eacf30f4e875f5fdc3ff7fba9f31409095 (patch)
treed6df0acc95678722e5b37e9bd31ceee38dc60e83 /webkit
parentf686eb609c169a045cc2123a037ee2f5fb9ae4bb (diff)
downloadchromium_src-2d5977eacf30f4e875f5fdc3ff7fba9f31409095.zip
chromium_src-2d5977eacf30f4e875f5fdc3ff7fba9f31409095.tar.gz
chromium_src-2d5977eacf30f4e875f5fdc3ff7fba9f31409095.tar.bz2
Add SetScale to PPB_WidgetDev, use scale for painting
In order to allow for HiDPI-aware scrollbars, this patch allows the plugin to specify a scale factor used during widget paint operations. The widgets (of which Scrollbar is the only current instance) will continue to use the DIP coordinate system for events and sizing, which is consistent with their WebKit implementation. This change should maintain backward compat. with existing users of interface 'PPB_Wdiget(Dev);0.3' BUG=140833 TEST=Run pre-built (with 0.3 interfaces) PDF plugin and verify scrollbars Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=152495 Review URL: https://chromiumcodereview.appspot.com/10824386 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@152889 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r--webkit/plugins/ppapi/ppb_scrollbar_impl.cc3
-rw-r--r--webkit/plugins/ppapi/ppb_widget_impl.cc7
-rw-r--r--webkit/plugins/ppapi/ppb_widget_impl.h3
3 files changed, 12 insertions, 1 deletions
diff --git a/webkit/plugins/ppapi/ppb_scrollbar_impl.cc b/webkit/plugins/ppapi/ppb_scrollbar_impl.cc
index d6aa704..1a190bb 100644
--- a/webkit/plugins/ppapi/ppb_scrollbar_impl.cc
+++ b/webkit/plugins/ppapi/ppb_scrollbar_impl.cc
@@ -138,7 +138,10 @@ PP_Bool PPB_Scrollbar_Impl::PaintInternal(const gfx::Rect& rect,
skia::PlatformCanvas* canvas = image->GetPlatformCanvas();
if (!canvas || !scrollbar_.get())
return PP_FALSE;
+ canvas->save();
+ canvas->scale(scale(), scale());
scrollbar_->paint(webkit_glue::ToWebCanvas(canvas), rect);
+ canvas->restore();
#if defined(OS_WIN)
if (base::win::GetVersion() == base::win::VERSION_XP)
diff --git a/webkit/plugins/ppapi/ppb_widget_impl.cc b/webkit/plugins/ppapi/ppb_widget_impl.cc
index 306a1b5..8fe0386 100644
--- a/webkit/plugins/ppapi/ppb_widget_impl.cc
+++ b/webkit/plugins/ppapi/ppb_widget_impl.cc
@@ -22,7 +22,8 @@ namespace webkit {
namespace ppapi {
PPB_Widget_Impl::PPB_Widget_Impl(PP_Instance instance)
- : Resource(::ppapi::OBJECT_IS_IMPL, instance) {
+ : Resource(::ppapi::OBJECT_IS_IMPL, instance),
+ scale_(1.0f) {
memset(&location_, 0, sizeof(location_));
}
@@ -59,6 +60,10 @@ void PPB_Widget_Impl::SetLocation(const PP_Rect* location) {
SetLocationInternal(location);
}
+void PPB_Widget_Impl::SetScale(float scale) {
+ scale_ = scale;
+}
+
void PPB_Widget_Impl::Invalidate(const PP_Rect* dirty) {
PluginInstance* plugin_instance = ResourceHelper::GetPluginInstance(this);
if (!plugin_instance)
diff --git a/webkit/plugins/ppapi/ppb_widget_impl.h b/webkit/plugins/ppapi/ppb_widget_impl.h
index caaab2a..7fd143e 100644
--- a/webkit/plugins/ppapi/ppb_widget_impl.h
+++ b/webkit/plugins/ppapi/ppb_widget_impl.h
@@ -37,6 +37,7 @@ class PPB_Widget_Impl : public ::ppapi::Resource,
virtual PP_Bool HandleEvent(PP_Resource pp_input_event) OVERRIDE;
virtual PP_Bool GetLocation(PP_Rect* location) OVERRIDE;
virtual void SetLocation(const PP_Rect* location) OVERRIDE;
+ virtual void SetScale(float scale) OVERRIDE;
// Notifies the plugin instance that the given rect needs to be repainted.
void Invalidate(const PP_Rect* dirty);
@@ -48,9 +49,11 @@ class PPB_Widget_Impl : public ::ppapi::Resource,
virtual void SetLocationInternal(const PP_Rect* location) = 0;
PP_Rect location() const { return location_; }
+ float scale() const { return scale_; }
private:
PP_Rect location_;
+ float scale_;
DISALLOW_COPY_AND_ASSIGN(PPB_Widget_Impl);
};