Changeset 626 for mds-and-trees
- Timestamp:
- 10/24/16 15:01:12 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
mds-and-trees/tree-genealogy.py
r624 r626 118 118 119 119 def draw_scale(self, file, filename): 120 self.add_text(file, "Generated from " + filename.split("\\")[-1], (5, 15), "start") 121 self.add_dashed_line(file, (self.width*0.7, self.h_margin), (self.width, self.h_margin)) 120 self.add_text(file, "Generated from " + filename.split("\\")[-1], (5, 5), "start") 122 121 123 122 start_text = "" … … 133 132 end_text = "Depth " + str(self.design.props['adepth']['max']) 134 133 135 self.add_text(file, start_text, (self.width, self.h_margin + 15), "end") 134 self.add_dashed_line(file, (self.width*0.7, self.h_margin), (self.width, self.h_margin)) 135 self.add_text(file, start_text, (self.width, self.h_margin), "end") 136 136 self.add_dashed_line(file, (self.width*0.7, self.height-self.h_margin), (self.width, self.height-self.h_margin)) 137 self.add_text(file, end_text, (self.width, self.height-self.h_margin + 15), "end")137 self.add_text(file, end_text, (self.width, self.height-self.h_margin), "end") 138 138 139 139 def compute_property(self, part, prop, node): … … 168 168 169 169 class PngDrawer(Drawer): 170 def draw_design(self, filename, input_filename, scale="SIMPLE"): 170 171 def scale_up(self): 172 self.width *= self.multi 173 self.height *= self.multi 174 self.w_margin *= self.multi 175 self.h_margin *= self.multi 176 self.h_no_margs *= self.multi 177 self.w_no_margs *= self.multi 178 179 def scale_down(self): 180 self.width /= self.multi 181 self.height /= self.multi 182 self.w_margin /= self.multi 183 self.h_margin /= self.multi 184 self.h_no_margs /= self.multi 185 self.w_no_margs /= self.multi 186 187 def draw_design(self, filename, input_filename, multi=1, scale="SIMPLE"): 171 188 print("Drawing...") 189 190 self.multi=multi 191 self.scale_up() 172 192 173 193 back = Image.new('RGBA', (self.width, self.height), (255,255,255,0)) … … 183 203 self.draw_scale(back, input_filename) 184 204 185 back.show() 205 #back.show() 206 self.scale_down() 207 208 back.thumbnail((self.width, self.height), Image.ANTIALIAS) 209 186 210 back.save(filename) 187 211 188 212 def add_dot(self, file, pos, style): 189 213 x, y = int(pos[0]), int(pos[1]) 190 r = style['r'] 214 r = style['r']*self.multi 191 215 offset = (int(x - r), int(y - r)) 192 216 size = (2*int(r), 2*int(r)) … … 201 225 def add_line(self, file, from_pos, to_pos, style): 202 226 fx, fy, tx, ty = int(from_pos[0]), int(from_pos[1]), int(to_pos[0]), int(to_pos[1]) 203 w = int(style['width']) 227 w = int(style['width'])*self.multi 204 228 205 229 offset = (min(fx-w, tx-w), min(fy-w, ty-w)) … … 210 234 img = Image.new('RGBA', size) 211 235 ImageDraw.Draw(img).line((w, w, size[0]-w, size[1]-w) if (fx-tx)*(fy-ty)>0 else (size[0]-w, w, w, size[1]-w), 212 (int(2.55*c[0]), int(2.55*c[1]), int(2.55*c[2]), int(255*style['opacity'])), int(style['width']))236 (int(2.55*c[0]), int(2.55*c[1]), int(2.55*c[2]), int(255*style['opacity'])), w) 213 237 file.paste(img, offset, mask=img) 214 238 … … 225 249 226 250 def add_text(self, file, text, pos, anchor, style=''): 227 font = ImageFont.truetype("Vera.ttf", 16 )251 font = ImageFont.truetype("Vera.ttf", 16*self.multi) 228 252 229 253 img = Image.new('RGBA', (self.width, self.height)) 230 254 draw = ImageDraw.Draw(img) 231 255 txtsize = draw.textsize(text, font=font) 232 pos = pos if anchor == "start" else (pos[0]-txtsize[0], pos[1] -txtsize[1])256 pos = pos if anchor == "start" else (pos[0]-txtsize[0], pos[1]) 233 257 draw.text(pos, text, (0,0,0), font=font) 234 258 file.paste(img, (0,0), mask=img) … … 245 269 246 270 class SvgDrawer(Drawer): 247 def draw_design(self, filename, input_filename, scale="SIMPLE"):271 def draw_design(self, filename, input_filename, multi=1, scale="SIMPLE"): 248 272 print("Drawing...") 249 273 file = open(filename, "w") … … 650 674 parser.add_argument('-c', '--config', dest='config', default="", help='config file name ') 651 675 652 #TODO: better names for those parameters653 676 parser.add_argument('-W', '--width', default=600, type=int, dest='width', help='width of the output image (600 by default)') 654 parser.add_argument('-H', '--height', default=800, type=int, dest='height', help='heigt of the output image (800 by default)') 677 parser.add_argument('-H', '--height', default=800, type=int, dest='height', help='height of the output image (800 by default)') 678 parser.add_argument('-m', '--multi', default=1, type=int, dest='multi', help='multisampling factor (applicable only for raster images)') 655 679 656 680 parser.add_argument('-t', '--time', default='GENERATIONAL', dest='time', help='values on vertical axis (BIRTHS/GENERATIONAL(d)/REAL); ' … … 701 725 else: 702 726 drawer = PngDrawer(designer, args.config, w=args.width, h=args.height) 703 drawer.draw_design(args.output, args.input, scale=SCALE)727 drawer.draw_design(args.output, args.input, multi=args.multi, scale=SCALE) 704 728 705 729
Note: See TracChangeset
for help on using the changeset viewer.