diff options
Diffstat (limited to 'viz/renderer.py')
| -rw-r--r-- | viz/renderer.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/viz/renderer.py b/viz/renderer.py new file mode 100644 index 0000000..d94129c --- /dev/null +++ b/viz/renderer.py | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | #!/usr/bin/python | ||
| 2 | from schedule import * | ||
| 3 | from draw import * | ||
| 4 | |||
| 5 | """The renderer, a glue object which converts a schedule to its representation | ||
| 6 | on a graph.""" | ||
| 7 | |||
| 8 | class Renderer(object): | ||
| 9 | def __init__(self, schedule): | ||
| 10 | self.schedule = schedule | ||
| 11 | |||
| 12 | def prepare_task_graph(self, SurfaceType=ImageSurface, attrs=GraphFormat()): | ||
| 13 | """Outputs the fully-rendered graph (y-axis = tasks) to a Cairo ImageSurface""" | ||
| 14 | item_list = self.get_task_item_list() | ||
| 15 | start, end = self.schedule.get_time_bounds() | ||
| 16 | self.graph = TaskGraph(CairoCanvas, SurfaceType(), start, end, item_list, attrs) | ||
| 17 | |||
| 18 | def prepare_cpu_graph(self, SurfaceType=ImageSurface, attrs=GraphFormat()): | ||
| 19 | item_list = ['CPU %d' % i for i in range(0, self.schedule.get_num_cpus())] | ||
| 20 | start, end = self.schedule.get_time_bounds() | ||
| 21 | self.graph = CpuGraph(CairoCanvas, SurfaceType(), start, end, item_list, attrs) | ||
| 22 | |||
| 23 | def render_graph_full(self): | ||
| 24 | """Does the heavy lifting for rendering a task or CPU graph, by scanning the schedule | ||
| 25 | and drawing it piece by piece""" | ||
| 26 | #graph.draw_axes('Time', '') | ||
| 27 | self.schedule.render(self.graph) | ||
| 28 | |||
| 29 | def write_out(self, fname): | ||
| 30 | self.graph.surface.write_out(fname) | ||
| 31 | |||
| 32 | def get_graph(self): | ||
| 33 | return self.graph | ||
| 34 | |||
| 35 | def get_schedule(self): | ||
| 36 | return self.schedule | ||
| 37 | |||
| 38 | def get_task_item_list(self): | ||
| 39 | return [task.get_name() for task in self.schedule.get_task_list()] | ||
| 40 | |||
