From 7cc4eee404bb29b0d1e2d066919081296588be64 Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Thu, 8 Jan 2004 18:09:18 +0000 Subject: [PATCH] * src/BaseDoc.py: Scaleable shadow * src/plugins/AncestorChart2.py: Scale to page implemented * src/docgen/PdfDoc.py: Scalable shadow svn: r2609 --- gramps2/src/BaseDoc.py | 8 +++++++- gramps2/src/docgen/PdfDoc.py | 7 ++++--- gramps2/src/plugins/AncestorChart2.py | 28 ++++++++++++++++++++------- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/gramps2/src/BaseDoc.py b/gramps2/src/BaseDoc.py index a69b46c0e..833b54e2e 100644 --- a/gramps2/src/BaseDoc.py +++ b/gramps2/src/BaseDoc.py @@ -979,6 +979,7 @@ class GraphicsStyle: self.width = obj.width self.para_name = obj.para_name self.shadow = obj.shadow + self.shadow_space = obj.shadow_space self.color = obj.color self.fill_color = obj.fill_color self.lwidth = obj.lwidth @@ -988,6 +989,7 @@ class GraphicsStyle: self.width = 0 self.para_name = "" self.shadow = 0 + self.shadow_space = 0.2 self.lwidth = 0.5 self.color = (0,0,0) self.fill_color = (255,255,255) @@ -1014,8 +1016,12 @@ class GraphicsStyle: def set_paragraph_style(self,val): self.para_name = val - def set_shadow(self,val): + def set_shadow(self,val,space=0.2): self.shadow = val + self.shadow_space = space + + def get_shadow_space(self): + return self.shadow_space def set_color(self,val): self.color = val diff --git a/gramps2/src/docgen/PdfDoc.py b/gramps2/src/docgen/PdfDoc.py index c7c2ec0f0..0c962cb5a 100644 --- a/gramps2/src/docgen/PdfDoc.py +++ b/gramps2/src/docgen/PdfDoc.py @@ -413,10 +413,11 @@ class PdfDoc(BaseDoc.BaseDoc): w = box_style.get_width()*cm h = box_style.get_height()*cm + sspace = box_style.get_shadow_space() if box_style.get_shadow(): col = make_color((0xc0,0xc0,0xc0)) - r = reportlab.graphics.shapes.Rect((x+0.2)*cm, - (y-0.2)*cm-h, + r = reportlab.graphics.shapes.Rect((x+sspace)*cm, + (y-sspace)*cm-h, w,h, fillColor=col, strokeColor=col) @@ -433,7 +434,7 @@ class PdfDoc(BaseDoc.BaseDoc): size = p.get_font().get_size() - x = x + 0.2 + x = x + sspace if text != "": lines = text.split('\n') self.left_print(lines,p.get_font(),x*cm,y*cm - size) diff --git a/gramps2/src/plugins/AncestorChart2.py b/gramps2/src/plugins/AncestorChart2.py index d2a5845c8..e167a22a1 100644 --- a/gramps2/src/plugins/AncestorChart2.py +++ b/gramps2/src/plugins/AncestorChart2.py @@ -168,7 +168,8 @@ class AncestorChart: else: self.standalone = 0 self.font = self.doc.style_list["AC-Normal"].get_font() - self.calc() + + self.filter(self.start,1) keys = self.map.keys() keys.sort() @@ -177,6 +178,7 @@ class AncestorChart: self.genchart = GenChart(max_key+1) for key in self.map.keys(): self.genchart.set(key,self.map[key]) + self.calc() def filter(self,person,index): """traverse the ancestors recursively until either the end @@ -233,15 +235,28 @@ class AncestorChart: the elements on a page. """ - self.filter(self.start,1) + self.genchart.compress() self.box_pad_pts = 5 uh = self.doc.get_usable_height() uw = self.doc.get_usable_width() - pt2cm(2*self.box_pad_pts) + self.box_width = pt2cm(self.box_width) self.height = self.lines*pt2cm(1.25*self.font.get_size()) - self.box_width = pt2cm(self.box_width) + force_fit = 1 + self.scale = 1 + + if force_fit: + (maxy,maxx) = self.genchart.dimensions() + + bw = (self.box_width+pt2cm(10))/(uw/maxx) + bh = self.height/(uh/maxy) + + self.scale = max(bw,bh) + self.box_width = self.box_width/self.scale + self.height = self.height/self.scale + self.box_pad_pts = 5/self.scale maxh = int(uh/self.height) maxw = int(uw/self.box_width) @@ -257,10 +272,11 @@ class AncestorChart: xstart = pt2cm(2) ystart = -self.height/2.0 self.delta = pt2cm(10) + self.box_width -# delta = pt2cm(10)+ uw/self.generations_per_page self.x = [ xstart ] self.y = [ ystart + uh/2.0 ] + + self.font.set_size(self.font.get_size()/self.scale) for val in range(1,self.generations_per_page): xstart += self.delta @@ -274,7 +290,7 @@ class AncestorChart: g.set_height(self.height) g.set_width(self.box_width) g.set_paragraph_style("AC-Normal") - g.set_shadow(1) + g.set_shadow(1,0.2/self.scale) g.set_fill_color((255,255,255)) self.doc.add_draw_style("box",g) @@ -292,8 +308,6 @@ class AncestorChart: self.get_numbers((start*2)+1,index+1,vals) def print_page(self,start,generation, page): - self.genchart.compress() -# self.genchart.display() (maxy,maxx) = self.genchart.dimensions() self.doc.start_page() for y in range(0,maxy):