summaryrefslogtreecommitdiffstats
path: root/unit_trace/viz/renderer.py
diff options
context:
space:
mode:
authorMac Mollison <mollison@cs.unc.edu>2010-03-13 12:12:37 -0500
committerMac Mollison <mollison@cs.unc.edu>2010-03-13 12:12:37 -0500
commit122f457226f54ad23b7cd138512502e430e704dc (patch)
treefee0690936c3ae95255e559cd0fd09f0fa8c2ad4 /unit_trace/viz/renderer.py
parent14a40b99735f09f6e70b8e897acbb622f9115ca3 (diff)
Further restructuring to create 'unit_trace' pkg
The unit_trace folder should be placed in /usr/local/lib/pythonX.Y/site-packages. This makes unit-trace submodules available from anywhere on the system.
Diffstat (limited to 'unit_trace/viz/renderer.py')
-rw-r--r--unit_trace/viz/renderer.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/unit_trace/viz/renderer.py b/unit_trace/viz/renderer.py
new file mode 100644
index 0000000..d94129c
--- /dev/null
+++ b/unit_trace/viz/renderer.py
@@ -0,0 +1,40 @@
1#!/usr/bin/python
2from schedule import *
3from draw import *
4
5"""The renderer, a glue object which converts a schedule to its representation
6on a graph."""
7
8class 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