Exemplo n.º 1
0
 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())
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
	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())
Exemplo n.º 4
0
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()
Exemplo n.º 5
0
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()
Exemplo n.º 6
0
 def __init__(self, canvas, cms=None):
     CairoRenderer.__init__(self, cms)
     self.canvas = canvas
     self.direct_matrix = cairo.Matrix(1.0, 0.0, 0.0, 1.0, 0.0, 0.0)
Exemplo n.º 7
0
 def __init__(self, cms):
     CairoRenderer.__init__(self, cms)
Exemplo n.º 8
0
	def __init__(self, cms):
		CairoRenderer.__init__(self, cms)