Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[calligra] Enable support for spreadsheet charts. Contributes to JB#4…
…2697
  • Loading branch information
adenexter committed Nov 12, 2019
1 parent e510b11 commit 629ec47
Show file tree
Hide file tree
Showing 4 changed files with 139 additions and 6 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Expand Up @@ -43,3 +43,6 @@
[submodule "kitemviews"]
path = kitemviews
url = git://anongit.kde.org/kitemviews.git
[submodule "kdiagram"]
path = kdiagram
url = git://anongit.kde.org/kdiagram.git
1 change: 1 addition & 0 deletions kdiagram
Submodule kdiagram added at d3602e
17 changes: 11 additions & 6 deletions rpm/calligra.spec
Expand Up @@ -22,8 +22,10 @@ Patch3: kio-no-solid.patch
Patch4: kxmlgui-no-textwidgets.patch
Patch5: kxmlgui-disable_startup_functions.patch
Patch6: k18n-disable-q_coreapp_startup_function.patch
Patch7: calligra-fake-kde4libs.patch
Patch8: calligra-stage.patch
Patch7: kdiagram-build-qreal-float.patch
Patch8: calligra-fake-kde4libs.patch
Patch9: calligra-stage.patch

# to be arrange for later upstream
Patch10: calligra-find.patch
Patch11: calligra-buildsystem.patch
Expand Down Expand Up @@ -178,8 +180,9 @@ BuildRequires: extra-cmake-modules >= 5.34.0
%patch4 -d kxmlgui -p1
%patch5 -d kxmlgui -p1
%patch6 -d ki18n -p1
%patch7 -d upstream -p1
%patch7 -d kdiagram -p1
%patch8 -d upstream -p1
%patch9 -d upstream -p1
%patch10 -d upstream -p1
%patch11 -d upstream -p1
%patch12 -d upstream -p1
Expand All @@ -193,7 +196,7 @@ BuildRequires: extra-cmake-modules >= 5.34.0
%patch21 -d upstream -p1
%patch22 -d upstream -p1

%define build_kf5() cd %1 ; if [ ! -d build ] ; then mkdir build ; fi ; cd build ; if [ ! -e Makefile ] ; then CMAKE_PREFIX_PATH=%{_buildrootdir}/kf5/usr cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_RPATH=/usr/lib/calligra-kf5 %{?2} .. ; fi ; make %{?_smp_mflags} install DESTDIR=%{_buildrootdir}/kf5 ; cd ../.. ;
%define build_kf5() cd %1 ; if [ ! -d build ] ; then mkdir build ; fi ; cd build ; if [ ! -e Makefile ] ; then CMAKE_PREFIX_PATH=%{_buildrootdir}/kf5/usr cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_RPATH=/usr/lib/calligra-kf5 -DBUILD_TESTING=OFF %{?2} .. ; fi ; make %{?_smp_mflags} install DESTDIR=%{_buildrootdir}/kf5 ; cd ../.. ;
%build
%build_kf5 kcodecs
%build_kf5 kconfig
Expand All @@ -209,13 +212,14 @@ BuildRequires: extra-cmake-modules >= 5.34.0
%build_kf5 kservice
%build_kf5 kio "-DKIOCORE_ONLY=True"
%build_kf5 kxmlgui
%build_kf5 kdiagram
if [ ! -d upstream/build ] ; then mkdir upstream/build ; fi ; cd upstream/build
CMAKE_PREFIX_PATH=%{_buildrootdir}/kf5/usr cmake -DCMAKE_INSTALL_PREFIX=/usr -DPRODUCTSET="PART_WORDS PART_STAGE PART_SHEETS PART_COMPONENTS FILTER_DOCX_TO_ODT FILTER_DOC_TO_ODT FILTER_RTF_TO_ODT FILTER_XLSX_TO_ODS FILTER_XLS_TO_SHEETS FILTER_PPTX_TO_ODP FILTER_PPT_TO_ODP PLUGIN_VARIABLES" -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Release ..
CMAKE_PREFIX_PATH=%{_buildrootdir}/kf5/usr cmake -DCMAKE_INSTALL_PREFIX=/usr -DPRODUCTSET="PART_WORDS PART_STAGE PART_SHEETS PART_COMPONENTS FILTER_DOCX_TO_ODT FILTER_DOC_TO_ODT FILTER_RTF_TO_ODT FILTER_XLSX_TO_ODS FILTER_XLS_TO_SHEETS FILTER_PPTX_TO_ODP FILTER_PPT_TO_ODP PLUGIN_CHARTSHAPE PLUGIN_VARIABLES" -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Release ..
make %{?_smp_mflags}

