def __init__(self, logger=None, rgbmap=None, settings=None): ImageView.__init__(self, logger=logger, rgbmap=rgbmap, settings=settings) imgwin = Gtk.DrawingArea() imgwin.connect("draw", self.draw_event) imgwin.connect("configure-event", self.configure_event) imgwin.set_events(Gdk.EventMask.EXPOSURE_MASK) # prevents some flickering imgwin.set_double_buffered(True) imgwin.set_app_paintable(True) # prevents extra redraws, because we manually redraw on a size # change imgwin.set_redraw_on_allocate(False) self.imgwin = imgwin self.imgwin.show_all() # see reschedule_redraw() method self._defer_task = GtkHelp.Timer() self._defer_task.add_callback('expired', lambda timer: self.delayed_redraw()) self.msgtask = GtkHelp.Timer() self.msgtask.add_callback('expired', lambda timer: self.onscreen_message(None))
def __init__(self, logger=None, rgbmap=None, settings=None): ImageView.__init__(self, logger=logger, rgbmap=rgbmap, settings=settings) imgwin = Gtk.DrawingArea() imgwin.connect("draw", self.draw_event) imgwin.connect("configure-event", self.configure_event) imgwin.set_events(Gdk.EventMask.EXPOSURE_MASK) # prevents some flickering imgwin.set_double_buffered(True) imgwin.set_app_paintable(True) # prevents extra redraws, because we manually redraw on a size # change imgwin.set_redraw_on_allocate(False) self.imgwin = imgwin self.imgwin.show_all() # cursors self.cursor = {} # see reschedule_redraw() method self._defer_task = GtkHelp.Timer(0.0, lambda timer: self.delayed_redraw()) self.msgtask = GtkHelp.Timer(0.0, lambda timer: self.onscreen_message(None))
def convert(filepath, outfilepath): """Convert FITS image to PDF.""" logger = logging.getLogger("example1") logger.setLevel(logging.INFO) fmt = logging.Formatter(STD_FORMAT) stderrHdlr = logging.StreamHandler() stderrHdlr.setFormatter(fmt) logger.addHandler(stderrHdlr) fi = ImageViewCairo(logger) fi.configure(500, 1000) # Load fits file image = AstroImage(logger=logger) image.load_file(filepath) # Make any adjustments to the image that we want fi.set_bg(1.0, 1.0, 1.0) fi.set_image(image) fi.auto_levels() fi.zoom_fit() fi.center_image() ht_pts = 11.0 / point_in wd_pts = 8.5 / point_in off_x, off_y = 0, 0 out_f = open(outfilepath, 'w') surface = cairo.PDFSurface(out_f, wd_pts, ht_pts) # set pixels per inch surface.set_fallback_resolution(300, 300) surface.set_device_offset(off_x, off_y) try: fi.save_image_as_surface(surface) surface.show_page() surface.flush() surface.finish() finally: out_f.close()