Commit Graph
891 Commits
Author SHA1 Message Date
Andrea Gelmini 8ee79ac196 Fix typos
Change-Id: Ic7a97a5219d8a0d30b1753c2502995ea4c2cd32f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210563
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-09-10 16:22:54 +02:00
Jason Whitmore a73823a4c1 chart2: Add unit tests for CalculateBSplines
Change-Id: I46af0b5c72ef96c42ea0eb60a5c8b6383a556cdf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208265
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-09 09:33:05 +02:00
Dennis Francis 0bbeeeaf54 chart2: odf import/export of correlation circle chart
ODF has no name for this chart type, so the file says two things at once, the
way a histogram already does: chart:class names the scatter chart, which is the
nearest a reader that knows nothing of correlation circles can make of it, and
coext:class beside it names the type itself. A reader that knows the coext name
gets the chart back as it was saved.

The series need no new shape in the file. The feature column is the range of
the series and the two dimension columns are a domain each, which is where a
bubble chart already keeps its x and y values, so both the reading and the
writing of them follows the bubble path rather than a new logic.

The schema the tests validate against lists the values coext:class may take, so
the new one is added there beside the histogram.

The test document is one block of five columns: three features and then the two
dimensions, the shape the wizard asks for. The test checks after a round trip
that the chart type came back, that the file carries both class names, and that
every series still holds its feature column beside the two dimension columns.

Change-Id: Iac73ff357c7490b4f38a4390c63948cf148d8585
Signed-off-by: Dennis Francis <dennis.francis@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8106
Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 4e59ea1c83e61b8dc2647f9a915884f9d461165d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210498
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-05 00:10:37 +02:00
Dennis Francis 84129dd550 chart2: draw the correlation circle plot
Each series gives one arrow, from the origin to the point whose

1. x-coordinate value is the correlation of that series' feature column
   with the first dimension column.
2. y-coordinate value is the correlation of that series' feature column
   with the second dimension column.

A symbol marks the tip and the feature name sits beside it. The circle
of radius one and the two lines through the origin are drawn behind the
arrows, and both axes are held at minus one to one on a square plot
area, so a length in the picture means the same in both directions and
the circle stays round.

The correlations are worked out while the shapes are made rather than kept
anywhere, so they follow the cells they come from. Working them out needs the
whole of the three columns.

The correlation coefficient code itself is in a small header of its own
with a test beside it. It leaves out the instances where either side is
missing, and it has no answer for a feature that does not vary or for
fewer than two instances. A feature without an answer gets no arrow,
as there is no direction to point in.

Error bars, trend lines and area properties are turned off for this chart
type, since a point stands for a worked out pair rather than for a value in a
cell, and symbols are turned on because the tip of each arrow carries one. The
arrows take the line colour and width of their series, and the template asks
for thin ones, which is what keeps a crowd of them apart. The legend hands out
the same symbol as the arrow tip, so a key can be matched to an arrow.

Grids are turned off by default for this chart as the user is more
interested in the direction/angles and the magnitude of the "rays" from
the origin.

Change-Id: I2d8b3aa6ef7d66bd9deb1f63a647767a1b62ac90
Signed-off-by: Dennis Francis <dennis.francis@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8103
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit e096bfee9c85a22e8b8155944a63ee9d6f72f75a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210465
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-03 19:32:19 +02:00
Tomaž Vajngerl 3aa0160c31 Bound the number of histogram bins
A bin width much smaller than the data range asks for a bin count
with no upper bound. Over a range of 1000 a width of a millionth
resolves to a billion bins. The conversion from double to sal_Int32
had no range check either, so it could overflow.

Cap the count at MAX_HISTOGRAM_BINS. The division stays in double
and saturates at the cap, and a fixed count from a document is
clamped the same way.

A capped count no longer spans the range with the requested width,
so the range is divided evenly instead. Scott's rule gets the same
treatment when it yields no width at all.

Signed-off-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>
Change-Id: Ib59ee462edade94799cc58e503b843696743ecfe
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10257
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 93a9df897a14ec12457aa40d328616eb071a9175)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210337
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-09-01 19:49:22 +02:00
Devansh Varshney 22b73ccfdc chart2: keep histogram axis labels in sync with bin settings
Histogram bin-property changes regenerated the category sequence stored
on the data series, while the X axis continued referencing the previous
sequence. This left the chart bars updated but displayed stale bin
labels.

