From ea97aefad7f3dd527ef910aedcb73f4b5b7f48dc Mon Sep 17 00:00:00 2001 From: Frederic Back Date: Sun, 24 Sep 2006 10:10:55 +0000 Subject: * Replaced SumList by tuple arrays in the renderer * Created ugly walker that uses the extension git-svn-id: file:///home/lennart/svn/public/fring/branches/c_walker@18 d0d2c35f-0a1e-0410-abeb-dabff30a67ee --- src/fringlib/fringrenderer.py | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) (limited to 'src/fringlib/fringrenderer.py') diff --git a/src/fringlib/fringrenderer.py b/src/fringlib/fringrenderer.py index 60256e5..f69a0a2 100644 --- a/src/fringlib/fringrenderer.py +++ b/src/fringlib/fringrenderer.py @@ -1,9 +1,10 @@ import cairo import pango from math import * -from fringwalker import sum_list +#from fringwalker import sum_list from fringutil import * import os +from fringwalker import print_tree class Hotspot: @@ -51,7 +52,11 @@ class FringRenderer: def draw_segment(self,ctx, ring, start_angle, end_angle, start_hue, end_hue, data, previouspath=""): - assert isinstance(data, sum_list) + if data is None: return + + dataname = data[0] + datadata = data[1] + datathe_sum = data[2] if ring == 0: self.lookup_data = [] @@ -64,25 +69,31 @@ class FringRenderer: ctx.move_to(CENTERX, CENTERY) if ring == 0: - self._draw_centered_text(ctx, pretty_size(data.the_sum)) + self._draw_centered_text(ctx, pretty_size(datathe_sum)) - n = len(data.data) + n = len(datadata) i = 0 accumulated = 0 last = start_angle - for fn, d in data.data: + if datadata is None: return + for fn, contents, d in datadata: + if contents == None: hasContents = False + else: hasContents = True + start = last - value = self._list_value(d) + + value = d # third tuple element now *always* contains the size + accumulated += value - end = start_angle+(end_angle - start_angle)*1.0*accumulated/data.the_sum + end = start_angle+(end_angle - start_angle)*1.0*accumulated/datathe_sum if end-start >= .01: p = previouspath+os.sep+fn - self.lookup_data[ring].append(Segment(isinstance(d, sum_list), p, value, start, end)) + self.lookup_data[ring].append( Segment(hasContents , p, value, start, end) ) v = start_hue + (end_hue-start_hue)*1.0*i/n color = self._choose_color(start_hue + (end_hue-start_hue)*1.0*i/n, ring) @@ -100,9 +111,9 @@ class FringRenderer: ctx.set_source_rgb(0, 0, 0) ctx.stroke() - if isinstance(d, sum_list) and ring+1 < self.RINGS_MAX: + if hasContents and ring+1 < self.RINGS_MAX: self.draw_segment(ctx, ring+1, start, end, v, - start_hue + (end_hue-start_hue)*1.0*(i+1)/n, d, + start_hue + (end_hue-start_hue)*1.0*(i+1)/n, (fn, contents, d), previouspath+os.sep+fn) r += self.RING_RADIUS/2 @@ -137,7 +148,7 @@ class FringRenderer: ctx.move_to(x+xmod,y) # draw the side link label - if isinstance(d, sum_list): + if hasContents: ctx.set_source_rgb(0,0,1) width,height = self._draw_centered_text(ctx, fn + "/", align_x) else: @@ -147,7 +158,7 @@ class FringRenderer: if align_x == 0: width *= -1 - self.__register_side_link(isinstance(d, sum_list),p,value,end-start,x,y+(height/2),x+(width),y-(height/2)) + self.__register_side_link(hasContents,p,value,end-start,x,y+(height/2),x+(width),y-(height/2)) if ring <= self.LABEL_UNTIL_RING: ctx.move_to(*middle) -- cgit