The DiagramModel uses 4 mandatory and three optional XMLDoms for it's data. These get imported, but to get to a roundtrip we will need to be able to create & save these again. Last changes prepared this by deleting XMLDoms which were no longer valid dependent of changes done to that DiagramModel. When exporting the availability of these gets checked and if all are there, it gets exported as Diagram (in MSO format, not yet in ODF). If nothing was changed the original Doms get exported - untouched. That test will now try - if e.g. the most important XMLDom OOXData is missing - to re-create this in that action. The 1st one which I now implemented that is the OOXData which homes the Point/Connections/BGFill data (and some more). Due to this needing testing I for now encapsulated this to a EnvVar called ACTIVATE_RECREATE_DIAGRAM_DATADOMS, so this will for now only happen when this is set. Anyways all that stuff is still behind the 'experimental features' wall. This is and stays experimental for now. These are already deep changes which need to get tested and get to master, opening the path to experiment with it and refine it. Due to the EnvVar gate no real changes should happen in master, but due to the changes around it this will need to be checked this way. Change-Id: Iabba69b19387e45f1028843a25f3bae1fc4f8fe8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197676 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
85 lines
3.2 KiB
C++
85 lines
3.2 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
* with this work for additional information regarding copyright
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
*/
|
|
|
|
#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DATAMODEL_HXX
|
|
#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DATAMODEL_HXX
|
|
|
|
#include <map>
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#include <rtl/ustring.hxx>
|
|
|
|
#include <svx/diagram/datamodel_svx.hxx>
|
|
#include <oox/drawingml/drawingmltypes.hxx>
|
|
#include <oox/helper/helper.hxx>
|
|
#include <oox/token/tokens.hxx>
|
|
#include <oox/shape/ShapeFilterBase.hxx>
|
|
|
|
namespace oox::drawingml {
|
|
|
|
class DiagramData_oox : public svx::diagram::DiagramData_svx
|
|
{
|
|
public:
|
|
typedef std::map< OUString, ShapePtr > PointShapeMap;
|
|
|
|
DiagramData_oox();
|
|
virtual ~DiagramData_oox();
|
|
|
|
// creates temporary processing data from model data
|
|
virtual void buildDiagramDataModel(bool bClearOoxShapes);
|
|
|
|
FillPropertiesPtr& getBackgroundShapeFillProperties() { return mpBackgroundShapeFillProperties; }
|
|
virtual void dump() const;
|
|
|
|
Shape* getOrCreateAssociatedShape(const svx::diagram::Point& rPoint, bool bCreateOnDemand = false) const;
|
|
|
|
// get/set data between Diagram DataModel and oox::drawingml::Shape
|
|
void secureDataFromShapeToModelAfterDiagramImport(::oox::drawingml::Shape& rRootShape);
|
|
void restoreDataFromShapeToModelAfterDiagramImport(::oox::drawingml::Shape& rRootShape);
|
|
static void restoreDataFromModelToShapeAfterReCreation(const svx::diagram::Point& rPoint, Shape& rNewShape);
|
|
|
|
void writeDiagramData(oox::core::XmlFilterBase& rFB, sax_fastparser::FSHelperPtr& rTarget, const css::uno::Reference<css::drawing::XShape>& rXShape);
|
|
|
|
protected:
|
|
void secureStyleDataFromShapeToModel(::oox::drawingml::Shape& rShape);
|
|
void restoreStyleDataFromShapeToModel(::oox::drawingml::Shape& rShape);
|
|
|
|
private:
|
|
// The model definition, the parts *only* available in oox. Also look for already
|
|
// defined ModelData in svx::diagram::DiagramData_svx
|
|
|
|
// - FillStyle for Diagram Background (empty constructed, may stay empty)
|
|
FillPropertiesPtr mpBackgroundShapeFillProperties;
|
|
|
|
// temporary processing data, deleted when using build(). Association
|
|
// map between oox::drawingml::Shape and svx::diagram::Point ModelData
|
|
PointShapeMap maPointShapeMap;
|
|
};
|
|
|
|
// Oox-local definition of DiagramData_oox. Doing and using this on Oox
|
|
// allows to do much less static_cast(s) - if at all from svx::diagram::DiagramData_svx
|
|
typedef std::shared_ptr< DiagramData_oox > OoxDiagramDataPtr;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|