# This file is part of pybootchartgui. # pybootchartgui 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 3 of the License, or # (at your option) any later version. # pybootchartgui 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 pybootchartgui. If not, see . import cairo from . import draw from .draw import RenderOptions def render(writer, trace, app_options, filename): handlers = { "png": (lambda w, h: cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h), \ lambda sfc: sfc.write_to_png(filename)), "pdf": (lambda w, h: cairo.PDFSurface(filename, w, h), lambda sfc: 0), "svg": (lambda w, h: cairo.SVGSurface(filename, w, h), lambda sfc: 0) } if app_options.format is None: fmt = filename.rsplit('.', 1)[1] else: fmt = app_options.format if not (fmt in handlers): writer.error ("Unknown format '%s'." % fmt) return 10 make_surface, write_surface = handlers[fmt] options = RenderOptions (app_options) (w, h) = draw.extents (options, 1.0, trace) w = max (w, draw.MIN_IMG_W) surface = make_surface (w, h) ctx = cairo.Context (surface) draw.render (ctx, options, 1.0, trace) write_surface (surface) writer.status ("bootchart written to '%s'" % filename)