Keep the category sequence produced by HistogramDataInterpreter on both
the diagram axis and data series. Update its binning parameters in place
when histogram properties change, allowing existing listeners to
recalculate and redraw the axis labels.

Signed-off-by: Devansh Varshney <varshney.devansh614@gmail.com>
Change-Id: Ibd6679bddf29de5fa1fd903af9274259b2e9c243
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9282
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 0103afa2a6a746ce54a0e3e4297e1fa60698ef03)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209218
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-01 14:00:42 +02:00
Devansh Varshney 13650bcefe oox: preserve automatic histogram binning mode
Do not export transient Scott's-rule width as cx:binSize for automatic
histograms. An explicit binSize is imported as fixed-width
binning, so ODS-to-XLSX roundtrip changed FrequencyType from automatic
to fixed width.

Leave cx:binning without binSize or binCount for automatic mode and add
a regression test verifying that FrequencyType remains automatic after
XLSX export and reload.

Signed-off-by: Devansh Varshney <varshney.devansh614@gmail.com>
Change-Id: Icac1a0a032213dd5a6d5581a72d7453e8147d391
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/7985
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 9b4ab82c920ae20bc82f6d68031b1f853dbc65c6)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209217
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-01 14:00:36 +02:00
Andrea Gelmini da9156aadc Fix typos
Change-Id: I3c228f14a624ce81568bcceccea05e4927d05f39
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210043
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-27 10:45:45 +02:00
Kurt Nordback 94a1e0c05c tdf#165742 Step 5.17: Improve data label round-trip
Fix some aspects of chartex data label import and export, to improve round-trip fidelity

Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Change-Id: Ie74593709caee05dea4aa98bd42913f221fd5b71
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/7908
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit b1a365ec22cddbd74b1533b714043eb9cee9c576)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209987
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-26 08:46:54 +02:00
Kurt Nordback 6d1c73240b Basic fix for funnel chart rendering
Make funnel chart rendering basically correct, with the bars centred and the
correct size. Various details may still be wrong.

Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Change-Id: I9717675366c7449b634358bc05677dd739ab2af3
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/7906
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit edac298e6a8f887fa90817331e5a58c84e294316)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209740
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-25 16:46:33 +02:00
Kurt Nordback 160014f44b Initial implementation of rendering for funnel charts
Framework for funnel chart rendering. For now this just renders them as
horizontal bar charts: that is, not properly centred as a funnel. UI
functionality is untested and probably broken.

Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Change-Id: I3a0e923b801c840138c90dcf3609253a467d23d1
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/7905
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 172e4233b70f1d73ca942876f3f47458843ffa36)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209739
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-25 08:52:54 +02:00
ApurvR20 43954c426c tdf#168520 Rename testTdf118150 to testTdf118150ChartWidthXlsx
Change-Id: I61ad9daac20fbc1570b1c7bc8fc899309eb14d02
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209463
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Tested-by: Jenkins
2026-08-21 20:41:16 +02:00
Kurt Nordback 104e64812a tdf#165742 Step 5.16: Improve handling of chartData for pptx/docx
Fix import/export of inline chart data for chartex, as seen in MSO-created
PML and WML files (.pptx/.docx). More specifically, fix the round-tripping
of data under <cx:strDim> and <cx:numDim> tags.

Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Change-Id: Ib2f1e92884e938f132876d1a1e18360db40c0052
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/7904
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 4fc780c5229e4cff04b60dea9722a6ee9cb8ed2b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209307
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-19 12:36:33 +02:00
Kurt Nordback d72a7d1be6 tdf#165742 Step 5.15: Don't export default shape props (continued)
In more cases, avoid exporting spPr when the intent is to use the default
value. Explicit spPr locks the settings, preventing override by styles, for
instance.

Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Change-Id: Ic73016a4d3ac3ebd0d3739a2c76dfaa3d9a70d4c
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/7903
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit dcbcd6246f137dec36763a2824463a9246c6cf68)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209242
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-19 08:42:01 +02:00
Kurt Nordback b6a5834277 tdf#165742 Step 5.14: Assorted axis unit fixes
Support round-trip for axis min, max, majorUnit, minorUnit, and some
handling for numFmt, all for chartex.

Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Change-Id: Ibef74b0efc27d5ff7923800b169603758e276ada
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/5901
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 05420f729d5399c127d9a15fcad043fa6673dd6a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209241
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-18 15:53:56 +02:00
Kurt Nordback 0c8160d7e8 tdf#165742 Step 5.13: Support ownerIdx attribute
It appears that the ownerIdx attribute of <cx:series> is used to indicate
that series share data. At least that seems to be the case with pareto
charts, which have both a clustered column and a pareto line series. Going
on that assumption, implement parsing/export of ownerIdx, and don't write
a dataId tag when ownerIdx is present. That fixes round-tripping of
pareto charts, at least based on what I've seen.

Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Change-Id: Ie948d2e5992b778462e34e1ef90681631c867332
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/5900
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 8c37a25ffb7711f69de978045b4e3dc8d52759da)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209240
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-18 15:53:52 +02:00
Kurt Nordback c26599741c tdf#165742 Step 5.12: Improve axis handling
Implement better handling of <cx:axisId> and <cx:axis> tags. In particular,
ensure we output the correct number of axisId elements, based on the chart
type, and ensure that corresponding axes (and only those) are captured in the
appropriate <cx:axis> data.

Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Change-Id: Ifed17afc05c70dced89e75f18dcf375fdef97f6e
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/5775
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 833f782bca98c891097d887a45365bc7a5322c4d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209239
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-18 13:08:26 +02:00
Xisco Fauli cc6e46b5c5 related tdf#171858: add tolerance to point's positionY
to fix
- Expected: 3819
- Actual  : 3820
- Delta   : 1e-08
- Reference: /Users/jtrzebiatowski/programowanie/libreoffice/lode/dev/core/chart2/qa/extras/xshape/data/reference/tdf90839-1.xml
- Node: /XShapes/XShape[2]/XShapes/XShape[3]/XShapes/XShape[1]/XShapes/XShape[2]/XShapes/XShape/XShapes/XShape/XShapes/XShape[5]/pointSequence[1]/point[10]
- Attr: positionY

