forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
app-text/xournal: grab preserve image aspect ratio patch from upstrea…
…m tracker. Package-Manager: portage-2.3.2
- Loading branch information
Showing
2 changed files
with
138 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
Forward-port upstream patch submission | ||
https://sourceforge.net/p/xournal/patches/58/ | ||
https://sourceforge.net/p/xournal/patches/_discuss/thread/f1d7a1d7/4c10/attachment/xournal-0.4.5-dawb-aspectratio.patch | ||
|
||
It applies cleanly, just to xo-selection.c instead of xo-paint.c. | ||
|
||
Signed-off-by: Robin H. Johnson <[email protected]> | ||
|
||
diff -Narpu --exclude '*.orig' --exclude '*.rej' --exclude '*~' xournal-0.4.8.orig/src/xo-selection.c xournal-0.4.8/src/xo-selection.c | ||
--- xournal-0.4.8.orig/src/xo-selection.c 2014-06-06 16:41:45.000000000 -0700 | ||
+++ xournal-0.4.8/src/xo-selection.c 2017-02-09 15:31:08.960817336 -0800 | ||
@@ -347,6 +347,12 @@ gboolean start_resizesel(GdkEvent *event | ||
ui.selection->new_x2 = ui.selection->bbox.right; | ||
gnome_canvas_item_set(ui.selection->canvas_item, "dash", NULL, NULL); | ||
update_cursor_for_resize(pt); | ||
+ | ||
+ // Check whether we should preserve the aspect ratio | ||
+ if (event->button.button == 3) | ||
+ ui.cur_brush->tool_options |= TOOLOPT_SELECT_PRESERVE; | ||
+ else | ||
+ ui.cur_brush->tool_options &= ~TOOLOPT_SELECT_PRESERVE; | ||
return TRUE; | ||
} | ||
return FALSE; | ||
@@ -498,6 +504,38 @@ void continue_resizesel(GdkEvent *event) | ||
if (ui.selection->resizing_left) ui.selection->new_x1 = pt[0]; | ||
if (ui.selection->resizing_right) ui.selection->new_x2 = pt[0]; | ||
|
||
+ if (ui.cur_brush->tool_options & TOOLOPT_SELECT_PRESERVE) { | ||
+ double aspectratio = (ui.selection->bbox.top - ui.selection->bbox.bottom)/(ui.selection->bbox.right - ui.selection->bbox.left); | ||
+ double newheight = ui.selection->new_y1 - ui.selection->new_y2; | ||
+ double newwidth = ui.selection->new_x2 - ui.selection->new_x1; | ||
+ gboolean boundheight; | ||
+ | ||
+ // Resizing from top or bottom only | ||
+ if ((ui.selection->resizing_top || ui.selection->resizing_bottom) && !(ui.selection->resizing_left || ui.selection->resizing_right)) | ||
+ boundheight = 0; | ||
+ // Resizing from right or left only | ||
+ else if (!(ui.selection->resizing_top || ui.selection->resizing_bottom) && (ui.selection->resizing_left || ui.selection->resizing_right)) | ||
+ boundheight = 1; | ||
+ // Resizing from a corner | ||
+ else if (newheight/aspectratio > newwidth) | ||
+ boundheight = 0; | ||
+ else | ||
+ boundheight = 1; | ||
+ | ||
+ if (boundheight) { | ||
+ // Bound the height | ||
+ newheight = newwidth*aspectratio; | ||
+ if (ui.selection->resizing_top) ui.selection->new_y1 = ui.selection->new_y2 + newheight; | ||
+ else ui.selection->new_y2 = ui.selection->new_y1 - newheight; | ||
+ } | ||
+ else { | ||
+ // Bound the width | ||
+ newwidth = newheight/aspectratio; | ||
+ if (ui.selection->resizing_left) ui.selection->new_x1 = ui.selection->new_x2 - newwidth; | ||
+ else ui.selection->new_x2 = ui.selection->new_x1 + newwidth; | ||
+ } | ||
+ } | ||
+ | ||
gnome_canvas_item_set(ui.selection->canvas_item, | ||
"x1", ui.selection->new_x1, "x2", ui.selection->new_x2, | ||
"y1", ui.selection->new_y1, "y2", ui.selection->new_y2, NULL); | ||
diff -Narpu --exclude '*.orig' --exclude '*.rej' --exclude '*~' xournal-0.4.8.orig/src/xournal.h xournal-0.4.8/src/xournal.h | ||
--- xournal-0.4.8.orig/src/xournal.h 2014-06-28 12:47:20.000000000 -0700 | ||
+++ xournal-0.4.8/src/xournal.h 2017-02-09 15:29:08.866517375 -0800 | ||
@@ -154,6 +154,7 @@ extern guint predef_bgcolors_rgba[COLOR_ | ||
#define TOOLOPT_ERASER_STANDARD 0 | ||
#define TOOLOPT_ERASER_WHITEOUT 1 | ||
#define TOOLOPT_ERASER_STROKES 2 | ||
+#define TOOLOPT_SELECT_PRESERVE 1 // Preserve the aspect ratio of the selection when resizing | ||
|
||
extern double predef_thickness[NUM_STROKE_TOOLS][THICKNESS_MAX]; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# Copyright 1999-2017 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
# $Id$ | ||
|
||
EAPI=5 | ||
|
||
GCONF_DEBUG=no | ||
|
||
inherit gnome2 | ||
|
||
DESCRIPTION="Xournal is an application for notetaking, sketching, and keeping a journal using a stylus" | ||
HOMEPAGE="http://xournal.sourceforge.net/" | ||
|
||
LICENSE="GPL-2" | ||
|
||
SLOT="0" | ||
IUSE="+pdf vanilla" | ||
|
||
if [[ "${PV}" != "9999" ]]; then | ||
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz" | ||
KEYWORDS="~amd64 ~x86" | ||
else | ||
inherit git-2 autotools | ||
SRC_URI="" | ||
KEYWORDS="" | ||
EGIT_REPO_URI="git://git.code.sf.net/p/xournal/code" | ||
EGIT_PROJECT="${PN}" | ||
EGIT_BOOTSTRAP="autogen.sh" | ||
fi | ||
|
||
COMMONDEPEND=" | ||
app-text/poppler:=[cairo] | ||
dev-libs/atk | ||
dev-libs/glib | ||
gnome-base/libgnomecanvas | ||
media-libs/freetype | ||
media-libs/fontconfig | ||
sys-libs/zlib | ||
x11-libs/cairo | ||
x11-libs/gdk-pixbuf | ||
x11-libs/gtk+:2 | ||
x11-libs/pango | ||
" | ||
RDEPEND="${COMMONDEPEND} | ||
pdf? ( app-text/poppler[utils] app-text/ghostscript-gpl ) | ||
" | ||
DEPEND="${COMMONDEPEND} | ||
virtual/pkgconfig | ||
" | ||
|
||
src_prepare() { | ||
default_src_prepare | ||
if ! use vanilla; then | ||
epatch "${FILESDIR}"/xournal-0.4.8-aspectratio.patch | ||
fi | ||
} | ||
|
||
src_install() { | ||
emake DESTDIR="${D}" install | ||
emake DESTDIR="${D}" desktop-install | ||
|
||
dodoc ChangeLog AUTHORS README | ||
dohtml -r html-doc/* | ||
} |