diff options
author | Walter Bender <walter@walter-laptop.(none)> | 2009-10-19 18:34:08 (GMT) |
---|---|---|
committer | Walter Bender <walter@walter-laptop.(none)> | 2009-10-19 18:34:08 (GMT) |
commit | a9980f600f9388ec9b76e3983915ae4d23daea05 (patch) | |
tree | c5a725670969e5ebe1ca7a325cb9b93061542c62 /show_rulers.py | |
parent | 45e6a5e0fb8dc31c040e3d838063aaebd96038a0 (diff) |
nw toolbars, dpi support
Diffstat (limited to 'show_rulers.py')
-rw-r--r-- | show_rulers.py | 121 |
1 files changed, 57 insertions, 64 deletions
diff --git a/show_rulers.py b/show_rulers.py index 126ad78..1cb7d34 100644 --- a/show_rulers.py +++ b/show_rulers.py @@ -17,70 +17,75 @@ # along with Ruler. If not, see <http://www.gnu.org/licenses/> from __future__ import division -import paper import cairo from util import mm +from util import set_background_color +from util import write + import os.path -def subactivity_init(api): - api.declare_subactivity('ruler', ScreenOfRulers()) +class ScreenOfRulers(): + def __init__(self,font,font_bold,w,h): + self.font = font + self.font_bold = font_bold + self.w = w + self.h = h -class ScreenOfRulers(paper.Drawing): - def draw(self,c): - self.set_background_color('white') + def draw(self,c,dpi): + set_background_color(c,self.w,self.h) c.set_antialias(cairo.ANTIALIAS_GRAY) - self.draw_ruler_pair(c,mm(20)) + self.draw_ruler_pair(c,dpi,mm(dpi,20)) # only calculate offsets if on an OLPC XO-1 if os.path.exists('/sys/power/olpc-pm'): - offset_of_xo_side_from_screen = mm(-38.5) #XXX needs checking - c.move_to(offset_of_xo_side_from_screen, mm(65)) - self.draw_cm_ruler(c,180) + offset_of_xo_side_from_screen = mm(dpi,-38.5) #XXX needs checking + c.move_to(offset_of_xo_side_from_screen, mm(dpi,65)) + self.draw_cm_ruler(c,dpi,180) - offset_of_molding_from_screen = mm(-0.4) #XXX +- 0.2 ?? - c.move_to(offset_of_molding_from_screen, mm(100)) - self.draw_cm_ruler(c,150) + offset_of_molding_from_screen = mm(dpi,-0.4) #XXX +- 0.2 ?? + c.move_to(offset_of_molding_from_screen, mm(dpi,100)) + self.draw_cm_ruler(c,dpi,150) else: - offset_of_xo_side_from_screen = mm(0) - c.move_to(offset_of_xo_side_from_screen, mm(65)) - self.draw_cm_ruler(c,180) + offset_of_xo_side_from_screen = mm(dpi,0) + c.move_to(offset_of_xo_side_from_screen, mm(dpi,65)) + self.draw_cm_ruler(c,dpi,180) - offset_of_molding_from_screen = mm(0) - c.move_to(offset_of_molding_from_screen, mm(100)) - self.draw_cm_ruler(c,150) + offset_of_molding_from_screen = mm(dpi,0) + c.move_to(offset_of_molding_from_screen, mm(dpi,100)) + self.draw_cm_ruler(c,dpi,150) - def draw_ruler_pair(self,c,y): + def draw_ruler_pair(self,c,dpi,y): - c.move_to(mm(10),y) - self.connect_rulers(c) + c.move_to(mm(dpi,10),y) + self.connect_rulers(c,dpi) - c.move_to(mm(10),y) - self.draw_cm_ruler(c) + c.move_to(mm(dpi,10),y) + self.draw_cm_ruler(c,dpi) - c.move_to(mm(10),y+mm(10)) - self.draw_mm_ruler(c) + c.move_to(mm(dpi,10),y+mm(dpi,10)) + self.draw_mm_ruler(c,dpi) - def connect_rulers(self,c): + def connect_rulers(self,c,dpi): c.save() c.set_line_cap(cairo.LINE_CAP_SQUARE) c.translate(*c.get_current_point()) c.set_line_width(1) for xm in range(0,130+1,10): - c.move_to(mm(xm),0) - c.rel_line_to(0,mm(10)) + c.move_to(mm(dpi,xm),0) + c.rel_line_to(0,mm(dpi,10)) c.stroke() c.set_line_width(2) c.move_to(0,0) - c.rel_line_to(0,mm(10)) + c.rel_line_to(0,mm(dpi,10)) c.stroke() c.restore() - def draw_cm_ruler(self,c,width=130): + def draw_cm_ruler(self,c,dpi,width=130): c.save() c.set_line_cap(cairo.LINE_CAP_SQUARE) @@ -88,29 +93,23 @@ class ScreenOfRulers(paper.Drawing): c.set_line_width(5) c.move_to(0,0) - c.line_to(mm(width),0) - for x in [mm(xm) for xm in range(0,width+1,10)]: + c.line_to(mm(dpi,width),0) + for x in [mm(dpi,xm) for xm in range(0,width+1,10)]: c.move_to(x,0) - c.rel_line_to(0,mm(-3)) + c.rel_line_to(0,mm(dpi,-3)) c.stroke() - self.set_font('helvetica bold 12') - self.set_fontsize(mm(2.5)) - - for x,xm in [(mm(xm),xm) for xm in range(0,width+1,10)]: + for x,xm in [(mm(dpi,xm),xm) for xm in range(0,width+1,10)]: n = xm/10 - c.move_to(x,mm(-4)) - self.write("%d" % n,centered=True) + c.move_to(x,mm(dpi,-4)) + write(c,"%d" % n,self.font_bold,mm(dpi,2.5),centered=True) - self.set_font('helvetica 12') - self.set_fontsize(mm(2)) - - c.move_to(mm(1.5),mm(-4)) - self.write("cm") + c.move_to(mm(dpi,1.5),mm(dpi,-4)) + write(c,"cm",self.font_bold,mm(dpi,2)) c.restore() - def draw_mm_ruler(self,c,width=130): + def draw_mm_ruler(self,c,dpi,width=130): c.save() c.set_line_cap(cairo.LINE_CAP_SQUARE) @@ -118,34 +117,28 @@ class ScreenOfRulers(paper.Drawing): c.move_to(0,0) c.set_line_width(4) - c.line_to(mm(width),0) - for x in [mm(xm) for xm in range(0,width+1,10)]: + c.line_to(mm(dpi,width),0) + for x in [mm(dpi,xm) for xm in range(0,width+1,10)]: c.move_to(x,0) - c.rel_line_to(0,mm(3)) + c.rel_line_to(0,mm(dpi,3)) c.stroke() c.set_line_width(3) - for x in [mm(xm) for xm in range(0,width,5)]: + for x in [mm(dpi,xm) for xm in range(0,width,5)]: c.move_to(x,0) - c.rel_line_to(0,mm(2.2)) - for x in [mm(xm) for xm in range(0,width,1)]: + c.rel_line_to(0,mm(dpi,2.2)) + for x in [mm(dpi,xm) for xm in range(0,width,1)]: c.move_to(x,0) - c.rel_line_to(0,mm(2)) + c.rel_line_to(0,mm(dpi,2)) c.stroke() - self.set_font('helvetica 12') - self.set_fontsize(mm(2)) - - base = mm(7) - for x,xm in [(mm(xm),xm) for xm in range(0,width+1,10)]: + base = mm(dpi,7) + for x,xm in [(mm(dpi,xm),xm) for xm in range(0,width+1,10)]: c.move_to(x,base) - self.write("%d" % xm,centered=True) + write(c,"%d" % xm,self.font,mm(dpi,2),centered=True) - self.set_font('helvetica 12') - self.set_fontsize(mm(1.5)) - - c.move_to(mm(1.2),base) - self.write("mm") + c.move_to(mm(dpi,1.2),base) + write(c,"mm",self.font,mm(dpi,1.5)) c.restore() |