From b79408ae7429f4e5c99582cb55127b6e86b7fdac Mon Sep 17 00:00:00 2001 From: root Date: Wed, 12 Oct 2011 23:14:40 +0000 Subject: Wed Oct 12 23:14:40 UTC 2011 --- community-staging/apvlv/PKGBUILD | 38 +++++++ community-staging/apvlv/apvlv-poppler015.patch | 12 ++ community-staging/apvlv/poppler-gdk.patch | 150 +++++++++++++++++++++++++ 3 files changed, 200 insertions(+) create mode 100644 community-staging/apvlv/PKGBUILD create mode 100644 community-staging/apvlv/apvlv-poppler015.patch create mode 100644 community-staging/apvlv/poppler-gdk.patch (limited to 'community-staging') diff --git a/community-staging/apvlv/PKGBUILD b/community-staging/apvlv/PKGBUILD new file mode 100644 index 000000000..66ba888da --- /dev/null +++ b/community-staging/apvlv/PKGBUILD @@ -0,0 +1,38 @@ +# $Id: PKGBUILD 56718 2011-10-11 07:42:06Z shusmann $ +# Maintainer: Brad Fanella +# Contributor: Stefan Husmann +# Contributor: tocer.deng + +pkgname=apvlv +pkgver=0.1.2 +pkgrel=2 +pkgdesc="A PDF Viewer which behaves like Vim" +arch=('i686' 'x86_64') +url="http://naihe2010.github.com/apvlv/" +license=('GPL') +depends=('gtk2' 'cairo' 'poppler-glib' 'djvulibre') +source=(https://github.com/downloads/naihe2010/$pkgname/$pkgname-${pkgver}-Source.tar.gz apvlv-poppler015.patch poppler-gdk.patch) +md5sums=('381d83aa9c253fac5e0be165fca39222' + '308b17a563ed470ea47d408f324ab745' + '076d794ab865e9bd53a5dfd2db1eaa8b') + +makedepends=('cmake') + +build() { + cd $srcdir/$pkgname-$pkgver-Source + patch -Np1 -i $srcdir/apvlv-poppler015.patch + patch -Np1 -i $srcdir/poppler-gdk.patch + + mkdir -p build + cd build + + cmake -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DAPVLV_WITH_UMD=no .. + make +} +package() { + cd $srcdir/$pkgname-$pkgver-Source/build + + make DESTDIR=$pkgdir install +} diff --git a/community-staging/apvlv/apvlv-poppler015.patch b/community-staging/apvlv/apvlv-poppler015.patch new file mode 100644 index 000000000..0a261b1db --- /dev/null +++ b/community-staging/apvlv/apvlv-poppler015.patch @@ -0,0 +1,12 @@ +diff -Naur apvlv-0.1.2-Source.orig//src/ApvlvFile.cpp apvlv-0.1.2-Source.new//src/ApvlvFile.cpp +--- apvlv-0.1.2-Source.orig//src/ApvlvFile.cpp 2011-07-29 17:19:13.000000000 +0200 ++++ apvlv-0.1.2-Source.new//src/ApvlvFile.cpp 2011-07-29 17:22:22.000000000 +0200 +@@ -304,7 +304,7 @@ + { + PopplerRectangle rect = { x1, y1, x2, y2 }; + PopplerPage *page = poppler_document_get_page (mDoc, pn); +- *out = poppler_page_get_text (page, POPPLER_SELECTION_WORD, &rect); ++ *out = poppler_page_get_selected_text (page, POPPLER_SELECTION_WORD, &rect); + if (*out != NULL) + { + return true; diff --git a/community-staging/apvlv/poppler-gdk.patch b/community-staging/apvlv/poppler-gdk.patch new file mode 100644 index 000000000..ab487cf1c --- /dev/null +++ b/community-staging/apvlv/poppler-gdk.patch @@ -0,0 +1,150 @@ +diff -ruN apvlv-0.1.2-Source/src/ApvlvFile.cpp apvlv-0.1.2-Source.new/src/ApvlvFile.cpp +--- apvlv-0.1.2-Source/src/ApvlvFile.cpp 2011-10-10 14:23:19.205606984 +0200 ++++ apvlv-0.1.2-Source.new/src/ApvlvFile.cpp 2011-10-10 14:21:50.870952455 +0200 +@@ -29,6 +29,10 @@ + #include "ApvlvUtil.hpp" + #include "ApvlvView.hpp" + ++#ifndef POPPLER_WITH_GDK ++#include "poppler-gdk.h" ++#endif ++ + #ifdef HAVE_LIBUMD + #define LIBUMD_ENABLE_GTK + #include +diff -ruN apvlv-0.1.2-Source/src/poppler-gdk.h apvlv-0.1.2-Source.new/src/poppler-gdk.h +--- apvlv-0.1.2-Source/src/poppler-gdk.h 1970-01-01 01:00:00.000000000 +0100 ++++ apvlv-0.1.2-Source.new/src/poppler-gdk.h 2011-10-10 14:22:06.077846565 +0200 +@@ -0,0 +1,132 @@ ++#include ++ ++static void ++copy_cairo_surface_to_pixbuf (cairo_surface_t *surface, ++ GdkPixbuf *pixbuf) ++{ ++ int cairo_width, cairo_height, cairo_rowstride; ++ unsigned char *pixbuf_data, *dst, *cairo_data; ++ int pixbuf_rowstride, pixbuf_n_channels; ++ unsigned int *src; ++ int x, y; ++ ++ cairo_width = cairo_image_surface_get_width (surface); ++ cairo_height = cairo_image_surface_get_height (surface); ++ cairo_rowstride = cairo_image_surface_get_stride (surface); ++ cairo_data = cairo_image_surface_get_data (surface); ++ ++ pixbuf_data = gdk_pixbuf_get_pixels (pixbuf); ++ pixbuf_rowstride = gdk_pixbuf_get_rowstride (pixbuf); ++ pixbuf_n_channels = gdk_pixbuf_get_n_channels (pixbuf); ++ ++ if (cairo_width > gdk_pixbuf_get_width (pixbuf)) ++ cairo_width = gdk_pixbuf_get_width (pixbuf); ++ if (cairo_height > gdk_pixbuf_get_height (pixbuf)) ++ cairo_height = gdk_pixbuf_get_height (pixbuf); ++ for (y = 0; y < cairo_height; y++) ++ { ++ src = (unsigned int *) (cairo_data + y * cairo_rowstride); ++ dst = pixbuf_data + y * pixbuf_rowstride; ++ for (x = 0; x < cairo_width; x++) ++ { ++ dst[0] = (*src >> 16) & 0xff; ++ dst[1] = (*src >> 8) & 0xff; ++ dst[2] = (*src >> 0) & 0xff; ++ if (pixbuf_n_channels == 4) ++ dst[3] = (*src >> 24) & 0xff; ++ dst += pixbuf_n_channels; ++ src++; ++ } ++ } ++} ++ ++static void ++_poppler_page_render_to_pixbuf (PopplerPage *page, ++ int src_x, int src_y, ++ int src_width, int src_height, ++ double scale, ++ int rotation, ++ GBool printing, ++ GdkPixbuf *pixbuf) ++{ ++ cairo_t *cr; ++ cairo_surface_t *surface; ++ ++ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, ++ src_width, src_height); ++ cr = cairo_create (surface); ++ cairo_save (cr); ++ switch (rotation) { ++ case 90: ++ cairo_translate (cr, src_x + src_width, -src_y); ++ break; ++ case 180: ++ cairo_translate (cr, src_x + src_width, src_y + src_height); ++ break; ++ case 270: ++ cairo_translate (cr, -src_x, src_y + src_height); ++ break; ++ default: ++ cairo_translate (cr, -src_x, -src_y); ++ } ++ ++ if (scale != 1.0) ++ cairo_scale (cr, scale, scale); ++ ++ if (rotation != 0) ++ cairo_rotate (cr, rotation * G_PI / 180.0); ++ ++ if (printing) ++ poppler_page_render_for_printing (page, cr); ++ else ++ poppler_page_render (page, cr); ++ cairo_restore (cr); ++ ++ cairo_set_operator (cr, CAIRO_OPERATOR_DEST_OVER); ++ cairo_set_source_rgb (cr, 1., 1., 1.); ++ cairo_paint (cr); ++ ++ cairo_destroy (cr); ++ ++ copy_cairo_surface_to_pixbuf (surface, pixbuf); ++ cairo_surface_destroy (surface); ++} ++ ++/** ++ * poppler_page_render_to_pixbuf: ++ * @page: the page to render from ++ * @src_x: x coordinate of upper left corner ++ * @src_y: y coordinate of upper left corner ++ * @src_width: width of rectangle to render ++ * @src_height: height of rectangle to render ++ * @scale: scale specified as pixels per point ++ * @rotation: rotate the document by the specified degree ++ * @pixbuf: pixbuf to render into ++ * ++ * First scale the document to match the specified pixels per point, ++ * then render the rectangle given by the upper left corner at ++ * (src_x, src_y) and src_width and src_height. ++ * This function is for rendering a page that will be displayed. ++ * If you want to render a page that will be printed use ++ * poppler_page_render_to_pixbuf_for_printing() instead ++ * ++ * Deprecated: 0.16 ++ **/ ++void ++poppler_page_render_to_pixbuf (PopplerPage *page, ++ int src_x, int src_y, ++ int src_width, int src_height, ++ double scale, ++ int rotation, ++ GdkPixbuf *pixbuf) ++{ ++ g_return_if_fail (POPPLER_IS_PAGE (page)); ++ g_return_if_fail (scale > 0.0); ++ g_return_if_fail (pixbuf != NULL); ++ ++ _poppler_page_render_to_pixbuf (page, src_x, src_y, ++ src_width, src_height, ++ scale, rotation, ++ gFalse, ++ pixbuf); ++} -- cgit v1.2.3-54-g00ecf