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

Unified Diff: native_client_sdk/src/examples/api/graphics_2d/graphics_2d.cc

Issue 397173003: NaCl SDK: Demonstrate use of pp::Graphics2D::SetScale() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: native_client_sdk/src/examples/api/graphics_2d/graphics_2d.cc
diff --git a/native_client_sdk/src/examples/api/graphics_2d/graphics_2d.cc b/native_client_sdk/src/examples/api/graphics_2d/graphics_2d.cc
index c519cfd192925dff61d5de83af980959b15e3939..7a56619c6634b0cf1a7e0dd3405069ecda6c6173 100644
--- a/native_client_sdk/src/examples/api/graphics_2d/graphics_2d.cc
+++ b/native_client_sdk/src/examples/api/graphics_2d/graphics_2d.cc
@@ -48,7 +48,8 @@ class Graphics2DInstance : public pp::Instance {
: pp::Instance(instance),
callback_factory_(this),
mouse_down_(false),
- buffer_(NULL) {}
+ buffer_(NULL),
+ device_scale_(1.0f) {}
~Graphics2DInstance() { delete[] buffer_; }
@@ -62,7 +63,9 @@ class Graphics2DInstance : public pp::Instance {
}
virtual void DidChangeView(const pp::View& view) {
- pp::Size new_size = view.GetRect().size();
+ device_scale_ = view.GetDeviceScale();
+ pp::Size new_size = pp::Size(view.GetRect().width() * device_scale_,
+ view.GetRect().height() * device_scale_);
if (!CreateContext(new_size))
return;
@@ -86,7 +89,8 @@ class Graphics2DInstance : public pp::Instance {
if (mouse_event.GetButton() == PP_INPUTEVENT_MOUSEBUTTON_NONE)
return true;
- mouse_ = mouse_event.GetPosition();
+ mouse_ = pp::Point(mouse_event.GetPosition().x() * device_scale_,
+ mouse_event.GetPosition().y() * device_scale_);
mouse_down_ = true;
}
@@ -112,6 +116,9 @@ class Graphics2DInstance : public pp::Instance {
bool CreateContext(const pp::Size& new_size) {
const bool kIsAlwaysOpaque = true;
context_ = pp::Graphics2D(this, new_size, kIsAlwaysOpaque);
+ // Call SetScale before BindGraphics so the image is scaled correctly on
+ // HiDPI displays.
+ context_.SetScale(1.0f / device_scale_);
if (!BindGraphics(context_)) {
fprintf(stderr, "Unable to bind 2d context!\n");
context_ = pp::Graphics2D();
@@ -182,7 +189,7 @@ class Graphics2DInstance : public pp::Instance {
int height = size_.height();
// Draw a circle at the mouse position.
- int radius = kMouseRadius;
+ int radius = kMouseRadius * device_scale_;
binji 2014/07/17 00:11:38 no warning here about truncating from float to int
Josh Horwich 2014/07/17 00:20:58 I haven't seen any (here, and the pp::Size / pp::P
int cx = mouse_.x();
int cy = mouse_.y();
int minx = cx - radius <= 0 ? 1 : cx - radius;
@@ -261,6 +268,7 @@ class Graphics2DInstance : public pp::Instance {
bool mouse_down_;
uint8_t* buffer_;
uint32_t palette_[256];
+ float device_scale_;
};
class Graphics2DModule : public pp::Module {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698