def _make_wedge_bar(self, nsegments): ''' Create a wedged-shaped bar with n segments ''' s = 3.5 # add provision for stroke width svg = svg_header(self._width, BAR_HEIGHT * self._scale + s, 1.0) dx = self._width / float(nsegments) dy = (BAR_HEIGHT * self._scale) / float(nsegments) for i in range(int(nsegments) // 2): svg += svg_wedge(dx, BAR_HEIGHT * self._scale + s, i * 2 * dx + s, i * 2 * dy + s, (i * 2 + 1) * dy + s, '#000000', '#FFFFFF') svg += svg_wedge(dx, BAR_HEIGHT * self._scale + s, (i * 2 + 1) * dx + s, (i * 2 + 1) * dy + s, (i * 2 + 2) * dy + s, '#000000', '#FFFFFF') if int(nsegments) % 2 == 1: # odd svg += svg_wedge(dx, BAR_HEIGHT * self._scale + s, (i * 2 + 2) * dx + s, (i * 2 + 2) * dy + s, BAR_HEIGHT * self._scale + s, '#000000', '#FFFFFF') svg += svg_footer() self.bars[nsegments] = Sprite(self._sprites, 0, 0, svg_str_to_pixbuf(svg)) self.bars[nsegments].set_layer(2) self.bars[nsegments].set_label_attributes(18, horiz_align="left", i=0) self.bars[nsegments].set_label_attributes(18, horiz_align="right", i=1) self.bars[nsegments].set_label_color('black', i=0) self.bars[nsegments].set_label_color('white', i=1) self.bars[nsegments].set_label(' 0', i=0) self.bars[nsegments].set_label('1 ', i=1) self.bars[nsegments].move( (0, self._height - BAR_HEIGHT * self._scale))
def _make_wedge_bar(self, nsegments): ''' Create a wedged-shaped bar with n segments ''' s = 3.5 # add provision for stroke width svg = svg_header(self._width, BAR_HEIGHT * self._scale + s, 1.0) dx = self._width / float(nsegments) dy = (BAR_HEIGHT * self._scale) / float(nsegments) for i in range(int(nsegments) / 2): svg += svg_wedge(dx, BAR_HEIGHT * self._scale + s, i * 2 * dx + s, i * 2 * dy + s, (i * 2 + 1) * dy + s, '#000000', '#FFFFFF') svg += svg_wedge(dx, BAR_HEIGHT * self._scale + s, (i * 2 + 1) * dx + s, (i * 2 + 1) * dy + s, (i * 2 + 2) * dy + s, '#000000', '#FFFFFF') if int(nsegments) % 2 == 1: # odd svg += svg_wedge(dx, BAR_HEIGHT * self._scale + s, (i * 2 + 2) * dx + s, (i * 2 + 2) * dy + s, BAR_HEIGHT * self._scale + s, '#000000', '#FFFFFF') svg += svg_footer() self.bars[nsegments] = Sprite(self._sprites, 0, 0, svg_str_to_pixbuf(svg)) self.bars[nsegments].set_layer(2) self.bars[nsegments].set_label_attributes(18, horiz_align="left", i=0) self.bars[nsegments].set_label_attributes(18, horiz_align="right", i=1) self.bars[nsegments].set_label_color('black', i=0) self.bars[nsegments].set_label_color('white', i=1) self.bars[nsegments].set_label(' 0', i=0) self.bars[nsegments].set_label('1 ', i=1) self.bars[nsegments].move( (0, self._height - BAR_HEIGHT * self._scale))
def _make_wedge_mark(self): ''' Make a mark to show the fraction position on the bar. ''' dx = self._ball_size / 2. n = (self._width - self._ball_size) / dx dy = (BAR_HEIGHT * self._scale) / n s = 3.5 i = int(n / 2) - 1 mark = svg_header(self._ball_size, BAR_HEIGHT * self._scale + s, 1.0) mark += svg_wedge(dx, BAR_HEIGHT * self._scale + s, s, i * 2 * dy + s, (i * 2 + 1) * dy + s, '#FF0000', '#FFFFFF') mark += svg_wedge(dx, BAR_HEIGHT * self._scale + s, dx + s, (i * 2 + 1) * dy + s, (i * 2 + 2) * dy + s, '#FF0000', '#FFFFFF') mark += svg_footer() self.mark = Sprite( self._sprites, 0, self._height, # hide off bottom of screen svg_str_to_pixbuf(mark)) self.mark.set_layer(1)
def _make_wedge_mark(self): ''' Make a mark to show the fraction position on the bar. ''' dx = self._ball_size / 2. n = (self._width - self._ball_size) / dx dy = (BAR_HEIGHT * self._scale) / n s = 3.5 i = int(n / 2) - 1 mark = svg_header(self._ball_size, BAR_HEIGHT * self._scale + s, 1.0) mark += svg_wedge(dx, BAR_HEIGHT * self._scale + s, s, i * 2 * dy + s, (i * 2 + 1) * dy + s, '#FF0000', '#FFFFFF') mark += svg_wedge(dx, BAR_HEIGHT * self._scale + s, dx + s, (i * 2 + 1) * dy + s, (i * 2 + 2) * dy + s, '#FF0000', '#FFFFFF') mark += svg_footer() self.mark = Sprite(self._sprites, 0, self._height, # hide off bottom of screen svg_str_to_pixbuf(mark)) self.mark.set_layer(1)