on Apple ARM64

it started to fail with

after
commit 4c395887a3
Author: Noel Grandin <noel.grandin@collabora.co.uk>
Date:   Tue Jan 20 09:57:34 2026 +0200

    improve shape dumping

Similar to
commit ccce752f42
Author: Stephan Bergmann <sbergman@redhat.com>
Date:   Fri Dec 10 16:15:06 2021 +0100

    Allow for presumably more precise results of some layout calculations

Change-Id: I3ad4a9aca68f1fe0b552d5f363d7301322132fc2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208868
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-07-31 17:07:01 +02:00
Kurt Nordback f201337f3b tdf#165742 Step 5.11: Don't output empty tick mark tags in chartex
Chartex has different tick mark defaults from old-style charts. Don't
output <cx:majorTickmarks> or <cx:minorTickmarks> when no tick marks are
intended, including if there were no such tags on input.

Change-Id: Ib6caecaca917204ddc99208cbece8f6adff8f5ca
Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3067
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 5353e467dea04ba6b12b616b90e269f0a096375a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208843
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-07-30 17:13:30 +02:00
Mike Kaganski f7421e4df0 tdf#159450 Keep axis title centered on plot area with data table
When a chart shows a data table, it is drawn as a strip at the bottom of
the diagram, so the plot-area-plus-axes rectangle grows to include it. The
vertical axis title was centered on that rectangle and thus ended up shifted
downwards compared to MS Office, which centers it on the plot area alone.

Center the left- and right-aligned axis titles on the plot area rectangle
(which already excludes the data table) instead of on the plot area plus
axes, so the title stays centered on the axis.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: If21ba0938cea16abc382e686b9c4e2b84caf2dca
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/6978
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 48953636f24d522426d5f5e4ed9f0fc5ec6f30f5)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208241
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-07-19 02:08:32 +02:00
Devansh Varshney 88550ce19c oox: xmloff: import/export histogram underflow and overflow bins
Read underflow and overflow attributes from the histogram chart
type properties.

