cbf30153a5
docx has the information, that a shape is a WordArt shape, after the text content. So in import of such file there is already a frame attached to the shape, which makes it impossible to set it into text path mode. The patch detects that it should be a WordArt shape. It transfers the text from frame to shape, removes the frame and then sets the shape into text path mode. WordArt in OOXML has the same closed set of types as we have for MS binary import. But MS Word can combine them with arbitrary shapes. The patch does only convert rectangles. The text is copied from frame to the shape as string. Thus it looses all styles. But our Fontwork cannot use different styles for portions of text, so I think that is acceptable. Fontwork uses not the styles of the text but styles set at the shape. The patch copies the styles from the first not empty run. That should give sufficient results in most cases. These text styles are set at the shape, which will result in a paragraph style referenced by the draw:text-style-name attribute of the draw:custom-shape element in ODF. The patch does not yet include export to docx. The current 'restore old shape' on resave to docx is lost. ToDo: Patch for export. Change-Id: I880ee7c7616db50524032e4b1443730a2d0a7361 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143615 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
46 lines
1.4 KiB
C++
46 lines
1.4 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/.
|
|
*/
|
|
|
|
#ifndef INCLUDED_OOX_SOURCE_SHAPE_WPSCONTEXT_HXX
|
|
#define INCLUDED_OOX_SOURCE_SHAPE_WPSCONTEXT_HXX
|
|
|
|
#include <oox/core/contexthandler2.hxx>
|
|
#include <oox/drawingml/shapecontext.hxx>
|
|
#include <oox/drawingml/drawingmltypes.hxx>
|
|
|
|
namespace com::sun::star::drawing
|
|
{
|
|
class XShape;
|
|
}
|
|
|
|
namespace oox::shape
|
|
{
|
|
/// Wps is the drawingML equivalent of v:shape.
|
|
class WpsContext final : public oox::drawingml::ShapeContext
|
|
{
|
|
public:
|
|
WpsContext(oox::core::ContextHandler2Helper const& rParent,
|
|
css::uno::Reference<css::drawing::XShape> xShape,
|
|
oox::drawingml::ShapePtr const& pMasterShapePtr,
|
|
oox::drawingml::ShapePtr const& pShapePtr);
|
|
~WpsContext() override;
|
|
|
|
oox::core::ContextHandlerRef onCreateContext(sal_Int32 nElementToken,
|
|
const oox::AttributeList& rAttribs) override;
|
|
virtual void onEndElement() override;
|
|
|
|
private:
|
|
css::uno::Reference<css::drawing::XShape> mxShape;
|
|
bool m_bHasWPGParent;
|
|
};
|
|
}
|
|
|
|
#endif
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|