(self, width, height, _min, _max)
| 48 | |
| 49 | class Gauge(gui.Svg): |
| 50 | def __init__(self, width, height, _min, _max): |
| 51 | super(Gauge, self).__init__(width=width, height=height) |
| 52 | self.width = width |
| 53 | self.height = height |
| 54 | self.min = _min |
| 55 | self.max = _max |
| 56 | self.scale_angle_range = math.pi*2-1.0 |
| 57 | self.scale_value_range = _max - _min |
| 58 | self.base_angle = 0 #-self.scale_angle_range/2.0 |
| 59 | |
| 60 | self.radius = min(width, height)/2.0 |
| 61 | circle = gui.SvgCircle(width/2.0, height/2.0, self.radius) |
| 62 | self.append(circle) |
| 63 | circle.set_fill('gray') |
| 64 | circle.set_stroke(1,'lightgray') |
| 65 | |
| 66 | circle = gui.SvgCircle(width/2.0, height/2.0, self.radius*92.0/100.0) |
| 67 | self.append(circle) |
| 68 | circle.set_fill('lightgray') |
| 69 | circle.set_stroke(1,'lightgray') |
| 70 | |
| 71 | font_size = self.radius*10.0/100.0 |
| 72 | xy = self.value_to_xy_tuple(_min, self.radius*90.0/100.0) |
| 73 | textMin = gui.SvgText(xy[0], xy[1], str(_min)) |
| 74 | xy = self.value_to_xy_tuple(_max, self.radius*90.0/100.0) |
| 75 | textMax = gui.SvgText(xy[0], xy[1], str(_max)) |
| 76 | textMin.style['font-size'] = gui.to_pix(font_size) |
| 77 | textMax.style['font-size'] = gui.to_pix(font_size) |
| 78 | textMin.style['text-anchor'] = "end" |
| 79 | textMax.style['text-anchor'] = "end" |
| 80 | textMin.set_fill('red') |
| 81 | textMax.set_fill('green') |
| 82 | |
| 83 | for i in range( 0, 11 ): |
| 84 | xy1 = self.value_to_xy_tuple(self.min + self.scale_value_range/10*i, self.radius*92.0/100.0) |
| 85 | xy2 = self.value_to_xy_tuple(self.min + self.scale_value_range/10*i, self.radius) |
| 86 | tick = gui.SvgLine(xy1[0], xy1[1], xy2[0], xy2[1]) |
| 87 | tick.set_stroke(2, 'white') |
| 88 | self.append(tick) |
| 89 | |
| 90 | self.append(textMin) |
| 91 | self.append(textMax) |
| 92 | |
| 93 | self.arrow = gui.SvgPolyline() |
| 94 | self.arrow.add_coord(-self.radius*20.0/100.0,0) |
| 95 | self.arrow.add_coord(-self.radius*23.0/100.0,self.radius*10.0/100.0) |
| 96 | self.arrow.add_coord(0,0) |
| 97 | self.arrow.add_coord(-self.radius*23.0/100.0,-self.radius*10.0/100.0) |
| 98 | self.arrow.add_coord(-self.radius*20.0/100.0,0) |
| 99 | self.arrow.style['fill'] = 'white' |
| 100 | self.arrow.set_stroke(1.0, 'white') |
| 101 | self.append(self.arrow) |
| 102 | |
| 103 | self.arrow_preview = gui.SvgPolyline() |
| 104 | self.arrow_preview.add_coord(-self.radius*10.0/100.0,0) |
| 105 | self.arrow_preview.add_coord(-self.radius*13.0/100.0,self.radius*5.0/100.0) |
| 106 | self.arrow_preview.add_coord(0,0) |
| 107 | self.arrow_preview.add_coord(-self.radius*13.0/100.0,-self.radius*5.0/100.0) |
no test coverage detected