Export the same properties back to <cx:binning> so chart roundtrip
preserves optional edge bins.

Signed-off-by: Devansh Varshney <varshney.devansh614@gmail.com>
Change-Id: I963febac4987da23dce2571928982973f7ea67d6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207153
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-29 14:41:12 +02:00
Devansh Varshney 09823632bd chart2: add histogram underflow/overflow bin model support
Add model properties for optional underflow and overflow bins on
histogram chart types, and expose them through the HistogramDiagram
wrapper.

Pass the new settings through the existing histogram pipeline:
HistogramChartType snapshots the properties, HistogramDataSequence keeps
that snapshot, and HistogramCalculator creates optional edge bins around
the normal bin range.

Generated category labels now distinguish special bins from normal ranges,
e.g. "<= 11", "(11-13]", and "> 14".

Add a model-level test that sets fixed bin width together with underflow
and overflow bins, then verifies that the generated bin labels are rebuilt
correctly.

Signed-off-by: Devansh Varshney <varshney.devansh614@gmail.com>
Change-Id: I65eac9607daa4f4be6320304c9e9682549f479a6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207151
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-06-29 14:35:14 +02:00
Devansh Varshney 48ef1cbacc chart2: update histogram bins after bin-count changes
HistogramDataSequence snapshots the histogram binning
settings when the calculated-y and category sequences
are created. Rebuild those sequences when BinWidth,
BinCount, or FrequencyType changes, so fixed-bin settings
take effect immediately.

For XLSX import, use the regenerated histogram series
categories as the X axis categories. Keeping the existing
axis categories can preserve stale bin labels, e.g. after
reloading a chart exported with cx:binCount.

Extend the histogram roundtrip test to verify that fixed
bin count creates the expected bin labels after ODF
and XLSX reload.

Signed-off-by: Devansh Varshney <varshney.devansh614@gmail.com>
Change-Id: I718bbfe537d847de6c17ea7742a9c4d231b57b7c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207007
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-06-29 14:28:58 +02:00
Xisco Fauli 04ae2b1f12 Support coext namespace
After
commit e052641d460d8111d3333705aea03ad24822ebbb
Author: Michael Stahl <michael.stahl@collabora.com>
Date:   Thu Apr 16 14:55:25 2026 +0200

    xmloff,package,xmlsecurity,oox: add Collabora extension namespace

    For both ODF and OOXML export, add a new "coext" namespace.

New features saved in Collabora Office will not work in LibreOffice
Also add a test for it

Change-Id: I5626dbcf5e87e06ef94e33d1ce09a091c1557688
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206987
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-20 00:30:54 +02:00
Devansh Varshney 976fb79eee chart2: cover multi-histogram ChartEx source ranges
Add multi-chart histogram fixtures for ODF and XLSX, each containing three
histograms backed by separate source ranges.

The ODS-to-XLSX export test verifies that each exported ChartEx histogram
writes its own direct values-y range. This covers the failure mode where
multiple histograms could all point to the same _xlchart.v1.0 formula.

The XLSX roundtrip test verifies the same source-range separation for
native ChartEx histogram documents.

Signed-off-by: Devansh Varshney <varshney.devansh614@gmail.com>
Change-Id: Iaa0d8cf69ee1879cd389b2fe1c6697d723440c5b
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/4100
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 992a4edb821c97bf7132306c414b47c69e22111c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206715
Tested-by: Jenkins
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-17 21:52:50 +02:00
Devansh Varshney 344d396182 chart2: cover histogram XLSX raw data roundtrip
Extend the XLSX histogram roundtrip test to assert that the imported
series keeps its raw values-y data sequence and does not persist the
derived calculated-y sequence.

This mirrors the existing ODF histogram coverage and protects the
values-y/calculated-y separation for OOXML import/export.

