oox/inc/drawingml/chart/seriesmodel.hxx           |    3 +++
 oox/inc/drawingml/chart/typegroupconverter.hxx    |    6 ++++++
 oox/source/drawingml/chart/seriescontext.cxx      |    2 +-
 oox/source/drawingml/chart/typegroupconverter.cxx |    7 +++++++
 4 files changed, 17 insertions(+), 1 deletion(-)

New commits:
commit fd8c7132dc03b68e32931d67e0720d4dd36268f6
Author:     Kurt Nordback <[email protected]>
AuthorDate: Thu Nov 13 10:47:25 2025 -0700
Commit:     Tomaž Vajngerl <[email protected]>
CommitDate: Thu Dec 4 14:42:16 2025 +0100

    Definitions for more chartex types
    
    Change-Id: I12bcdf10175c1f9cc25773436307d6c313604b0d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194932
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <[email protected]>

diff --git a/oox/inc/drawingml/chart/seriesmodel.hxx 
b/oox/inc/drawingml/chart/seriesmodel.hxx
index 4c791d67e613..8ad07e812d54 100644
--- a/oox/inc/drawingml/chart/seriesmodel.hxx
+++ b/oox/inc/drawingml/chart/seriesmodel.hxx
@@ -212,6 +212,9 @@ struct SeriesModel
     bool                mbBubble3d;         /// True = show bubbles with 3D 
shade.
     bool                mbInvertNeg;        /// True = invert negative data 
points.
     bool                mbSmooth;           /// True = smooth series line.
+    std::vector<sal_Int32>
+                        maAxisIds;          /// List of axis identifiers used
+                                            // (Only used by chartex)
 
     explicit            SeriesModel(bool bMSO2007Doc);
                         ~SeriesModel();
diff --git a/oox/inc/drawingml/chart/typegroupconverter.hxx 
b/oox/inc/drawingml/chart/typegroupconverter.hxx
index bcb14917ebe8..390dcd47c6ad 100644
--- a/oox/inc/drawingml/chart/typegroupconverter.hxx
+++ b/oox/inc/drawingml/chart/typegroupconverter.hxx
@@ -52,6 +52,12 @@ enum TypeId
     TYPEID_BUBBLE,                  /// Bubble chart.
     TYPEID_SURFACE,                 /// Surface chart.
     TYPEID_FUNNEL,                  /// Funnel chart.
+    TYPEID_HISTO,                   /// Histogram chart.
+    TYPEID_BOXWHISKER,              /// Box & whisker
+    TYPEID_PARETOLINE,              /// Pareto (sorted column + cumulative 
line)
+    TYPEID_REGIONMAP,               /// Geographic map
+    TYPEID_SUNBURST,                /// Multi-level hierarchical
+    TYPEID_TREEMAP,                 /// Two-level hierarchical
     TYPEID_UNKNOWN,                 /// Default for unknown chart types.
 };
 
diff --git a/oox/source/drawingml/chart/seriescontext.cxx 
b/oox/source/drawingml/chart/seriescontext.cxx
index 19134c7a54a7..c913aa31928e 100644
--- a/oox/source/drawingml/chart/seriescontext.cxx
+++ b/oox/source/drawingml/chart/seriescontext.cxx
@@ -795,7 +795,7 @@ ContextHandlerRef ChartexSeriesContext::onCreateContext( 
sal_Int32 nElement, con
                     // This looks complicated. TODO
                     return nullptr;
                 case CX_TOKEN( axisId ):
-                    // TODO
+                    mrModel.maAxisIds.push_back( rAttribs.getInteger( XML_val, 
-1 ) );
                     return nullptr;
             }
     }
