* src/docgen/LPRDoc.py (write_at): Correct vertical offset.

* src/docgen/PdfDoc.py (write_at,draw_bar): Add functions.
* src/docgen/PSDrawDoc.py (write_at): Add function;
(draw_bar): Support for filling with color.
* src/ReportUtils.py (draw_legend): Correct vertical offset.


svn: r4045
This commit is contained in:
Alex Roitman 2005-02-18 01:10:25 +00:00
parent d75e6a198e
commit 9ba1e69000
5 changed files with 51 additions and 6 deletions

View File

@ -1,3 +1,10 @@
2005-02-17 Alex Roitman <shura@alex.neuro.umn.edu>
* src/docgen/LPRDoc.py (write_at): Correct vertical offset.
* src/docgen/PdfDoc.py (write_at,draw_bar): Add functions.
* src/docgen/PSDrawDoc.py (write_at): Add function;
(draw_bar): Support for filling with color.
* src/ReportUtils.py (draw_legend): Correct vertical offset.
2005-02-16 Don Allingham <dallingham@users.sourceforge.net> 2005-02-16 Don Allingham <dallingham@users.sourceforge.net>
* src/EditSource.py: commit events after deleting sources * src/EditSource.py: commit events after deleting sources
* src/Marriage.py: disable buttons in readonly mode * src/Marriage.py: disable buttons in readonly mode

View File

@ -121,7 +121,7 @@ def draw_legend(doc, start_x, start_y, data):
size = pt2cm(doc.get_style(pstyle).get_font().get_size()) size = pt2cm(doc.get_style(pstyle).get_font().get_size())
doc.draw_bar(format, start_x, start_y, start_x + (2*size), start_y + size) doc.draw_bar(format, start_x, start_y, start_x + (2*size), start_y + size)
doc.write_at(pstyle, legend, start_x + (3*size), start_y + (size*0.25)) doc.write_at(pstyle, legend, start_x + (3*size), start_y - (size*0.25))
start_y += size * 1.3 start_y += size * 1.3
def draw_vertical_bar_graph(doc, format, start_x, start_y, height, width, data): def draw_vertical_bar_graph(doc, format, start_x, start_y, height, width, data):

View File

@ -1071,7 +1071,7 @@ class LPRDoc(BaseDoc.BaseDoc):
self.gpc.setfont(find_font_from_fontstyle(fontstyle)) self.gpc.setfont(find_font_from_fontstyle(fontstyle))
x = self.left_margin + cm2u(x) x = self.left_margin + cm2u(x)
y = self.top_margin - cm2u(y) y = self.top_margin - cm2u(y) - fontstyle.get_size() * _EXTRA_SPACING_FACTOR
self.gpc.moveto(x,y) self.gpc.moveto(x,y)
self.gpc.show(text) self.gpc.show(text)

View File

@ -313,6 +313,17 @@ class PSDrawDoc(BaseDoc.BaseDoc):
def patch_text(self,text): def patch_text(self,text):
return text.encode('iso-8859-1') return text.encode('iso-8859-1')
def write_at(self,style,text,x,y):
para_style = self.style_list[style]
x = x + self.lmargin
y = y + self.tmargin
self.f.write('gsave\n')
self.f.write('%f cm %f cm moveto\n' % self.translate(x,y))
self.f.write(self.fontdef(para_style))
self.f.write('(%s) show grestore\n' % text)
def draw_bar(self,style,x1,y1,x2,y2): def draw_bar(self,style,x1,y1,x2,y2):
x1 = x1 + self.lmargin x1 = x1 + self.lmargin
x2 = x2 + self.lmargin x2 = x2 + self.lmargin
@ -320,6 +331,9 @@ class PSDrawDoc(BaseDoc.BaseDoc):
y2 = y2 + self.tmargin y2 = y2 + self.tmargin
box_type = self.draw_styles[style] box_type = self.draw_styles[style]
fill_color = rgb_color(box_type.get_fill_color())
color = rgb_color(box_type.get_color())
self.f.write('gsave\n') self.f.write('gsave\n')
self.f.write("%f cm %f cm moveto\n" % self.translate(x1,y1)) self.f.write("%f cm %f cm moveto\n" % self.translate(x1,y1))
self.f.write("0 %f cm rlineto\n" % (y2-y1)) self.f.write("0 %f cm rlineto\n" % (y2-y1))
@ -327,7 +341,8 @@ class PSDrawDoc(BaseDoc.BaseDoc):
self.f.write("0 %f cm rlineto\n" % (y1-y2)) self.f.write("0 %f cm rlineto\n" % (y1-y2))
self.f.write('closepath\n') self.f.write('closepath\n')
self.f.write("%.4f setlinewidth\n" % box_type.get_line_width()) self.f.write("%.4f setlinewidth\n" % box_type.get_line_width())
self.f.write('%.4f %.4f %.4f setrgbcolor stroke\n' % rgb_color(box_type.get_color())) self.f.write('gsave %.4f %.4f %.4f setrgbcolor fill grestore\n' % fill_color)
self.f.write('%.4f %.4f %.4f setrgbcolor stroke\n' % color)
self.f.write('grestore\n') self.f.write('grestore\n')
def draw_box(self,style,text,x,y): def draw_box(self,style,text,x,y):

View File

@ -397,8 +397,31 @@ class PdfDoc(BaseDoc.BaseDoc):
strokeDashArray=line_array) strokeDashArray=line_array)
self.drawing.add(l) self.drawing.add(l)
def write_at(self, style, text, x, y):
para_style = self.style_list[style]
font_style = para_style.get_font()
size = font_style.get_size()
y = self.get_usable_height() - y
if text != "":
lines = text.split('\n')
self.left_print(lines,font_style,x*cm,y*cm - size)
def draw_bar(self, style, x1, y1, x2, y2): def draw_bar(self, style, x1, y1, x2, y2):
pass style = self.draw_styles[style]
fill_color = make_color(style.get_fill_color())
color = make_color(style.get_color())
line_width = style.get_line_width()
w = (x2-x1)*cm
h = (y2-y1)*cm
y1 = self.get_usable_height() - y1
r = reportlab.graphics.shapes.Rect((x1)*cm,(y1*cm)-h,w,h,
strokeWidth=line_width,
fillColor=fill_color,
strokeColor=color)
self.drawing.add(r)
def draw_path(self,style,path): def draw_path(self,style,path):
stype = self.draw_styles[style] stype = self.draw_styles[style]