예제 #1
0
파일: ui-menu.c 프로젝트: rcmorano/TBO
gboolean
clone_obj_cb (GtkWidget *widget, gpointer data)
{
    tbo_object *obj = selector_tool_get_selected_obj ();
    Frame *frame = selector_tool_get_selected_frame ();
    Page *page = tbo_comic_get_current_page (((TboWindow*)data)->comic);

    if (!get_frame_view () && frame)
    {
        Frame *cloned_frame = tbo_frame_clone (frame);
        cloned_frame->x += 10;
        cloned_frame->y -= 10;
        tbo_page_add_frame (page, cloned_frame);
        set_selected (cloned_frame, (TboWindow*)data);
    }
    else if (obj && get_frame_view ())
    {
        tbo_object *cloned_obj = obj->clone (obj);
        cloned_obj->x += 10;
        cloned_obj->y -= 10;
        tbo_frame_add_obj (frame, cloned_obj);
        set_selected_obj (cloned_obj, (TboWindow*)data);
    }
    update_drawing ((TboWindow *)data);
    return FALSE;
}
예제 #2
0
파일: ui-menu.c 프로젝트: rcmorano/TBO
gboolean
delete_obj_cb (GtkWidget *widget, gpointer data)
{
    TboWindow *tbo = (TboWindow *)data;

    tbo_object *obj = selector_tool_get_selected_obj ();
    Frame *frame = selector_tool_get_selected_frame ();
    Page *page = tbo_comic_get_current_page (((TboWindow*)data)->comic);

    if (obj && get_frame_view ())
    {
        tbo_frame_del_obj (frame, obj);
        set_selected_obj (NULL, tbo);
    }
    else if (!get_frame_view () && frame)
    {
        tbo_page_del_frame (page, frame);
        set_selected (NULL, tbo);
    }
    update_drawing ((TboWindow *)data);
    return FALSE;
}
예제 #3
0
파일: frame-tool.c 프로젝트: rcmorano/TBO
void
frame_tool_on_release (GtkWidget *widget,
        GdkEventButton *event,
        TboWindow *tbo)
{
    int w, h;

    w = (int)fabs (event->x - N_FRAME_X);
    h = (int)fabs (event->y - N_FRAME_Y);

    if (w != 0 && h != 0)
    {
        tbo_page_new_frame (tbo_comic_get_current_page (tbo->comic),
                min (N_FRAME_X, event->x), min (N_FRAME_Y, event->y),
                w, h);
    }

    N_FRAME_X = -1;
    N_FRAME_Y = -1;
    if (TMP_FRAME) tbo_frame_free (TMP_FRAME);
    TMP_FRAME = NULL;
}
예제 #4
0
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);
    }
}