diff src/graphics.cc @ 8599:b4fb0a52b15e

Improve default property compatibility.
author Ben Abbott <bpabbott@mac.com>
date Tue, 27 Jan 2009 07:20:58 -0500
parents 5cc594679cdc
children ee70d438a5b4
line wrap: on
line diff
--- a/src/graphics.cc
+++ b/src/graphics.cc
@@ -188,6 +188,19 @@
 }
 
 static Matrix
+default_axes_tick (void)
+{
+  Matrix m (1, 6, 0.0);
+  m(0) = 0.0;
+  m(1) = 0.2;
+  m(2) = 0.4;
+  m(3) = 0.6;
+  m(4) = 0.8;
+  m(5) = 1.0;
+  return m;
+}
+
+static Matrix
 default_figure_position (void)
 {
   Matrix m (1, 4, 0.0);
@@ -199,6 +212,26 @@
 }
 
 static Matrix
+default_figure_papersize (void)
+{
+  Matrix m (1, 2, 0.0);
+  m(0) = 8.5;
+  m(1) = 11.5;
+  return m;
+}
+
+static Matrix
+default_figure_paperposition (void)
+{
+  Matrix m (1, 4, 0.0);
+  m(0) = 0.25;
+  m(1) = 2.50;
+  m(2) = 8.00;
+  m(3) = 6.00;
+  return m;
+}
+
+static Matrix
 convert_position (const Matrix& pos, const caseless_str& from_units,
 		  const caseless_str& to_units,
 		  const Matrix& parent_dim = Matrix (1, 2, 0.0),
@@ -218,7 +251,21 @@
     }
   else if (from_units.compare ("characters"))
     {
-      // FIXME -- implement this.
+      res = backend.get_screen_resolution ();
+
+      double f = 0.0;
+
+      // FIXME -- this assumes the system font is Helvetica 10pt 
+      //          (for which "x" requires 6x12 pixels at 74.951 pixels/inch)
+      f = 12.0 * res / 74.951;
+
+      if (f > 0)
+	{
+	  retval(0) = 0.5 * pos(0) * f;
+	  retval(1) = pos(1) * f;
+	  retval(2) = 0.5 * pos(2) * f;
+	  retval(3) = pos(3) * f;
+	}
     }
   else
     {
@@ -253,7 +300,19 @@
 	}
       else if (to_units.compare ("characters"))
 	{
-	  // FIXME -- implement this.
+	  res = backend.get_screen_resolution ();
+
+	  double f = 0.0;
+
+	  f = 12.0 * res / 74.951;
+
+	  if (f > 0)
+	    {
+	      retval(0) = 2 * retval(0) / f;
+	      retval(1) = retval(1) / f;
+	      retval(2) = 2 * retval(2) / f;
+	      retval(3) = retval(3) / f;
+	    }
 	}
       else
 	{