diff options
author | wiz <wiz> | 2007-11-11 23:30:17 +0000 |
---|---|---|
committer | wiz <wiz> | 2007-11-11 23:30:17 +0000 |
commit | aa7bed9987abc38c38c26c2d9dcc4099707012ca (patch) | |
tree | cc6d7c35fc3851bda8759b73e2ef1c22ad8faf25 /print | |
parent | 80b7c1d33194dcd64c584bbd9553c7752ecae78a (diff) | |
download | pkgsrc-aa7bed9987abc38c38c26c2d9dcc4099707012ca.tar.gz |
Fix build with poppler-0.6.x.
From maintainer dieter roelants in PR 37358.
Diffstat (limited to 'print')
-rw-r--r-- | print/ruby-gnome2-poppler/Makefile | 6 | ||||
-rw-r--r-- | print/ruby-gnome2-poppler/distinfo | 7 | ||||
-rw-r--r-- | print/ruby-gnome2-poppler/patches/patch-aa | 32 | ||||
-rw-r--r-- | print/ruby-gnome2-poppler/patches/patch-ab | 840 |
4 files changed, 883 insertions, 2 deletions
diff --git a/print/ruby-gnome2-poppler/Makefile b/print/ruby-gnome2-poppler/Makefile index 6167e3bb9b9..775fe288c68 100644 --- a/print/ruby-gnome2-poppler/Makefile +++ b/print/ruby-gnome2-poppler/Makefile @@ -1,7 +1,8 @@ -# $NetBSD: Makefile,v 1.1.1.1 2007/05/27 02:00:02 obache Exp $ +# $NetBSD: Makefile,v 1.2 2007/11/11 23:30:17 wiz Exp $ # PKGNAME= ${RUBY_PKGPREFIX}-gnome2-poppler-${VERSION} +PKGREVISION= 1 COMMENT= Ruby binding of poppler-glib CATEGORIES= print @@ -10,8 +11,9 @@ RUBY_EXTCONF_SUBDIRS= poppler DEPENDS+= ${RUBY_PKGPREFIX}-gnome2-glib>=${VERSION}:../../devel/ruby-gnome2-glib DEPENDS+= ${RUBY_PKGPREFIX}-gnome2-gdkpixbuf>=${VERSION}:../../graphics/ruby-gnome2-gdkpixbuf USE_TOOLS+= pkg-config +DISTINFO_FILE?= ${.CURDIR}/distinfo -BUILDLINK_API_DEPENDS.poppler-glib+= poppler-glib>=0.5.2 +BUILDLINK_API_DEPENDS.poppler-glib+= poppler-glib>=0.6.0 .include "../../graphics/ruby-rcairo/buildlink3.mk" .include "../../print/poppler-glib/buildlink3.mk" diff --git a/print/ruby-gnome2-poppler/distinfo b/print/ruby-gnome2-poppler/distinfo new file mode 100644 index 00000000000..a4dd168d379 --- /dev/null +++ b/print/ruby-gnome2-poppler/distinfo @@ -0,0 +1,7 @@ +$NetBSD: distinfo,v 1.1 2007/11/11 23:30:17 wiz Exp $ + +SHA1 (ruby-gnome2-all-0.16.0.tar.gz) = 488f6c1f139060e005f336c9c854c4dc5b3e6b7c +RMD160 (ruby-gnome2-all-0.16.0.tar.gz) = c83c7cdcf633ad5cc213180f641a6c8f18002a9c +Size (ruby-gnome2-all-0.16.0.tar.gz) = 1208856 bytes +SHA1 (patch-aa) = e304eae9b1341db74e5bcc7e8aa51f3e6475b4fa +SHA1 (patch-ab) = 82c0981b80df1dd5390f53561e510bf9e32575d0 diff --git a/print/ruby-gnome2-poppler/patches/patch-aa b/print/ruby-gnome2-poppler/patches/patch-aa new file mode 100644 index 00000000000..6a3d83700ba --- /dev/null +++ b/print/ruby-gnome2-poppler/patches/patch-aa @@ -0,0 +1,32 @@ +$NetBSD: patch-aa,v 1.1 2007/11/11 23:30:18 wiz Exp $ + +--- poppler/src/rbpoppler.h.orig 2006-12-29 14:17:28.000000000 +0100 ++++ poppler/src/rbpoppler.h +@@ -38,16 +38,27 @@ extern GType poppler_dest_get_type (void + #define REGION2RVAL(obj) (BOXED2RVAL(obj, GDK_TYPE_REGION)) + #define RVAL2DEST(obj) ((PopplerDest *)RVAL2BOXED(obj, POPPLER_TYPE_DEST)) + #define DEST2RVAL(obj) (BOXED2RVAL(obj, POPPLER_TYPE_DEST)) ++#define TRANS2RVAL(obj) (BOXED2RVAL(obj, POPPLER_TYPE_PAGE_TRANSITION)) ++#define RVAL2TRANS(obj) ((PopplerPageTransition *)RVAL2BOXED(obj, POPPLER_TYPE_PAGE_TRANSITION)) ++ + #define DESTTYPE2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_DEST_TYPE)) + #define ACTIONTYPE2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_ACTION_TYPE)) + #define RVAL2ACTIONTYPE(obj) (RVAL2GENUM(obj, POPPLER_TYPE_ACTION_TYPE)) ++#define SELSTYLE2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_SELECTION_STYLE)) ++#define RVAL2SELSTYLE(obj) (RVAL2GENUM(obj, POPPLER_TYPE_SELECTION_STYLE)) + #define RVAL2COLOR(obj) ((GdkColor *)RVAL2BOXED(obj, GDK_TYPE_COLOR)) + + #define ACTION2RVAL(obj) (rb_poppler_ruby_object_from_action(obj)) + #define RVAL2ACTION(obj) (rb_poppler_action_from_ruby_object(obj)) ++#define FF2RVAL(obj) (rb_poppler_ruby_object_from_form_field(obj)) + + extern VALUE rb_poppler_ruby_object_from_action(PopplerAction *action); + extern PopplerAction *rb_poppler_action_from_ruby_object(VALUE action); ++#if POPPLER_CHECK_VERSION(0, 6, 0) ++extern VALUE rb_poppler_ruby_object_from_form_field(PopplerFormField *field); ++#endif ++ ++#define RVAL2GDK_PIXBUF(pixbuf) (GDK_PIXBUF(RVAL2GOBJ(pixbuf))) + + + extern void Init_poppler_document(VALUE mPoppler); diff --git a/print/ruby-gnome2-poppler/patches/patch-ab b/print/ruby-gnome2-poppler/patches/patch-ab new file mode 100644 index 00000000000..84806fe5be7 --- /dev/null +++ b/print/ruby-gnome2-poppler/patches/patch-ab @@ -0,0 +1,840 @@ +$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 + } |