%install
install -d %{buildroot}/usr/lib/calligra-kf5/
cp -a %{_buildrootdir}/kf5/usr/lib/libKF5*.so.* %{buildroot}/usr/lib/calligra-kf5/
cp -a %{_buildrootdir}/kf5/usr/lib/lib{KF5*,KChart}.so.* %{buildroot}/usr/lib/calligra-kf5/
cd upstream/build
make install DESTDIR=%{buildroot}
install -d %{buildroot}/usr/lib/qt5
Expand Down Expand Up @@ -299,6 +303,7 @@ if [ -d %{buildroot}/usr/lib/plugins/calligrastage ] ; then mv %{buildroot}/usr/
%dir %{_libdir}/qt5/plugins/calligra/shapes
%{_libdir}/qt5/plugins/calligra/shapes/calligra_shape_text.so
%{_libdir}/qt5/plugins/calligra/shapes/calligra_shape_picture.so
%{_libdir}/qt5/plugins/calligra/shapes/calligra_shape_chart.so

%files words-core
%defattr(-,root,root,-)
Expand Down
124 changes: 124 additions & 0 deletions rpm/kdiagram-build-qreal-float.patch
@@ -0,0 +1,124 @@
From 37c70abcb1ea62b8df57ce59509f48e6535eac97 Mon Sep 17 00:00:00 2001
From: Andrew den Exter <andrew.den.exter@qinetic.com.au>
Date: Tue, 22 Oct 2019 04:10:35 +0000
Subject: [PATCH] Fix build errors with qreal == float.

---
src/KChart/Cartesian/KChartCartesianAxis.cpp | 12 ++++++------
src/KChart/Polar/KChartPieDiagram.cpp | 2 +-
src/KChart/Polar/KChartRingDiagram.cpp | 2 +-
src/KChart/Ternary/KChartTernaryLineDiagram.cpp | 6 +++---
src/KChart/Ternary/KChartTernaryPointDiagram.cpp | 6 +++---
src/KGantt/kganttitemdelegate.cpp | 2 +-
6 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/KChart/Cartesian/KChartCartesianAxis.cpp b/src/KChart/Cartesian/KChartCartesianAxis.cpp
index e48b25d..2b16fc5 100644
--- a/src/KChart/Cartesian/KChartCartesianAxis.cpp
+++ b/src/KChart/Cartesian/KChartCartesianAxis.cpp
@@ -1014,8 +1014,8 @@ QSize CartesianAxis::Private::calculateMaximumSize() const
qreal labelMargin = 0.0;
QString text = it.text();
if ( !text.isEmpty() ) {
- QPointF labelPosition = plane->translate( QPointF( geoXy( drawPos, 1.0 ),
- geoXy( 1.0, drawPos ) ) );
+ QPointF labelPosition = plane->translate( QPointF( geoXy( drawPos, qreal(1.0) ),
+ geoXy( qreal(1.0), drawPos ) ) );
highestLabelPosition = geoXy( labelPosition.x(), labelPosition.y() );

if ( it.type() == TickIterator::MajorTick ) {
@@ -1061,10 +1061,10 @@ QSize CartesianAxis::Private::calculateMaximumSize() const
highestLabelLongitudinalSize * 0.5 );
}

- amountOfLeftOverlap = geoXy( startOverhang, 0.0 );
- amountOfRightOverlap = geoXy( endOverhang, 0.0 );
- amountOfBottomOverlap = geoXy( 0.0, startOverhang );
- amountOfTopOverlap = geoXy( 0.0, endOverhang );
+ amountOfLeftOverlap = geoXy( startOverhang, qreal(0.0) );
+ amountOfRightOverlap = geoXy( endOverhang, qreal(0.0) );
+ amountOfBottomOverlap = geoXy( qreal(0.0), startOverhang );
+ amountOfTopOverlap = geoXy( qreal(0.0), endOverhang );