Signed-off-by: Devansh Varshney <varshney.devansh614@gmail.com>
Change-Id: Ie0fa7d437eff9f35dc3013eaf61e1e9d05524e59
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/4095
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 1dedc2bd1e1e3ec37c4355d0e193a722f21e9998)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206714
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-17 21:52:41 +02:00
Devansh Varshney f78fcd8973 chart2: qa: cover histogram bin count property roundtrip
The test verifies that FrequencyType=2 and BinCount=3 survive ODS and
XLSX save/reload. The generated bin labels are intentionally not asserted
here, because fixed bin-count calculation is not implemented yet and still
falls back to the current automatic/bin-width result.

Signed-off-by: Devansh Varshney <varshney.devansh614@gmail.com>
Change-Id: Iaf1f0f89d82423eee057e8e480a559604b0b1a70
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/4074
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 0300d06dcc060c6ac060cfd1dfe989acb3d960d7)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206713
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-17 21:50:59 +02:00
Tomaž Vajngerl 7708f32604 chart2: cover bin labels and ODF-to-XLSX export in histogram tests
ODF round-trip: assert the series carries a categories sequence
with the expected bin range labels after reload. Without the late
histogram template re-application, that sequence is missing.

XLSX round-trip: assert the X axis Categories hold the bin range
labels. Without the axis converter preserving them, they get
replaced with generic "1", "2", ... labels.

Add testHistogramODSToXLSXExport: the exported chartEx1.xml must
carry a real cell range in the numDim formula, not an
_xlchart.v1.N alias with no matching definedName in workbook.xml.

Signed-off-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>
Change-Id: Ic01880ca40cc84fa83fe305fabd3dbfb796164e2
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3704
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit f037c36b5b14d69ef7e766e2cf6eab3bb0e87973)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206338
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-11 16:23:55 +02:00
Kurt Nordback 1403eb3621 tdf#165742 Step 5.10a: Only export non-default dataLabels
Don't always output series dataLabels element for chartex. Only output it if
necessary, meaning a non-default value.

Change-Id: Ie47b956cde0337bb82b268725c77d511da981d41
Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/2966
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 38af704dc0a8feab90007fbf3cd5388e0efd8294)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206025
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-06-05 12:02:22 +02:00
Kurt Nordback a16459fc63 tdf#165742 Step 5.10: Don't export default shape props
Don't export a series shape properties (spPr) for chartex charts if none was
present on input. Also a basic test for this.

Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/2961
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 32886b30c0539bfe1443434beeb1b3b27c93a4a7)
Change-Id: I5daf1d49762fe3b32c1c9254e0792b9eb34494e5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205699
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-26 19:48:18 +02:00
Kurt Nordback 0fcb8f99b7 tdf#165742 Step 5.9f: Improve <cx:chartData> handling
Replace some temporary chartex parse and export code to handle chartData more
properly. This now round-trips at least some <cx:f> and <cx:nf> content,
and handles the various *DimensionType values.

Change-Id: Ie91ac845a911c5be1f7ad5d8ed872d091bd6a623
Signed-off-by: Kurt Nordback <kurt.nordback@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/2644
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 1d58d04fb96b9bd73affeaecf9d6dee35d6357b5)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205578
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-24 01:00:06 +02:00
Devansh Varshney 5e836dfec5 oox: support histogram OOXML import and export
Preserve histogram charts when importng and exporting XLSX file.
Import histogram charts from XLSX, keep their source data and
settings, and export them back that keeps them working as
histogram charts.

Change-Id: I9c3e39fd3b429b9f61c249dd952bf70d9113ed7f
(cherry picked from commit 330fa62f1ef7b7c848c2da98d18a8bb453e82201)
Signed-off-by: Devansh Varshney <varshney.devansh614@gmail.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/1882
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 2ed0256704eb3ca34ff0a217b330849a3f7952da)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203895
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-05-23 00:10:01 +02:00
Devansh Varshney 0a99dee0ba chart2 qa: add ODF histogram roundtrip test
Add an ODS roundtrip test for histogram chart ODF import/export.

Change-Id: I37e6da4fc55dbff1fa0d310b3f74ee7e63a8012d
(cherry picked from commit 8a04469f2577c8a817dd4c9a9ee5c2d971157e4f)
Signed-off-by: Devansh Varshney <varshney.devansh614@gmail.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/1881
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 74bb1558fdf2e418d1c4a556e5a69819e3696cdd)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203893
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-23 00:09:54 +02:00
s-AustinAvery cc3c4ee29a tdf#168520 give automated tests more readable names
testTdf149204 renamed to testTdf149204_chart_shape_size_from_pptx_import
testTdf151424 renamed to testTdf151424_radar_chart_shape_position_from_ods

