summaryrefslogtreecommitdiffstats
path: root/ppapi/cpp/dev/widget_dev.cc
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 /ppapi/cpp/dev/widget_dev.cc
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 'ppapi/cpp/dev/widget_dev.cc')
-rw-r--r--ppapi/cpp/dev/widget_dev.cc59
1 files changed, 42 insertions, 17 deletions
diff --git a/ppapi/cpp/dev/widget_dev.cc b/ppapi/cpp/dev/widget_dev.cc
index 97d941f..14efe1d 100644
--- a/ppapi/cpp/dev/widget_dev.cc
+++ b/ppapi/cpp/dev/widget_dev.cc
@@ -16,8 +16,12 @@ namespace pp {
namespace {
-template <> const char* interface_name<PPB_Widget_Dev>() {
- return PPB_WIDGET_DEV_INTERFACE;
+template <> const char* interface_name<PPB_Widget_Dev_0_3>() {
+ return PPB_WIDGET_DEV_INTERFACE_0_3;
+}
+
+template <> const char* interface_name<PPB_Widget_Dev_0_4>() {
+ return PPB_WIDGET_DEV_INTERFACE_0_4;
}
} // namespace
@@ -29,30 +33,51 @@ Widget_Dev::Widget_Dev(const Widget_Dev& other) : Resource(other) {
}
bool Widget_Dev::Paint(const Rect& rect, ImageData* image) {
- if (!has_interface<PPB_Widget_Dev>())
- return false;
- return PP_ToBool(get_interface<PPB_Widget_Dev>()->Paint(
- pp_resource(), &rect.pp_rect(), image->pp_resource()));
+ if (has_interface<PPB_Widget_Dev_0_4>()) {
+ return PP_ToBool(get_interface<PPB_Widget_Dev_0_4>()->Paint(
+ pp_resource(), &rect.pp_rect(), image->pp_resource()));
+ } else if (has_interface<PPB_Widget_Dev_0_3>()) {
+ return PP_ToBool(get_interface<PPB_Widget_Dev_0_3>()->Paint(
+ pp_resource(), &rect.pp_rect(), image->pp_resource()));
+ }
+ return false;
}
bool Widget_Dev::HandleEvent(const InputEvent& event) {
- if (!has_interface<PPB_Widget_Dev>())
- return false;
- return PP_ToBool(get_interface<PPB_Widget_Dev>()->HandleEvent(
- pp_resource(), event.pp_resource()));
+ if (has_interface<PPB_Widget_Dev_0_4>()) {
+ return PP_ToBool(get_interface<PPB_Widget_Dev_0_4>()->HandleEvent(
+ pp_resource(), event.pp_resource()));
+ } else if (has_interface<PPB_Widget_Dev_0_3>()) {
+ return PP_ToBool(get_interface<PPB_Widget_Dev_0_3>()->HandleEvent(
+ pp_resource(), event.pp_resource()));
+ }
+ return false;
}
bool Widget_Dev::GetLocation(Rect* location) {
- if (!has_interface<PPB_Widget_Dev>())
- return false;
- return PP_ToBool(get_interface<PPB_Widget_Dev>()->GetLocation(
- pp_resource(), &location->pp_rect()));
+ if (has_interface<PPB_Widget_Dev_0_4>()) {
+ return PP_ToBool(get_interface<PPB_Widget_Dev_0_4>()->GetLocation(
+ pp_resource(), &location->pp_rect()));
+ } else if (has_interface<PPB_Widget_Dev_0_3>()) {
+ return PP_ToBool(get_interface<PPB_Widget_Dev_0_3>()->GetLocation(
+ pp_resource(), &location->pp_rect()));
+ }
+ return false;
}
void Widget_Dev::SetLocation(const Rect& location) {
- if (has_interface<PPB_Widget_Dev>())
- get_interface<PPB_Widget_Dev>()->SetLocation(pp_resource(),
- &location.pp_rect());
+ if (has_interface<PPB_Widget_Dev_0_4>()) {
+ get_interface<PPB_Widget_Dev_0_4>()->SetLocation(pp_resource(),
+ &location.pp_rect());
+ } else if (has_interface<PPB_Widget_Dev_0_3>()) {
+ get_interface<PPB_Widget_Dev_0_3>()->SetLocation(pp_resource(),
+ &location.pp_rect());
+ }
+}
+
+void Widget_Dev::SetScale(float scale) {
+ if (has_interface<PPB_Widget_Dev_0_4>())
+ get_interface<PPB_Widget_Dev_0_4>()->SetScale(pp_resource(), scale);
}
} // namespace pp