Esempio n. 1
0
static void do_forms(float xofs, float yofs)
{
    pdf_ui_event event;
    fz_point p;
    int i;

    for (i = 0; i < annot_count; ++i)
        ui_draw_image(&annot_tex[i], xofs - page_tex.x, yofs - page_tex.y);

    if (!pdf || search_active)
        return;

    p.x = xofs - page_tex.x + ui.x;
    p.y = xofs - page_tex.x + ui.y;
    fz_transform_point(&p, &page_inv_ctm);

    if (ui.down && !ui.active)
    {
        event.etype = PDF_EVENT_TYPE_POINTER;
        event.event.pointer.pt = p;
        event.event.pointer.ptype = PDF_POINTER_DOWN;
        if (pdf_pass_event(ctx, pdf, (pdf_page*)page, &event))
        {
            if (pdf->focus)
                ui.active = do_forms;
            pdf_update_page(ctx, (pdf_page*)page);
            render_page();
            ui_needs_update = 1;
        }
    }
    else if (ui.active == do_forms && !ui.down)
    {
        ui.active = NULL;
        event.etype = PDF_EVENT_TYPE_POINTER;
        event.event.pointer.pt = p;
        event.event.pointer.ptype = PDF_POINTER_UP;
        if (pdf_pass_event(ctx, pdf, (pdf_page*)page, &event))
        {
            pdf_update_page(ctx, (pdf_page*)page);
            render_page();
            ui_needs_update = 1;
        }
    }
}
Esempio n. 2
0
int fz_pass_event(fz_interactive *idoc, fz_page *page, fz_ui_event *ui_event)
{
    return pdf_pass_event((pdf_document*)idoc, (pdf_page*)page, ui_event);
}