Change-Id: Icd7818f614d33cc5e7c434a5468b6f9136f183ba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204200
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2026-05-20 06:31:57 +02:00
Kurt Nordback cf04cdbcfa tdf#165742 Step 5.9d: Support for <cx:geography> tag
Add support for import, storage, and export of <cx:geography> and its
children. This tag is used to express geography for regionMap charts. Also
includes one simple round-trip test.

Change-Id: Iccaef8b8cd2848ae3e48532c72507469c55ebefc
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/719
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit d5bfa4677609d5618a82d4aa3e182bba00054a01)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204150
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-04-23 15:47:47 +02:00
Kurt Nordback 8cbd028c0b tdf#165742 Step 5.9c: Support for gapWidth tag import/export in chartex
The gapWidth tag specifies spacing for bar/column-like charts. In old-style
charts, it's given in the type group. In chartex, it is an attribute of the
<cx:catScaling> child element of <cx:axis>. This code thus includes some
structural changes to allow for reading the value in the axis processing
and storing it in the PropertySet associated with a type group (XChartType).

Change-Id: I21bdf3b511269c34c225873ee66fbaf29a7cb0ea
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/718
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit bb1d3ba56f5b17d0979addac95a3973278d2f46b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204149
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-04-23 13:37:59 +02:00
Kurt Nordback 03ecbbadd4 tdf#165742 Step 5.9b: Support more children of layoutPr
Provide round-tripping support for parentLabelLayout, regionLabelLayout,
statistics, and subtotals tags.

Change-Id: I6d5fb04ce54061dbb1e886157f9869030ff941d4
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/717
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit e91d8ff7a4cd84f444a9b01b64ad6df8d45f910e)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204148
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-04-23 13:37:43 +02:00
Kurt Nordback 9db38b095c tdf#165742 Step 5.9a: Support visibility child tag of layoutPr
Provide round-tripping support for the <cx:visibility> child of
<cx:layoutPr> in chartex.

Change-Id: I23f4058e67cb00fa986f6a4e7d1c63e97d44a4d0
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/688
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit ef7013f120422cc796e8994ff7ba1396c5e84609)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204147
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-04-23 13:37:34 +02:00
Xisco Fauli 5d9dfab134 Revert "tdf#165742 Step 5.10: Don't export default shape props"
This reverts commit d160c4a17d.

Pushed accidentally.

Change-Id: I3ffb711f953cd0e1b9e3a92ac6852618bd72cf83
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204166
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-04-23 13:36:50 +02:00
Kurt Nordback d160c4a17d tdf#165742 Step 5.10: Don't export default shape props
Don't export a series shape properties (spPr) for chartex charts if none was
present on input. Also a basic test for this.

Change-Id: I1692e8dbd160fa7d0db6fd0d50ca1ba42a9e9fca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202633
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-04-23 13:33:41 +02:00
Kurt Nordback 42fd74e7b8 tdf#165742 Step 5.9: Another fix for series fill
Some chartex charts, including waterfall, sunburst, and treemap,
by default use multiple scheme colors in rendering a single series,
depending on the data. This behavior occurs if no explicit fill is
given in the OOXML. The LO code was filling in the first scheme
color, on input, for the series in this case, and then on output,
writing that explicit color value as the series fill. This resulted
in MSO rendering the re-exported chart with a single color fill,
rather than the original multiple fill colors. Fix this by ensuring
that the generated ComplexColor is of type 'Theme' when the default
theme/scheme colors are used, and then don't write the fill on
export in this case.

Note that when we get to actually rendering these charts in LO,
this approach may not be sufficient. It may be more appropriate to
avoid any color resolution in the input stage in this case, and
handle it at render time.

Change-Id: I604ddf4115b1fd68db8be581539ca0135c62826c
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/687
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 7bb595429e84a4c0b9f11cf9e1449d75cbe4e376)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199554
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-04-23 13:33:21 +02:00
iwritepeom 2661b285b9 tdf#168520 Rename testTdf108022 to
testTdf108022_export_multiple_charts_from_odt_to_docx