const TextAttributes titleTA = titleTextAttributesWithAdjustedRotation();
if ( titleTA.isVisible() && !axis()->titleText().isEmpty() ) {
diff --git a/src/KChart/Polar/KChartPieDiagram.cpp b/src/KChart/Polar/KChartPieDiagram.cpp
index 9f03b41..a7db17d 100644
--- a/src/KChart/Polar/KChartPieDiagram.cpp
+++ b/src/KChart/Polar/KChartPieDiagram.cpp
@@ -280,7 +280,7 @@ void PieDiagram::placeLabels( PaintContext* paintContext )
if ( maxOverhang > 0.0 ) {
// subtract 2x as much because every side only gets half of the total diameter reduction
// and we have to make up for the overhang on one particular side.
- d->size -= qMin( d->size, maxOverhang * 2.0 );
+ d->size -= qMin<qreal>( d->size, maxOverhang * 2.0 );
tryAgain = true;
}
}
diff --git a/src/KChart/Polar/KChartRingDiagram.cpp b/src/KChart/Polar/KChartRingDiagram.cpp
index aa89676..4814649 100644
--- a/src/KChart/Polar/KChartRingDiagram.cpp
+++ b/src/KChart/Polar/KChartRingDiagram.cpp
@@ -185,7 +185,7 @@ void RingDiagram::paint( PaintContext* ctx )
if ( !d->expandWhenExploded ) {
maxOffsetInThisRow -= qreal( i );
}
- totalOffset += qMax( maxOffsetInThisRow, 0.0 );
+ totalOffset += qMax<qreal>( maxOffsetInThisRow, 0.0 );
// FIXME: What if explode factor of inner ring is > 1.0 ?
//if ( !d->expandWhenExploded )
// break;
diff --git a/src/KChart/Ternary/KChartTernaryLineDiagram.cpp b/src/KChart/Ternary/KChartTernaryLineDiagram.cpp
index 847a573..2bc9c31 100644
--- a/src/KChart/Ternary/KChartTernaryLineDiagram.cpp
+++ b/src/KChart/Ternary/KChartTernaryLineDiagram.cpp
@@ -110,11 +110,11 @@ void TernaryLineDiagram::paint (PaintContext *paintContext)
p->setBrush( brush( base ) );

// retrieve data
- x = qMax( model()->data( model()->index( row, column, rootIndex() ) ).toReal(), // checked
+ x = qMax<qreal>( model()->data( model()->index( row, column, rootIndex() ) ).toReal(), // checked
0.0 );
- y = qMax( model()->data( model()->index( row, column+1, rootIndex() ) ).toReal(), // checked
+ y = qMax<qreal>( model()->data( model()->index( row, column+1, rootIndex() ) ).toReal(), // checked
0.0 );
- z = qMax( model()->data( model()->index( row, column+2, rootIndex() ) ).toReal(), // checked
+ z = qMax<qreal>( model()->data( model()->index( row, column+2, rootIndex() ) ).toReal(), // checked
0.0 );

qreal total = x + y + z;
diff --git a/src/KChart/Ternary/KChartTernaryPointDiagram.cpp b/src/KChart/Ternary/KChartTernaryPointDiagram.cpp
index d29892c..9e0e352 100644
--- a/src/KChart/Ternary/KChartTernaryPointDiagram.cpp
+++ b/src/KChart/Ternary/KChartTernaryPointDiagram.cpp
@@ -98,11 +98,11 @@ void TernaryPointDiagram::paint (PaintContext *paintContext)
p->setBrush( brush( base ) );

// retrieve data
- x = qMax( model()->data( model()->index( row, column+0, rootIndex() ) ).toReal(), // checked
+ x = qMax<qreal>( model()->data( model()->index( row, column+0, rootIndex() ) ).toReal(), // checked
0.0 );
- y = qMax( model()->data( model()->index( row, column+1, rootIndex() ) ).toReal(), // checked
+ y = qMax<qreal>( model()->data( model()->index( row, column+1, rootIndex() ) ).toReal(), // checked
0.0 );
- z = qMax( model()->data( model()->index( row, column+2, rootIndex() ) ).toReal(), // checked
+ z = qMax<qreal>( model()->data( model()->index( row, column+2, rootIndex() ) ).toReal(), // checked
0.0 );

// fix messed up data values (paint as much as possible)
diff --git a/src/KGantt/kganttitemdelegate.cpp b/src/KGantt/kganttitemdelegate.cpp
index ef6fde1..22a46b5 100644
--- a/src/KGantt/kganttitemdelegate.cpp
+++ b/src/KGantt/kganttitemdelegate.cpp
@@ -325,7 +325,7 @@ void ItemDelegate::paintGanttItem( QPainter* painter,
QPainterPath path;
const qreal deltaY = r.height()/2.;
const qreal deltaXBezierControl = .25*qMin( r.width(), r.height() );
- const qreal deltaX = qMin( r.width()/2., r.height() );
+ const qreal deltaX = qMin( r.width()/2, r.height() );
path.moveTo( r.topLeft() );
path.lineTo( r.topRight() );
path.lineTo( QPointF( r.right(), r.top() + 2.*deltaY ) );
--
1.8.3-rc3

0 comments on commit 629ec47

Please sign in to comment.