head 1.2; access; symbols pkgsrc-2013Q2:1.2.0.18 pkgsrc-2013Q2-base:1.2 pkgsrc-2012Q4:1.2.0.16 pkgsrc-2012Q4-base:1.2 pkgsrc-2011Q4:1.2.0.14 pkgsrc-2011Q4-base:1.2 pkgsrc-2011Q2:1.2.0.12 pkgsrc-2011Q2-base:1.2 pkgsrc-2009Q4:1.2.0.10 pkgsrc-2009Q4-base:1.2 pkgsrc-2008Q4:1.2.0.8 pkgsrc-2008Q4-base:1.2 pkgsrc-2008Q3:1.2.0.6 pkgsrc-2008Q3-base:1.2 cube-native-xorg:1.2.0.4 cube-native-xorg-base:1.2 pkgsrc-2008Q2:1.2.0.2 pkgsrc-2008Q2-base:1.2 pkgsrc-2008Q1:1.1.0.4 pkgsrc-2008Q1-base:1.1 pkgsrc-2007Q4:1.1.0.2 pkgsrc-2007Q4-base:1.1; locks; strict; comment @# @; 1.2 date 2008.06.19.15.14.15; author taca; state dead; branches; next 1.1; 1.1 date 2007.11.11.23.30.18; author wiz; state Exp; branches; next ; desc @@ 1.2 log @Update to ruby-gnome2-poppler to 0.17.0rc1 to build with newer gnome packages. @ text @$NetBSD: patch-ab,v 1.1 2007/11/11 23:30:18 wiz Exp $ --- poppler/src/rbpoppler-page.c.orig 2006-12-29 14:17:28.000000000 +0100 +++ poppler/src/rbpoppler-page.c @@@@ -12,16 +12,39 @@@@ #include "rbpoppler.h" +#define SELF(self) (POPPLER_PAGE(RVAL2GOBJ(self))) #define RVAL2LM(obj) ((PopplerLinkMapping *)RVAL2BOXED(obj, POPPLER_TYPE_LINK_MAPPING)) +#define RVAL2IM(obj) ((PopplerImageMapping *)RVAL2BOXED(obj, POPPLER_TYPE_IMAGE_MAPPING)) +#define RVAL2FFM(obj) ((PopplerFormFieldMapping *)RVAL2BOXED(obj, POPPLER_TYPE_FORM_FIELD_MAPPING)) +#define RVAL2FF(obj) (POPPLER_FORM_FIELD(RVAL2GOBJ(obj))) +#define RVAL2TF(obj) RVAL2FF(obj) +#define RVAL2BF(obj) RVAL2FF(obj) +#define RVAL2CF(obj) RVAL2FF(obj) + +#define TT2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_PAGE_TRANSITION_TYPE)) +#define RVAL2TT(obj) (RVAL2GENUM(obj, POPPLER_TYPE_PAGE_TRANSITION_TYPE)) +#define TA2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_PAGE_TRANSITION_ALIGNMENT)) +#define RVAL2TA(obj) (RVAL2GENUM(obj, POPPLER_TYPE_PAGE_TRANSITION_ALIGNMENT)) +#define TD2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_PAGE_TRANSITION_DIRECTION)) +#define RVAL2TD(obj) (RVAL2GENUM(obj, POPPLER_TYPE_PAGE_TRANSITION_DIRECTION)) +#define FFT2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_FORM_FIELD_TYPE)) +#define RVAL2FFT(obj) (RVAL2GENUM(obj, POPPLER_TYPE_FORM_FIELD_TYPE)) +#define FBT2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_FORM_BUTTON_TYPE)) +#define FTT2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_FORM_TEXT_TYPE)) +#define FCT2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_FORM_CHOICE_TYPE)) -static VALUE cPSFile; +static VALUE cPSFile, cRectangle; + +#if POPPLER_CHECK_VERSION(0, 6, 0) +VALUE cUnknownField, cTextField, cButtonField, cChoiceField, cSignatureField; +#endif static VALUE page_render_to_pixbuf(VALUE self, VALUE src_x, VALUE src_y, VALUE src_width, VALUE src_height, VALUE scale, VALUE rotation, VALUE pixbuf) { - poppler_page_render_to_pixbuf(RVAL2GOBJ(self), NUM2INT(src_x), + poppler_page_render_to_pixbuf(SELF(self), NUM2INT(src_x), NUM2INT(src_y), NUM2INT(src_width), NUM2INT(src_height), NUM2DBL(scale), NUM2INT(rotation), RVAL2GOBJ(pixbuf)); @@@@ -32,7 +55,7 @@@@ page_render_to_pixbuf(VALUE self, VALUE static VALUE page_render(VALUE self, VALUE cairo) { - poppler_page_render(RVAL2GOBJ(self), RVAL2CRCONTEXT(cairo)); + poppler_page_render(SELF(self), RVAL2CRCONTEXT(cairo)); return Qnil; } #endif @@@@ -40,7 +63,7 @@@@ page_render(VALUE self, VALUE cairo) static VALUE page_render_to_ps(VALUE self, VALUE ps_file) { - poppler_page_render_to_ps(RVAL2GOBJ(self), RVAL2GOBJ(ps_file)); + poppler_page_render_to_ps(SELF(self), RVAL2GOBJ(ps_file)); return Qnil; } @@@@ -48,7 +71,7 @@@@ static VALUE page_render_generic(int argc, VALUE *argv, VALUE self) { if (argc == 1) { - if (RTEST(rb_obj_is_kind_of(argv[0], cPSFile))) { + if (RVAL2CBOOL(rb_obj_is_kind_of(argv[0], cPSFile))) { return page_render_to_ps(self, argv[0]); } else { #ifdef RB_POPPLER_CAIRO_AVAILABLE @@@@ -70,20 +93,34 @@@@ static VALUE page_get_size(VALUE self) { double width, height; - poppler_page_get_size(RVAL2GOBJ(self), &width, &height); + poppler_page_get_size(SELF(self), &width, &height); return rb_ary_new3(2, rb_float_new(width), rb_float_new(height)); } static VALUE page_get_index(VALUE self) { - return INT2NUM(poppler_page_get_index(RVAL2GOBJ(self))); + return INT2NUM(poppler_page_get_index(SELF(self))); +} + +#if POPPLER_CHECK_VERSION(0, 6, 0) +static VALUE +page_get_duration(VALUE self) +{ + return rb_float_new(poppler_page_get_duration(SELF(self))); } static VALUE +page_get_transition(VALUE self) +{ + return TRANS2RVAL(poppler_page_get_transition(SELF(self))); +} +#endif + +static VALUE page_get_thumbnail(VALUE self) { - return GOBJ2RVAL(poppler_page_get_thumbnail(RVAL2GOBJ(self))); + return GOBJ2RVAL(poppler_page_get_thumbnail(SELF(self))); } static VALUE @@@@ -91,7 +128,7 @@@@ page_get_thumbnail_size(VALUE self) { int width, height; - if (poppler_page_get_thumbnail_size(RVAL2GOBJ(self), &width, &height)) + if (poppler_page_get_thumbnail_size(SELF(self), &width, &height)) return rb_ary_new3(2, INT2NUM(width), INT2NUM(height)); else return Qnil; @@@@ -100,17 +137,60 @@@@ page_get_thumbnail_size(VALUE self) static VALUE page_find_text(VALUE self, VALUE text) { - return GLIST2ARY2F(poppler_page_find_text(RVAL2GOBJ(self), RVAL2CSTR(text)), + return GLIST2ARY2F(poppler_page_find_text(SELF(self), RVAL2CSTR(text)), POPPLER_TYPE_RECTANGLE); } static VALUE -page_get_text(VALUE self, VALUE rect) +page_get_text(int argc, VALUE *argv, VALUE self) { gchar *text; - VALUE rb_text; +#if POPPLER_CHECK_VERSION(0, 6, 0) + PopplerSelectionStyle style = POPPLER_SELECTION_GLYPH; +#endif + VALUE rb_text, arg1, arg2, rb_rect; + PopplerPage *page; + + rb_scan_args(argc, argv, "02", &arg1, &arg2); + + page = SELF(self); + if (NIL_P(arg1)) { + rb_rect = arg2; + } else { + if (RTEST(rb_obj_is_kind_of(arg2, cRectangle))) { + rb_rect = arg2; + } else { + rb_rect = Qnil; +#if POPPLER_CHECK_VERSION(0, 6, 0) + if (!NIL_P(arg2)) { + style = RVAL2SELSTYLE(arg2); + } +#endif + } + } + + if (NIL_P(rb_rect)) { + PopplerRectangle rect; + double width, height; + + rect.x1 = 0; + rect.y1 = 0; + poppler_page_get_size(page, &width, &height); + rect.x2 = width; + rect.y2 = height; + text = poppler_page_get_text(page, +#if POPPLER_CHECK_VERSION(0, 6, 0) + style, +#endif + &rect); + } else { + text = poppler_page_get_text(page, +#if POPPLER_CHECK_VERSION(0, 6, 0) + style, +#endif + RVAL2RECT(rb_rect)); + } - text = poppler_page_get_text(RVAL2GOBJ(self), RVAL2RECT(rect)); rb_text = CSTR2RVAL(text); g_free(text); return rb_text; @@@@ -119,15 +199,50 @@@@ page_get_text(VALUE self, VALUE rect) static VALUE page_get_link_mapping(VALUE self) { - return GLIST2ARY2F(poppler_page_get_link_mapping(RVAL2GOBJ(self)), + return GLIST2ARY2F(poppler_page_get_link_mapping(SELF(self)), POPPLER_TYPE_LINK_MAPPING); } +#if POPPLER_CHECK_VERSION(0, 6, 0) +static VALUE +page_get_image_mapping(VALUE self) +{ + return GLIST2ARY2F(poppler_page_get_image_mapping(SELF(self)), + POPPLER_TYPE_IMAGE_MAPPING); +} + +static VALUE +page_get_form_field_mapping(VALUE self) +{ + return GLIST2ARY2F(poppler_page_get_form_field_mapping(SELF(self)), + POPPLER_TYPE_FORM_FIELD_MAPPING); +} +#endif + static VALUE -page_get_selection_region(VALUE self, VALUE scale, VALUE selection) +page_get_selection_region(int argc, VALUE *argv, VALUE self) { - return REGION2RVAL(poppler_page_get_selection_region(RVAL2GOBJ(self), +#if POPPLER_CHECK_VERSION(0, 6, 0) + PopplerSelectionStyle style = POPPLER_SELECTION_GLYPH; +#endif + VALUE arg2, arg3, scale, selection; + + rb_scan_args(argc, argv, "21", &scale, &arg2, &arg3); + + if (NIL_P(arg3)) { + selection = arg2; + } else { +#if POPPLER_CHECK_VERSION(0, 6, 0) + style = RVAL2SELSTYLE(arg2); +#endif + selection = arg3; + } + + return REGION2RVAL(poppler_page_get_selection_region(SELF(self), NUM2DBL(scale), +#if POPPLER_CHECK_VERSION(0, 6, 0) + style, +#endif RVAL2RECT(selection))); } @@@@ -136,15 +251,16 @@@@ page_get_selection_region(VALUE self, VA static VALUE page_render_selection(VALUE self, VALUE cairo, VALUE selection, VALUE rb_old_selection, - VALUE glyph_color, VALUE background_color) + VALUE style, VALUE glyph_color, VALUE background_color) { PopplerRectangle *old_selection = NULL; if (!NIL_P(rb_old_selection)) old_selection = RVAL2RECT(rb_old_selection); - poppler_page_render_selection(RVAL2GOBJ(self), RVAL2CRCONTEXT(cairo), + poppler_page_render_selection(SELF(self), RVAL2CRCONTEXT(cairo), RVAL2RECT(selection), old_selection, + RVAL2SELSTYLE(style), RVAL2COLOR(glyph_color), RVAL2COLOR(background_color)); return Qnil; @@@@ -159,17 +275,24 @@@@ static VALUE page_render_selection_to_pixbuf(VALUE self, VALUE scale, VALUE rotation, VALUE pixbuf, VALUE selection, VALUE rb_old_selection, +#ifdef HAVE_POPPLER_PAGE_RENDER_SELECTION_TO_PIXBUF + VALUE style, +#endif VALUE glyph_color, VALUE background_color) { PopplerRectangle *old_selection = NULL; if (!NIL_P(rb_old_selection)) old_selection = RVAL2RECT(rb_old_selection); - poppler_page_render_selection_to_pixbuf(RVAL2GOBJ(self), NUM2DBL(scale), + poppler_page_render_selection_to_pixbuf(SELF(self), + NUM2DBL(scale), NUM2INT(rotation), RVAL2GOBJ(pixbuf), RVAL2RECT(selection), old_selection, +#ifdef HAVE_POPPLER_PAGE_RENDER_SELECTION_TO_PIXBUF + RVAL2SELSTYLE(style), +#endif RVAL2COLOR(glyph_color), RVAL2COLOR(background_color)); return Qnil; @@@@ -178,24 +301,86 @@@@ page_render_selection_to_pixbuf(VALUE se static VALUE page_render_selection_generic(int argc, VALUE *argv, VALUE self) { - if (argc == 5) { + if (argc == 6) { #if defined(RB_POPPLER_CAIRO_AVAILABLE) && \ defined(HAVE_POPPLER_PAGE_RENDER_SELECTION_TO_PIXBUF) return page_render_selection(self, argv[0], argv[1], argv[2], - argv[3], argv[4]); + argv[3], argv[4], argv[5]); #else rb_raise(rb_eArgError, "cairo is not available"); #endif +#ifdef HAVE_POPPLER_PAGE_RENDER_SELECTION_TO_PIXBUF + } else if (argc == 8) { + return page_render_selection_to_pixbuf(self, argv[0], argv[1], + argv[2], argv[3], argv[4], + argv[5], argv[6], argv[7]); +#else } else if (argc == 7) { return page_render_selection_to_pixbuf(self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]); +#endif } else { rb_raise(rb_eArgError, - "wrong number of arguments (%d for 5 or 7)", argc); + "wrong number of arguments (%d for 5 or %d)", argc, +#ifdef HAVE_POPPLER_PAGE_RENDER_SELECTION_TO_PIXBUF + 8 +#else + 7 +#endif + ); } } +#if POPPLER_CHECK_VERSION(0, 6, 0) +static VALUE +page_get_crop_box(VALUE self) +{ + PopplerRectangle rect; + + poppler_page_get_crop_box(SELF(self), &rect); + return RECT2RVAL(&rect); +} +#endif + + +#define DEF_READER(prefix, name, member, self_to_c, member_to_rb) \ +static VALUE \ +prefix ## _get_ ## name(VALUE self) \ +{ \ + return member_to_rb((self_to_c(self))->member); \ +} + +#define DEF_WRITER(prefix, name, member, self_to_c, value_to_c) \ +static VALUE \ +prefix ## _set_ ## name(VALUE self, VALUE value) \ +{ \ + (self_to_c(self))->member = value_to_c(value); \ + return Qnil; \ +} + +#define DEF_WRITER_WITH_SETTER(prefix, name, member, \ + self_to_c, value_setter) \ +static VALUE \ +prefix ## _set_ ## name(VALUE self, VALUE value) \ +{ \ + value_setter((self_to_c(self))->member, value); \ + return Qnil; \ +} + +#define DEF_ACCESSOR(prefix, member, self_to_c, member_to_rb, value_to_c) \ + DEF_READER(prefix, member, member, self_to_c, member_to_rb) \ + DEF_WRITER(prefix, member, member, self_to_c, value_to_c) \ + +#define DEF_ACCESSOR_WITH_SETTER(prefix, member, self_to_c, \ + member_to_rb, value_setter) \ + DEF_READER(prefix, member, member, self_to_c, member_to_rb) \ + DEF_WRITER_WITH_SETTER(prefix, member, member, self_to_c, value_setter) + +#define DEF_ACCESSOR_WITH_NAME(prefix, name, member, self_to_c, \ + member_to_rb, value_to_c) \ + DEF_READER(prefix, name, member, self_to_c, member_to_rb) \ + DEF_WRITER(prefix, name, member, self_to_c, value_to_c) /* A rectangle on a page, with coordinates in PDF points. */ @@@@ -213,107 +398,320 @@@@ rectangle_initialize(VALUE self, VALUE x return Qnil; } +DEF_ACCESSOR(rectangle, x1, RVAL2RECT, rb_float_new, NUM2DBL) +DEF_ACCESSOR(rectangle, y1, RVAL2RECT, rb_float_new, NUM2DBL) +DEF_ACCESSOR(rectangle, x2, RVAL2RECT, rb_float_new, NUM2DBL) +DEF_ACCESSOR(rectangle, y2, RVAL2RECT, rb_float_new, NUM2DBL) + static VALUE -rectangle_get_x1(VALUE self) +rectangle_to_a(VALUE self) { - return rb_float_new(RVAL2RECT(self)->x1); + PopplerRectangle *rectangle = RVAL2RECT(self); + return rb_ary_new3(4, + rb_float_new(rectangle->x1), + rb_float_new(rectangle->y1), + rb_float_new(rectangle->x2), + rb_float_new(rectangle->y2)); } -static VALUE -rectangle_get_y1(VALUE self) + +/* Mapping between areas on the current page and PopplerActions */ +#define RECT_ENTITY2RVAL(rect) RECT2RVAL(&(rect)) +#define RECT_ENTITY_SET(rect, rb_rect) rectangle_set(&(rect), rb_rect) +static void +rectangle_set(PopplerRectangle *rect, VALUE rb_rect) { - return rb_float_new(RVAL2RECT(self)->y1); + *rect = *(RVAL2RECT(rb_rect)); } -static VALUE -rectangle_get_x2(VALUE self) +DEF_ACCESSOR_WITH_SETTER(link_mapping, area, + RVAL2LM, RECT_ENTITY2RVAL, RECT_ENTITY_SET) +DEF_ACCESSOR(link_mapping, action, RVAL2LM, ACTION2RVAL, RVAL2ACTION) + +#if POPPLER_CHECK_VERSION(0, 6, 0) + +/* Page Transition */ +DEF_ACCESSOR(page_trans, type, RVAL2TRANS, RVAL2TT, TT2RVAL) +DEF_ACCESSOR(page_trans, alignment, RVAL2TRANS, RVAL2TA, TA2RVAL) +DEF_ACCESSOR(page_trans, direction, RVAL2TRANS, RVAL2TD, TD2RVAL) +DEF_ACCESSOR(page_trans, duration, RVAL2TRANS, NUM2INT, INT2NUM) +DEF_ACCESSOR(page_trans, angle, RVAL2TRANS, NUM2INT, INT2NUM) +DEF_ACCESSOR(page_trans, scale, RVAL2TRANS, NUM2DBL, rb_float_new) +DEF_ACCESSOR(page_trans, rectangular, RVAL2TRANS, RVAL2CBOOL, CBOOL2RVAL) + + +/* Mapping between areas on the current page and images */ +DEF_ACCESSOR_WITH_SETTER(image_mapping, area, + RVAL2IM, RECT_ENTITY2RVAL, RECT_ENTITY_SET) +DEF_ACCESSOR(image_mapping, image, RVAL2IM, GOBJ2RVAL, RVAL2GDK_PIXBUF) + + +/* Mapping between areas on the current page and form fields */ +VALUE +rb_poppler_ruby_object_from_form_field(PopplerFormField *field) +{ + VALUE obj; + + obj = rbgobj_ruby_object_from_instance2(field, FALSE); + if (NIL_P(obj)) { + switch (poppler_form_field_get_field_type(field)) { + case POPPLER_FORM_FIELD_UNKNOWN: + obj = rbgobj_create_object(cUnknownField); + break; + case POPPLER_FORM_FIELD_BUTTON: + obj = rbgobj_create_object(cButtonField); + break; + case POPPLER_FORM_FIELD_TEXT: + obj = rbgobj_create_object(cTextField); + break; + case POPPLER_FORM_FIELD_CHOICE: + obj = rbgobj_create_object(cChoiceField); + break; + case POPPLER_FORM_FIELD_SIGNATURE: + obj = rbgobj_create_object(cSignatureField); + break; + } + g_object_ref(field); + G_INITIALIZE(obj, (gpointer)field); + } + + return obj; +} + +DEF_ACCESSOR_WITH_SETTER(form_field_mapping, area, + RVAL2FFM, RECT_ENTITY2RVAL, RECT_ENTITY_SET) +DEF_ACCESSOR(form_field_mapping, field, RVAL2FFM, FF2RVAL, RVAL2FF) + +/* FormField */ +VALUE +form_field_get_id(VALUE self) { - return rb_float_new(RVAL2RECT(self)->x2); + return INT2NUM(poppler_form_field_get_id(RVAL2FF(self))); } -static VALUE -rectangle_get_y2(VALUE self) +VALUE +form_field_get_font_size(VALUE self) +{ + return rb_float_new(poppler_form_field_get_font_size(RVAL2FF(self))); +} + +VALUE +form_field_is_read_only(VALUE self) { - return rb_float_new(RVAL2RECT(self)->y2); + return CBOOL2RVAL(poppler_form_field_is_read_only(RVAL2FF(self))); } +/* Button Field */ +VALUE +button_field_get_button_type(VALUE self) +{ + return FBT2RVAL(poppler_form_field_button_get_button_type(RVAL2FF(self))); +} -static VALUE -rectangle_set_x1(VALUE self, VALUE x1) +VALUE +button_field_get_state(VALUE self) { - RVAL2RECT(self)->x1 = NUM2DBL(x1); + return CBOOL2RVAL(poppler_form_field_button_get_state(RVAL2BF(self))); +} + +VALUE +button_field_set_state(VALUE self, VALUE state) +{ + poppler_form_field_button_set_state(RVAL2BF(self), RVAL2CBOOL(state)); return Qnil; } -static VALUE -rectangle_set_y1(VALUE self, VALUE y1) +/* Text Field */ +VALUE +text_field_get_text_type(VALUE self) { - RVAL2RECT(self)->y1 = NUM2DBL(y1); + return FTT2RVAL(poppler_form_field_text_get_text_type(RVAL2TF(self))); +} + +VALUE +text_field_get_text(VALUE self) +{ + return CSTR2RVAL(poppler_form_field_text_get_text(RVAL2TF(self))); +} + +VALUE +text_field_set_text(VALUE self, VALUE text) +{ + poppler_form_field_text_set_text(RVAL2TF(self), RVAL2CSTR2(text)); return Qnil; } -static VALUE -rectangle_set_x2(VALUE self, VALUE x2) +VALUE +text_field_get_max_length(VALUE self) +{ + return INT2NUM(poppler_form_field_text_get_max_len(RVAL2TF(self))); +} + +VALUE +text_field_do_spell_check(VALUE self) +{ + return CBOOL2RVAL(poppler_form_field_text_do_spell_check(RVAL2TF(self))); +} + +VALUE +text_field_do_scroll(VALUE self) +{ + return CBOOL2RVAL(poppler_form_field_text_do_scroll(RVAL2TF(self))); +} + +VALUE +text_field_is_rich_text(VALUE self) +{ + return CBOOL2RVAL(poppler_form_field_text_is_rich_text(RVAL2TF(self))); +} + +VALUE +text_field_is_password(VALUE self) +{ + return CBOOL2RVAL(poppler_form_field_text_is_password(RVAL2TF(self))); +} + + +/* Choice Field */ +VALUE +choice_field_get_choice_type(VALUE self) +{ + return FCT2RVAL(poppler_form_field_choice_get_choice_type(RVAL2CF(self))); +} + +VALUE +choice_field_is_editable(VALUE self) +{ + return CBOOL2RVAL(poppler_form_field_choice_is_editable(RVAL2CF(self))); +} + +VALUE +choice_field_can_select_multiple(VALUE self) +{ + return CBOOL2RVAL(poppler_form_field_choice_can_select_multiple(RVAL2CF(self))); +} + +VALUE +choice_field_do_spell_check(VALUE self) { - RVAL2RECT(self)->x2 = NUM2DBL(x2); + return CBOOL2RVAL(poppler_form_field_choice_do_spell_check(RVAL2CF(self))); +} + +VALUE +choice_field_commit_on_change(VALUE self) +{ + return CBOOL2RVAL(poppler_form_field_choice_commit_on_change(RVAL2CF(self))); +} + +VALUE +choice_field_get_n_items(VALUE self) +{ + return INT2NUM(poppler_form_field_choice_get_n_items(RVAL2CF(self))); +} + +VALUE +choice_field_get_item(VALUE self, VALUE index) +{ + return CSTR2RVAL(poppler_form_field_choice_get_item(RVAL2CF(self), + NUM2INT(index))); +} + +VALUE +choice_field_is_item_selected(VALUE self, VALUE index) +{ + return CBOOL2RVAL(poppler_form_field_choice_is_item_selected(RVAL2CF(self), + NUM2INT(index))); +} + +VALUE +choice_field_select_item(VALUE self, VALUE index) +{ + poppler_form_field_choice_select_item(RVAL2CF(self), NUM2INT(index)); return Qnil; } -static VALUE -rectangle_set_y2(VALUE self, VALUE y2) +VALUE +choice_field_unselect_all(VALUE self) { - RVAL2RECT(self)->y2 = NUM2DBL(y2); + poppler_form_field_choice_unselect_all(RVAL2CF(self)); return Qnil; } -static VALUE -rectangle_to_a(VALUE self) +VALUE +choice_field_toggle_item(VALUE self, VALUE index) { - PopplerRectangle *rectangle = RVAL2RECT(self); - return rb_ary_new3(4, - rb_float_new(rectangle->x1), - rb_float_new(rectangle->y1), - rb_float_new(rectangle->x2), - rb_float_new(rectangle->y2)); + poppler_form_field_choice_toggle_item(RVAL2CF(self), NUM2INT(index)); + return Qnil; } - -/* Mapping between areas on the current page and PopplerActions */ -static VALUE -link_mapping_get_area(VALUE self) +VALUE +choice_field_set_text(VALUE self, VALUE text) { - return RECT2RVAL(&(RVAL2LM(self)->area)); + poppler_form_field_choice_set_text(RVAL2CF(self), RVAL2CSTR2(text)); + return Qnil; } -static VALUE -link_mapping_get_action(VALUE self) +VALUE +choice_field_get_text(VALUE self) { - return ACTION2RVAL(RVAL2LM(self)->action); + return CSTR2RVAL(poppler_form_field_choice_get_text(RVAL2CF(self))); } +#endif void Init_poppler_page(VALUE mPoppler) { - VALUE cPage, cRectangle, cLinkMapping; + VALUE cPage, cLinkMapping; +#if POPPLER_CHECK_VERSION(0, 6, 0) + VALUE cPageTransition, cImageMapping, cFormFieldMapping, cFormField; +#endif cPage = G_DEF_CLASS(POPPLER_TYPE_PAGE, "Page", mPoppler); cRectangle = G_DEF_CLASS(POPPLER_TYPE_RECTANGLE, "Rectangle", mPoppler); cLinkMapping = G_DEF_CLASS(POPPLER_TYPE_LINK_MAPPING, "LinkMapping", mPoppler); +#if POPPLER_CHECK_VERSION(0, 6, 0) + cPageTransition = G_DEF_CLASS(POPPLER_TYPE_PAGE_TRANSITION, + "PageTransition", mPoppler); + cImageMapping = G_DEF_CLASS(POPPLER_TYPE_IMAGE_MAPPING, + "ImageMapping", mPoppler); + cFormFieldMapping = G_DEF_CLASS(POPPLER_TYPE_FORM_FIELD_MAPPING, + "FormFieldMapping", mPoppler); + + cFormField = G_DEF_CLASS(POPPLER_TYPE_FORM_FIELD, "FormField", mPoppler); + cUnknownField = rb_define_class_under(mPoppler, "UnknownField", cFormField); + cTextField = rb_define_class_under(mPoppler, "TextField", cFormField); + cButtonField = rb_define_class_under(mPoppler, "ButtonField", cFormField); + cChoiceField = rb_define_class_under(mPoppler, "ChoiceField", cFormField); + cSignatureField = rb_define_class_under(mPoppler, "SignatureField", + cFormField); +#endif cPSFile = rb_const_get(mPoppler, rb_intern("PSFile")); rb_define_method(cPage, "render", page_render_generic, -1); rb_define_method(cPage, "size", page_get_size, 0); rb_define_method(cPage, "index", page_get_index, 0); +#if POPPLER_CHECK_VERSION(0, 6, 0) + rb_define_method(cPage, "duration", page_get_duration, 0); + rb_define_method(cPage, "transition", page_get_transition, 0); +#endif rb_define_method(cPage, "thumbnail", page_get_thumbnail, 0); rb_define_method(cPage, "thumbnail_size", page_get_thumbnail_size, 0); rb_define_method(cPage, "find_text", page_find_text, 1); - rb_define_method(cPage, "get_text", page_get_text, 1); + rb_define_method(cPage, "get_text", page_get_text, -1); rb_define_method(cPage, "link_mapping", page_get_link_mapping, 0); +#if POPPLER_CHECK_VERSION(0, 6, 0) + rb_define_method(cPage, "image_mapping", page_get_image_mapping, 0); + rb_define_method(cPage, "form_field_mapping", + page_get_form_field_mapping, 0); +#endif rb_define_method(cPage, "get_selection_region", - page_get_selection_region, 2); + page_get_selection_region, -1); rb_define_method(cPage, "render_selection", page_render_selection_generic, -1); +#if POPPLER_CHECK_VERSION(0, 6, 0) + rb_define_method(cPage, "crop_box", page_get_crop_box, 0); +#endif G_DEF_SETTERS(cPage); @@@@ -335,5 +733,102 @@@@ Init_poppler_page(VALUE mPoppler) rb_define_method(cLinkMapping, "area", link_mapping_get_area, 0); rb_define_method(cLinkMapping, "action", link_mapping_get_action, 0); + rb_define_method(cLinkMapping, "set_area", link_mapping_set_area, 1); + rb_define_method(cLinkMapping, "set_action", link_mapping_set_action, 1); + G_DEF_SETTERS(cLinkMapping); + +#if POPPLER_CHECK_VERSION(0, 6, 0) +/* Page Transition */ + rb_define_method(cPageTransition, "type", page_trans_get_type, 0); + rb_define_method(cPageTransition, "alignment", page_trans_get_alignment, 0); + rb_define_method(cPageTransition, "direction", page_trans_get_direction, 0); + rb_define_method(cPageTransition, "duration", page_trans_get_duration, 0); + rb_define_method(cPageTransition, "angle", page_trans_get_angle, 0); + rb_define_method(cPageTransition, "scale", page_trans_get_scale, 0); + rb_define_method(cPageTransition, "rectangular", + page_trans_get_rectangular, 0); + + rb_define_method(cPageTransition, "set_type", page_trans_set_type, 1); + rb_define_method(cPageTransition, "set_alignment", + page_trans_set_alignment, 1); + rb_define_method(cPageTransition, "set_direction", + page_trans_set_direction, 1); + rb_define_method(cPageTransition, "set_duration", + page_trans_set_duration, 1); + rb_define_method(cPageTransition, "set_angle", page_trans_set_angle, 1); + rb_define_method(cPageTransition, "set_scale", page_trans_set_scale, 1); + rb_define_method(cPageTransition, "set_rectangular", + page_trans_set_rectangular, 1); + + G_DEF_SETTERS(cPageTransition); + + +/* Mapping between areas on the current page and images */ + rb_define_method(cImageMapping, "area", image_mapping_get_area, 0); + rb_define_method(cImageMapping, "image", image_mapping_get_image, 0); + + rb_define_method(cImageMapping, "set_area", image_mapping_set_area, 1); + rb_define_method(cImageMapping, "set_image", image_mapping_set_image, 1); + + G_DEF_SETTERS(cImageMapping); + + +/* Mapping between areas on the current page and form fields */ + rb_define_method(cFormFieldMapping, "area", form_field_mapping_get_area, 0); + rb_define_method(cFormFieldMapping, "field", form_field_mapping_get_field, + 0); + + rb_define_method(cFormFieldMapping, "set_area", + form_field_mapping_set_area, 1); + rb_define_method(cFormFieldMapping, "set_field", + form_field_mapping_set_field, 1); + + G_DEF_SETTERS(cFormFieldMapping); + +/* FormField */ + rb_define_method(cFormField, "id", form_field_get_id, 0); + rb_define_method(cFormField, "font_size", form_field_get_font_size, 0); + rb_define_method(cFormField, "read_only?", form_field_is_read_only, 0); + + G_DEF_SETTERS(cFormField); + + + rb_define_method(cButtonField, "active?", button_field_get_state, 0); + rb_define_method(cButtonField, "set_active", button_field_set_state, 1); + + G_DEF_SETTERS(cButtonField); + + + rb_define_method(cTextField, "type", text_field_get_text_type, 0); + rb_define_method(cTextField, "text", text_field_get_text, 0); + rb_define_method(cTextField, "set_text", text_field_set_text, 1); + rb_define_method(cTextField, "max_length", text_field_get_max_length, 0); + rb_define_method(cTextField, "spell_check?", text_field_do_spell_check, 0); + rb_define_method(cTextField, "scroll?", text_field_do_scroll, 0); + rb_define_method(cTextField, "rich_text?", text_field_is_rich_text, 0); + rb_define_method(cTextField, "password?", text_field_is_password, 0); + + G_DEF_SETTERS(cTextField); + + + rb_define_method(cChoiceField, "type", choice_field_get_choice_type, 0); + rb_define_method(cChoiceField, "editable?", choice_field_is_editable, 0); + rb_define_method(cChoiceField, "select_multiple?", + choice_field_can_select_multiple, 0); + rb_define_method(cChoiceField, "spell_check?", + choice_field_do_spell_check, 0); + rb_define_method(cChoiceField, "commit_on_change?", + choice_field_commit_on_change, 0); + rb_define_method(cChoiceField, "n_items", choice_field_get_n_items, 0); + rb_define_method(cChoiceField, "[]", choice_field_get_item, 1); + rb_define_method(cChoiceField, "selected?", + choice_field_is_item_selected, 1); + rb_define_method(cChoiceField, "select", choice_field_select_item, 1); + rb_define_method(cChoiceField, "unselect_all", choice_field_unselect_all, 0); + rb_define_method(cChoiceField, "text", choice_field_get_text, 0); + rb_define_method(cChoiceField, "set_text", choice_field_set_text, 1); + + G_DEF_SETTERS(cChoiceField); +#endif } @ 1.1 log @Fix build with poppler-0.6.x. From maintainer dieter roelants in PR 37358. @ text @d1 1 a1 1 $NetBSD$ @