18 def __init__(self, start = 0, end = 0, value = ''):
20 @param self this object
36 @param self this object
50 @param self this object
64 @param self this object
71 diff = a.start - b.start
94 @param self this object
102 @param self this object
104 @return index if found or -1 if not found
107 u = len(self.
rangesranges)-1
110 if key >= self.
rangesranges[i].start
and key <= self.
rangesranges[i].end:
112 elif key < self.
rangesranges[i].start:
120 @param self this object
124 self.
rangesranges.append(range)
127 @param self this object
132 """! Get selected ranges
133 @param self this object
134 @param start range start
136 @return the range or and empty list
140 if s == -1
and e == -1:
143 return self.
rangesranges[0:e + 1]
147 return self.
rangesranges[s:e + 1]
149 """! Get ranges bounds
150 @param self this object
151 @param start range start
157 if s == -1
and e == -1:
162 return(s, len(self.
rangesranges))
167 @param self this object
173 @param self this object
176 if len(self.
rangesranges) > 0:
177 lo = self.
rangesranges[0].start
189 """! Get ranges bounds
190 @param self this object
197 @param self this object
202 u = len(self.
eventsevents)-1
205 if key == self.
eventsevents[i].at:
207 elif key < self.
eventsevents[i].at:
215 @param self this object
216 @param event event to add
219 self.
eventsevents.append(event)
222 @param self this object
223 @param start starting event
224 @param end ending event
229 return self.
eventsevents[s:e + 1]
231 """! Get Events Bounds
232 @param self this object
233 @param start starting event
234 @param end ending event
242 @param self this object
248 @param self this object
251 if len(self.
eventsevents) > 0:
252 lo = self.
eventsevents[0].at
253 hi = self.
eventsevents[-1].at
270 @param self this object
279 @param self this object
283 for range
in self.
rangesranges:
284 if range.name == name:
287 self.
rangesranges.append(timeline)
290 """! Get Event String
291 @param self this object
293 @return the event string
295 for event_str
in self.
event_strevent_str:
296 if event_str.name == name:
303 @param self this object
307 for event_int
in self.
event_intevent_int:
308 if event_int.name == name:
315 @param self this object
320 """! Get Events string
321 @param self this object
327 @param self this object
332 """! Sort the ranges and events
333 @param self this object
336 for range
in self.
rangesranges:
344 @param self this object
349 for range
in self.
rangesranges:
350 (range_lo, range_hi) = range.get_bounds()
355 for event_str
in self.
event_strevent_str:
356 (ev_lo, ev_hi) = event_str.get_bounds()
361 for event_int
in self.
event_intevent_int:
362 (ev_lo, ev_hi) = event_int.get_bounds()
375 @param self: this object
380 @param self this object
382 @return the timeline for the name
385 if timeline.name == name:
391 """! Get All Timeline
392 @param self this object
393 @return all timelines
397 """! Sort the timelines
398 @param self this object
405 @param self this object
406 @return the bounds for all timelines
411 (t_lo, t_hi) = timeline.get_bounds()
419 @param self this object
420 @return the keys for all ranges
424 for ranges
in timeline.get_ranges():
425 for ran
in ranges.get_all():
426 range_values[ran.value] = 1
427 return range_values.keys()
439 @param self: this object
449 @param self: this object
466 default_colors = [
Color(1, 0, 0),
Color(0, 1, 0),
Color(0, 0, 1),
Color(1, 1, 0),
Color(1, 0, 1),
Color(0, 1, 1)]
469 @param self this object
472 def add(self, name, color):
474 @param self this object
475 @param name name of the color
476 @param color color value
482 @param self this object
486 if not self.
__colors__colors.has_key(name):
504 @param self this object
509 @param self this object
510 @param padding padding
516 @param self this object
517 @param legends legends
525 @param self this object
530 surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 1, 1)
531 ctx = cairo.Context(surface)
536 (t_width, t_height) = ctx.text_extents(legend)[2:4]
538 item_height = t_height + self.
__padding__padding
539 if item_height > line_height:
540 line_height = item_height
541 if line_used + item_width > self.
__width__width:
542 line_used = self.
__padding__padding + item_width
543 total_height += line_height
545 line_used += item_width
546 x = line_used - item_width
547 total_height += line_height
552 @param self this object
558 @param self this object
567 (t_width, t_height) = ctx.text_extents(legend)[2:4]
569 item_height = t_height + self.
__padding__padding
570 if item_height > line_height:
571 line_height = item_height
572 if line_used + item_width > self.
__width__width:
573 line_used = self.
__padding__padding + item_width
574 total_height += line_height
576 line_used += item_width
577 x = line_used - item_width
579 ctx.set_source_rgb(0, 0, 0)
580 ctx.set_line_width(2)
581 ctx.stroke_preserve()
582 ctx.set_source_rgb(self.
__colors__colors[i].r,
586 ctx.move_to(x + self.
__padding__padding*2, total_height + t_height)
587 ctx.set_source_rgb(0, 0, 0)
588 ctx.show_text(legend)
619 @param self this object
625 @param self this object
631 @param self this object
632 @param timelines timelines
639 """! Set Render Range
640 @param self this object
648 """! Get Data X Start
649 @param self: this object
654 """! Get Data X Start
655 @param self this object
659 surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 1, 1)
660 ctx = cairo.Context(surface)
661 max_text_height = ctx.text_extents(
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcedefghijklmnopqrstuvwxyz0123456789")[3]
669 for timeline
in self.
timelinestimelines.get_all():
671 t_width = ctx.text_extents(timeline.name)[2]
672 left_width =
max(left_width, t_width)
673 for rang
in timeline.get_ranges():
674 t_width = ctx.text_extents(rang.name)[2]
675 right_width =
max(right_width, t_width)
677 for events_int
in timeline.get_events_int():
678 t_width = ctx.text_extents(events_int.name)[2]
679 right_width =
max(right_width, t_width)
681 for events_str
in timeline.get_events_str():
682 t_width = ctx.text_extents(events_str.name)[2]
683 right_width =
max(right_width, t_width)
686 left_height = left_n_lines * max_text_height + (left_n_lines - 1) * self.
paddingpadding
687 right_n_lines = range_n + eventint_n + eventstr_n
688 right_height = (right_n_lines - 1) * self.
paddingpadding + right_n_lines * max_text_height
689 right_data_height = (eventint_n + eventstr_n) * (max_text_height + 5) + range_n * 10
690 right_data_height += (right_n_lines - 1) * self.
paddingpadding
692 height =
max(left_height, right_height)
693 height =
max(height, right_data_height)
702 @param self this object
711 ctx.rel_line_to(width, height)
713 ctx.set_operator(cairo.OPERATOR_SOURCE)
714 ctx.set_line_width(1.0)
715 ctx.set_source_rgb(0, 0, 0)
719 @param self this object
729 ctx.rectangle(x, y - self.
paddingpadding / 2,
730 width, height + self.
paddingpadding)
731 ctx.set_source_rgb(0.9, 0.9, 0.9)
733 last_x_drawn = int(x)
734 (lo, hi) = events.get_events_bounds(self.
startstart, self.
endend)
735 for event
in events.events[lo:hi]:
736 real_x = int(x + (event.at - self.
startstart) * width / (self.
endend - self.
startstart))
737 if real_x > last_x_drawn + 2:
738 ctx.rectangle(real_x, y, 1, 1)
739 ctx.set_source_rgb(1, 0, 0)
742 ctx.set_source_rgb(0, 0, 0)
743 ctx.show_text(str(event.value))
744 last_x_drawn = real_x
748 @param self this object
758 ctx.rectangle(x, y - self.
paddingpadding / 2,
759 width, height + self.
paddingpadding)
760 ctx.set_source_rgb(0.9, 0.9, 0.9)
762 last_x_drawn = int(x - 1)
763 (lo, hi) = ranges.get_ranges_bounds(self.
startstart, self.
endend)
764 for data_range
in ranges.ranges[lo:hi]:
765 s =
max(data_range.start, self.
startstart)
766 e =
min(data_range.end, self.
endend)
767 x_start = int(x + (s - self.
startstart) * width / (self.
endend - self.
startstart))
768 x_end = int(x + (e - self.
startstart) * width / (self.
endend - self.
startstart))
769 if x_end > last_x_drawn:
770 ctx.rectangle(x_start, y, x_end - x_start, 10)
771 ctx.set_source_rgb(0, 0, 0)
772 ctx.stroke_preserve()
773 color = self.
colorscolors.lookup(data_range.value)
774 ctx.set_source_rgb(color.r, color.g, color.b)
782 @param self this object
787 top_y = self.
paddingpadding / 2
788 left_x_start = self.
paddingpadding / 2
789 left_x_end = left_x_start + self.
left_widthleft_width
790 right_x_start = left_x_end + self.
paddingpadding
791 right_x_end = right_x_start + self.
right_widthright_width
792 data_x_start = right_x_end + self.
paddingpadding / 2
793 data_x_end = self.
widthwidth
794 data_width = data_x_end - data_x_start
798 for timeline
in self.
timelinestimelines.get_all():
799 (y_bearing, t_width, t_height) = ctx.text_extents(timeline.name)[1:4]
800 ctx.move_to(left_x_start, cur_y + self.
max_text_heightmax_text_height - (t_height + y_bearing))
801 ctx.show_text(timeline.name);
802 for events_int
in timeline.get_events_int():
803 (y_bearing, t_width, t_height) = ctx.text_extents(events_int.name)[1:4]
804 ctx.move_to(right_x_start, cur_y + self.
max_text_heightmax_text_height - (t_height + y_bearing))
805 ctx.show_text(events_int.name)
811 for events_str
in timeline.get_events_str():
812 (y_bearing, t_width, t_height) = ctx.text_extents(events_str.name)[1:4]
813 ctx.move_to(right_x_start, cur_y + self.
max_text_heightmax_text_height - (t_height + y_bearing))
814 ctx.show_text(events_str.name)
819 for ranges
in timeline.get_ranges():
820 (y_bearing, t_width, t_height) = ctx.text_extents(ranges.name)[1:4]
821 ctx.move_to(right_x_start, cur_y + self.
max_text_heightmax_text_height - (t_height + y_bearing))
822 ctx.show_text(ranges.name)
823 self.
draw_rangesdraw_ranges(ctx, ranges, data_x_start, cur_y, data_width, 10)
829 bot_y = cur_y - self.
paddingpadding / 2
854 @param self this object
860 @param self this object
869 @param self this object
877 @param self this object
883 @param self this object
889 @param self this object
893 surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 1, 1)
894 ctx = cairo.Context(surface)
897 data_delta = self.
__hi__hi - self.
__lo__lo
899 while (closest*10) < data_delta:
901 if (data_delta / closest) == 0:
903 elif(data_delta / closest) == 1:
907 start = self.
__lo__lo - (self.
__lo__lo % delta) + delta
908 end = self.
__hi__hi - (self.
__hi__hi % delta)
914 max_text_height = ctx.text_extents(
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcedefghijklmnopqrstuvwxyz0123456789")[3]
916 height = max_text_height + 10
921 @param self: this object
927 @param self this object
932 start = self.
__lo__lo - (self.
__lo__lo % delta) + delta
933 end = self.
__hi__hi - (self.
__hi__hi % delta)
935 if self.
__top__top == 1:
940 ctx.set_source_rgb(0, 0, 0)
941 ctx.set_line_width(1.0)
942 ticks = range(int(start), int(end + delta), int(delta))
945 ctx.move_to(real_x, 0)
946 ctx.line_to(real_x, 5*s)
949 (t_y_bearing, t_width, t_height) = ctx.text_extents(str(x))[1:4]
951 text_delta = t_height + t_y_bearing
953 text_delta = -t_y_bearing
954 ctx.move_to(real_x - t_width / 2, (5 + 5 + text_delta)*s)
955 ctx.show_text(str(x))
959 start = self.
__lo__lo - (self.
__lo__lo % delta) + delta
960 end = self.
__hi__hi - (self.
__hi__hi % delta)
961 for x
in range(int(start), int(end + delta), int(delta)):
963 ctx.move_to(real_x, 0)
964 ctx.line_to(real_x, 3*s)
995 @param self this object
1010 @param self: this object
1016 @param self this object
1022 """! Get Data Rectangle
1023 @param self this object
1027 x_start = self.
__data__data.get_data_x_start()
1030 """! Get Data Rectangle
1031 @param self this object
1035 x_start = self.
__data__data.get_data_x_start()
1040 """! Get Selection Rectangle
1041 @param self this object
1048 return(x_start, y_start, x_end - x_start, y_height)
1050 """! Scale Selection
1051 @param self this object
1059 @param self this object
1070 self.
__data__data.set_render_range(start, end)
1075 @param self this object
1081 @param self this object
1088 @param self this object
1089 @param top_legend The legend
1095 @param self this object
1097 @param height height
1110 @param self this object
1120 @param self this object
1126 ctx.set_source_rgb(1, 1, 1)
1127 ctx.set_operator(cairo.OPERATOR_SOURCE)
1138 ctx.move_to(0, top_legend_height)
1139 ctx.line_to(self.
__width__width, top_legend_height)
1141 ctx.set_line_width(2)
1142 ctx.set_source_rgb(0, 0, 0)
1154 ctx.translate(self.
__data__data.get_data_x_start(),
1162 ctx.move_to(self.
__data__data.get_data_x_start(), height_used)
1165 ctx.set_source_rgb(0, 0, 0)
1166 ctx.set_line_width(2)
1170 ctx.move_to(0, height_used)
1171 ctx.line_to(self.
__width__width, height_used)
1173 ctx.set_line_width(2)
1174 ctx.set_source_rgb(0, 0, 0)
1181 ctx.move_to(0, height_used);
1182 ctx.line_to(self.
__data__data.get_data_x_start(), height_used)
1183 ctx.line_to(select_start, height_used + 20)
1184 ctx.line_to(0, height_used + 20)
1185 ctx.line_to(0, height_used)
1186 ctx.set_source_rgb(0, 0, 0)
1187 ctx.set_line_width(1)
1188 ctx.stroke_preserve()
1189 ctx.set_source_rgb(0.9, 0.9, 0.9)
1193 ctx.move_to(self.
__width__width, height_used)
1194 ctx.line_to(self.
__width__width, height_used + 20)
1195 ctx.line_to(select_end, height_used + 20)
1196 ctx.line_to(self.
__width__width, height_used)
1197 ctx.set_source_rgb(0, 0, 0)
1198 ctx.set_line_width(1)
1199 ctx.stroke_preserve()
1200 ctx.set_source_rgb(0.9, 0.9, 0.9)
1209 ctx.rectangle(0, height_used,
1212 ctx.rectangle(unused_end,
1214 self.
__width__width - unused_end,
1216 ctx.set_source_rgb(0.9, 0.9, 0.9)
1220 ctx.move_to(unused_end, height_used)
1221 ctx.line_to(self.
__width__width, height_used)
1222 ctx.line_to(self.
__width__width, height_used + unused_height)
1223 ctx.line_to(0, height_used + unused_height)
1224 ctx.line_to(0, height_used)
1225 ctx.line_to(unused_start, height_used)
1227 ctx.set_line_width(2)
1228 ctx.set_source_rgb(0, 0, 0)
1230 ctx.move_to(unused_start, height_used)
1231 ctx.line_to(unused_end, height_used)
1233 ctx.set_line_width(1)
1234 ctx.set_source_rgb(0.9, 0.9, 0.9)
1239 ctx.move_to(
max(unused_start, 2), height_used)
1240 ctx.rel_line_to(0, unused_height)
1241 ctx.move_to(
min(unused_end, self.
__width__width - 2), height_used)
1242 ctx.rel_line_to(0, unused_height)
1243 ctx.set_dash([5], 0)
1244 ctx.set_source_rgb(0, 0, 0)
1245 ctx.set_line_width(1)
1251 ctx.translate(0, height_used)
1289 @param self this object
1292 super(GtkGraphicRenderer, self).
__init__()
1299 self.add_events(gtk.gdk.POINTER_MOTION_MASK)
1300 self.add_events(gtk.gdk.BUTTON_PRESS_MASK)
1301 self.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
1302 self.connect(
"expose_event", self.
exposeexpose)
1303 self.connect(
'size-allocate', self.
size_allocatesize_allocate)
1304 self.connect(
'motion-notify-event', self.
motion_notifymotion_notify)
1305 self.connect(
'button-press-event', self.
button_pressbutton_press)
1306 self.connect(
'button-release-event', self.
button_releasebutton_release)
1308 """! Set Smaller Zoom
1309 @param self this object
1312 (start, end) = self.
__data__data.get_range()
1313 self.
__data__data.set_range(start, start + (end - start)*2)
1317 """! Set Bigger Zoom
1318 @param self this object
1321 (start, end) = self.
__data__data.get_range()
1322 self.
__data__data.set_range(start, start + (end - start) / 2)
1327 @param self this object
1328 @param filename file name
1331 surface = cairo.ImageSurface(cairo.FORMAT_ARGB32,
1332 self.
__data__data.get_width(),
1333 self.
__data__data.get_height())
1335 self.
__data__data.draw(ctx)
1336 surface.write_to_png(filename)
1339 @param self this object
1340 @param widget widget
1342 @return true if button has been pressed otherwise false
1344 (x, y, width, height) = self.
__data__data.get_selection_rectangle()
1345 (d_x, d_y, d_width, d_height) = self.
__data__data.get_data_rectangle()
1346 if event.y > y
and event.y < y + height:
1347 if abs(event.x - x) < 5:
1350 if abs(event.x - (x + width)) < 5:
1353 if event.x > x
and event.x < x + width:
1358 if event.y > d_y
and event.y < (d_y + d_height):
1359 if event.x > d_x
and event.x < (d_x + d_width):
1367 @param self this object
1368 @param widget widget
1370 @return true if button was released otherwise false
1375 right = self.
__data__data.get_range()[1]
1376 self.
__data__data.set_range(left, right)
1383 left = self.
__data__data.get_range()[0]
1384 self.
__data__data.set_range(left, right)
1391 (left, right) = self.
__data__data.get_range()
1392 self.
__data__data.set_range(left + delta, right + delta)
1401 @param self this object
1402 @param widget widget
1404 @return true if moving otherwise false
1406 (x, y, width, height) = self.
__data__data.get_selection_rectangle()
1410 elif event.x >= x + width:
1414 self.queue_draw_area(0, int(y), int(self.
__width__width), int(height))
1417 if event.x >= self.
__width__width:
1423 self.queue_draw_area(0, int(y), int(self.
__width__width), int(height))
1430 elif event.x > cur_e:
1434 self.queue_draw_area(0, int(y), int(self.
__width__width), int(height))
1439 (left, right) = self.
__data__data.get_range()
1440 self.
__data__data.set_range(left + delta, right + delta)
1445 (d_x, d_y, d_width, d_height) = self.
__data__data.get_data_rectangle()
1446 if event.y > y
and event.y < y + height:
1447 if abs(event.x - x) < 5
or abs(event.x - (x + width)) < 5:
1448 widget.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.SB_H_DOUBLE_ARROW))
1450 if event.x > x
and event.x < x + width:
1451 widget.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.FLEUR))
1453 if event.y > d_y
and event.y < (d_y + d_height):
1454 if event.x > d_x
and event.x < (d_x + d_width):
1455 widget.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.FLEUR))
1457 widget.window.set_cursor(
None)
1461 @param self this object
1462 @param widget widget
1463 @param allocation allocation
1468 self.
__data__data.layout(allocation.width, allocation.height)
1473 @param self this object
1474 @param widget widget
1480 self.
__data__data.get_width(),
1481 self.
__data__data.get_height())
1483 self.
__data__data.draw(ctx)
1485 ctx = widget.window.cairo_create()
1486 ctx.rectangle(event.area.x, event.area.y,
1487 event.area.width, event.area.height)
1491 (x, y, width, height) = self.
__data__data.get_selection_rectangle()
1494 ctx.rel_line_to(0, height)
1496 ctx.set_line_width(1)
1497 ctx.set_source_rgb(0, 0, 0)
1501 ctx.rel_line_to(0, height)
1503 ctx.set_line_width(1)
1504 ctx.set_source_rgb(0, 0, 0)
1508 left_x = x + delta_x
1509 ctx.move_to(x + delta_x, y)
1510 ctx.rel_line_to(0, height)
1512 ctx.move_to(x + width + delta_x, y)
1513 ctx.rel_line_to(0, height)
1515 ctx.set_source_rgb(0, 0, 0)
1516 ctx.set_line_width(1)
1530 @param self this object
1535 @param self this object
1536 @param graphic graphic
1539 window = gtk.Window()
1541 window.set_default_size(200, 200)
1546 vbox.pack_end(render,
True,
True, 0)
1548 vbox.pack_start(hbox,
False,
False, 0)
1549 smaller_zoom = gtk.Button(
"Zoom Out")
1551 hbox.pack_start(smaller_zoom)
1552 bigger_zoom = gtk.Button(
"Zoom In")
1554 hbox.pack_start(bigger_zoom)
1555 output_png = gtk.Button(
"Output Png")
1557 hbox.pack_start(output_png)
1558 window.connect(
'destroy', gtk.main_quit)
1563 """! Set Smaller Callback
1564 @param self this object
1565 @param widget widget
1568 self.
__render__render.set_smaller_zoom()
1570 """! Set Bigger Callback
1571 @param self this object
1572 @param widget widget
1575 self.
__render__render.set_bigger_zoom()
1577 """! Output PNG Callback
1578 @param self this object
1579 @param widget widget
1582 dialog = gtk.FileChooserDialog(
"Output Png", self.
__window__window,
1583 gtk.FILE_CHOOSER_ACTION_SAVE, (
"Save", 1))
1585 dialog.set_default_response(1)
1590 """! Dialog Response Callback
1591 @param self this object
1592 @param widget widget
1593 @param response response
1597 filename = self.
__dialog__dialog.get_filename()
1598 self.
__render__render.output_png(filename)
1607 m1 = re.compile(
'range ([^ ]+) ([^ ]+) ([^ ]+) ([0-9]+) ([0-9]+)')
1608 m2 = re.compile(
'event-str ([^ ]+) ([^ ]+) ([^ ]+) ([0-9]+)')
1609 m3 = re.compile(
'event-int ([^ ]+) ([^ ]+) ([0-9]+) ([0-9]+)')
1610 m4 = re.compile(
'color ([^ ]+) #([a-fA-F0-9]{2,2})([a-fA-F0-9]{2,2})([a-fA-F0-9]{2,2})')
1612 with open(filename)
as fh:
1613 for line
in fh.readlines():
1616 line_name = m.group(1)
1617 timeline = timelines.get(m.group(1))
1618 rang = timeline.get_range(m.group(2))
1620 data_range.value = m.group(3)
1621 data_range.start = int(m.group(4))
1622 data_range.end = int(m.group(5))
1623 rang.add_range(data_range)
1627 line_name = m.group(1)
1628 timeline = timelines.get(m.group(1))
1629 ev = timeline.get_event_str(m.group(2))
1631 event.value = m.group(3)
1632 event.at = int(m.group(4))
1637 line_name = m.group(1)
1638 timeline = timelines.get(m.group(1))
1639 ev = timeline.get_event_int(m.group(2))
1641 event.value = int(m.group(3))
1642 event.at = int(m.group(4))
1648 r = int(m.group(2), 16)
1649 g = int(m.group(3), 16)
1650 b = int(m.group(4), 16)
1651 color =
Color(r / 255, g / 255, b / 255)
1652 colors.add(m.group(1), color)
1655 return (colors, timelines)
1660 (colors, timelines) =
read_data(sys.argv[1])
1661 (lower_bound, upper_bound) = timelines.get_bounds()
1664 range_values = timelines.get_all_range_values()
1666 for range_value
in range_values:
1667 range_colors.append(colors.lookup(range_value))
1668 top_legend.set_legends(range_values,
1670 graphic.set_top_legend(top_legend)
1672 data.set_timelines(timelines, colors)
1673 graphic.set_data(data)
1676 range_mid = (upper_bound - lower_bound) / 2
1677 range_width = (upper_bound - lower_bound) / 10
1678 range_lo = range_mid - range_width / 2
1679 range_hi = range_mid + range_width / 2
1680 graphic.set_range(range_lo, range_hi)
1683 main_window.run(graphic)
def __init__(self, r=0.0, g=0.0, b=0.0)
Initializer.
def set(self, r, g, b)
Set color.
def __init__(self)
Initializer.
def lookup(self, name)
Lookup name.
def add(self, name, color)
Add.
list default_colors
default colors XXX add more
def __init__(self, start=0, end=0, value='')
Initializer.
def __init__(self, at=0, value=0.0)
Initializer.
def __init__(self, at=0, value=0.0)
Initializer.
def __init__(self, at=0, value='')
Initializer.
def set_top_legend(self, top_legend)
Set Top Legend.
def get_range(self)
Get Range.
def get_selection_rectangle(self)
Get Selection Rectangle.
def set_range(self, start, end)
Set Range.
def get_height(self)
Get Height.
def get_data_rectangle(self)
Get Data Rectangle.
def scale_selection(self, x)
Scale Selection.
def layout(self, width, height)
Set Layout.
def set_data(self, data)
Set Date.
def __x_pixel(self, x, width)
X Pixel.
def __init__(self, start, end)
Initializer.
def get_width(self)
Get Width.
def scale_data(self, x)
Get Data Rectangle.
GtkGraphicRenderer class.
__force_full_redraw
full redraw
__moving_top_start
moving top start
def set_smaller_zoom(self)
Set Smaller Zoom.
def motion_notify(self, widget, event)
Motion Notify.
__moving_both_cur
moving both cur
__moving_right
moving right
__moving_right_cur
moving right cur
__buffer_surface
buffer surface
__moving_top_cur
moving top cur
def size_allocate(self, widget, allocation)
Size Allocate.
__moving_both_start
moving both start
def set_bigger_zoom(self)
Set Bigger Zoom.
def button_press(self, widget, event)
Button Press.
def button_release(self, widget, event)
Button Release.
__moving_left_cur
moving left cur
def output_png(self, filename)
Output PNG.
def __init__(self, data)
Initializer.
def expose(self, widget, event)
Expose.
def run(self, graphic)
Run function.
def __dialog_response_cb(self, widget, response)
Dialog Response Callback.
def __init__(self)
Initializer.
def __set_smaller_cb(self, widget)
Set Smaller Callback.
def __output_png_cb(self, widget)
Output PNG Callback.
def __set_bigger_cb(self, widget)
Set Bigger Callback.
def layout(self, width)
Layout.
max_text_height
maximum text height
def get_position(self, x)
Get Position.
def set_bot(self)
Set Bottom.
def set_top(self)
Set Top.
def __init__(self)
Initializer.
def get_height(self)
Get Height.
def set_bounds(self, lo, hi)
Set Bounds.
def __init__(self, name='')
Initializer.
def get_bounds(self)
Get bounds.
def add_range(self, range)
Add range.
def __search(self, key)
Search.
def get_ranges_bounds(self, start, end)
Get ranges bounds.
def get_ranges(self, start, end)
Get selected ranges.
def sort(self)
Sort ranges.
def get_all(self)
Get all ranges.
def add_event(self, event)
Add Event.
def get_events(self, start, end)
Get Events.
def __init__(self, name='')
Get ranges bounds.
def get_events_bounds(self, start, end)
Get Events Bounds.
def sort(self)
Sort function.
def get_bounds(self)
Get Bounds.
def __search(self, key)
Search function.
def get_ranges(self)
Get Ranges.
def get_range(self, name)
Get range.
def get_event_int(self, name)
Get Event Int.
def get_events_int(self)
Get Events int.
def get_event_str(self, name)
Get Event String.
def __init__(self, name='')
Initializer.
def get_bounds(self)
Get Bounds.
def get_events_str(self)
Get Events string.
def sort(self)
Sort the ranges and events.
def get_bounds(self)
Get Bounds.
def get(self, name)
Get Timeline.
def get_all_range_values(self)
Get All Ranges.
def get_all(self)
Get All Timeline.
def sort(self)
Sort the timelines.
def set_timelines(self, timelines, colors)
Set Timelines.
grey_background
grey background
def draw_line(self, ctx, x, y, width, height)
Draw Line.
def get_data_x_start(self)
Get Data X Start.
def set_render_range(self, start, end)
Set Render Range.
def layout(self, width)
Get Data X Start.
max_text_height
maximum text height
def draw_events(self, ctx, events, x, y, width, height)
Draw Event.
def __init__(self)
Initializer.
def get_height(self)
Get Height.
def draw_ranges(self, ctx, ranges, x, y, width, height)
Draw Ranges.
def get_height(self)
Set padding.
def layout(self, width)
Set padding.
def __init__(self)
Initializer.
def draw(self, ctx)
Set padding.
def set_padding(self, padding)
Set padding.
def set_legends(self, legends, colors)
Set padding.
def read_data(filename)
read_data function
auto get(const nlohmann::detail::iteration_proxy_value< IteratorType > &i) -> decltype(i.key())
def set_bounds(x1, y1, x2, y2)