diff options
author | Peter Volkov <pva@gentoo.org> | 2010-01-12 18:07:43 +0000 |
---|---|---|
committer | Peter Volkov <pva@gentoo.org> | 2010-01-12 18:07:43 +0000 |
commit | 0f6bf74c8e0358bd7d845055951f278e5976351e (patch) | |
tree | 5f8c67c9381d72f90bf0381f4512e927d4c2e418 /sci-visualization/qtiplot | |
parent | Stable for HPPA (bug #299751). (diff) | |
download | gentoo-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/ChangeLog | 9 | ||||
-rw-r--r-- | sci-visualization/qtiplot/files/qtiplot-0.9.7.11-transparency.patch | 158 | ||||
-rw-r--r-- | sci-visualization/qtiplot/qtiplot-0.9.7.11-r3.ebuild | 181 |
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 +} |