summaryrefslogtreecommitdiff
path: root/community-staging
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2011-10-12 23:14:40 +0000
committerroot <root@rshg054.dnsready.net>2011-10-12 23:14:40 +0000
commitb79408ae7429f4e5c99582cb55127b6e86b7fdac (patch)
tree022f1f4179bb356f8c94ff00a4a56edbeaa7dc9c /community-staging
parentf482dc1bd42773a12552e5a60df119410a0d8bd8 (diff)
Wed Oct 12 23:14:40 UTC 2011
Diffstat (limited to 'community-staging')
-rw-r--r--community-staging/apvlv/PKGBUILD38
-rw-r--r--community-staging/apvlv/apvlv-poppler015.patch12
-rw-r--r--community-staging/apvlv/poppler-gdk.patch150
3 files changed, 200 insertions, 0 deletions
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 <bradfanella@archlinux.us>
+# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
+# Contributor: tocer.deng <tocer.deng@gmail.com>
+
+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 <umd.h>
+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 <goo/gtypes.h>
++
++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);
++}