rem: if (screen.file[screen.curr_index] == NULL) return;
context: zoom_outline(GtkWidget *widget, GdkEventButton *event){    int x1, y1, x2, y2, dx, dy;	/* Zoom outline (UR and LL corners) */    double us_x1, us_y1, us_x2, us_y2;    int half_w, half_h;		/* cache for half window dimensions */    if (screen.file[screen.curr_index] == NULL)	return;    half_w = screen.drawing_area->allocation.width / 2;    half_h = screen.drawing_area->allocation.height / 2;    x1 = MIN(screen.start_x, event->x);    y1 = MIN(screen.start_y, event->y);    x2 = MAX(screen.start_x, event->x);    y2 = MAX(screen.start_y, event->y);    dx = x2-x1;    dy = y2-y1;    if (dx < 4 && dy < 4) {	    fprintf(stderr, "Warning: Zoom area too small, bailing out!\n");	    goto zoom_outline_end;    }    if (screen.centered_outline_zoom) {	/* Centered outline mode */	x1 = screen.start_x - dx;	y1 = screen.start_y - dy;	dx *= 2;	dy *= 2;    }    us_x1 = (screen.trans_x + x1)/(double) screen.scale;    us_y1 = (screen.trans_y + y1)/(double) screen.scale;    us_x2 = (screen.trans_x + x2)/(double) screen.scale;    us_y2 = (screen.trans_y + y2)/(double) screen.scale;    screen.scale = MIN(screen.drawing_area->allocation.width/(double)(us_x2 - us_x1),		       screen.drawing_area->allocation.height/(double)(us_y2 - us_y1));    screen.trans_x = screen.scale * (us_x1 + (us_x2 - us_x1)/2) - half_w;    screen.trans_y = screen.scale * (us_y1 + (us_y2 - us_y1)/2) - half_h;;    screen.clip_bbox.x1 = -screen.trans_x/(double)screen.scale;    screen.clip_bbox.y1 = -screen.trans_y/(double)screen.scale;zoom_outline_end:    /* Redraw screen */    redraw_pixmap(screen.drawing_area, TRUE);} /* zoom_outline */