label range
This commit is contained in:
parent
0975a933e5
commit
b5fb01b56a
|
@ -240,7 +240,7 @@ class GUI(GameChild):
|
|||
index = limit
|
||||
self.nodeset_index = index
|
||||
self.set_nodeset_label()
|
||||
self.set_axis_labels()
|
||||
self.set_yrange()
|
||||
self.set_markers()
|
||||
|
||||
def set_nodeset_label(self):
|
||||
|
@ -250,26 +250,42 @@ class GUI(GameChild):
|
|||
rect.bottomright = self.display_surface.get_rect().bottomright
|
||||
self.nodeset_label, self.nodeset_label_rect = surface, rect
|
||||
|
||||
def set_axis_labels(self):
|
||||
def set_yrange(self):
|
||||
width = self.plot_rect.w
|
||||
nodeset = self.get_nodeset()
|
||||
labels = []
|
||||
xr, yr = (nodeset[0].x, nodeset[-1].x), (nodeset[0].y, nodeset[-1].y)
|
||||
count = self.axis_label_count
|
||||
rect = self.plot_rect
|
||||
for ii in xrange(count):
|
||||
ratio = float(ii) / (count - 1)
|
||||
x = self.get_formatted_measure((xr[1] - xr[0]) * ratio + xr[0])
|
||||
xs = self.font.render(x, True, (0, 0, 0), (255, 255, 255))
|
||||
self.yrange = yrange = [nodeset[0].y, nodeset[-1].y]
|
||||
x = 0
|
||||
while x < width:
|
||||
y = nodeset.get_y(self.get_function_coordinates(x)[0])
|
||||
if y < yrange[0]:
|
||||
yrange[0] = y
|
||||
elif y > yrange[1]:
|
||||
yrange[1] = y
|
||||
x += width * .01
|
||||
self.set_axis_labels()
|
||||
|
||||
def set_axis_labels(self):
|
||||
self.axis_labels = labels = []
|
||||
nodeset, formatted, render, rect, yr = (self.get_nodeset(),
|
||||
self.get_formatted_measure,
|
||||
self.font.render,
|
||||
self.plot_rect, self.yrange)
|
||||
for ii, node in enumerate(nodeset[0::len(nodeset) - 1]):
|
||||
xs = render(formatted(node.x), True, (0, 0, 0), (255, 255, 255))
|
||||
xsr = xs.get_rect()
|
||||
xsr.midtop = (rect.right - rect.left) * ratio + rect.left, \
|
||||
rect.bottom
|
||||
y = self.get_formatted_measure((yr[1] - yr[0]) * ratio + yr[0])
|
||||
ys = self.font.render(y, True, (0, 0, 0), (255, 255, 255))
|
||||
xsr.top = rect.bottom
|
||||
if not ii:
|
||||
xsr.left = rect.left
|
||||
else:
|
||||
xsr.right = rect.right
|
||||
ys = render(formatted(yr[ii]), True, (0, 0, 0), (255, 255, 255))
|
||||
ysr = ys.get_rect()
|
||||
ysr.midright = rect.left, rect.bottom - (rect.bottom - rect.top) * \
|
||||
ratio
|
||||
ysr.right = rect.left
|
||||
if not ii:
|
||||
ysr.bottom = rect.bottom
|
||||
else:
|
||||
ysr.top = rect.top
|
||||
labels.append(((xs, xsr), (ys, ysr)))
|
||||
self.axis_labels = labels
|
||||
|
||||
def get_nodeset(self):
|
||||
return self.parent[self.nodeset_index]
|
||||
|
@ -322,6 +338,7 @@ class GUI(GameChild):
|
|||
xp, yp = pos[0] - plot_rect.left, pos[1] - plot_rect.top
|
||||
self.get_nodeset().add_node(
|
||||
self.get_function_coordinates(xp, yp))
|
||||
self.set_yrange()
|
||||
self.set_markers()
|
||||
redraw = True
|
||||
elif event.button == 3:
|
||||
|
@ -333,6 +350,7 @@ class GUI(GameChild):
|
|||
marker = self.collide_markers(pos)
|
||||
if marker:
|
||||
self.get_nodeset().remove(marker.node)
|
||||
self.set_yrange()
|
||||
self.set_markers()
|
||||
redraw = True
|
||||
redraw and self.draw()
|
||||
|
|
Loading…
Reference in New Issue