void tbo_page_free (Page *page) { GList *f; if (tbo_page_len (page) > 0) { for (f=tbo_page_get_frames (page); f; f=g_list_next(f)) { tbo_frame_free ((Frame *) f->data); } } g_list_free (tbo_page_get_frames (page)); free (page); }
/* TODO this method should be in TboPage */ void tbo_drawing_draw_page (TboDrawing *self, cairo_t *cr, Page *page, gint w, gint h) { Frame *frame; GList *frame_list; // white background cairo_set_source_rgb(cr, 1, 1, 1); cairo_rectangle(cr, 0, 0, w, h); cairo_fill(cr); for (frame_list = tbo_page_get_frames (page); frame_list; frame_list = frame_list->next) { // draw each frame frame = (Frame *)frame_list->data; tbo_frame_draw (frame, cr); } }
void tbo_drawing_draw (TboDrawing *self, cairo_t *cr) { Frame *frame; GList *frame_list; Page *page; int w, h; w = self->comic->width; h = self->comic->height; // white background if (tbo_drawing_get_current_frame (self)) cairo_set_source_rgb(cr, 0, 0, 0); else cairo_set_source_rgb(cr, 1, 1, 1); cairo_rectangle(cr, 0, 0, w*self->zoom, h*self->zoom); cairo_fill(cr); cairo_scale (cr, self->zoom, self->zoom); page = tbo_comic_get_current_page (self->comic); if (!self->current_frame) { for (frame_list = tbo_page_get_frames (page); frame_list; frame_list = frame_list->next) { // draw each frame frame = (Frame *)frame_list->data; tbo_frame_draw (frame, cr); } } else { tbo_frame_draw_scaled (self->current_frame, cr, w, h); } }