Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/show_angles.py
diff options
context:
space:
mode:
authorWalter Bender <walter@sugarlabs.org>2010-07-21 23:28:13 (GMT)
committer Walter Bender <walter@sugarlabs.org>2010-07-21 23:28:13 (GMT)
commit0b5e7b6fd4d633fe62f5d65ccaa7c3acb79c3c5e (patch)
tree6105d8f5e61e03561a4dcfbc786a083eb9110fef /show_angles.py
parentbd49db00415ef1bedcf32b0a169984acfdb14cc9 (diff)
fixed scaling problems
Diffstat (limited to 'show_angles.py')
-rw-r--r--show_angles.py129
1 files changed, 72 insertions, 57 deletions
diff --git a/show_angles.py b/show_angles.py
index eb15d49..f4f2c08 100644
--- a/show_angles.py
+++ b/show_angles.py
@@ -16,112 +16,127 @@
# You should have received a copy of the GNU General Public License
# along with Ruler. If not, see <http://www.gnu.org/licenses/>
-from __future__ import division
import cairo
-from util import mm
-from util import set_background_color
-from util import set_color
-from math import pi,sin,cos
+
+from math import pi, sin, cos
+
+from util import mm, dimensions_mm, set_background_color, set_color
from colorsys import * #XXX
+
def d2r(d):
- return d/180*pi
+ """ degrees to radians """
+ return d / 180.0 * pi
+
class Angles90():
- def __init__(self,font,font_bold,w,h):
+
+ def __init__(self, font, font_bold, w, h):
self.font = font
self.font_bold = font_bold
self.w = w
self.h = h
- def draw(self,c,dpi):
- set_background_color(c,self.w,self.h)
-
+ def draw(self, c, dpi):
+ set_background_color(c, self.w, self.h)
c.set_antialias(cairo.ANTIALIAS_GRAY)
- ox = mm(dpi,0)
- oy = mm(dpi,99)
- d = mm(dpi,90)
- def xy(angle,m=d):
- return cos(-angle)*m+ox,sin(-angle)*m+oy
- def ray(angle,r0=0,r1=d):
- c.move_to(*xy(angle,r0))
- c.line_to(*xy(angle,r1))
+ nw, nh = dimensions_mm(dpi, self.w, self.h)
+ scale = 500./nh
+
+ ox = mm(dpi, 0)
+ oy = mm(dpi, nh)
+ d = mm(dpi, 90 * scale)
+
+ def xy(angle, m=d):
+ return cos(-angle) * m + ox, sin(-angle) * m + oy
+
+ def ray(angle, r0=0, r1=d):
+ c.move_to(*xy(angle, r0))
+ c.line_to(*xy(angle, r1))
lw = 6
c.set_line_width(lw)
- c.move_to(ox,oy+lw/2)
- c.line_to(*xy(pi/2))
+ c.move_to(ox, oy + lw / 2)
+ c.line_to(*xy(pi / 2))
ray(0)
c.stroke()
c.save()
c.set_line_width(3)
- c.set_dash([mm(dpi,5)])
- ray(pi/4)
+ c.set_dash([mm(dpi, 5)])
+ ray(pi / 4)
c.stroke()
c.restore()
c.set_line_width(4)
- for a in range(10,81,10):
- ray(d2r(a),mm(dpi,10),mm(dpi,85))
+ for a in range(10, 81, 10):
+ ray(d2r(a), mm(dpi, 10 * scale), mm(dpi, 85 * scale))
c.stroke()
c.set_line_width(2)
- for a in range(10,81,10):
- ray(d2r(a),mm(dpi,3),mm(dpi,20))
+ for a in range(10, 81, 10):
+ ray(d2r(a), mm(dpi, 3 * scale), mm(dpi, 20 * scale))
c.stroke()
c.set_line_width(2)
- for a in range(1,90,1):
- ray(d2r(a),mm(dpi,70),mm(dpi,80))
+ for a in range(1, 90, 1):
+ ray(d2r(a), mm(dpi, 70 * scale), mm(dpi, 80 * scale))
c.stroke()
c.set_line_width(2)
- for a in range(0,90,5):
- ray(d2r(a),mm(dpi,20),mm(dpi,81))
+ for a in range(0, 90, 5):
+ ray(d2r(a), mm(dpi, 20 * scale), mm(dpi, 81 * scale))
c.stroke()
+
class Angles360():
- def __init__(self,font,font_bold,w,h):
+
+ def __init__(self, font, font_bold, w, h):
self.font = font
self.font_bold = font_bold
self.w = w
self.h = h
- def draw(self,c,dpi):
- set_background_color(c,self.w,self.h)
+ def draw(self, c, dpi):
+ set_background_color(c, self.w, self.h)
c.set_antialias(cairo.ANTIALIAS_GRAY)
- ox = mm(dpi,75)
- oy = mm(dpi,50)
- d = mm(dpi,44)
- def xy(angle,m=d):
- return cos(-angle)*m+ox,sin(-angle)*m+oy
- def ray(angle,r0=0,r1=d):
- c.move_to(*xy(angle,r0))
- c.line_to(*xy(angle,r1))
- def annulus(a0,a1,r0,r1):
- c.move_to(*xy(a0,r0))
- c.arc_to(ox,oy,r0,a0,a1)
- c.rel_line_to(*xy(a1,r1))
- c.arc_to(ox,oy,r1,a1,a0)
+ nw, nh = dimensions_mm(dpi, self.w, self.h)
+ scale = 500./nh
+
+ ox = mm(dpi, nw / 2)
+ oy = mm(dpi, nh / 2)
+ d = mm(dpi, 44 * scale)
+
+ def xy(angle, m=d):
+ return cos(-angle) * m + ox, sin(-angle) * m + oy
+
+ def ray(angle, r0=0, r1=d):
+ c.move_to(*xy(angle, r0))
+ c.line_to(*xy(angle, r1))
+
+ def annulus(a0, a1, r0, r1):
+ c.move_to(*xy(a0, r0))
+ c.arc_to(ox, oy, r0, a0, a1)
+ c.rel_line_to(*xy(a1, r1))
+ c.arc_to(ox, oy, r1, a1, a0)
c.close_path()
- def rays(step,r0=0,r1=d,w=1):
+ def rays(step, r0=0, r1=d, w=1):
c.save()
c.set_line_width(w)
- for a in range(0,360,step):
- ray(d2r(a),r0,r1)
+ for a in range(0, 360, step):
+ ray(d2r(a), r0, r1)
c.stroke()
c.restore()
- rays(1,mm(dpi,35),w=2,r1=mm(dpi,43))
- rays(5,mm(dpi,10),w=2)
- rays(10,mm(dpi,10),w=4)
-# rays(10,mm(dpi,3),mm(dpi,20),w=2)
+ rays(1, mm(dpi, 35 * scale), w=2, r1=mm(dpi, 43 * scale))
+ rays(5, mm(dpi, 10 * scale), w=2)
+ rays(10, mm(dpi, 10 * scale), w=4)
+# rays(10, mm(dpi, 3), mm(dpi, 20), w=2)
c.save()
- #c.set_dash([mm(dpi,5)])
- set_color(c,'dark gray')
- rays(45,0,mm(dpi,45),w=6)
+ #c.set_dash([mm(dpi, 5)])
+ set_color(c, 'dark gray')
+ rays(45, 0, mm(dpi, 45 * scale), w=6)
c.restore()
- rays(90,0,mm(dpi,45),w=6)
+ rays(90, 0, mm(dpi, 45 * scale), w=6)