diff --git a/oox/source/drawingml/chart/typegroupconverter.cxx 
b/oox/source/drawingml/chart/typegroupconverter.cxx
index 31ac67952b9f..b9cfde025f44 100644
--- a/oox/source/drawingml/chart/typegroupconverter.cxx
+++ b/oox/source/drawingml/chart/typegroupconverter.cxx
@@ -159,19 +159,26 @@ TypeGroupConverter::TypeGroupConverter( const 
ConverterRoot& rParent, TypeGroupM
         case C_TOKEN( areaChart ):      ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_AREA;      mb3dChart = false;  break;
         case C_TOKEN( bar3DChart ):     ENSURE_AXESCOUNT( 2, 3 ); eTypeId = 
TYPEID_BAR;       mb3dChart = true;   break;
         case C_TOKEN( barChart ):       ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_BAR;       mb3dChart = false;  break;
+        case CX_TOKEN( boxWhisker ):    ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_BOXWHISKER;mb3dChart = false;  break;
         case C_TOKEN( bubbleChart ):    ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_BUBBLE;    mb3dChart = false;  break;
+        case CX_TOKEN( clusteredColumn ): ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_BAR;     mb3dChart = false;  break;
         case C_TOKEN( doughnutChart ):  ENSURE_AXESCOUNT( 0, 0 ); eTypeId = 
TYPEID_DOUGHNUT;  mb3dChart = false;  break;
         case CX_TOKEN( funnel ):        ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_FUNNEL;    mb3dChart = false;  break;
         case C_TOKEN( line3DChart ):    ENSURE_AXESCOUNT( 3, 3 ); eTypeId = 
TYPEID_LINE;      mb3dChart = true;   break;
         case C_TOKEN( lineChart ):      ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_LINE;      mb3dChart = false;  break;
         case C_TOKEN( ofPieChart ):     ENSURE_AXESCOUNT( 0, 0 ); eTypeId = 
TYPEID_OFPIE;     mb3dChart = false;  break;
+        case CX_TOKEN( paretoLine ):    ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_PARETOLINE;mb3dChart = false;  break;
         case C_TOKEN( pie3DChart ):     ENSURE_AXESCOUNT( 0, 0 ); eTypeId = 
TYPEID_PIE;       mb3dChart = true;   break;
         case C_TOKEN( pieChart ):       ENSURE_AXESCOUNT( 0, 0 ); eTypeId = 
TYPEID_PIE;       mb3dChart = false;  break;
+        case CX_TOKEN( regionMap ):     ENSURE_AXESCOUNT( 0, 0 ); eTypeId = 
TYPEID_REGIONMAP; mb3dChart = false;  break;
         case C_TOKEN( radarChart ):     ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_RADARLINE; mb3dChart = false;  break;
         case C_TOKEN( scatterChart ):   ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_SCATTER;   mb3dChart = false;  break;
         case C_TOKEN( stockChart ):     ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_STOCK;     mb3dChart = false;  break;
+        case CX_TOKEN( sunburst ):      ENSURE_AXESCOUNT( 0, 0 ); eTypeId = 
TYPEID_SUNBURST;  mb3dChart = false;  break;
         case C_TOKEN( surface3DChart ): ENSURE_AXESCOUNT( 3, 3 ); eTypeId = 
TYPEID_SURFACE;   mb3dChart = true;   break;
         case C_TOKEN( surfaceChart ):   ENSURE_AXESCOUNT( 2, 3 ); eTypeId = 
TYPEID_SURFACE;   mb3dChart = true;   break;    // 3D bar chart from all 
surface charts
+        case CX_TOKEN( treemap ):       ENSURE_AXESCOUNT( 0, 0 ); eTypeId = 
TYPEID_TREEMAP;   mb3dChart = false;  break;
+        case CX_TOKEN( waterfall ):     ENSURE_AXESCOUNT( 2, 2 ); eTypeId = 
TYPEID_BAR;       mb3dChart = false;  break;
         default:    OSL_FAIL( "TypeGroupConverter::TypeGroupConverter - 
unknown chart type" );
 #undef ENSURE_AXESCOUNT
     }

Reply via email to