Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2012-02-10 21:11:07 (GMT)
committer Walter Bender <walter.bender@gmail.com>2012-02-10 21:11:07 (GMT)
commit81acff08c7fcb54f84c6c3868d8e5cb90f327ecd (patch)
tree0a2f2f1b8c93a4fd07293c5e43ca449325f34017
parent14ce8e782d1ee958bdac6e78fd1576aa4d2d2862 (diff)
calculate dpi
-rw-r--r--RulerActivity.py23
-rw-r--r--util.py8
2 files changed, 7 insertions, 24 deletions
diff --git a/RulerActivity.py b/RulerActivity.py
index f536c09..b3b012b 100644
--- a/RulerActivity.py
+++ b/RulerActivity.py
@@ -55,7 +55,7 @@ _logger = logging.getLogger("ruler-activity")
from gettext import gettext as _
-from util import get_hardware
+from util import get_hardware, calc_dpi
import show_rulers
import show_grids
import show_checkers
@@ -70,7 +70,7 @@ class MyCanvas(gtk.DrawingArea):
self._draw_ruler = False
self._object = None
self.connect('expose-event', self.__expose_event_cb)
- self.dpi = 200
+ self._dpi = 96
def __expose_event_cb(self, drawing_area, event):
cr = self.window.cairo_create()
@@ -120,21 +120,8 @@ class RulerActivity(activity.Activity):
width = gtk.gdk.screen_width()
height = gtk.gdk.screen_height() - GRID_CELL_SIZE
- # Read the dpi from the Journal
- if get_hardware()[0:2] == 'xo':
- if width == 1024:
- self._canvas.set_dpi(160) # OLPC XO 3.0
- else:
- self._canvas.set_dpi(200) # other OLPC XO
- self.known_dpi = True
- else:
- self.known_dpi = False
- try:
- dpi = self.metadata['dpi']
- _logger.debug("Read dpi: " + str(dpi))
- self._canvas.set_dpi(int(dpi))
- except KeyError:
- self._canvas.set_dpi(96) # Just a guess
+ dpi, self.known_dpi = calc_dpi()
+ self._canvas.set_dpi(dpi)
# Create instances of our graphics
self._r = show_rulers.ScreenOfRulers(font, font_bold, width, height)
@@ -194,10 +181,10 @@ class RulerActivity(activity.Activity):
toolbar_box.toolbar.insert(self.checker, -1)
if not self.known_dpi:
+ print self.known_dpi
separator = gtk.SeparatorToolItem()
separator.show()
toolbar_box.toolbar.insert(separator, -1)
-
dpi = self._canvas.get_dpi()
self._dpi_spin_adj = gtk.Adjustment(dpi, 72, 200, 2, 32, 0)
self._dpi_spin = gtk.SpinButton(self._dpi_spin_adj, 0, 0)
diff --git a/util.py b/util.py
index a043adf..4f9e76f 100644
--- a/util.py
+++ b/util.py
@@ -78,10 +78,6 @@ def dimensions_mm(dpi, w, h):
return int(w * 25.40 / dpi), int(h * 25.40 / dpi)
-def calc_dpmm():
- return 1.0*gtk.gdk.screen_width()/gtk.gdk.screen_width_mm()
-
-
def calc_dpi():
'''Looking for 'dimensions' line in xdpyinfo
dimensions: 1280x800 pixels (339x212 millimeters)'''
@@ -90,10 +86,10 @@ def calc_dpi():
strings = output[find(output, 'dimensions:'):].split()
w = int(strings[1].split('x')[0]) # e.g., 1280x800
mm = int(strings[3][1:].split('x')[0]) # e.g., (339x212)
- return int(w * 25.4 / w)
+ return int((w * 25.4 / mm) + 0.5), True
else:
# just in case the above fails
- return 96
+ return 96, False
#
# Cairo-related utilities