diff --git a/gramps/src/docgen/SvgDrawDoc.py b/gramps/src/docgen/SvgDrawDoc.py new file mode 100644 index 000000000..3b7029f6b --- /dev/null +++ b/gramps/src/docgen/SvgDrawDoc.py @@ -0,0 +1,129 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2000 Donald N. Allingham +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +import os +import tempfile +import string +import Plugins +import intl +_ = intl.gettext + +from TextDoc import * +from DrawDoc import * + + +class SvgDrawDoc(DrawDoc): + + def __init__(self,styles,type,orientation): + DrawDoc.__init__(self,styles,type,orientation) + self.f = None + self.filename = None + self.level = 0 + self.time = "0000-00-00T00:00:00" + self.page = 0 + + def open(self,filename): + if filename[-4:] != ".svg": + self.root = filename + else: + self.root = filename[:-4] + + def close(self): + pass + + def start_paragraph(self,style_name): + pass + + def end_paragraph(self): + pass + + def write_text(self,text): + pass + + def start_page(self,orientation=None): + self.page = self.page + 1 + if self.page != 1: + name = "%s-%d.svg" % (self.root,self.page) + else: + name = "%s.svg" % self.root + self.f = open(name,"w") + + self.f.write('\n') + self.f.write('\n') + self.f.write('\n') + + def end_page(self): + self.f.write('\n') + self.f.close() + + def draw_line(self,style,x1,y1,x2,y2): + self.f.write('\n') + + def draw_box(self,style,text,x,y): + box_style = self.draw_styles[style] + para_name = box_style.get_paragraph_style() + p = self.style_list[para_name] + + bh = box_style.get_height() + bw = box_style.get_width() + self.f.write('\n') + self.f.write('\n' % box_style.get_color()) + if text != "": + font = p.get_font() + font_size = font.get_size() + lines = string.split(text,'\n') + nlines = len(lines) + mar = 10/28.35 + fs = (font_size/28.35) * 1.2 + center = y + (bh + fs)/2.0 + (fs*0.2) + ystart = center - (fs/2.0) * nlines + for i in range(nlines): + ypos = ystart + (i * fs) + self.f.write('') + self.f.write(lines[i]) + self.f.write('\n') + +Plugins.register_draw_doc(_("SVG (Scalable Vector Graphics)"),SvgDrawDoc);