summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-06-16 07:51:50 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2015-06-16 07:52:00 -0400
commitd65f03d07455c4ea38084af71a38c383bd2b3e19 (patch)
treef28a57e824020b847a365a4794fad7c60330980a
parent3f157f961aa848e7f35fb6224f8eb49526bc12b8 (diff)
fixes for canvas text display on Retina (from Valeriy)
-rw-r--r--libs/canvas/text.cc22
1 files changed, 21 insertions, 1 deletions
diff --git a/libs/canvas/text.cc b/libs/canvas/text.cc
index 78f7d31e48..a77e03020d 100644
--- a/libs/canvas/text.cc
+++ b/libs/canvas/text.cc
@@ -147,10 +147,20 @@ Text::__redraw (Glib::RefPtr<Pango::Layout> layout) const
_width = w + _width_correction;
_height = h;
+#ifdef __APPLE__
+ _image = Cairo::ImageSurface::create (Cairo::FORMAT_ARGB32, _width * 2, _height * 2);
+#else
_image = Cairo::ImageSurface::create (Cairo::FORMAT_ARGB32, _width, _height);
-
+#endif
+
Cairo::RefPtr<Cairo::Context> img_context = Cairo::Context::create (_image);
+#ifdef __APPLE__
+ /* Below, the rendering scaling is set to support retina display
+ */
+ img_context->scale (2, 2);
+#endif
+
/* and draw, in the appropriate color of course */
if (_outline) {
@@ -193,8 +203,18 @@ Text::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const
Rect intersection (i.get());
context->rectangle (intersection.x0, intersection.y0, intersection.width(), intersection.height());
+#ifdef __APPLE__
+ /* Below, the rendering scaling is set to support retina display
+ */
+ Cairo::Matrix original_matrix = context->get_matrix();
+ context->scale (0.5, 0.5);
+ context->set_source (_image, self.x0 * 2, self.y0 * 2);
+ context->fill ();
+ context->set_matrix (original_matrix);
+#else
context->set_source (_image, self.x0, self.y0);
context->fill ();
+#endif
}
void