Change-Id: I2225b01e30cba46f1401b09edac0e4d479f17502
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202701
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Tested-by: Jenkins
2026-04-08 11:04:43 +02:00
Justin Luth eb4c2bf137 tdf#170215 chart import: finish calculation-settings before chart:chart
This fixes a longstanding problem
exposed by 25.8.0 commit 33f644074e
OOXML handling of 1904 null date for charts with internal data provider

The problem was that size attributes for chart:chart
were being collected before table:calculation-settings was written out.

So the size was lost during import
because it was written into table:calculation-settings
instead of chart:chart

make CppunitTest_chart2_export3 CPPUNIT_TEST_NAME=testTdf170215_nullDate

Change-Id: Ie28cfb09945734fac7a49e8eef52831d933b430a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203220
Reviewed-by: Justin Luth <jluth@mail.com>
Tested-by: Jenkins
2026-04-07 01:04:13 +02:00
Andrea Gelmini 23e66a1c71 Fix typo "then"->"than"
Change-Id: I1fb43e16d4a15b7e2cb15939fac408322e3531a3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202913
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-03-29 09:46:56 +02:00
Kurt Nordback c26dd0e1f2 tdf#165742 Step 5.8: Add minimal support for layout props
Add framework for import/export of chartex layout properties (cx:layoutPr).
Also support the child cx:binning property, used for clusteredColumn charts
(and perhaps others). This allows the binning property to round-trip
successfully MSO -> LO -> MSO.

Change-Id: I54bd1692ce4fb59dd70c9d4ac68f108c33cbca8a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199553
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2026-03-24 06:57:32 +01:00
Kurt Nordback 40acca9604 tdf#165742 Step 5.7: Fix default series fill value
In chartex, it appears that if a series has no fill specified in a shape
property, the default fill for series n in a chart is the nth theme
value (or more likely n mod k, where k is the number of themes).
Previously the code assigned a series index based on the cx:dataId, so
where no dataId tag was present, the index defaulted to -1. This
resulted in a default white fill, which meant the series content was
not visible on a white background. This code changes that to assign
the index based on the sequence of series in the chart.

This is particularly relevant to pareto charts, which in the MS Office
construction contain two series: one a clusteredColumn and one a
paretoLine.

Also remove some unused ChartexTypeGroupContext code.

Change-Id: Icacf017b2d129f6da59b133d3c500252ee5603f6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198876
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Jenkins
2026-03-16 06:42:01 +01:00
Aron Budea eeffa8b835 tdf#115558 sw: export embedded XLSX in chart in footnote
Reference to the embedded XLSX was in substream that didn't
get propagated to the main document, and the embedded file
was missing from the reexported DOCX.

Change-Id: Ibb884d130b4a876a50b0156b3d08307352c0b03a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201284
Reviewed-by: Aron Budea <aron.budea@collabora.com>
Tested-by: Jenkins
2026-03-11 05:36:21 +01:00
Kurt Nordback 8194131de7 tdf#165742 Step 5.6: Support tickLabels in chartex
Provide import and export of cx:tickLabels, plus a basic round-trip test.
Unlike in the chart namespace, chartex tick labels don't seem to specify
a tick location, so assume that the appropriate value is nextTo. This
change doesn't support the associated extLst, which possibly provides
location information.

Change-Id: I0a79cacf1675b4159e7f821d4008e3ef0beaad55
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198572
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Jenkins
2026-03-09 05:05:11 +01:00
Kurt Nordback 996bf74008 tdf#165742 Step 5.5: Fixes to chartex axis import/export
Improvements and fixes for chartex axes, plus a rudimentary round-trip test.

Change-Id: I1d34aae9a139ea970f3d06315d32aefffd03598a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198453
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2026-03-02 07:40:43 +01:00
Noel Grandin 687029ee23 loplugin:unusedmethods
Change-Id: I4e19bd4ac164c185be5d612ad2e6cf18dfab1ad5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200166
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
2026-02-24 18:01:04 +01:00