summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Volkov <pva@gentoo.org>2010-01-12 18:07:43 +0000
committerPeter Volkov <pva@gentoo.org>2010-01-12 18:07:43 +0000
commit0f6bf74c8e0358bd7d845055951f278e5976351e (patch)
tree5f8c67c9381d72f90bf0381f4512e927d4c2e418 /sci-visualization/qtiplot
parentStable for HPPA (bug #299751). (diff)
downloadgentoo-2-0f6bf74c8e0358bd7d845055951f278e5976351e.tar.gz
gentoo-2-0f6bf74c8e0358bd7d845055951f278e5976351e.tar.bz2
gentoo-2-0f6bf74c8e0358bd7d845055951f278e5976351e.zip
Added upstream patch to fix transparency export, bug #300692, thank urcindalo for report.
(Portage version: 2.1.7.16/cvs/Linux x86_64)
Diffstat (limited to 'sci-visualization/qtiplot')
-rw-r--r--sci-visualization/qtiplot/ChangeLog9
-rw-r--r--sci-visualization/qtiplot/files/qtiplot-0.9.7.11-transparency.patch158
-rw-r--r--sci-visualization/qtiplot/qtiplot-0.9.7.11-r3.ebuild181
3 files changed, 347 insertions, 1 deletions
diff --git a/sci-visualization/qtiplot/ChangeLog b/sci-visualization/qtiplot/ChangeLog
index 5ffac0b81cea..be1bdb70481d 100644
--- a/sci-visualization/qtiplot/ChangeLog
+++ b/sci-visualization/qtiplot/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for sci-visualization/qtiplot
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sci-visualization/qtiplot/ChangeLog,v 1.51 2010/01/11 19:13:52 pva Exp $
+# $Header: /var/cvsroot/gentoo-x86/sci-visualization/qtiplot/ChangeLog,v 1.52 2010/01/12 18:07:37 pva Exp $
+
+*qtiplot-0.9.7.11-r3 (12 Jan 2010)
+
+ 12 Jan 2010; Peter Volkov <pva@gentoo.org> +qtiplot-0.9.7.11-r3.ebuild,
+ +files/qtiplot-0.9.7.11-transparency.patch:
+ Added upstream patch to fix transparency export, bug #300692, thank
+ urcindalo for report.
*qtiplot-0.9.7.11-r2 (11 Jan 2010)
diff --git a/sci-visualization/qtiplot/files/qtiplot-0.9.7.11-transparency.patch b/sci-visualization/qtiplot/files/qtiplot-0.9.7.11-transparency.patch
new file mode 100644
index 000000000000..502eacf37a7c
--- /dev/null
+++ b/sci-visualization/qtiplot/files/qtiplot-0.9.7.11-transparency.patch
@@ -0,0 +1,158 @@
+commit 7d83056ab798836dcc18de7fd0922288f40cc85e
+Author: ion_vasilief <ion_vasilief@5a6a7de5-fb12-0410-b871-c33778c25c60>
+Date: Tue Jan 12 12:27:02 2010 +0000
+
+ Fixed bug #016656: No transparency for exported .png files.
+
+diff --git a/qtiplot/src/plot2D/Graph.cpp b/qtiplot/src/plot2D/Graph.cpp
+index 846392b..c5938f1 100755
+--- a/qtiplot/src/plot2D/Graph.cpp
++++ b/qtiplot/src/plot2D/Graph.cpp
+@@ -1266,11 +1266,14 @@ void Graph::copyImage()
+ #endif
+ }
+
+-QPixmap Graph::graphPixmap(const QSize& size, double scaleFontsFactor)
++QPixmap Graph::graphPixmap(const QSize& size, double scaleFontsFactor, bool transparent)
+ {
+ if (!size.isValid()){
+ QPixmap pixmap(boundingRect().size());
+- pixmap.fill(Qt::white);
++ if (transparent)
++ pixmap.fill(Qt::transparent);
++ else
++ pixmap.fill();
+ QPainter p(&pixmap);
+ print(&p, rect());
+ p.end();
+@@ -1292,7 +1295,10 @@ QPixmap Graph::graphPixmap(const QSize& size, double scaleFontsFactor)
+ scaleFonts(scaleFontsFactor);
+
+ QPixmap pixmap(size);
+- pixmap.fill(Qt::white);
++ if (transparent)
++ pixmap.fill(Qt::transparent);
++ else
++ pixmap.fill();
+ QPainter p(&pixmap);
+ print(&p, r);
+ p.end();
+@@ -1346,28 +1352,8 @@ void Graph::exportImage(const QString& fileName, int quality, bool transparent,
+ if (customSize.isValid())
+ size = customPrintSize(customSize, unit, dpi);
+
+- QPixmap pic = graphPixmap(size, fontsFactor);
++ QPixmap pic = graphPixmap(size, fontsFactor, transparent);
+ QImage image = pic.toImage();
+-
+- if (transparent){
+- QBitmap mask(size);
+- mask.fill(Qt::color1);
+- QPainter p(&mask);
+- p.setPen(Qt::color0);
+-
+- QRgb backgroundPixel = QColor(Qt::white).rgb ();
+- for (int y = 0; y < image.height(); y++){
+- for (int x = 0; x < image.width(); x++){
+- QRgb rgb = image.pixel(x, y);
+- if (rgb == backgroundPixel) // we want the frame transparent
+- p.drawPoint(x, y);
+- }
+- }
+- p.end();
+- pic.setMask(mask);
+- image = pic.toImage();
+- }
+-
+ int dpm = (int)ceil(100.0/2.54*dpi);
+ image.setDotsPerMeterX(dpm);
+ image.setDotsPerMeterY(dpm);
+diff --git a/qtiplot/src/plot2D/Graph.h b/qtiplot/src/plot2D/Graph.h
+index 7dd10fa..9646232 100755
+--- a/qtiplot/src/plot2D/Graph.h
++++ b/qtiplot/src/plot2D/Graph.h
+@@ -313,7 +313,7 @@ class Graph: public QwtPlot
+ void printCropmarks(bool on){d_print_cropmarks = on;};
+
+ void copyImage();
+- QPixmap graphPixmap(const QSize& size = QSize(), double scaleFontsFactor = 1.0);
++ QPixmap graphPixmap(const QSize& size = QSize(), double scaleFontsFactor = 1.0, bool transparent = false);
+ //! Provided for convenience in scripts
+ void exportToFile(const QString& fileName);
+ void exportSVG(const QString& fname, const QSizeF& customSize = QSizeF(), int unit = FrameWidget::Pixel, double fontsFactor = 1.0);
+diff --git a/qtiplot/src/plot2D/MultiLayer.cpp b/qtiplot/src/plot2D/MultiLayer.cpp
+index 4e3dc4a..e0f3111 100755
+--- a/qtiplot/src/plot2D/MultiLayer.cpp
++++ b/qtiplot/src/plot2D/MultiLayer.cpp
+@@ -679,11 +679,14 @@ void MultiLayer::setRows(int r)
+ d_rows = r;
+ }
+
+-QPixmap MultiLayer::canvasPixmap(const QSize& size, double scaleFontsFactor)
++QPixmap MultiLayer::canvasPixmap(const QSize& size, double scaleFontsFactor, bool transparent)
+ {
+ if (!size.isValid()){
+ QPixmap pic(d_canvas->size());
+- pic.fill();
++ if (transparent)
++ pic.fill(Qt::transparent);
++ else
++ pic.fill();
+ QPainter p(&pic);
+ QObjectList lst = d_canvas->children();//! this list is sorted according to the stack order
+ foreach (QObject *o, lst){
+@@ -702,7 +705,10 @@ QPixmap MultiLayer::canvasPixmap(const QSize& size, double scaleFontsFactor)
+ scaleFontsFactor = scaleFactorY;
+
+ QPixmap pic(size);
+- pic.fill();
++ if (transparent)
++ pic.fill(Qt::transparent);
++ else
++ pic.fill();
+ QPainter p(&pic);
+ QObjectList lst = d_canvas->children();
+ foreach (QObject *o, lst){
+@@ -769,28 +775,8 @@ void MultiLayer::exportImage(const QString& fileName, int quality, bool transpar
+ if (customSize.isValid())
+ size = Graph::customPrintSize(customSize, unit, dpi);
+
+- QPixmap pic = canvasPixmap(size, fontsFactor);
++ QPixmap pic = canvasPixmap(size, fontsFactor, transparent);
+ QImage image = pic.toImage();
+-
+- if (transparent){
+- QBitmap mask(size);
+- mask.fill(Qt::color1);
+- QPainter p(&mask);
+- p.setPen(Qt::color0);
+-
+- QRgb backgroundPixel = QColor(Qt::white).rgb ();
+- for (int y = 0; y < image.height(); y++){
+- for (int x = 0; x < image.width(); x++){
+- QRgb rgb = image.pixel(x, y);
+- if (rgb == backgroundPixel) // we want the frame transparent
+- p.drawPoint(x, y);
+- }
+- }
+- p.end();
+- pic.setMask(mask);
+- image = pic.toImage();
+- }
+-
+ int dpm = (int)ceil(100.0/2.54*dpi);
+ image.setDotsPerMeterX(dpm);
+ image.setDotsPerMeterY(dpm);
+diff --git a/qtiplot/src/plot2D/MultiLayer.h b/qtiplot/src/plot2D/MultiLayer.h
+index d677403..47569a4 100755
+--- a/qtiplot/src/plot2D/MultiLayer.h
++++ b/qtiplot/src/plot2D/MultiLayer.h
+@@ -157,7 +157,7 @@ public slots:
+
+ //! \name Print and Export
+ //@{
+- QPixmap canvasPixmap(const QSize& size = QSize(), double scaleFontsFactor = 1.0);
++ QPixmap canvasPixmap(const QSize& size = QSize(), double scaleFontsFactor = 1.0, bool transparent = false);
+ void exportToFile(const QString& fileName);
+ void exportImage(QTextDocument *document, int quality = 100, bool transparent = false,
+ int dpi = 0, const QSizeF& customSize = QSizeF (), int unit = FrameWidget::Pixel, double fontsFactor = 1.0);
diff --git a/sci-visualization/qtiplot/qtiplot-0.9.7.11-r3.ebuild b/sci-visualization/qtiplot/qtiplot-0.9.7.11-r3.ebuild
new file mode 100644
index 000000000000..050a27279e1e
--- /dev/null
+++ b/sci-visualization/qtiplot/qtiplot-0.9.7.11-r3.ebuild
@@ -0,0 +1,181 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-visualization/qtiplot/qtiplot-0.9.7.11-r3.ebuild,v 1.1 2010/01/12 18:07:37 pva Exp $
+
+EAPI=2
+inherit eutils qt4 fdo-mime python
+
+DESCRIPTION="Qt based clone of the Origin plotting package"
+HOMEPAGE="http://soft.proindependent.com/qtiplot.html"
+SRC_URI="mirror://berlios/${PN}/${P}.tar.bz2"
+
+LICENSE="GPL-2 GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc python ods xls"
+
+LANGS="cn cz de es fr ro ru ja sv"
+for l in ${LANGS}; do
+ lu=${l/cz/cs}
+ lu=${lu/cn/zh_CN}
+ IUSE="${IUSE} linguas_${lu}"
+done
+
+# qwtplot3d much modified from original upstream
+# >=x11-libs/qwt-5.3 they are using trunk checkouts
+CDEPEND="
+ x11-libs/qt-opengl:4
+ x11-libs/qt-qt3support:4
+ x11-libs/qt-assistant:4
+ x11-libs/qt-svg:4
+ >=x11-libs/gl2ps-1.3.5
+ >=dev-cpp/muParser-1.30
+ >=dev-libs/boost-1.35.0
+ >=sci-libs/liborigin-20090406:2
+ sci-libs/gsl
+ dev-libs/boost
+ dev-tex/qtexengine
+ xls? ( dev-libs/libxls )
+ ods? ( dev-libs/quazip )"
+# Still unable to build
+# emf? ( media-libs/libemf
+# media-libs/emfengine )
+
+DEPEND="${CDEPEND}
+ dev-util/pkgconfig
+ python? ( >=dev-python/sip-4.9 )
+ doc? ( app-text/docbook-sgml-utils
+ >=app-text/docbook-xml-dtd-4.4-r2:4.4 )"
+
+RDEPEND="${CDEPEND}
+ python? ( >=dev-lang/python-2.5
+ dev-python/PyQt4[X]
+ dev-python/pygsl
+ dev-python/rpy
+ sci-libs/scipy )"
+
+PATCHES=(
+ "${FILESDIR}/${P}-system-QTeXEngine.patch"
+ "${FILESDIR}/${P}-system-liborigin.patch"
+ "${FILESDIR}/${P}-system-gl2ps.patch"
+ "${FILESDIR}/${PN}-0.9.7.10-dont-install-qwt.patch"
+ "${FILESDIR}/${P}-transparency.patch"
+ )
+
+src_prepare() {
+ qt4_src_prepare
+
+ rm -rf 3rdparty/{liborigin,QTeXEngine,/qwtplot3d/3rdparty/gl2ps/}
+
+ # Check build.conf for changes on bump.
+ cat >build.conf <<-EOF
+ # Automatically generated by Gentoo ebuild
+ isEmpty( QTI_ROOT ) {
+ message( "each file including this config needs to set QTI_ROOT to the dir containing this file!" )
+ }
+
+ MUPARSER_LIBS = \$\$system(pkg-config --libs muparser)
+ GSL_LIBS = \$\$system(pkg-config --libs gsl)
+ BOOST_INCLUDEPATH = /usr/include/boost
+ BOOST_LIBS = -lboost_date_time-mt -lboost_thread-mt
+ QWT_INCLUDEPATH = \$\$QTI_ROOT/3rdparty/qwt/src
+ QWT_LIBS = \$\$QTI_ROOT/3rdparty/qwt/lib/libqwt.a
+ LIB_ORIGIN_INCLUDEPATH = /usr/include/liborigin2
+ LIB_ORIGIN_LIBS = -lorigin2
+ SYS_LIBS = -lQTeXEngine -lgl2ps
+
+ PYTHON = python
+ LUPDATE = lupdate
+ LRELEASE = lrelease
+
+ SCRIPTING_LANGS += muParser
+
+ CONFIG += release
+ CONFIG += CustomInstall
+
+ EOF
+
+ use python && echo "SCRIPTING_LANGS += Python" >> build.conf
+ use xls && echo "XLS_LIBS = -lxlsreader" >> build.conf
+ if use ods; then
+ echo "QUAZIP_INCLUDEPATH = /usr/include/quazip" >> build.conf
+ echo "QUAZIP_LIBS = -lquazip" >> build.conf
+ fi
+
+ # Fails to build...
+ #if use emf; then
+ # echo "EMF_ENGINE_INCLUDEPATH = /usr/include/libEMF" >> build.conf
+ # echo "EMF_ENGINE_LIBS = -lEMF" >> build.conf
+ #fi
+
+ python_version
+
+ sed -e "s:doc/${PN}/manual:doc/${PF}/html:" \
+ -e "s:local/${PN}:$(get_libdir)/python${PYVER}/site-packages:" \
+ -i qtiplot/qtiplot.pro || die
+
+ sed -e '/INSTALLS.*documentation/d' \
+ -e '/INSTALLS.*manual/d' \
+ -i qtiplot/qtiplot.pro || die
+ sed -e '/manual/d' -i qtiplot.pro || die
+
+ # Drop langs only if LINGUAS is not empty
+ if [[ -n ${LINGUAS} ]]; then
+ for l in ${LANGS}; do
+ lu=${l/cz/cs}
+ lu=${lu/cn/zh_CN}
+ use linguas_${lu} || \
+ sed -e "s:translations/qtiplot_${l}.[tq][sm]::" \
+ -i qtiplot/qtiplot.pro || die
+ done
+ fi
+ chmod -x qtiplot/qti_wordlist.txt
+
+ # sed out debian paths
+ sed -e 's:\(/usr/share/sgml/\)docbook/stylesheet/dsssl/modular\(/html/docbook.dsl\):\1stylesheets/dsssl/docbook\2:' \
+ -i manual/qtiplot.dsl || die
+ sed -e 's:\(/usr/share/\)xml/docbook/stylesheet/nwalsh\(/html/chunk.xsl\):\1sgml/docbook/xsl-stylesheets\2:' \
+ -i manual/qtiplot_html.xsl || die
+}
+
+src_configure() {
+ use amd64 && export QMAKESPEC="linux-g++-64"
+ eqmake4
+}
+
+src_compile() {
+ emake || die "emake failed"
+ lrelease qtiplot/qtiplot.pro || die
+ if use doc; then
+ cd manual
+ emake web || die "html docbook building failed"
+ fi
+}
+
+src_install() {
+ emake INSTALL_ROOT="${D}" install || die 'emake install failed'
+ newicon qtiplot_logo.png qtiplot.png
+ make_desktop_entry qtiplot "QtiPlot Scientific Plotting" qtiplot
+ if use doc; then
+ insinto /usr/share/doc/${PF}/html
+ doins -r manual/html/* || die "install manual failed"
+ fi
+
+ if [[ -n ${LINGUAS} ]]; then
+ insinto /usr/share/${PN}/translations
+ for l in ${LANGS}; do
+ lu=${l/cz/cs}
+ lu=${lu/cn/zh_CN}
+ use linguas_${lu} && \
+ doins qtiplot/translations/qtiplot_${l}.qm
+ done
+ fi
+}
+
+pkg_postinst() {
+ fdo-mime_desktop_database_update
+}
+
+pkg_postrm() {
+ fdo-mime_desktop_database_update
+}