def png_saver(sk2_doc, filename=None, fileptr=None, translate=True, cnf=None, **kw): cnf = merge_cnf(cnf, kw) if filename and not fileptr: fileptr = get_fileptr(filename, True) page = sk2_doc.methods.get_page() w, h = page.page_format[1] trafo = (1.0, 0, 0, -1.0, w / 2.0, h / 2.0) canvas_matrix = cairo.Matrix(*trafo) surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(w), int(h)) ctx = cairo.Context(surface) ctx.set_matrix(canvas_matrix) rend = CairoRenderer(sk2_doc.cms) antialias_flag = True if 'antialiasing' in cnf.keys(): if not cnf['antialiasing'] in ('True', '1'): antialias_flag = False rend.antialias_flag = antialias_flag layers = sk2_doc.methods.get_visible_layers(page) for item in layers: if not item.properties[3] and antialias_flag: rend.antialias_flag = False rend.render(ctx, item.childs) if not item.properties[3] and antialias_flag: rend.antialias_flag = True surface.write_to_png(fileptr) fileptr.close()
def png_saver(sk2_doc, filename=None, fileptr=None, translate=True, cnf={}, **kw): if filename and not fileptr: fileptr = get_fileptr(filename, True) page = sk2_doc.methods.get_page() w, h = page.page_format[1] trafo = (1.0, 0, 0, -1.0, w / 2.0, h / 2.0) canvas_matrix = cairo.Matrix(*trafo) surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(w), int(h)) ctx = cairo.Context(surface) ctx.set_matrix(canvas_matrix) rend = CairoRenderer(sk2_doc.cms) antialias_flag = True if 'antialiasing' in kw.keys(): if not kw['antialiasing'] in ('True', '1'): antialias_flag = False rend.antialias_flag = antialias_flag layers = sk2_doc.methods.get_visible_layers(page) for item in layers: if not item.properties[3] and antialias_flag: rend.antialias_flag = False rend.render(ctx, item.childs) if not item.properties[3] and antialias_flag: rend.antialias_flag = True surface.write_to_png(fileptr) fileptr.close()
def generate_preview(self): wp, hp = self.config.preview_size surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(wp), int(hp)) ctx = cairo.Context(surface) if not self.config.preview_transparent: ctx.set_source_rgb(1.0, 1.0, 1.0) ctx.paint() # ---rendering mthds = self.presenter.methods layers = mthds.get_visible_layers(mthds.get_page()) bbox = mthds.count_bbox(layers) if bbox: x, y, x1, y1 = bbox w = abs(x1 - x) h = abs(y1 - y) coef = min(wp / w, hp / h) * 0.99 trafo0 = [1.0, 0.0, 0.0, 1.0, -x - w / 2.0, -y - h / 2.0] trafo1 = [coef, 0.0, 0.0, -coef, 0.0, 0.0] trafo2 = [1.0, 0.0, 0.0, 1.0, wp / 2.0, hp / 2.0] trafo = libgeom.multiply_trafo(trafo0, trafo1) trafo = libgeom.multiply_trafo(trafo, trafo2) ctx.set_matrix(cairo.Matrix(*trafo)) rend = CairoRenderer(self.presenter.cms) rend.antialias_flag = True for item in layers: rend.render(ctx, item.childs) # ---rendering image_stream = StringIO() surface.write_to_png(image_stream) return b64encode(image_stream.getvalue())
def png_saver(sk2_doc, filename=None, fileptr=None, translate=True, cnf=None, **kw): cnf = merge_cnf(cnf, kw) if filename and not fileptr: fileptr = get_fileptr(filename, True) page = sk2_doc.methods.get_page() scale = abs(float(cnf.get('scale', 1.0))) or 1.0 w, h = [scale * item for item in page.page_format[1]] trafo = (scale, 0, 0, -scale, w / 2.0, h / 2.0) canvas_matrix = cairo.Matrix(*trafo) surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(w), int(h)) ctx = cairo.Context(surface) ctx.set_matrix(canvas_matrix) antialias_flag = not cnf.get('antialiasing') in (False, 0) layers = sk2_doc.methods.get_visible_layers(page) rend = CairoRenderer(sk2_doc.cms) for item in layers: rend.antialias_flag = not any( [not item.properties[3], not antialias_flag]) rend.render(ctx, item.childs) surface.write_to_png(fileptr) fileptr.close()
def generate_preview(self): wp, hp = self.config.preview_size surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(wp), int(hp)) ctx = cairo.Context(surface) if not self.config.preview_transparent: ctx.set_source_rgb(1.0, 1.0, 1.0) ctx.paint() #---rendering mthds = self.presenter.methods layers = mthds.get_visible_layers(mthds.get_page()) bbox = mthds.count_bbox(layers) if bbox: x, y, x1, y1 = bbox w = abs(x1 - x) h = abs(y1 - y) coef = min(wp / w, hp / h) * 0.99 trafo0 = [1.0, 0.0, 0.0, 1.0, -x - w / 2.0, -y - h / 2.0] trafo1 = [coef, 0.0, 0.0, -coef, 0.0, 0.0] trafo2 = [1.0, 0.0, 0.0, 1.0, wp / 2.0, hp / 2.0] trafo = libgeom.multiply_trafo(trafo0, trafo1) trafo = libgeom.multiply_trafo(trafo, trafo2) ctx.set_matrix(cairo.Matrix(*trafo)) rend = CairoRenderer(self.presenter.cms) rend.antialias_flag = True for item in layers: rend.render(ctx, item.childs) #---rendering image_stream = StringIO() surface.write_to_png(image_stream) return b64encode(image_stream.getvalue())