Files
libreoffice/oox/source/drawingml/shape.cxx

1206 lines
52 KiB
C++
Raw Normal View History

/* -*- 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 .
*/
2008-01-17 07:06:10 +00:00
#include "oox/drawingml/shape.hxx"
#include "oox/drawingml/customshapeproperties.hxx"
#include "oox/drawingml/theme.hxx"
#include "oox/drawingml/fillproperties.hxx"
#include "oox/drawingml/lineproperties.hxx"
#include "oox/drawingml/effectproperties.hxx"
#include "oox/drawingml/shapepropertymap.hxx"
#include "oox/drawingml/textbody.hxx"
#include "oox/drawingml/table/tableproperties.hxx"
#include "oox/drawingml/chart/chartconverter.hxx"
#include "oox/drawingml/chart/chartspacefragment.hxx"
#include "oox/drawingml/chart/chartspacemodel.hxx"
#include "oox/vml/vmldrawing.hxx"
#include "oox/vml/vmlshape.hxx"
#include "oox/vml/vmlshapecontainer.hxx"
#include "oox/core/xmlfilterbase.hxx"
#include "oox/helper/graphichelper.hxx"
#include "oox/helper/propertyset.hxx"
2008-01-17 07:06:10 +00:00
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
#include <tools/gen.hxx>
#include <tools/mapunit.hxx>
2013-09-03 11:13:22 +03:00
#include <editeng/unoprnms.hxx>
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
#include <com/sun/star/awt/Size.hpp>
2008-01-17 07:06:10 +00:00
#include <com/sun/star/graphic/XGraphic.hpp>
#include <com/sun/star/container/XNamed.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
2008-01-17 07:06:10 +00:00
#include <com/sun/star/beans/XMultiPropertySet.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/xml/AttributeData.hpp>
2008-01-17 07:06:10 +00:00
#include <com/sun/star/drawing/HomogenMatrix3.hpp>
#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
#include <com/sun/star/drawing/GraphicExportFilter.hpp>
2008-01-17 07:06:10 +00:00
#include <com/sun/star/text/XText.hpp>
#include <com/sun/star/table/BorderLine2.hpp>
#include <com/sun/star/table/ShadowFormat.hpp>
#include <com/sun/star/chart2/XChartDocument.hpp>
#include <com/sun/star/style/ParagraphAdjust.hpp>
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
#include <com/sun/star/io/XOutputStream.hpp>
2008-01-17 07:06:10 +00:00
#include <basegfx/point/b2dpoint.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <com/sun/star/document/XActionLockable.hpp>
#include <com/sun/star/chart2/data/XDataReceiver.hpp>
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
#include <svl/outstrm.hxx>
#include <unotools/streamwrap.hxx>
#include <unotools/fltrcfg.hxx>
#include <vcl/graph.hxx>
#include <vcl/graphicfilter.hxx>
#include <vcl/svapp.hxx>
2008-01-17 07:06:10 +00:00
using namespace ::oox::core;
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::frame;
using namespace ::com::sun::star::text;
using namespace ::com::sun::star::drawing;
using namespace ::com::sun::star::style;
2008-01-17 07:06:10 +00:00
namespace oox { namespace drawingml {
#define PUT_PROP( aProperties, nPos, sPropName, aPropValue ) \
aProperties[nPos].Name = sPropName; \
aProperties[nPos].Value = Any( aPropValue );
Shape::Shape( const sal_Char* pServiceName, bool bDefaultHeight )
: mbIsChild( false )
, mpLinePropertiesPtr( new LineProperties )
, mpFillPropertiesPtr( new FillProperties )
CWS-TOOLING: integrate CWS dr68 2009-06-19 17:43:48 +0200 oc r273175 : #i102946# some lines for new dialog added 2009-06-19 14:17:45 +0200 oc r273158 : #i102946# three lines added 2009-05-19 11:56:14 +0200 dr r272065 : #i99677# wrong attribute name 2009-05-18 18:37:05 +0200 dr r272045 : #i10000# suncc warning 2009-05-05 16:46:13 +0200 dr r271536 : #i10000# adoptions after rebase to master containing dr67 2009-05-05 16:01:19 +0200 dr r271530 : #i10000# adoptions after rebase to master containing dr67 2009-05-04 14:20:39 +0200 dr r271453 : CWS-TOOLING: rebase CWS dr68 to trunk@271427 (milestone: DEV300:m47) 2009-04-28 17:01:14 +0200 dr r271332 : CWS-TOOLING: rebase CWS dr68 to trunk@270723 (milestone: DEV300:m46) 2009-04-23 12:21:40 +0200 dr r271149 : #i100688# missing checkins 2009-04-23 12:18:16 +0200 dr r271147 : #i100978# relations path handling 2009-04-22 19:25:45 +0200 nn r271136 : #i49491# show navigator for double click on document position status bar control 2009-04-22 11:28:36 +0200 nn r271085 : #i60401# small text change 2009-04-21 16:53:23 +0200 dr r271044 : #i10000# missing dtor 2009-04-20 13:39:25 +0200 nn r270977 : #i60401# add dialog to extend sort range (patch from maoyg) 2009-04-08 12:11:08 +0200 dr r270630 : #i100943# prevent assertion when loading chart with empty category ranges 2009-04-07 19:03:00 +0200 dr r270609 : #i100688# missing bits for OLE 2009-04-07 17:14:06 +0200 dr r270605 : ported fix for #i100710# 2009-04-07 17:12:50 +0200 dr r270604 : #i10000# wae 2009-04-07 15:31:55 +0200 dr r270598 : import system colors moved to FilterBase class, more rework on fill and color contexts 2009-04-06 15:00:03 +0200 dr r270552 : #i99677# prevent recursive loading of the current document 2009-04-03 18:28:42 +0200 dr r270515 : added import of brightness/contrast and mono/grayscale color effects for image shapes 2009-04-03 17:36:03 +0200 dr r270509 : cache already imported embedded graphics 2009-04-03 16:46:34 +0200 dr r270500 : more rework on bitmap fill and graphic object handling 2009-03-31 12:28:10 +0200 dr r270271 : #i10000# unxlngi6 wae 2009-03-31 09:04:10 +0200 dr r270261 : CWS-TOOLING: rebase CWS dr68 to trunk@270033 (milestone: DEV300:m45) 2009-03-30 17:42:05 +0200 dr r270249 : #i91122# add missing doc 2009-03-30 17:37:08 +0200 dr r270248 : #i91122# add missing doc 2009-03-30 16:59:15 +0200 dr r270241 : #i99677# add import of ActiveX scrollbar controls 2009-03-30 14:30:36 +0200 dr r270230 : #i91122# missing/wrong documentation 2009-03-30 13:03:38 +0200 dr r270220 : #i99677# add import of ActiveX combobox and spinbutton controls 2009-03-27 11:46:59 +0100 dr r270144 : #i99677# import ActiveX listbox controls (Forms.ListBox.1) 2009-03-26 19:58:00 +0100 dr r270104 : #i99677# move more OLE import code into ole submodule 2009-03-26 15:15:02 +0100 dr r270082 : #i100546# add import of chart bitmap fills, add import of X/Y offset in tiled bitmap fills of all shapes 2009-03-25 12:54:59 +0100 dr r270018 : #i99677# import ActiveX edit text control (Forms.TextBox.1) 2009-03-24 10:59:29 +0100 dr r269921 : #i99677# moved import of OLE StdHlink to 'ole' submodule, added string import helpers to BinaryStreamBase class, removed implementation of ST_XString import from docprop in favour of the implementation in class AttributeList 2009-03-24 10:40:18 +0100 dr r269919 : #i100502# implicit precedence of '&&' was intended 2009-03-24 10:18:29 +0100 dr r269917 : #i100502# missing parentheses 2009-03-23 15:17:48 +0100 dr r269876 : #i99677# more code reorg, added graphic helper and OLE helper object per filter, added OLE/control import to PPTX/XLSX filter, moved helpers from XmlFilterBase to FilterBase 2009-03-19 12:45:20 +0100 dr r269740 : #i99677# interface changes in oox 2009-03-18 15:51:50 +0100 dr r269683 : #i99677# improved relation handling (internal/external), added preprocessor for VML streams to eat MS specific instructions, added OCX ToggleButton/OptionButton import, added DIB import for BIFF (page background picture, lots of other minor improvements 2009-03-16 15:25:30 +0100 dr r269551 : #i99677# import excel form control client data (printable, cell link) 2009-03-13 18:37:17 +0100 dr r269494 : #i99677# import image controls and check boxes 2009-03-12 15:08:18 +0100 dr r269420 : #i10000# rebase problems 2009-03-12 14:43:09 +0100 dr r269418 : #i10000# rebase problems 2009-03-12 14:42:41 +0100 dr r269417 : #i10000# missing delivered header 2009-03-12 13:57:06 +0100 dr r269405 : #i10000# typos 2009-03-12 12:58:52 +0100 dr r269391 : CWS-TOOLING: rebase CWS dr68 to trunk@269297 (milestone: DEV300:m43) 2009-03-12 11:11:46 +0100 dr r269374 : #i99677# first step to import BIFF8 page background 2009-03-12 10:21:53 +0100 dr r269364 : #i99677# rework of graphic import in entire filter, added import of AX Label controls 2009-03-09 16:44:50 +0100 dr r269202 : #i99677# import some formatting attributes of command buttons 2009-03-05 15:31:46 +0100 dr r268911 : #i99677# use VML shape client data to import excel VML shape positions 2009-03-05 11:39:48 +0100 dr r268888 : #i99677# create UNO control shapes from VML control shapes 2009-03-05 11:38:59 +0100 dr r268886 : #i99677# change attribute Shapes to DrawPage for import of embedded form controls 2009-03-05 11:30:40 +0100 dr r268885 : #i99677# change attribute Shapes to DrawPage for import of embedded form controls 2009-03-04 18:46:05 +0100 dr r268860 : adapt namespace ids according to oox 2009-03-04 18:43:49 +0100 dr r268859 : #i99677# more VML import rework 2009-03-03 13:38:36 +0100 dr r268721 : #i99677# more cleanup for VML filter 2009-03-03 13:13:15 +0100 dr r268719 : #i99807# do not iterate beyond end of std::list 2009-03-02 11:55:49 +0100 dr r268644 : add ST_XString support (encoded characters in attribute values) 2009-02-26 17:07:18 +0100 dr r268542 : #i99677# first steps of ax control import: dummy AX base classes, reimplement VML import (hopefully without breaking anything), register embedded AX controls at VML drawing 2009-02-23 17:43:50 +0100 dr r268365 : #i99426# remaining work on scenario import 2009-02-19 16:56:25 +0100 dr r268295 : #i99426# base implementations for scenarios import
2009-07-15 14:57:49 +00:00
, mpGraphicPropertiesPtr( new GraphicProperties )
, mpCustomShapePropertiesPtr( new CustomShapeProperties )
, mpEffectPropertiesPtr( new EffectProperties )
, mpMasterTextListStyle( new TextListStyle )
2008-01-17 07:06:10 +00:00
, mnSubType( 0 )
, meFrameType( FRAMETYPE_GENERIC )
2008-01-17 07:06:10 +00:00
, mnRotation( 0 )
, mbFlipH( false )
, mbFlipV( false )
, mbHidden( false )
, mbHiddenMasterShape( false )
, mbLockedCanvas( false )
, mbWps( false )
2013-09-03 11:13:22 +03:00
, maDiagramDoms( 0 )
2008-01-17 07:06:10 +00:00
{
if ( pServiceName )
msServiceName = OUString::createFromAscii( pServiceName );
setDefaults(bDefaultHeight);
2008-01-17 07:06:10 +00:00
}
Shape::Shape( const ShapePtr& pSourceShape )
: maChildren()
, mbIsChild( pSourceShape->mbIsChild )
, mpTextBody(pSourceShape->mpTextBody)
, mpLinePropertiesPtr( pSourceShape->mpLinePropertiesPtr )
, mpFillPropertiesPtr( pSourceShape->mpFillPropertiesPtr )
, mpGraphicPropertiesPtr( pSourceShape->mpGraphicPropertiesPtr )
, mpCustomShapePropertiesPtr( pSourceShape->mpCustomShapePropertiesPtr )
, mpTablePropertiesPtr( pSourceShape->mpTablePropertiesPtr )
, mp3DPropertiesPtr( pSourceShape->mp3DPropertiesPtr )
, mpEffectPropertiesPtr (pSourceShape->mpEffectPropertiesPtr)
, maShapeProperties( pSourceShape->maShapeProperties )
, mpMasterTextListStyle( pSourceShape->mpMasterTextListStyle )
, mxShape()
, msServiceName( pSourceShape->msServiceName )
, msName( pSourceShape->msName )
, msId( pSourceShape->msId )
, mnSubType( pSourceShape->mnSubType )
, moSubTypeIndex( pSourceShape->moSubTypeIndex )
, maShapeStyleRefs( pSourceShape->maShapeStyleRefs )
, maSize( pSourceShape->maSize )
, maPosition( pSourceShape->maPosition )
, meFrameType( pSourceShape->meFrameType )
, mnRotation( pSourceShape->mnRotation )
, mbFlipH( pSourceShape->mbFlipH )
, mbFlipV( pSourceShape->mbFlipV )
, mbHidden( pSourceShape->mbHidden )
, mbHiddenMasterShape( pSourceShape->mbHiddenMasterShape )
, mbLockedCanvas( pSourceShape->mbLockedCanvas )
, mbWps( pSourceShape->mbWps )
2013-09-03 11:13:22 +03:00
, maDiagramDoms( pSourceShape->maDiagramDoms )
{}
2008-01-17 07:06:10 +00:00
Shape::~Shape()
{
}
table::TablePropertiesPtr Shape::getTableProperties()
{
if ( !mpTablePropertiesPtr.get() )
mpTablePropertiesPtr.reset( new table::TableProperties() );
return mpTablePropertiesPtr;
}
void Shape::setDefaults(bool bHeight)
2008-01-17 07:06:10 +00:00
{
maDefaultShapeProperties.setProperty(PROP_TextAutoGrowHeight, false);
maDefaultShapeProperties.setProperty(PROP_TextWordWrap, true);
maDefaultShapeProperties.setProperty(PROP_TextLeftDistance, static_cast< sal_Int32 >( 250 ));
maDefaultShapeProperties.setProperty(PROP_TextUpperDistance, static_cast< sal_Int32 >( 125 ));
maDefaultShapeProperties.setProperty(PROP_TextRightDistance, static_cast< sal_Int32 >( 250 ));
maDefaultShapeProperties.setProperty(PROP_TextLowerDistance, static_cast< sal_Int32 >( 125 ));
if (bHeight)
maDefaultShapeProperties.setProperty(PROP_CharHeight, static_cast< float >( 18.0 ));
maDefaultShapeProperties.setProperty(PROP_TextVerticalAdjust, TextVerticalAdjust_TOP);
maDefaultShapeProperties.setProperty(PROP_ParaAdjust, static_cast< sal_Int16 >( ParagraphAdjust_LEFT )); // check for RTL?
2008-01-17 07:06:10 +00:00
}
::oox::vml::OleObjectInfo& Shape::setOleObjectType()
{
OSL_ENSURE( meFrameType == FRAMETYPE_GENERIC, "Shape::setOleObjectType - multiple frame types" );
meFrameType = FRAMETYPE_OLEOBJECT;
mxOleObjectInfo.reset( new ::oox::vml::OleObjectInfo( true ) );
return *mxOleObjectInfo;
}
ChartShapeInfo& Shape::setChartType( bool bEmbedShapes )
{
OSL_ENSURE( meFrameType == FRAMETYPE_GENERIC, "Shape::setChartType - multiple frame types" );
meFrameType = FRAMETYPE_CHART;
msServiceName = "com.sun.star.drawing.OLE2Shape";
mxChartShapeInfo.reset( new ChartShapeInfo( bEmbedShapes ) );
return *mxChartShapeInfo;
}
void Shape::setDiagramType()
{
OSL_ENSURE( meFrameType == FRAMETYPE_GENERIC, "Shape::setDiagramType - multiple frame types" );
meFrameType = FRAMETYPE_DIAGRAM;
msServiceName = "com.sun.star.drawing.GroupShape";
mnSubType = 0;
}
void Shape::setTableType()
{
OSL_ENSURE( meFrameType == FRAMETYPE_GENERIC, "Shape::setTableType - multiple frame types" );
meFrameType = FRAMETYPE_TABLE;
msServiceName = "com.sun.star.drawing.TableShape";
mnSubType = 0;
}
2008-01-17 07:06:10 +00:00
void Shape::setServiceName( const sal_Char* pServiceName )
{
if ( pServiceName )
msServiceName = OUString::createFromAscii( pServiceName );
}
const ShapeStyleRef* Shape::getShapeStyleRef( sal_Int32 nRefType ) const
{
ShapeStyleRefMap::const_iterator aIt = maShapeStyleRefs.find( nRefType );
return (aIt == maShapeStyleRefs.end()) ? 0 : &aIt->second;
}
void Shape::addShape(
::oox::core::XmlFilterBase& rFilterBase,
const Theme* pTheme,
const Reference< XShapes >& rxShapes,
basegfx::B2DHomMatrix& aTransformation,
FillProperties& rShapeOrParentShapeFillProps,
const awt::Rectangle* pShapeRect,
ShapeIdMap* pShapeMap )
2008-01-17 07:06:10 +00:00
{
SAL_INFO("oox.drawingml", OSL_THIS_FUNC << " id: " << msId);
2008-01-17 07:06:10 +00:00
try
{
OUString sServiceName( msServiceName );
if( !sServiceName.isEmpty() )
2008-01-17 07:06:10 +00:00
{
basegfx::B2DHomMatrix aMatrix( aTransformation );
Reference< XShape > xShape( createAndInsert( rFilterBase, sServiceName, pTheme, rxShapes, pShapeRect, sal_False, sal_False, aMatrix, rShapeOrParentShapeFillProps ) );
2008-01-17 07:06:10 +00:00
if( pShapeMap && !msId.isEmpty() )
2008-01-17 07:06:10 +00:00
{
(*pShapeMap)[ msId ] = shared_from_this();
2008-01-17 07:06:10 +00:00
}
// if this is a group shape, we have to add also each child shape
Reference< XShapes > xShapes( xShape, UNO_QUERY );
if ( xShapes.is() )
addChildren( rFilterBase, *this, pTheme, xShapes, pShapeRect ? *pShapeRect : awt::Rectangle( maPosition.X, maPosition.Y, maSize.Width, maSize.Height ), pShapeMap, aMatrix );
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
if( meFrameType == FRAMETYPE_DIAGRAM )
{
if( !SvtFilterOptions::Get().IsSmartArt2Shape() )
keepDiagramCompatibilityInfo( rFilterBase );
}
2008-01-17 07:06:10 +00:00
}
}
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
catch( const Exception& e )
2008-01-17 07:06:10 +00:00
{
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
SAL_WARN( "oox.drawingml", OSL_THIS_FUNC << "Exception: " << e.Message );
2008-01-17 07:06:10 +00:00
}
}
void Shape::setLockedCanvas(bool bLockedCanvas)
{
mbLockedCanvas = bLockedCanvas;
}
bool Shape::getLockedCanvas()
{
return mbLockedCanvas;
}
void Shape::setWps(bool bWps)
{
mbWps = bWps;
}
bool Shape::getWps()
{
return mbWps;
}
void Shape::applyShapeReference( const Shape& rReferencedShape, bool bUseText )
2008-01-17 07:06:10 +00:00
{
SAL_INFO("oox", OSL_THIS_FUNC << "apply shape reference: " << rReferencedShape.msId << " to shape id: " << msId);
if ( rReferencedShape.mpTextBody.get() && bUseText )
mpTextBody = TextBodyPtr( new TextBody( *rReferencedShape.mpTextBody.get() ) );
else
mpTextBody.reset();
2008-01-17 07:06:10 +00:00
maShapeProperties = rReferencedShape.maShapeProperties;
mpLinePropertiesPtr = LinePropertiesPtr( new LineProperties( *rReferencedShape.mpLinePropertiesPtr.get() ) );
mpFillPropertiesPtr = FillPropertiesPtr( new FillProperties( *rReferencedShape.mpFillPropertiesPtr.get() ) );
mpCustomShapePropertiesPtr = CustomShapePropertiesPtr( new CustomShapeProperties( *rReferencedShape.mpCustomShapePropertiesPtr.get() ) );
mpTablePropertiesPtr = table::TablePropertiesPtr( rReferencedShape.mpTablePropertiesPtr.get() ? new table::TableProperties( *rReferencedShape.mpTablePropertiesPtr.get() ) : NULL );
mpEffectPropertiesPtr = EffectPropertiesPtr( new EffectProperties( *rReferencedShape.mpEffectPropertiesPtr.get() ) );
2008-01-17 07:06:10 +00:00
mpMasterTextListStyle = TextListStylePtr( new TextListStyle( *rReferencedShape.mpMasterTextListStyle.get() ) );
maShapeStyleRefs = rReferencedShape.maShapeStyleRefs;
2008-01-17 07:06:10 +00:00
maSize = rReferencedShape.maSize;
maPosition = rReferencedShape.maPosition;
mnRotation = rReferencedShape.mnRotation;
mbFlipH = rReferencedShape.mbFlipH;
mbFlipV = rReferencedShape.mbFlipV;
mbHidden = rReferencedShape.mbHidden;
2008-01-17 07:06:10 +00:00
}
void Shape::addChildren( ::oox::core::XmlFilterBase& rFilterBase,
const Theme* pTheme,
const Reference< XShapes >& rxShapes,
basegfx::B2DHomMatrix& aTransformation,
const awt::Rectangle* pShapeRect,
ShapeIdMap* pShapeMap )
{
addChildren(rFilterBase, *this, pTheme, rxShapes,
pShapeRect ?
*pShapeRect :
awt::Rectangle( maPosition.X, maPosition.Y, maSize.Width, maSize.Height ),
pShapeMap, aTransformation);
}
struct ActionLockGuard
{
explicit ActionLockGuard(Reference<drawing::XShape> const& xShape)
: m_xLockable(xShape, UNO_QUERY)
{
if (m_xLockable.is()) {
m_xLockable->addActionLock();
}
}
~ActionLockGuard()
{
if (m_xLockable.is()) {
m_xLockable->removeActionLock();
}
}
private:
Reference<document::XActionLockable> m_xLockable;
};
2008-01-17 07:06:10 +00:00
// for group shapes, the following method is also adding each child
void Shape::addChildren(
XmlFilterBase& rFilterBase,
Shape& rMaster,
const Theme* pTheme,
const Reference< XShapes >& rxShapes,
const awt::Rectangle&,
ShapeIdMap* pShapeMap,
basegfx::B2DHomMatrix& aTransformation )
2008-01-17 07:06:10 +00:00
{
basegfx::B2DHomMatrix aChildTransformation;
aChildTransformation.translate(-maChPosition.X, -maChPosition.Y);
aChildTransformation.scale(1/(maChSize.Width ? maChSize.Width : 1.0), 1/(maChSize.Height ? maChSize.Height : 1.0));
// Child position and size is typically non-zero, but it's allowed to have
// it like that, and in that case Word ignores the parent transformation
// (excluding translate component).
if (!mbWps || maChPosition.X || maChPosition.Y || maChSize.Width || maChSize.Height)
{
aChildTransformation *= aTransformation;
}
else
{
basegfx::B2DVector aScale, aTranslate;
double fRotate, fShearX;
aTransformation.decompose(aScale, aTranslate, fRotate, fShearX);
aChildTransformation.translate(aTranslate.getX(), aTranslate.getY());
}
SAL_INFO("oox.drawingml", OSL_THIS_FUNC << "parent matrix:\n"
<< aChildTransformation.get(0, 0) << " "
<< aChildTransformation.get(0, 1) << " "
<< aChildTransformation.get(0, 2) << "\n"
<< aChildTransformation.get(1, 0) << " "
<< aChildTransformation.get(1, 1) << " "
<< aChildTransformation.get(1, 2) << "\n"
<< aChildTransformation.get(2, 0) << " "
<< aChildTransformation.get(2, 1) << " "
<< aChildTransformation.get(2, 2));
std::vector< ShapePtr >::iterator aIter( rMaster.maChildren.begin() );
while( aIter != rMaster.maChildren.end() ) {
(*aIter)->setMasterTextListStyle( mpMasterTextListStyle );
(*aIter++)->addShape( rFilterBase, pTheme, rxShapes, aChildTransformation, getFillProperties(), NULL, pShapeMap );
}
2008-01-17 07:06:10 +00:00
}
Reference< XShape > Shape::createAndInsert(
::oox::core::XmlFilterBase& rFilterBase,
const OUString& rServiceName,
const Theme* pTheme,
const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& rxShapes,
2011-05-09 13:47:45 -05:00
const awt::Rectangle* /* pShapeRect */,
sal_Bool bClearText,
sal_Bool bDoNotInsertEmptyTextBody,
basegfx::B2DHomMatrix& aParentTransformation,
FillProperties& rShapeOrParentShapeFillProps )
2008-01-17 07:06:10 +00:00
{
bool bIsEmbMedia = false;
SAL_INFO("oox.drawingml", OSL_THIS_FUNC << " id: " << msId);
awt::Rectangle aShapeRectHmm( maPosition.X / 360, maPosition.Y / 360, maSize.Width / 360, maSize.Height / 360 );
CWS-TOOLING: integrate CWS dr68 2009-06-19 17:43:48 +0200 oc r273175 : #i102946# some lines for new dialog added 2009-06-19 14:17:45 +0200 oc r273158 : #i102946# three lines added 2009-05-19 11:56:14 +0200 dr r272065 : #i99677# wrong attribute name 2009-05-18 18:37:05 +0200 dr r272045 : #i10000# suncc warning 2009-05-05 16:46:13 +0200 dr r271536 : #i10000# adoptions after rebase to master containing dr67 2009-05-05 16:01:19 +0200 dr r271530 : #i10000# adoptions after rebase to master containing dr67 2009-05-04 14:20:39 +0200 dr r271453 : CWS-TOOLING: rebase CWS dr68 to trunk@271427 (milestone: DEV300:m47) 2009-04-28 17:01:14 +0200 dr r271332 : CWS-TOOLING: rebase CWS dr68 to trunk@270723 (milestone: DEV300:m46) 2009-04-23 12:21:40 +0200 dr r271149 : #i100688# missing checkins 2009-04-23 12:18:16 +0200 dr r271147 : #i100978# relations path handling 2009-04-22 19:25:45 +0200 nn r271136 : #i49491# show navigator for double click on document position status bar control 2009-04-22 11:28:36 +0200 nn r271085 : #i60401# small text change 2009-04-21 16:53:23 +0200 dr r271044 : #i10000# missing dtor 2009-04-20 13:39:25 +0200 nn r270977 : #i60401# add dialog to extend sort range (patch from maoyg) 2009-04-08 12:11:08 +0200 dr r270630 : #i100943# prevent assertion when loading chart with empty category ranges 2009-04-07 19:03:00 +0200 dr r270609 : #i100688# missing bits for OLE 2009-04-07 17:14:06 +0200 dr r270605 : ported fix for #i100710# 2009-04-07 17:12:50 +0200 dr r270604 : #i10000# wae 2009-04-07 15:31:55 +0200 dr r270598 : import system colors moved to FilterBase class, more rework on fill and color contexts 2009-04-06 15:00:03 +0200 dr r270552 : #i99677# prevent recursive loading of the current document 2009-04-03 18:28:42 +0200 dr r270515 : added import of brightness/contrast and mono/grayscale color effects for image shapes 2009-04-03 17:36:03 +0200 dr r270509 : cache already imported embedded graphics 2009-04-03 16:46:34 +0200 dr r270500 : more rework on bitmap fill and graphic object handling 2009-03-31 12:28:10 +0200 dr r270271 : #i10000# unxlngi6 wae 2009-03-31 09:04:10 +0200 dr r270261 : CWS-TOOLING: rebase CWS dr68 to trunk@270033 (milestone: DEV300:m45) 2009-03-30 17:42:05 +0200 dr r270249 : #i91122# add missing doc 2009-03-30 17:37:08 +0200 dr r270248 : #i91122# add missing doc 2009-03-30 16:59:15 +0200 dr r270241 : #i99677# add import of ActiveX scrollbar controls 2009-03-30 14:30:36 +0200 dr r270230 : #i91122# missing/wrong documentation 2009-03-30 13:03:38 +0200 dr r270220 : #i99677# add import of ActiveX combobox and spinbutton controls 2009-03-27 11:46:59 +0100 dr r270144 : #i99677# import ActiveX listbox controls (Forms.ListBox.1) 2009-03-26 19:58:00 +0100 dr r270104 : #i99677# move more OLE import code into ole submodule 2009-03-26 15:15:02 +0100 dr r270082 : #i100546# add import of chart bitmap fills, add import of X/Y offset in tiled bitmap fills of all shapes 2009-03-25 12:54:59 +0100 dr r270018 : #i99677# import ActiveX edit text control (Forms.TextBox.1) 2009-03-24 10:59:29 +0100 dr r269921 : #i99677# moved import of OLE StdHlink to 'ole' submodule, added string import helpers to BinaryStreamBase class, removed implementation of ST_XString import from docprop in favour of the implementation in class AttributeList 2009-03-24 10:40:18 +0100 dr r269919 : #i100502# implicit precedence of '&&' was intended 2009-03-24 10:18:29 +0100 dr r269917 : #i100502# missing parentheses 2009-03-23 15:17:48 +0100 dr r269876 : #i99677# more code reorg, added graphic helper and OLE helper object per filter, added OLE/control import to PPTX/XLSX filter, moved helpers from XmlFilterBase to FilterBase 2009-03-19 12:45:20 +0100 dr r269740 : #i99677# interface changes in oox 2009-03-18 15:51:50 +0100 dr r269683 : #i99677# improved relation handling (internal/external), added preprocessor for VML streams to eat MS specific instructions, added OCX ToggleButton/OptionButton import, added DIB import for BIFF (page background picture, lots of other minor improvements 2009-03-16 15:25:30 +0100 dr r269551 : #i99677# import excel form control client data (printable, cell link) 2009-03-13 18:37:17 +0100 dr r269494 : #i99677# import image controls and check boxes 2009-03-12 15:08:18 +0100 dr r269420 : #i10000# rebase problems 2009-03-12 14:43:09 +0100 dr r269418 : #i10000# rebase problems 2009-03-12 14:42:41 +0100 dr r269417 : #i10000# missing delivered header 2009-03-12 13:57:06 +0100 dr r269405 : #i10000# typos 2009-03-12 12:58:52 +0100 dr r269391 : CWS-TOOLING: rebase CWS dr68 to trunk@269297 (milestone: DEV300:m43) 2009-03-12 11:11:46 +0100 dr r269374 : #i99677# first step to import BIFF8 page background 2009-03-12 10:21:53 +0100 dr r269364 : #i99677# rework of graphic import in entire filter, added import of AX Label controls 2009-03-09 16:44:50 +0100 dr r269202 : #i99677# import some formatting attributes of command buttons 2009-03-05 15:31:46 +0100 dr r268911 : #i99677# use VML shape client data to import excel VML shape positions 2009-03-05 11:39:48 +0100 dr r268888 : #i99677# create UNO control shapes from VML control shapes 2009-03-05 11:38:59 +0100 dr r268886 : #i99677# change attribute Shapes to DrawPage for import of embedded form controls 2009-03-05 11:30:40 +0100 dr r268885 : #i99677# change attribute Shapes to DrawPage for import of embedded form controls 2009-03-04 18:46:05 +0100 dr r268860 : adapt namespace ids according to oox 2009-03-04 18:43:49 +0100 dr r268859 : #i99677# more VML import rework 2009-03-03 13:38:36 +0100 dr r268721 : #i99677# more cleanup for VML filter 2009-03-03 13:13:15 +0100 dr r268719 : #i99807# do not iterate beyond end of std::list 2009-03-02 11:55:49 +0100 dr r268644 : add ST_XString support (encoded characters in attribute values) 2009-02-26 17:07:18 +0100 dr r268542 : #i99677# first steps of ax control import: dummy AX base classes, reimplement VML import (hopefully without breaking anything), register embedded AX controls at VML drawing 2009-02-23 17:43:50 +0100 dr r268365 : #i99426# remaining work on scenario import 2009-02-19 16:56:25 +0100 dr r268295 : #i99426# base implementations for scenarios import
2009-07-15 14:57:49 +00:00
OUString aServiceName;
if( rServiceName == "com.sun.star.drawing.GraphicObjectShape" &&
mpGraphicPropertiesPtr && !mpGraphicPropertiesPtr->maAudio.msEmbed.isEmpty() )
{
aServiceName = finalizeServiceName( rFilterBase, "com.sun.star.presentation.MediaShape", aShapeRectHmm );
bIsEmbMedia = true;
}
else
{
aServiceName = finalizeServiceName( rFilterBase, rServiceName, aShapeRectHmm );
}
sal_Bool bIsCustomShape = ( aServiceName == "com.sun.star.drawing.CustomShape" ||
aServiceName == "com.sun.star.drawing.ConnectorShape" );
basegfx::B2DHomMatrix aTransformation;
CWS-TOOLING: integrate CWS dr68 2009-06-19 17:43:48 +0200 oc r273175 : #i102946# some lines for new dialog added 2009-06-19 14:17:45 +0200 oc r273158 : #i102946# three lines added 2009-05-19 11:56:14 +0200 dr r272065 : #i99677# wrong attribute name 2009-05-18 18:37:05 +0200 dr r272045 : #i10000# suncc warning 2009-05-05 16:46:13 +0200 dr r271536 : #i10000# adoptions after rebase to master containing dr67 2009-05-05 16:01:19 +0200 dr r271530 : #i10000# adoptions after rebase to master containing dr67 2009-05-04 14:20:39 +0200 dr r271453 : CWS-TOOLING: rebase CWS dr68 to trunk@271427 (milestone: DEV300:m47) 2009-04-28 17:01:14 +0200 dr r271332 : CWS-TOOLING: rebase CWS dr68 to trunk@270723 (milestone: DEV300:m46) 2009-04-23 12:21:40 +0200 dr r271149 : #i100688# missing checkins 2009-04-23 12:18:16 +0200 dr r271147 : #i100978# relations path handling 2009-04-22 19:25:45 +0200 nn r271136 : #i49491# show navigator for double click on document position status bar control 2009-04-22 11:28:36 +0200 nn r271085 : #i60401# small text change 2009-04-21 16:53:23 +0200 dr r271044 : #i10000# missing dtor 2009-04-20 13:39:25 +0200 nn r270977 : #i60401# add dialog to extend sort range (patch from maoyg) 2009-04-08 12:11:08 +0200 dr r270630 : #i100943# prevent assertion when loading chart with empty category ranges 2009-04-07 19:03:00 +0200 dr r270609 : #i100688# missing bits for OLE 2009-04-07 17:14:06 +0200 dr r270605 : ported fix for #i100710# 2009-04-07 17:12:50 +0200 dr r270604 : #i10000# wae 2009-04-07 15:31:55 +0200 dr r270598 : import system colors moved to FilterBase class, more rework on fill and color contexts 2009-04-06 15:00:03 +0200 dr r270552 : #i99677# prevent recursive loading of the current document 2009-04-03 18:28:42 +0200 dr r270515 : added import of brightness/contrast and mono/grayscale color effects for image shapes 2009-04-03 17:36:03 +0200 dr r270509 : cache already imported embedded graphics 2009-04-03 16:46:34 +0200 dr r270500 : more rework on bitmap fill and graphic object handling 2009-03-31 12:28:10 +0200 dr r270271 : #i10000# unxlngi6 wae 2009-03-31 09:04:10 +0200 dr r270261 : CWS-TOOLING: rebase CWS dr68 to trunk@270033 (milestone: DEV300:m45) 2009-03-30 17:42:05 +0200 dr r270249 : #i91122# add missing doc 2009-03-30 17:37:08 +0200 dr r270248 : #i91122# add missing doc 2009-03-30 16:59:15 +0200 dr r270241 : #i99677# add import of ActiveX scrollbar controls 2009-03-30 14:30:36 +0200 dr r270230 : #i91122# missing/wrong documentation 2009-03-30 13:03:38 +0200 dr r270220 : #i99677# add import of ActiveX combobox and spinbutton controls 2009-03-27 11:46:59 +0100 dr r270144 : #i99677# import ActiveX listbox controls (Forms.ListBox.1) 2009-03-26 19:58:00 +0100 dr r270104 : #i99677# move more OLE import code into ole submodule 2009-03-26 15:15:02 +0100 dr r270082 : #i100546# add import of chart bitmap fills, add import of X/Y offset in tiled bitmap fills of all shapes 2009-03-25 12:54:59 +0100 dr r270018 : #i99677# import ActiveX edit text control (Forms.TextBox.1) 2009-03-24 10:59:29 +0100 dr r269921 : #i99677# moved import of OLE StdHlink to 'ole' submodule, added string import helpers to BinaryStreamBase class, removed implementation of ST_XString import from docprop in favour of the implementation in class AttributeList 2009-03-24 10:40:18 +0100 dr r269919 : #i100502# implicit precedence of '&&' was intended 2009-03-24 10:18:29 +0100 dr r269917 : #i100502# missing parentheses 2009-03-23 15:17:48 +0100 dr r269876 : #i99677# more code reorg, added graphic helper and OLE helper object per filter, added OLE/control import to PPTX/XLSX filter, moved helpers from XmlFilterBase to FilterBase 2009-03-19 12:45:20 +0100 dr r269740 : #i99677# interface changes in oox 2009-03-18 15:51:50 +0100 dr r269683 : #i99677# improved relation handling (internal/external), added preprocessor for VML streams to eat MS specific instructions, added OCX ToggleButton/OptionButton import, added DIB import for BIFF (page background picture, lots of other minor improvements 2009-03-16 15:25:30 +0100 dr r269551 : #i99677# import excel form control client data (printable, cell link) 2009-03-13 18:37:17 +0100 dr r269494 : #i99677# import image controls and check boxes 2009-03-12 15:08:18 +0100 dr r269420 : #i10000# rebase problems 2009-03-12 14:43:09 +0100 dr r269418 : #i10000# rebase problems 2009-03-12 14:42:41 +0100 dr r269417 : #i10000# missing delivered header 2009-03-12 13:57:06 +0100 dr r269405 : #i10000# typos 2009-03-12 12:58:52 +0100 dr r269391 : CWS-TOOLING: rebase CWS dr68 to trunk@269297 (milestone: DEV300:m43) 2009-03-12 11:11:46 +0100 dr r269374 : #i99677# first step to import BIFF8 page background 2009-03-12 10:21:53 +0100 dr r269364 : #i99677# rework of graphic import in entire filter, added import of AX Label controls 2009-03-09 16:44:50 +0100 dr r269202 : #i99677# import some formatting attributes of command buttons 2009-03-05 15:31:46 +0100 dr r268911 : #i99677# use VML shape client data to import excel VML shape positions 2009-03-05 11:39:48 +0100 dr r268888 : #i99677# create UNO control shapes from VML control shapes 2009-03-05 11:38:59 +0100 dr r268886 : #i99677# change attribute Shapes to DrawPage for import of embedded form controls 2009-03-05 11:30:40 +0100 dr r268885 : #i99677# change attribute Shapes to DrawPage for import of embedded form controls 2009-03-04 18:46:05 +0100 dr r268860 : adapt namespace ids according to oox 2009-03-04 18:43:49 +0100 dr r268859 : #i99677# more VML import rework 2009-03-03 13:38:36 +0100 dr r268721 : #i99677# more cleanup for VML filter 2009-03-03 13:13:15 +0100 dr r268719 : #i99807# do not iterate beyond end of std::list 2009-03-02 11:55:49 +0100 dr r268644 : add ST_XString support (encoded characters in attribute values) 2009-02-26 17:07:18 +0100 dr r268542 : #i99677# first steps of ax control import: dummy AX base classes, reimplement VML import (hopefully without breaking anything), register embedded AX controls at VML drawing 2009-02-23 17:43:50 +0100 dr r268365 : #i99426# remaining work on scenario import 2009-02-19 16:56:25 +0100 dr r268295 : #i99426# base implementations for scenarios import
2009-07-15 14:57:49 +00:00
if( maSize.Width != 1 || maSize.Height != 1)
2008-01-17 07:06:10 +00:00
{
// take care there are no zeros used by error
aTransformation.scale(
maSize.Width ? maSize.Width : 1.0,
maSize.Height ? maSize.Height : 1.0 );
2008-01-17 07:06:10 +00:00
}
if( mbFlipH || mbFlipV || mnRotation != 0)
{
// calculate object's center
basegfx::B2DPoint aCenter(0.5, 0.5);
aCenter *= aTransformation;
// center object at origin
aTransformation.translate( -aCenter.getX(), -aCenter.getY() );
if( !bIsCustomShape && ( mbFlipH || mbFlipV ) )
2008-01-17 07:06:10 +00:00
{
// mirror around object's center
aTransformation.scale( mbFlipH ? -1.0 : 1.0, mbFlipV ? -1.0 : 1.0 );
}
if( mnRotation != 0 )
{
// rotate around object's center
aTransformation.rotate( F_PI180 * ( (double)mnRotation / 60000.0 ) );
2008-01-17 07:06:10 +00:00
}
// move object back from center
aTransformation.translate( aCenter.getX(), aCenter.getY() );
}
if( maPosition.X != 0 || maPosition.Y != 0)
2008-01-17 07:06:10 +00:00
{
// if global position is used, add it to transformation
aTransformation.translate( maPosition.X, maPosition.Y );
2008-01-17 07:06:10 +00:00
}
aTransformation = aParentTransformation*aTransformation;
aParentTransformation = aTransformation;
aTransformation.scale(1/360.0, 1/360.0);
2008-01-17 07:06:10 +00:00
// special for lineshape
if ( aServiceName == "com.sun.star.drawing.LineShape" )
2008-01-17 07:06:10 +00:00
{
::basegfx::B2DPolygon aPoly;
aPoly.insert( 0, ::basegfx::B2DPoint( 0, 0 ) );
aPoly.insert( 1, ::basegfx::B2DPoint( maSize.Width ? 1 : 0, maSize.Height ? 1 : 0 ) );
aPoly.transform( aTransformation );
// now creating the corresponding PolyPolygon
sal_Int32 i, nNumPoints = aPoly.count();
uno::Sequence< awt::Point > aPointSequence( nNumPoints );
awt::Point* pPoints = aPointSequence.getArray();
for( i = 0; i < nNumPoints; ++i )
{
const ::basegfx::B2DPoint aPoint( aPoly.getB2DPoint( i ) );
pPoints[ i ] = awt::Point( static_cast< sal_Int32 >( aPoint.getX() ), static_cast< sal_Int32 >( aPoint.getY() ) );
}
uno::Sequence< uno::Sequence< awt::Point > > aPolyPolySequence( 1 );
aPolyPolySequence.getArray()[ 0 ] = aPointSequence;
maShapeProperties.setProperty(PROP_PolyPolygon, aPolyPolySequence);
2008-01-17 07:06:10 +00:00
}
else if ( aServiceName == "com.sun.star.drawing.ConnectorShape" )
2008-01-17 07:06:10 +00:00
{
::basegfx::B2DPolygon aPoly;
aPoly.insert( 0, ::basegfx::B2DPoint( 0, 0 ) );
aPoly.insert( 1, ::basegfx::B2DPoint( maSize.Width ? 1 : 0, maSize.Height ? 1 : 0 ) );
aPoly.transform( aTransformation );
basegfx::B2DPoint aStartPosition( aPoly.getB2DPoint( 0 ) );
basegfx::B2DPoint aEndPosition( aPoly.getB2DPoint( 1 ) );
awt::Point aAWTStartPosition( static_cast< sal_Int32 >( aStartPosition.getX() ), static_cast< sal_Int32 >( aStartPosition.getY() ) );
awt::Point aAWTEndPosition( static_cast< sal_Int32 >( aEndPosition.getX() ), static_cast< sal_Int32 >( aEndPosition.getY() ) );
maShapeProperties.setProperty(PROP_StartPosition, aAWTStartPosition);
maShapeProperties.setProperty(PROP_EndPosition, aAWTEndPosition);
2008-01-17 07:06:10 +00:00
}
else
{
// now set transformation for this object
HomogenMatrix3 aMatrix;
2008-01-17 07:06:10 +00:00
aMatrix.Line1.Column1 = aTransformation.get(0,0);
aMatrix.Line1.Column2 = aTransformation.get(0,1);
aMatrix.Line1.Column3 = aTransformation.get(0,2);
aMatrix.Line2.Column1 = aTransformation.get(1,0);
aMatrix.Line2.Column2 = aTransformation.get(1,1);
aMatrix.Line2.Column3 = aTransformation.get(1,2);
aMatrix.Line3.Column1 = aTransformation.get(2,0);
aMatrix.Line3.Column2 = aTransformation.get(2,1);
aMatrix.Line3.Column3 = aTransformation.get(2,2);
maShapeProperties.setProperty(PROP_Transformation, aMatrix);
2008-01-17 07:06:10 +00:00
}
Reference< lang::XMultiServiceFactory > xServiceFact( rFilterBase.getModel(), UNO_QUERY_THROW );
if ( !mxShape.is() )
CWS-TOOLING: integrate CWS dr68 2009-06-19 17:43:48 +0200 oc r273175 : #i102946# some lines for new dialog added 2009-06-19 14:17:45 +0200 oc r273158 : #i102946# three lines added 2009-05-19 11:56:14 +0200 dr r272065 : #i99677# wrong attribute name 2009-05-18 18:37:05 +0200 dr r272045 : #i10000# suncc warning 2009-05-05 16:46:13 +0200 dr r271536 : #i10000# adoptions after rebase to master containing dr67 2009-05-05 16:01:19 +0200 dr r271530 : #i10000# adoptions after rebase to master containing dr67 2009-05-04 14:20:39 +0200 dr r271453 : CWS-TOOLING: rebase CWS dr68 to trunk@271427 (milestone: DEV300:m47) 2009-04-28 17:01:14 +0200 dr r271332 : CWS-TOOLING: rebase CWS dr68 to trunk@270723 (milestone: DEV300:m46) 2009-04-23 12:21:40 +0200 dr r271149 : #i100688# missing checkins 2009-04-23 12:18:16 +0200 dr r271147 : #i100978# relations path handling 2009-04-22 19:25:45 +0200 nn r271136 : #i49491# show navigator for double click on document position status bar control 2009-04-22 11:28:36 +0200 nn r271085 : #i60401# small text change 2009-04-21 16:53:23 +0200 dr r271044 : #i10000# missing dtor 2009-04-20 13:39:25 +0200 nn r270977 : #i60401# add dialog to extend sort range (patch from maoyg) 2009-04-08 12:11:08 +0200 dr r270630 : #i100943# prevent assertion when loading chart with empty category ranges 2009-04-07 19:03:00 +0200 dr r270609 : #i100688# missing bits for OLE 2009-04-07 17:14:06 +0200 dr r270605 : ported fix for #i100710# 2009-04-07 17:12:50 +0200 dr r270604 : #i10000# wae 2009-04-07 15:31:55 +0200 dr r270598 : import system colors moved to FilterBase class, more rework on fill and color contexts 2009-04-06 15:00:03 +0200 dr r270552 : #i99677# prevent recursive loading of the current document 2009-04-03 18:28:42 +0200 dr r270515 : added import of brightness/contrast and mono/grayscale color effects for image shapes 2009-04-03 17:36:03 +0200 dr r270509 : cache already imported embedded graphics 2009-04-03 16:46:34 +0200 dr r270500 : more rework on bitmap fill and graphic object handling 2009-03-31 12:28:10 +0200 dr r270271 : #i10000# unxlngi6 wae 2009-03-31 09:04:10 +0200 dr r270261 : CWS-TOOLING: rebase CWS dr68 to trunk@270033 (milestone: DEV300:m45) 2009-03-30 17:42:05 +0200 dr r270249 : #i91122# add missing doc 2009-03-30 17:37:08 +0200 dr r270248 : #i91122# add missing doc 2009-03-30 16:59:15 +0200 dr r270241 : #i99677# add import of ActiveX scrollbar controls 2009-03-30 14:30:36 +0200 dr r270230 : #i91122# missing/wrong documentation 2009-03-30 13:03:38 +0200 dr r270220 : #i99677# add import of ActiveX combobox and spinbutton controls 2009-03-27 11:46:59 +0100 dr r270144 : #i99677# import ActiveX listbox controls (Forms.ListBox.1) 2009-03-26 19:58:00 +0100 dr r270104 : #i99677# move more OLE import code into ole submodule 2009-03-26 15:15:02 +0100 dr r270082 : #i100546# add import of chart bitmap fills, add import of X/Y offset in tiled bitmap fills of all shapes 2009-03-25 12:54:59 +0100 dr r270018 : #i99677# import ActiveX edit text control (Forms.TextBox.1) 2009-03-24 10:59:29 +0100 dr r269921 : #i99677# moved import of OLE StdHlink to 'ole' submodule, added string import helpers to BinaryStreamBase class, removed implementation of ST_XString import from docprop in favour of the implementation in class AttributeList 2009-03-24 10:40:18 +0100 dr r269919 : #i100502# implicit precedence of '&&' was intended 2009-03-24 10:18:29 +0100 dr r269917 : #i100502# missing parentheses 2009-03-23 15:17:48 +0100 dr r269876 : #i99677# more code reorg, added graphic helper and OLE helper object per filter, added OLE/control import to PPTX/XLSX filter, moved helpers from XmlFilterBase to FilterBase 2009-03-19 12:45:20 +0100 dr r269740 : #i99677# interface changes in oox 2009-03-18 15:51:50 +0100 dr r269683 : #i99677# improved relation handling (internal/external), added preprocessor for VML streams to eat MS specific instructions, added OCX ToggleButton/OptionButton import, added DIB import for BIFF (page background picture, lots of other minor improvements 2009-03-16 15:25:30 +0100 dr r269551 : #i99677# import excel form control client data (printable, cell link) 2009-03-13 18:37:17 +0100 dr r269494 : #i99677# import image controls and check boxes 2009-03-12 15:08:18 +0100 dr r269420 : #i10000# rebase problems 2009-03-12 14:43:09 +0100 dr r269418 : #i10000# rebase problems 2009-03-12 14:42:41 +0100 dr r269417 : #i10000# missing delivered header 2009-03-12 13:57:06 +0100 dr r269405 : #i10000# typos 2009-03-12 12:58:52 +0100 dr r269391 : CWS-TOOLING: rebase CWS dr68 to trunk@269297 (milestone: DEV300:m43) 2009-03-12 11:11:46 +0100 dr r269374 : #i99677# first step to import BIFF8 page background 2009-03-12 10:21:53 +0100 dr r269364 : #i99677# rework of graphic import in entire filter, added import of AX Label controls 2009-03-09 16:44:50 +0100 dr r269202 : #i99677# import some formatting attributes of command buttons 2009-03-05 15:31:46 +0100 dr r268911 : #i99677# use VML shape client data to import excel VML shape positions 2009-03-05 11:39:48 +0100 dr r268888 : #i99677# create UNO control shapes from VML control shapes 2009-03-05 11:38:59 +0100 dr r268886 : #i99677# change attribute Shapes to DrawPage for import of embedded form controls 2009-03-05 11:30:40 +0100 dr r268885 : #i99677# change attribute Shapes to DrawPage for import of embedded form controls 2009-03-04 18:46:05 +0100 dr r268860 : adapt namespace ids according to oox 2009-03-04 18:43:49 +0100 dr r268859 : #i99677# more VML import rework 2009-03-03 13:38:36 +0100 dr r268721 : #i99677# more cleanup for VML filter 2009-03-03 13:13:15 +0100 dr r268719 : #i99807# do not iterate beyond end of std::list 2009-03-02 11:55:49 +0100 dr r268644 : add ST_XString support (encoded characters in attribute values) 2009-02-26 17:07:18 +0100 dr r268542 : #i99677# first steps of ax control import: dummy AX base classes, reimplement VML import (hopefully without breaking anything), register embedded AX controls at VML drawing 2009-02-23 17:43:50 +0100 dr r268365 : #i99426# remaining work on scenario import 2009-02-19 16:56:25 +0100 dr r268295 : #i99426# base implementations for scenarios import
2009-07-15 14:57:49 +00:00
mxShape = Reference< drawing::XShape >( xServiceFact->createInstance( aServiceName ), UNO_QUERY_THROW );
Reference< XPropertySet > xSet( mxShape, UNO_QUERY );
if( mxShape.is() && xSet.is() )
2008-01-17 07:06:10 +00:00
{
if( !msName.isEmpty() )
2008-01-17 07:06:10 +00:00
{
Reference< container::XNamed > xNamed( mxShape, UNO_QUERY );
2008-01-17 07:06:10 +00:00
if( xNamed.is() )
xNamed->setName( msName );
}
if (aServiceName != "com.sun.star.text.TextFrame")
rxShapes->add( mxShape );
2008-01-17 07:06:10 +00:00
if ( mbHidden || mbHiddenMasterShape )
{
SAL_INFO("oox.drawingml", OSL_THIS_FUNC << "invisible shape with id: " << msId);
const OUString sVisible( "Visible" );
xSet->setPropertyValue( sVisible, Any( sal_False ) );
}
ActionLockGuard const alg(mxShape);
CWS-TOOLING: integrate CWS impress172 2009-07-30 15:29:39 +0200 cl r274492 : #i102921# remove reference to inssrc.obj which was moved to svx 2009-07-29 11:40:35 +0200 wg r274445 : i103869 2009-07-22 14:39:13 +0200 sj r274241 : #i102713# fixed cloud shape 2009-07-07 15:28:04 +0200 sj r273800 : fixed build problem 2009-07-07 13:27:13 +0200 cl r273792 : #i102921# moved insert col/rows dialog to svx 2009-07-07 10:36:05 +0200 cl r273782 : fixed compiler warnings 2009-07-02 10:40:21 +0200 sj r273626 : fixed build problem 2009-07-02 10:27:56 +0200 cl r273624 : fixed merge problem 2009-07-02 10:27:19 +0200 cl r273623 : fixed compiler warning 2009-07-01 10:04:58 +0200 cl r273550 : CWS-TOOLING: rebase CWS impress172 to trunk@273468 (milestone: DEV300:m51) 2009-06-30 16:22:02 +0200 cl r273518 : #i102921# added insert table row/col dialog for impress tables 2009-06-30 16:20:46 +0200 cl r273517 : #i102921# added insert table row/col dialog for impress tables 2009-06-30 16:20:28 +0200 cl r273516 : #i102921# added insert table row/col dialog for impress tables 2009-06-30 16:19:49 +0200 cl r273515 : #i102921# added insert table row/col dialog for impress tables 2009-06-30 16:19:28 +0200 cl r273514 : #i102921# added insert table row/col dialog for impress tables 2009-06-30 16:17:38 +0200 cl r273513 : #i102921# added insert table row/col dialog for impress tables 2009-06-30 15:45:44 +0200 cl r273511 : #i102921# added insert table row/col dialog for impress tables 2009-06-30 15:37:16 +0200 cl r273510 : #i102921# added insert table row/col dialog for impress tables 2009-06-30 15:33:47 +0200 cl r273509 : #i102921# added insert table row/col dialog for impress tables 2009-06-30 15:32:10 +0200 cl r273508 : #i102921# added insert table row/col dialog for impress tables 2009-06-30 15:30:05 +0200 cl r273507 : #i102921# added insert table row/col dialog for impress tables 2009-06-29 12:32:42 +0200 sj r273465 : #158632# fixed textrange hyperlinks to specific pages, added slide names 2009-06-24 15:17:59 +0200 sj r273349 : #158636# fixed text range hyperlink to first/last slide 2009-06-22 13:18:30 +0200 sj r273224 : #158651# fixed header footer import 2009-06-19 15:18:24 +0200 sj r273160 : #158614# default text of presentation objects now cleared 2009-06-16 15:54:19 +0200 sj r273023 : #i101545# fixed crash - bracketing of graphic links has been done twice leading to a broken graphic state stack 2009-06-15 16:26:26 +0200 sj r272998 : #158635# importing bookmark interactions: firstslide, lastslide, nextslide, previousslide 2009-06-15 16:25:26 +0200 sj r272997 : #158635# added bookmark interactions: firstslide, lastslide, nextslide, previousslide 2009-06-12 13:17:32 +0200 sj r272915 : #i102713# fixed cloud shape 2009-06-10 18:36:58 +0200 sj r272833 : #158674# fixed curvedleftarrow, curvedrightarrow, curveddownarrow, curveduparrow 2009-06-08 19:52:28 +0200 sj r272746 : #158674# fixed curvedleftarrow, curvedrightarrow, curveddownarrow, curveduparrow 2009-06-04 15:28:32 +0200 cl r272640 : #i102358# applied patch to remove warnings 2009-06-04 14:39:45 +0200 cl r272630 : #i99423# applied path to change impress wizard create button to open when opening exisitng documents 2009-06-03 18:21:26 +0200 sj r272601 : #158635# now using the correct paragraph bottom spacing. using font independent linespacing for impress text objects 2009-06-03 15:47:27 +0200 cl r272583 : #i101817# added color collection based on scribus 2009-06-03 14:43:59 +0200 cl r272580 : #i102163# use weak ref to SdrObject instead of listening to the model 2009-06-03 12:39:29 +0200 cl r272556 : #i93308# correct namespace for com.sun.star.text.textfields 2009-06-03 12:27:00 +0200 cl r272555 : #i93308# correct namespace for com.sun.star.text.textfields 2009-06-03 11:33:44 +0200 cl r272553 : #i23221# allow all settings (that make sense) for presentation styles 2009-06-03 11:30:59 +0200 cl r272552 : #i23221# allow all settings (that make sense) for presentation styles 2009-06-03 11:30:22 +0200 cl r272551 : #i23221# allow all settings (that make sense) for presentation styles 2009-06-02 18:41:07 +0200 sj r272527 : #i28358# applied patch (better conversion of dotted lines) 2009-06-02 11:52:13 +0200 cl r272491 : #i98668# applied patch to fix possible endless loop if exception occours 2009-05-28 17:02:55 +0200 sj r272416 : #i102336# retaining graphic file names unchanged 2009-05-28 17:00:25 +0200 sj r272415 : #i102336# retaining graphic file names unchanged 2009-05-28 17:00:10 +0200 sj r272414 : #i102336# retaining graphic file names unchanged 2009-05-25 12:43:58 +0200 sj r272232 : #i102069# added patch from thb (fixed rotated group objects)
2009-08-05 17:01:07 +00:00
// sj: removing default text of placeholder objects such as SlideNumberShape or HeaderShape
if ( bClearText )
{
uno::Reference< text::XText > xText( mxShape, uno::UNO_QUERY );
if ( xText.is() )
{
OUString aEmpty;
xText->setString( aEmpty );
}
}
const GraphicHelper& rGraphicHelper = rFilterBase.getGraphicHelper();
LineProperties aLineProperties;
2008-09-30 13:51:36 +00:00
aLineProperties.maLineFill.moFillType = XML_noFill;
sal_Int32 nLinePhClr = -1;
FillProperties aFillProperties;
2008-09-30 13:51:36 +00:00
aFillProperties.moFillType = XML_noFill;
sal_Int32 nFillPhClr = -1;
EffectProperties aEffectProperties;
// TODO: use ph color when applying effect properties
//sal_Int32 nEffectPhClr = -1;
if( pTheme )
{
if( const ShapeStyleRef* pLineRef = getShapeStyleRef( XML_lnRef ) )
{
if( const LineProperties* pLineProps = pTheme->getLineStyle( pLineRef->mnThemedIdx ) )
aLineProperties.assignUsed( *pLineProps );
nLinePhClr = pLineRef->maPhClr.getColor( rGraphicHelper );
// Store style-related properties to InteropGrabBag to be able to export them back
Sequence< PropertyValue > aProperties( 7 );
PUT_PROP( aProperties, 0, "SchemeClr", pLineRef->maPhClr.getSchemeName() );
PUT_PROP( aProperties, 1, "Idx", pLineRef->mnThemedIdx );
PUT_PROP( aProperties, 2, "Color", nLinePhClr );
PUT_PROP( aProperties, 3, "LineStyle", aLineProperties.getLineStyle() );
PUT_PROP( aProperties, 4, "LineJoint", aLineProperties.getLineJoint() );
PUT_PROP( aProperties, 5, "LineWidth", aLineProperties.getLineWidth() );
PUT_PROP( aProperties, 6, "Transformations", pLineRef->maPhClr.getTransformations() );
putPropertyToGrabBag( "StyleLnRef", Any( aProperties ) );
}
if( const ShapeStyleRef* pFillRef = getShapeStyleRef( XML_fillRef ) )
{
if( const FillProperties* pFillProps = pTheme->getFillStyle( pFillRef->mnThemedIdx ) )
aFillProperties.assignUsed( *pFillProps );
nFillPhClr = pFillRef->maPhClr.getColor( rGraphicHelper );
ooxml: Preserve shape style attribute fillRef Shape style attributes contain the default format for the shape in case that no direct format is specified for it. This is an example of the attribute we want to preserve with this patch: <wps:style> ... <a:fillRef idx="1"> <a:schemeClr val="accent1"/> </a:fillRef> ... </wps:style> The relevant values in these tags are stored at the maShapeStyleRefs member in the Shape object. The storage happens at ShapeStyleContext::onCreateContext which is run when the <a:fillRef> tag is opened. The ShapeStyleRef object contains the idx value and a Color object which will contain the inner tag <a:schemeClr>. The Color object has been modified to store the string value of schemeClr. The storage happens at ColorValueContext::onStartElement which is run when the tag <a:schemeClr> is opened. Later, Shape::createAndInsert is called by the ShapeContextHandler to create the actual XShape, this happens when the tag <wps:wsp> is closed. createAndInsert puts idx and schemeClr values into the InteropGrabBag property of the XShape with the name StyleFillRef. On export time, when the shape data is written at ShapeExport::WriteCustomShape, we added a call to DrawingML::WriteShapeStyle. This method will check the existence of the InteropGrabBag property in the shape, read the StyleFillRef prop inside it and output the proper XML to the style definition. DrawingML::WriteShapeStyle also writes some mock tags into the <wps:style> because we found that they are compulsory. We will replace them with the proper data in further patches. The method putPropertyToGrabBag was added to the Shape object for convenience. The data files for some /sd/qa/ unit tests were updated to reflect the new property StyleFillRef inside the InteropGrabBag. Change-Id: I5ffa5242852461a1a709a8f169d40f0d7a2c9aa3
2014-01-14 18:43:06 +01:00
OUString sColorScheme = pFillRef->maPhClr.getSchemeName();
if( !sColorScheme.isEmpty() )
{
Sequence< PropertyValue > aProperties(4);
PUT_PROP( aProperties, 0, "SchemeClr", sColorScheme );
PUT_PROP( aProperties, 1, "Idx", pFillRef->mnThemedIdx );
PUT_PROP( aProperties, 2, "Color", nFillPhClr );
PUT_PROP( aProperties, 3, "Transformations", pFillRef->maPhClr.getTransformations() );
putPropertyToGrabBag( "StyleFillRef", Any( aProperties ) );
ooxml: Preserve shape style attribute fillRef Shape style attributes contain the default format for the shape in case that no direct format is specified for it. This is an example of the attribute we want to preserve with this patch: <wps:style> ... <a:fillRef idx="1"> <a:schemeClr val="accent1"/> </a:fillRef> ... </wps:style> The relevant values in these tags are stored at the maShapeStyleRefs member in the Shape object. The storage happens at ShapeStyleContext::onCreateContext which is run when the <a:fillRef> tag is opened. The ShapeStyleRef object contains the idx value and a Color object which will contain the inner tag <a:schemeClr>. The Color object has been modified to store the string value of schemeClr. The storage happens at ColorValueContext::onStartElement which is run when the tag <a:schemeClr> is opened. Later, Shape::createAndInsert is called by the ShapeContextHandler to create the actual XShape, this happens when the tag <wps:wsp> is closed. createAndInsert puts idx and schemeClr values into the InteropGrabBag property of the XShape with the name StyleFillRef. On export time, when the shape data is written at ShapeExport::WriteCustomShape, we added a call to DrawingML::WriteShapeStyle. This method will check the existence of the InteropGrabBag property in the shape, read the StyleFillRef prop inside it and output the proper XML to the style definition. DrawingML::WriteShapeStyle also writes some mock tags into the <wps:style> because we found that they are compulsory. We will replace them with the proper data in further patches. The method putPropertyToGrabBag was added to the Shape object for convenience. The data files for some /sd/qa/ unit tests were updated to reflect the new property StyleFillRef inside the InteropGrabBag. Change-Id: I5ffa5242852461a1a709a8f169d40f0d7a2c9aa3
2014-01-14 18:43:06 +01:00
}
}
if( const ShapeStyleRef* pEffectRef = getShapeStyleRef( XML_effectRef ) )
{
if( const EffectProperties* pEffectProps = pTheme->getEffectStyle( pEffectRef->mnThemedIdx ) )
aEffectProperties.assignUsed( *pEffectProps );
// TODO: use ph color when applying effect properties
// nEffectPhClr = pEffectRef->maPhClr.getColor( rGraphicHelper );
// Store style-related properties to InteropGrabBag to be able to export them back
Sequence< PropertyValue > aProperties( 3 );
PUT_PROP( aProperties, 0, "SchemeClr", pEffectRef->maPhClr.getSchemeName() );
PUT_PROP( aProperties, 1, "Idx", pEffectRef->mnThemedIdx );
PUT_PROP( aProperties, 2, "Transformations", pEffectRef->maPhClr.getTransformations() );
putPropertyToGrabBag( "StyleEffectRef", Any( aProperties ) );
}
}
aLineProperties.assignUsed( getLineProperties() );
// group fill inherits from parent
if ( getFillProperties().moFillType.has() && getFillProperties().moFillType.get() == XML_grpFill )
getFillProperties().assignUsed( rShapeOrParentShapeFillProps );
aFillProperties.assignUsed( getFillProperties() );
aEffectProperties.assignUsed ( getEffectProperties() );
ShapePropertyMap aShapeProps( rFilterBase.getModelObjectHelper() );
// add properties from textbody to shape properties
if( mpTextBody.get() )
{
mpTextBody->getTextProperties().pushRotationAdjustments( mnRotation );
aShapeProps.assignUsed( mpTextBody->getTextProperties().maPropertyMap );
// Push char properties as well - specifically useful when this is a placeholder
if( mpMasterTextListStyle && mpMasterTextListStyle->getListStyle()[0]->getTextCharacterProperties().moHeight.has() )
aShapeProps.setProperty(PROP_CharHeight, GetFontHeight( mpMasterTextListStyle->getListStyle()[0]->getTextCharacterProperties().moHeight.get() ));
}
2008-01-17 07:06:10 +00:00
// applying properties
aShapeProps.assignUsed( getShapeProperties() );
Merge commit 'ooo/DEV300_m106' into integration/dev300_m106 Conflicts: binfilter/bf_svtools/source/filter.vcl/jpeg/svt_jpegc.c filter/source/config/fragments/filters/SVG___Scalable_Vector_Graphics.xcu filter/source/config/fragments/internalgraphicfilters/svg_Import.xcu filter/source/config/fragments/types/svg_Scalable_Vector_Graphics.xcu filter/source/graphicfilter/eos2met/eos2met.cxx filter/source/msfilter/msvbahelper.cxx filter/source/svg/makefile.mk filter/source/svg/svgexport.cxx filter/source/svg/svgfilter.cxx filter/source/svg/svgfilter.hxx filter/source/svg/svgfontexport.cxx filter/source/svg/svgfontexport.hxx filter/source/svg/svgwriter.cxx filter/source/svg/svgwriter.hxx oox/inc/oox/core/relations.hxx oox/inc/oox/core/relationshandler.hxx oox/inc/oox/dump/biffdumper.hxx oox/inc/oox/dump/dffdumper.hxx oox/inc/oox/dump/dumperbase.hxx oox/inc/oox/dump/oledumper.hxx oox/inc/oox/dump/pptxdumper.hxx oox/inc/oox/helper/containerhelper.hxx oox/inc/oox/helper/propertyset.hxx oox/inc/oox/xls/commentsbuffer.hxx oox/inc/oox/xls/sharedformulabuffer.hxx oox/source/drawingml/shape.cxx oox/source/dump/oledumper.cxx oox/source/helper/binaryinputstream.cxx oox/source/helper/binaryoutputstream.cxx oox/source/helper/binarystreambase.cxx oox/source/helper/propertyset.cxx oox/source/ole/vbacontrol.cxx oox/source/ole/vbaproject.cxx oox/source/token/namespaces.hxx.tail oox/source/vml/vmlshape.cxx oox/source/xls/commentsbuffer.cxx oox/source/xls/condformatbuffer.cxx oox/source/xls/drawingfragment.cxx oox/source/xls/formulaparser.cxx oox/source/xls/pivotcachebuffer.cxx oox/source/xls/richstring.cxx oox/source/xls/sharedformulabuffer.cxx oox/source/xls/sheetdatacontext.cxx oox/source/xls/worksheethelper.cxx writerfilter/source/dmapper/DomainMapper_Impl.cxx
2011-04-27 01:31:35 +02:00
aShapeProps.assignUsed( maDefaultShapeProperties );
if ( bIsEmbMedia || aServiceName == "com.sun.star.drawing.GraphicObjectShape" || aServiceName == "com.sun.star.drawing.OLE2Shape" )
mpGraphicPropertiesPtr->pushToPropMap( aShapeProps, rGraphicHelper );
if ( mpTablePropertiesPtr.get() && aServiceName == "com.sun.star.drawing.TableShape" )
mpTablePropertiesPtr->pushToPropSet( rFilterBase, xSet, mpMasterTextListStyle );
aFillProperties.pushToPropMap( aShapeProps, rGraphicHelper, mnRotation, nFillPhClr, mbFlipH, mbFlipV );
aLineProperties.pushToPropMap( aShapeProps, rGraphicHelper, nLinePhClr );
// TODO: use ph color when applying effect properties
aEffectProperties.pushToPropMap( aShapeProps, rGraphicHelper );
2008-01-17 07:06:10 +00:00
// applying autogrowheight property before setting shape size, because
// the shape size might be changed if currently autogrowheight is true
// we must also check that the PropertySet supports the property.
Reference< XPropertySetInfo > xSetInfo( xSet->getPropertySetInfo() );
CWS-TOOLING: integrate CWS dr67 2009-04-08 13:23:56 +0200 dr r270638 : #i100534# reverted 2009-04-08 10:14:55 +0200 dr r270621 : CWS-TOOLING: rebase CWS dr67 to trunk@270033 (milestone: DEV300:m45) 2009-04-07 21:06:33 +0200 dr r270610 : #i100534# sc does not link in debug mode 2009-03-12 11:20:09 +0100 dr r269375 : #i10000# wae 2009-03-11 19:43:55 +0100 dr r269351 : #i10000# adjust oox namespace ids according to oox/inc/oox/core/namespaces.hxx 2009-03-11 15:38:52 +0100 dr r269339 : CWS-TOOLING: rebase CWS dr67 to trunk@269297 (milestone: DEV300:m43) 2009-02-27 15:20:21 +0100 dr r268598 : CWS-TOOLING: rebase CWS dr67 to trunk@268395 (milestone: DEV300:m42) 2009-02-19 13:32:17 +0100 dr r268277 : moved hf parser into page settings 2009-02-19 12:25:15 +0100 dr r268272 : renamed some structs according to chart filter 2009-02-16 15:51:31 +0100 dr r267823 : #i97873# import autosort settings from BIFF8/OOBIN/OOXML 2009-02-06 17:09:29 +0100 dr r267477 : #i97873# minor changes 2009-02-06 16:38:56 +0100 dr r267473 : #i97873# import date grouping settings from BIFF5/BIFF8/OOBIN/OOXML 2009-02-06 16:38:11 +0100 dr r267472 : #i97873# check min/max/step of passed GroupInfo 2009-02-06 16:35:13 +0100 dr r267471 : #i97873# more doc for createDategroup() 2009-02-06 13:53:42 +0100 dr r267459 : #i97873# make XDataPilotGrouping::createDateGroup() implementation working and robust against wrong input data 2009-02-06 13:52:16 +0100 dr r267458 : #i97873# fix and extend IDL doc for datapilot grouping 2009-02-06 12:35:49 +0100 dr r267453 : fix other IDLC warnings in sheet module 2009-02-06 12:05:19 +0100 dr r267448 : #i97873# fix and extend IDL doc for datapilot grouping 2009-02-02 17:58:46 +0100 dr r267284 : #i10000# rebase errors 2009-02-02 17:52:21 +0100 dr r267282 : #i10000# rebase errors 2009-02-02 17:35:58 +0100 dr r267280 : #i10000# rebase errors 2009-02-02 15:58:04 +0100 dr r267274 : CWS-TOOLING: rebase CWS dr67 to trunk@267171 (milestone: DEV300:m41) 2009-02-02 09:16:32 +0100 dr r267247 : #i97873# typo 2009-01-30 17:09:09 +0100 dr r267215 : #i97873# import numeric grouping settings for datapilot fields from BIFF5/BIFF8/OOBIN/OOXML 2009-01-29 16:36:24 +0100 dr r267154 : #i97873# import datapilot discrete grouping from BIFF5/BIFF8/OOBIN/OOXLS 2009-01-29 16:33:37 +0100 dr r267152 : #i97873# do not kill _all_ the other group fields when writing back DataPilotField::GroupInfo property 2009-01-29 14:15:45 +0100 dr r267133 : #i93839# remove ScChengeTrack::Load and ::Store, adapt xls export filter 2009-01-28 13:30:37 +0100 dr r267056 : #i98397# enhance DataPilot API: allow to rename groups and items in a group field 2009-01-28 12:09:05 +0100 dr r267051 : #i98397# enhance DataPilot API: allow to rename groups and items in a group field 2009-01-27 16:13:58 +0100 dr r267005 : #i97873# minor changes in DataPilot API implementation as preparation for additional changes needed for OOX import filter 2009-01-27 10:08:01 +0100 dr r266961 : #i97873# changing orientation of a DP field moves it to last position in new dimension 2009-01-27 10:06:50 +0100 dr r266960 : #i97873# changing orientation of a DP field moves it to last position in new dimension 2009-01-23 12:52:31 +0100 dr r266808 : #i97873# DP documentation extended 2009-01-21 20:07:15 +0100 dr r266702 : #i97873# this trivial patch adds BIFF5/BIFF8 pivot table import to the oox filter 2009-01-20 16:06:23 +0100 dr r266592 : select BIFF filter via env.var 2009-01-16 18:51:01 +0100 dr r266452 : #i97873# import page fields 2009-01-16 15:05:36 +0100 dr r266420 : #i97873# field item settings (collapsed/hidden), settings of hidden fields 2009-01-15 16:01:17 +0100 dr r266377 : #i97873# import OOXML7/OOBIN7 autoshow settings 2009-01-14 15:24:27 +0100 dr r266310 : #i97873# import auto show settings generated by MSO2003 2009-01-14 12:29:44 +0100 dr r266281 : #i97873# set global dp settings 2009-01-13 15:04:30 +0100 dr r266229 : #i98029# SdrGroupObj does not remember predefined bounding rectangle anymore 2009-01-13 14:46:50 +0100 dr r266225 : #i98029# SdrGroupObj does not remember predefined bounding rectangle anymore 2009-01-12 15:04:22 +0100 dr r266161 : #i97873# remove misleading hasDataLayoutField() 2009-01-12 15:03:42 +0100 dr r266160 : #i97873# remove misleading hasDataLayoutField() 2009-01-12 14:57:33 +0100 dr r266159 : #i97900# reverted previous change, adjusted code to new EnableRTL() behaviour 2009-01-12 14:52:43 +0100 dr r266158 : #i97900# reverted previous change, adjusted code to new EnableRTL() behaviour 2009-01-09 16:34:55 +0100 dr r266098 : #i97900# RTL handling in TabBar changed with CWS rtlcontrols 2009-01-09 16:32:16 +0100 dr r266097 : #i97900# RTL handling in TabBar changed with CWS rtlcontrols 2009-01-09 12:02:39 +0100 dr r266072 : #i97623# RTL handling changed after CWS rtlcontrols 2009-01-09 09:48:53 +0100 dr r266050 : #i158444# SXLI must be filled completely before starting CONTINUE 2009-01-08 18:50:08 +0100 dr r266032 : #158444# allow to disable dump of record positions 2009-01-08 15:46:45 +0100 dr r266020 : #i97873# data layout field handling 2009-01-08 15:45:45 +0100 dr r266019 : #i97873# data layout field handling 2009-01-08 15:42:25 +0100 dr r266018 : #i97873# data layout field handling 2009-01-02 17:28:32 +0100 dr r265844 : #i10000# unxmacxi warning 2009-01-02 16:59:13 +0100 dr r265842 : #i10000# rebase corrections 2009-01-02 16:44:44 +0100 dr r265838 : #i10000# rebase corrections 2009-01-02 11:32:44 +0100 dr r265834 : CWS-TOOLING: rebase CWS dr67 to trunk@265758 (milestone: DEV300:m38) 2008-12-29 16:55:40 +0100 dr r265822 : more pivot table import, field layout settings 2008-12-29 14:27:35 +0100 dr r265817 : more pivot table import, additions for data field settings 2008-12-26 14:39:21 +0100 dr r265805 : updates 2008-12-19 16:31:39 +0100 dr r265734 : typo 2008-12-19 16:30:00 +0100 dr r265733 : add API for sequence of DP field subtotal functions 2008-12-19 16:29:43 +0100 dr r265732 : add API for sequence of DP field subtotal functions 2008-12-19 16:29:07 +0100 dr r265731 : add API for sequence of DP field subtotal functions 2008-12-18 18:07:58 +0100 dr r265710 : #i96758# try to cache row default formatting and apply it at row ranges instead of single rows 2008-12-18 16:00:25 +0100 dr r265698 : more additions to pivot import 2008-12-17 13:38:19 +0100 dr r265599 : do not assert HIDDEN orientation 2008-12-12 13:51:29 +0100 dr r265415 : minor typos 2008-12-12 10:15:04 +0100 dr r265394 : pivot cache import extended to XLSB, added creation of cache data for missing/external sheets 2008-12-04 13:16:16 +0100 dr r264837 : #i96860# remove old dumper files 2008-12-04 12:17:38 +0100 dr r264834 : #i96858# XTO broken, if textbox is empty but contains formatting 2008-12-04 12:16:38 +0100 dr r264833 : #i96858# XTO broken, if textbox is empty but contains formatting 2008-12-03 14:51:05 +0100 dr r264784 : #i10000# warnings 2008-12-03 14:32:46 +0100 dr r264778 : #i10000# warning 2008-12-03 11:28:38 +0100 dr r264758 : #i96758# ignore zero-sized objects 2008-12-03 10:09:34 +0100 dr r264748 : #i96758# change ::oox::Property(Set|Map) keys to sal_Int32 property identifiers, to save construction of property names 2008-12-01 16:09:02 +0100 dr r264615 : #i96758# headerdoc 2008-12-01 14:49:04 +0100 dr r264607 : #i96758# import performance of formatted documents 2008-11-26 17:08:15 +0100 dr r264424 : make it more simple 2008-11-26 16:31:41 +0100 dr r264419 : c:crossesAt is for crossing axis, not for own axis. This is different to BIFF 2008-11-26 13:55:55 +0100 dr r264382 : #i86346# import of MissingValueTreatment from XLSX 2008-11-26 12:49:38 +0100 dr r264370 : #i86346# import/export of MissingValueTreatment from/to XLS 2008-11-25 17:48:59 +0100 dr r264320 : update row height with single progress bar when using 'IsAdjustHeightEnabled' document property 2008-11-25 17:24:26 +0100 dr r264319 : #i96438# disable importing comment text until API is fixed 2008-11-25 17:11:30 +0100 dr r264318 : #i90124# set control tooltips, patch from npower 2008-11-25 15:09:28 +0100 dr r264309 : #i94028# #i94991# update drawing objects when changing row height 2008-11-24 15:21:35 +0100 dr r264224 : prevent ::rtl::OUString::copy assertion 2008-11-24 15:19:39 +0100 dr r264223 : #i95183# #158573# handle non-ascii characters in sheet names in OOXML import 2008-11-24 12:54:30 +0100 dr r264221 : #i94157# support ESC key to leave full-screen in page preview 2008-11-21 18:15:17 +0100 dr r264165 : #i90360# disable chart perspective if it is set to 0 2008-11-21 18:14:41 +0100 dr r264164 : #i90360# disable chart perspective if it is set to 0 2008-11-21 17:43:26 +0100 dr r264155 : #i96140# missing parenth 2008-11-21 17:36:35 +0100 dr r264154 : #i96438# first steps of note import 2008-11-20 15:15:03 +0100 dr r264059 : get rid of ContextWrapper 2008-11-18 11:39:52 +0100 dr r263755 : #i78476# moved to CWS dr67
2009-04-22 10:06:26 +00:00
const OUString& rPropName = PropertyMap::getPropertyName( PROP_TextAutoGrowHeight );
if( xSetInfo.is() && xSetInfo->hasPropertyByName( rPropName ) )
if( aShapeProps.hasProperty( PROP_TextAutoGrowHeight ) )
CWS-TOOLING: integrate CWS dr67 2009-04-08 13:23:56 +0200 dr r270638 : #i100534# reverted 2009-04-08 10:14:55 +0200 dr r270621 : CWS-TOOLING: rebase CWS dr67 to trunk@270033 (milestone: DEV300:m45) 2009-04-07 21:06:33 +0200 dr r270610 : #i100534# sc does not link in debug mode 2009-03-12 11:20:09 +0100 dr r269375 : #i10000# wae 2009-03-11 19:43:55 +0100 dr r269351 : #i10000# adjust oox namespace ids according to oox/inc/oox/core/namespaces.hxx 2009-03-11 15:38:52 +0100 dr r269339 : CWS-TOOLING: rebase CWS dr67 to trunk@269297 (milestone: DEV300:m43) 2009-02-27 15:20:21 +0100 dr r268598 : CWS-TOOLING: rebase CWS dr67 to trunk@268395 (milestone: DEV300:m42) 2009-02-19 13:32:17 +0100 dr r268277 : moved hf parser into page settings 2009-02-19 12:25:15 +0100 dr r268272 : renamed some structs according to chart filter 2009-02-16 15:51:31 +0100 dr r267823 : #i97873# import autosort settings from BIFF8/OOBIN/OOXML 2009-02-06 17:09:29 +0100 dr r267477 : #i97873# minor changes 2009-02-06 16:38:56 +0100 dr r267473 : #i97873# import date grouping settings from BIFF5/BIFF8/OOBIN/OOXML 2009-02-06 16:38:11 +0100 dr r267472 : #i97873# check min/max/step of passed GroupInfo 2009-02-06 16:35:13 +0100 dr r267471 : #i97873# more doc for createDategroup() 2009-02-06 13:53:42 +0100 dr r267459 : #i97873# make XDataPilotGrouping::createDateGroup() implementation working and robust against wrong input data 2009-02-06 13:52:16 +0100 dr r267458 : #i97873# fix and extend IDL doc for datapilot grouping 2009-02-06 12:35:49 +0100 dr r267453 : fix other IDLC warnings in sheet module 2009-02-06 12:05:19 +0100 dr r267448 : #i97873# fix and extend IDL doc for datapilot grouping 2009-02-02 17:58:46 +0100 dr r267284 : #i10000# rebase errors 2009-02-02 17:52:21 +0100 dr r267282 : #i10000# rebase errors 2009-02-02 17:35:58 +0100 dr r267280 : #i10000# rebase errors 2009-02-02 15:58:04 +0100 dr r267274 : CWS-TOOLING: rebase CWS dr67 to trunk@267171 (milestone: DEV300:m41) 2009-02-02 09:16:32 +0100 dr r267247 : #i97873# typo 2009-01-30 17:09:09 +0100 dr r267215 : #i97873# import numeric grouping settings for datapilot fields from BIFF5/BIFF8/OOBIN/OOXML 2009-01-29 16:36:24 +0100 dr r267154 : #i97873# import datapilot discrete grouping from BIFF5/BIFF8/OOBIN/OOXLS 2009-01-29 16:33:37 +0100 dr r267152 : #i97873# do not kill _all_ the other group fields when writing back DataPilotField::GroupInfo property 2009-01-29 14:15:45 +0100 dr r267133 : #i93839# remove ScChengeTrack::Load and ::Store, adapt xls export filter 2009-01-28 13:30:37 +0100 dr r267056 : #i98397# enhance DataPilot API: allow to rename groups and items in a group field 2009-01-28 12:09:05 +0100 dr r267051 : #i98397# enhance DataPilot API: allow to rename groups and items in a group field 2009-01-27 16:13:58 +0100 dr r267005 : #i97873# minor changes in DataPilot API implementation as preparation for additional changes needed for OOX import filter 2009-01-27 10:08:01 +0100 dr r266961 : #i97873# changing orientation of a DP field moves it to last position in new dimension 2009-01-27 10:06:50 +0100 dr r266960 : #i97873# changing orientation of a DP field moves it to last position in new dimension 2009-01-23 12:52:31 +0100 dr r266808 : #i97873# DP documentation extended 2009-01-21 20:07:15 +0100 dr r266702 : #i97873# this trivial patch adds BIFF5/BIFF8 pivot table import to the oox filter 2009-01-20 16:06:23 +0100 dr r266592 : select BIFF filter via env.var 2009-01-16 18:51:01 +0100 dr r266452 : #i97873# import page fields 2009-01-16 15:05:36 +0100 dr r266420 : #i97873# field item settings (collapsed/hidden), settings of hidden fields 2009-01-15 16:01:17 +0100 dr r266377 : #i97873# import OOXML7/OOBIN7 autoshow settings 2009-01-14 15:24:27 +0100 dr r266310 : #i97873# import auto show settings generated by MSO2003 2009-01-14 12:29:44 +0100 dr r266281 : #i97873# set global dp settings 2009-01-13 15:04:30 +0100 dr r266229 : #i98029# SdrGroupObj does not remember predefined bounding rectangle anymore 2009-01-13 14:46:50 +0100 dr r266225 : #i98029# SdrGroupObj does not remember predefined bounding rectangle anymore 2009-01-12 15:04:22 +0100 dr r266161 : #i97873# remove misleading hasDataLayoutField() 2009-01-12 15:03:42 +0100 dr r266160 : #i97873# remove misleading hasDataLayoutField() 2009-01-12 14:57:33 +0100 dr r266159 : #i97900# reverted previous change, adjusted code to new EnableRTL() behaviour 2009-01-12 14:52:43 +0100 dr r266158 : #i97900# reverted previous change, adjusted code to new EnableRTL() behaviour 2009-01-09 16:34:55 +0100 dr r266098 : #i97900# RTL handling in TabBar changed with CWS rtlcontrols 2009-01-09 16:32:16 +0100 dr r266097 : #i97900# RTL handling in TabBar changed with CWS rtlcontrols 2009-01-09 12:02:39 +0100 dr r266072 : #i97623# RTL handling changed after CWS rtlcontrols 2009-01-09 09:48:53 +0100 dr r266050 : #i158444# SXLI must be filled completely before starting CONTINUE 2009-01-08 18:50:08 +0100 dr r266032 : #158444# allow to disable dump of record positions 2009-01-08 15:46:45 +0100 dr r266020 : #i97873# data layout field handling 2009-01-08 15:45:45 +0100 dr r266019 : #i97873# data layout field handling 2009-01-08 15:42:25 +0100 dr r266018 : #i97873# data layout field handling 2009-01-02 17:28:32 +0100 dr r265844 : #i10000# unxmacxi warning 2009-01-02 16:59:13 +0100 dr r265842 : #i10000# rebase corrections 2009-01-02 16:44:44 +0100 dr r265838 : #i10000# rebase corrections 2009-01-02 11:32:44 +0100 dr r265834 : CWS-TOOLING: rebase CWS dr67 to trunk@265758 (milestone: DEV300:m38) 2008-12-29 16:55:40 +0100 dr r265822 : more pivot table import, field layout settings 2008-12-29 14:27:35 +0100 dr r265817 : more pivot table import, additions for data field settings 2008-12-26 14:39:21 +0100 dr r265805 : updates 2008-12-19 16:31:39 +0100 dr r265734 : typo 2008-12-19 16:30:00 +0100 dr r265733 : add API for sequence of DP field subtotal functions 2008-12-19 16:29:43 +0100 dr r265732 : add API for sequence of DP field subtotal functions 2008-12-19 16:29:07 +0100 dr r265731 : add API for sequence of DP field subtotal functions 2008-12-18 18:07:58 +0100 dr r265710 : #i96758# try to cache row default formatting and apply it at row ranges instead of single rows 2008-12-18 16:00:25 +0100 dr r265698 : more additions to pivot import 2008-12-17 13:38:19 +0100 dr r265599 : do not assert HIDDEN orientation 2008-12-12 13:51:29 +0100 dr r265415 : minor typos 2008-12-12 10:15:04 +0100 dr r265394 : pivot cache import extended to XLSB, added creation of cache data for missing/external sheets 2008-12-04 13:16:16 +0100 dr r264837 : #i96860# remove old dumper files 2008-12-04 12:17:38 +0100 dr r264834 : #i96858# XTO broken, if textbox is empty but contains formatting 2008-12-04 12:16:38 +0100 dr r264833 : #i96858# XTO broken, if textbox is empty but contains formatting 2008-12-03 14:51:05 +0100 dr r264784 : #i10000# warnings 2008-12-03 14:32:46 +0100 dr r264778 : #i10000# warning 2008-12-03 11:28:38 +0100 dr r264758 : #i96758# ignore zero-sized objects 2008-12-03 10:09:34 +0100 dr r264748 : #i96758# change ::oox::Property(Set|Map) keys to sal_Int32 property identifiers, to save construction of property names 2008-12-01 16:09:02 +0100 dr r264615 : #i96758# headerdoc 2008-12-01 14:49:04 +0100 dr r264607 : #i96758# import performance of formatted documents 2008-11-26 17:08:15 +0100 dr r264424 : make it more simple 2008-11-26 16:31:41 +0100 dr r264419 : c:crossesAt is for crossing axis, not for own axis. This is different to BIFF 2008-11-26 13:55:55 +0100 dr r264382 : #i86346# import of MissingValueTreatment from XLSX 2008-11-26 12:49:38 +0100 dr r264370 : #i86346# import/export of MissingValueTreatment from/to XLS 2008-11-25 17:48:59 +0100 dr r264320 : update row height with single progress bar when using 'IsAdjustHeightEnabled' document property 2008-11-25 17:24:26 +0100 dr r264319 : #i96438# disable importing comment text until API is fixed 2008-11-25 17:11:30 +0100 dr r264318 : #i90124# set control tooltips, patch from npower 2008-11-25 15:09:28 +0100 dr r264309 : #i94028# #i94991# update drawing objects when changing row height 2008-11-24 15:21:35 +0100 dr r264224 : prevent ::rtl::OUString::copy assertion 2008-11-24 15:19:39 +0100 dr r264223 : #i95183# #158573# handle non-ascii characters in sheet names in OOXML import 2008-11-24 12:54:30 +0100 dr r264221 : #i94157# support ESC key to leave full-screen in page preview 2008-11-21 18:15:17 +0100 dr r264165 : #i90360# disable chart perspective if it is set to 0 2008-11-21 18:14:41 +0100 dr r264164 : #i90360# disable chart perspective if it is set to 0 2008-11-21 17:43:26 +0100 dr r264155 : #i96140# missing parenth 2008-11-21 17:36:35 +0100 dr r264154 : #i96438# first steps of note import 2008-11-20 15:15:03 +0100 dr r264059 : get rid of ContextWrapper 2008-11-18 11:39:52 +0100 dr r263755 : #i78476# moved to CWS dr67
2009-04-22 10:06:26 +00:00
xSet->setPropertyValue( rPropName, Any( false ) );
2008-01-17 07:06:10 +00:00
2013-09-03 11:13:22 +03:00
// do not set properties at a group shape (this causes
// assertions from svx) ...
if( aServiceName != "com.sun.star.drawing.GroupShape" )
{
if (aServiceName == "com.sun.star.text.TextFrame")
{
if (mpCustomShapePropertiesPtr && mpCustomShapePropertiesPtr->getShapeTypeOverride())
{
uno::Reference<beans::XPropertySet> propertySet (mxShape, uno::UNO_QUERY);
uno::Sequence<beans::PropertyValue> aGrabBag;
propertySet->getPropertyValue("FrameInteropGrabBag") >>= aGrabBag;
sal_Int32 length = aGrabBag.getLength();
aGrabBag.realloc( length+1);
aGrabBag[length].Name = "mso-orig-shape-type";
aGrabBag[length].Value = uno::makeAny(mpCustomShapePropertiesPtr->getShapePresetTypeName());
propertySet->setPropertyValue("FrameInteropGrabBag",uno::makeAny(aGrabBag));
}
// TextFrames have BackColor, not FillColor
if (aShapeProps.hasProperty(PROP_FillColor))
{
aShapeProps.setProperty(PROP_BackColor, aShapeProps.getProperty(PROP_FillColor));
aShapeProps.erase(PROP_FillColor);
}
// TextFrames have BackColorTransparency, not FillTransparence
if (aShapeProps.hasProperty(PROP_FillTransparence))
{
aShapeProps.setProperty(PROP_BackColorTransparency, aShapeProps.getProperty(PROP_FillTransparence));
aShapeProps.erase(PROP_FillTransparence);
}
// TextFrames have BackGrahicURL, not FillBitmapURL
if (aShapeProps.hasProperty(PROP_FillBitmapURL))
{
aShapeProps.setProperty(PROP_BackGraphicURL, aShapeProps.getProperty(PROP_FillBitmapURL));
aShapeProps.erase(PROP_FillBitmapURL);
}
// And no LineColor property; individual borders can have colors
if (aShapeProps.hasProperty(PROP_LineColor))
{
uno::Reference<beans::XPropertySet> xPropertySet(mxShape, uno::UNO_QUERY);
static const sal_Int32 aBorders[] =
{
PROP_TopBorder, PROP_LeftBorder, PROP_BottomBorder, PROP_RightBorder
};
for (unsigned int i = 0; i < SAL_N_ELEMENTS(aBorders); ++i)
{
css::table::BorderLine2 aBorderLine = xPropertySet->getPropertyValue(PropertyMap::getPropertyName(aBorders[i])).get<css::table::BorderLine2>();
aBorderLine.Color = aShapeProps.getProperty(PROP_LineColor).get<sal_Int32>();
if (aLineProperties.moLineWidth.has())
aBorderLine.LineWidth = convertEmuToHmm(aLineProperties.moLineWidth.get());
aShapeProps.setProperty(aBorders[i], uno::makeAny(aBorderLine));
}
aShapeProps.erase(PROP_LineColor);
}
if(mnRotation)
{
uno::Reference<beans::XPropertySet> xPropertySet(mxShape, uno::UNO_QUERY);
const OUString aGrabBagPropName = "FrameInteropGrabBag";
uno::Sequence<beans::PropertyValue> aGrabBag;
xPropertySet->getPropertyValue(aGrabBagPropName) >>= aGrabBag;
beans::PropertyValue aPair;
aPair.Name = "mso-rotation-angle";
aPair.Value = uno::makeAny(mnRotation);
if (aGrabBag.hasElements())
{
sal_Int32 nLength = aGrabBag.getLength();
aGrabBag.realloc(nLength + 1);
aGrabBag[nLength] = aPair;
}
else
{
aGrabBag.realloc(1);
aGrabBag[0] = aPair;
}
xPropertySet->setPropertyValue(aGrabBagPropName, uno::makeAny(aGrabBag));
}
// TextFrames have ShadowFormat, not individual shadow properties.
boost::optional<sal_Int32> oShadowDistance;
if (aShapeProps.hasProperty(PROP_ShadowXDistance))
{
oShadowDistance = aShapeProps.getProperty(PROP_ShadowXDistance).get<sal_Int32>();
aShapeProps.erase(PROP_ShadowXDistance);
}
if (aShapeProps.hasProperty(PROP_ShadowYDistance))
{
// There is a single 'dist' attribute, so no need to count the avg of x and y.
aShapeProps.erase(PROP_ShadowYDistance);
}
boost::optional<sal_Int32> oShadowColor;
if (aShapeProps.hasProperty(PROP_ShadowColor))
{
oShadowColor = aShapeProps.getProperty(PROP_ShadowColor).get<sal_Int32>();
aShapeProps.erase(PROP_ShadowColor);
}
if (aShapeProps.hasProperty(PROP_Shadow))
aShapeProps.erase(PROP_Shadow);
if (oShadowDistance || oShadowColor || aEffectProperties.maShadow.moShadowDir.has())
{
css::table::ShadowFormat aFormat;
if (oShadowColor)
aFormat.Color = *oShadowColor;
if (aEffectProperties.maShadow.moShadowDir.has())
{
css::table::ShadowLocation nLocation = css::table::ShadowLocation_NONE;
switch (aEffectProperties.maShadow.moShadowDir.get())
{
case 13500000:
nLocation = css::table::ShadowLocation_TOP_LEFT;
break;
case 18900000:
nLocation = css::table::ShadowLocation_TOP_RIGHT;
break;
case 8100000:
nLocation = css::table::ShadowLocation_BOTTOM_LEFT;
break;
case 2700000:
nLocation = css::table::ShadowLocation_BOTTOM_RIGHT;
break;
}
aFormat.Location = nLocation;
}
aFormat.ShadowWidth = *oShadowDistance;
aShapeProps.setProperty(PROP_ShadowFormat, uno::makeAny(aFormat));
}
}
PropertySet( xSet ).setProperties( aShapeProps );
if (mbLockedCanvas && aServiceName == "com.sun.star.drawing.LineShape")
{
// It seems the position and size for lines inside a locked canvas is absolute.
mxShape->setPosition(awt::Point(aShapeRectHmm.X, aShapeRectHmm.Y));
mxShape->setSize(awt::Size(aShapeRectHmm.Width, aShapeRectHmm.Height));
}
// Store original fill and line colors of the shape and the theme color name to InteropGrabBag
Sequence< PropertyValue > aProperties( 6 ); //allocate the maximum possible number of slots
sal_Int32 nSize = 2;
PUT_PROP( aProperties, 0, "OriginalSolidFillClr", aShapeProps.getProperty(PROP_FillColor) );
PUT_PROP( aProperties, 1, "OriginalLnSolidFillClr", aShapeProps.getProperty(PROP_LineColor) );
OUString sColorFillScheme = aFillProperties.maFillColor.getSchemeName();
if( !aFillProperties.maFillColor.isPlaceHolder() && !sColorFillScheme.isEmpty() )
{
PUT_PROP( aProperties, nSize, "SpPrSolidFillSchemeClr", sColorFillScheme );
nSize++;
PUT_PROP( aProperties, nSize, "SpPrSolidFillSchemeClrTransformations",
aFillProperties.maFillColor.getTransformations() );
nSize++;
}
OUString sLnColorFillScheme = aLineProperties.maLineFill.maFillColor.getSchemeName();
if( !aLineProperties.maLineFill.maFillColor.isPlaceHolder() && !sLnColorFillScheme.isEmpty() )
{
PUT_PROP( aProperties, nSize, "SpPrLnSolidFillSchemeClr", sLnColorFillScheme );
nSize++;
PUT_PROP( aProperties, nSize, "SpPrLnSolidFillSchemeClrTransformations",
aLineProperties.maLineFill.maFillColor.getTransformations() );
nSize++;
}
aProperties.realloc( nSize ); //shrink the Sequence if we didn't use all the slots
putPropertiesToGrabBag( aProperties );
// Store original gradient fill of the shape to InteropGrabBag
// LibreOffice doesn't support all the kinds of gradient so we save its complete definition
if( aShapeProps.hasProperty( PROP_FillGradient ) )
{
Sequence< PropertyValue > aGradientStops( aFillProperties.maGradientProps.maGradientStops.size() );
::std::map< double, Color >::iterator aIt = aFillProperties.maGradientProps.maGradientStops.begin();
for( sal_uInt32 i = 0; i < aFillProperties.maGradientProps.maGradientStops.size(); ++i )
{ // for each stop in the gradient definition:
// save position
Sequence< PropertyValue > aGradientStop( 3 );
PUT_PROP( aGradientStop, 0, "Pos", aIt->first );
OUString sStopColorScheme = aIt->second.getSchemeName();
if( sStopColorScheme.isEmpty() )
{
// save RGB color
PUT_PROP( aGradientStop, 1, "RgbClr", aIt->second.getColor( rGraphicHelper, nFillPhClr ) );
// in the case of a RGB color, transformations are already applied to
// the color with the exception of alpha transformations. We only need
// to keep the transparency value to calculate the alpha value later.
if( aIt->second.hasTransparency() )
{
PUT_PROP( aGradientStop, 2, "Transparency", aIt->second.getTransparency() );
}
}
else
{
// save color with scheme name
PUT_PROP( aGradientStop, 1, "SchemeClr", sStopColorScheme );
// save all color transformations
PUT_PROP( aGradientStop, 2, "Transformations", aIt->second.getTransformations() );
}
PUT_PROP( aGradientStops, i, OUString::number( i ), aGradientStop );
++aIt;
}
// If getFillProperties.moFillType is unused that means gradient is defined by a theme
// which is already saved into StyleFillRef property, so no need to save the explicit values too
if( getFillProperties().moFillType.has() )
putPropertyToGrabBag( "GradFillDefinition", Any( aGradientStops ) );
putPropertyToGrabBag( "OriginalGradFill", aShapeProps.getProperty(PROP_FillGradient) );
}
}
2008-01-17 07:06:10 +00:00
// These can have a custom geometry, so position should be set here,
// after creation but before custom shape handling, using the position
// we got from the caller.
if (mbWps && aServiceName != "com.sun.star.text.TextFrame")
mxShape->setPosition(maPosition);
if( bIsCustomShape )
{
if ( mbFlipH )
mpCustomShapePropertiesPtr->setMirroredX( sal_True );
if ( mbFlipV )
mpCustomShapePropertiesPtr->setMirroredY( sal_True );
2012-02-14 19:49:31 +05:30
if( getTextBody() )
{
2012-02-14 19:49:31 +05:30
sal_Int32 nTextRotateAngle = static_cast< sal_Int32 >( getTextBody()->getTextProperties().moRotation.get( 0 ) );
mpCustomShapePropertiesPtr->setTextRotateAngle( nTextRotateAngle / 60000 );
}
SAL_INFO("oox.cscode", "==cscode== shape name: '" << msName << "'");
mpCustomShapePropertiesPtr->pushToPropSet( rFilterBase, xSet, mxShape, maSize );
}
2012-02-14 19:49:31 +05:30
else if( getTextBody() )
getTextBody()->getTextProperties().pushVertSimulation();
2008-01-17 07:06:10 +00:00
// in some cases, we don't have any text body.
if( getTextBody() && ( !bDoNotInsertEmptyTextBody || !mpTextBody->isEmpty() ) )
2008-01-17 07:06:10 +00:00
{
Reference < XText > xText( mxShape, UNO_QUERY );
2008-01-17 07:06:10 +00:00
if ( xText.is() ) // not every shape is supporting an XText interface (e.g. GroupShape)
{
TextCharacterProperties aCharStyleProperties;
if( const ShapeStyleRef* pFontRef = getShapeStyleRef( XML_fontRef ) )
{
if( pTheme )
if( const TextCharacterProperties* pCharProps = pTheme->getFontStyle( pFontRef->mnThemedIdx ) )
aCharStyleProperties.assignUsed( *pCharProps );
SAL_INFO("oox.drawingml", OSL_THIS_FUNC << "use font color");
aCharStyleProperties.maCharColor.assignIfUsed( pFontRef->maPhClr );
}
2008-01-17 07:06:10 +00:00
Reference < XTextCursor > xAt = xText->createTextCursor();
getTextBody()->insertAt( rFilterBase, xText, xAt, aCharStyleProperties, mpMasterTextListStyle );
2008-01-17 07:06:10 +00:00
}
}
}
if( mxShape.is() )
finalizeXShape( rFilterBase, rxShapes );
return mxShape;
2008-01-17 07:06:10 +00:00
}
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
void Shape::keepDiagramCompatibilityInfo( XmlFilterBase& rFilterBase )
{
try
{
if( !maDiagramDoms.hasElements() )
return;
Reference < XPropertySet > xSet( mxShape, UNO_QUERY_THROW );
Reference < XPropertySetInfo > xSetInfo( xSet->getPropertySetInfo() );
if ( !xSetInfo.is() )
return;
const OUString aGrabBagPropName = UNO_NAME_MISC_OBJ_INTEROPGRABBAG;
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
if( !xSetInfo->hasPropertyByName( aGrabBagPropName ) )
return;
Sequence < PropertyValue > aGrabBag;
xSet->getPropertyValue( aGrabBagPropName ) >>= aGrabBag;
// We keep the previous items, if present
if ( aGrabBag.hasElements() )
{
sal_Int32 length = aGrabBag.getLength();
aGrabBag.realloc( length+maDiagramDoms.getLength() );
for( sal_Int32 i = 0; i < maDiagramDoms.getLength(); ++i )
aGrabBag[length+i] = maDiagramDoms[i];
xSet->setPropertyValue( aGrabBagPropName, Any( aGrabBag ) );
} else
xSet->setPropertyValue( aGrabBagPropName, Any( maDiagramDoms ) );
xSet->setPropertyValue( OUString( "MoveProtect" ), Any( sal_True ) );
xSet->setPropertyValue( OUString( "SizeProtect" ), Any( sal_True ) );
// Replace existing shapes with a new Graphic Object rendered
// from them
Reference < XShape > xShape( renderDiagramToGraphic( rFilterBase ) );
Reference < XShapes > xShapes( mxShape, UNO_QUERY_THROW );
while( xShapes->hasElements() )
xShapes->remove( Reference < XShape > ( xShapes->getByIndex( 0 ), UNO_QUERY_THROW ) );
xShapes->add( xShape );
}
catch( const Exception& e )
{
SAL_WARN( "oox.drawingml", OSL_THIS_FUNC << "Exception: " << e.Message );
}
}
Reference < XShape > Shape::renderDiagramToGraphic( XmlFilterBase& rFilterBase )
{
Reference< XShape > xShape;
try
{
if( !maDiagramDoms.hasElements() )
return xShape;
// Stream in which to place the rendered shape
SvMemoryStream mpTempStream;
Reference < io::XStream > xStream( new utl::OStreamWrapper( mpTempStream ) );
Reference < io::XOutputStream > xOutputStream( xStream->getOutputStream() );
// Rendering format
OUString sFormat( "PNG" );
// Size of the rendering
awt::Size aActualSize = mxShape->getSize();
Size aResolution( Application::GetDefaultDevice()->LogicToPixel( Size( 100, 100 ), MAP_CM ) );
double fPixelsPer100thmm = static_cast < double > ( aResolution.Width() ) / 100000.0;
awt::Size aSize = awt::Size( static_cast < sal_Int32 > ( ( fPixelsPer100thmm * aActualSize.Width ) + 0.5 ),
static_cast < sal_Int32 > ( ( fPixelsPer100thmm * aActualSize.Height ) + 0.5 ) );
Sequence< PropertyValue > aFilterData( 7 );
aFilterData[ 0 ].Name = "Compression";
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
aFilterData[ 0 ].Value <<= static_cast < sal_Int32 > ( 9 );
aFilterData[ 1 ].Name = "Interlaced";
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
aFilterData[ 1 ].Value <<= static_cast < sal_Int32 > ( 1 );
aFilterData[ 2 ].Name = "Translucent";
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
aFilterData[ 2 ].Value <<= static_cast < sal_Int32 > ( 1 );
aFilterData[ 3 ].Name = "PixelWidth";
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
aFilterData[ 3 ].Value <<= aSize.Width;
aFilterData[ 4 ].Name = "PixelHeight";
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
aFilterData[ 4 ].Value <<= aSize.Height;
aFilterData[ 5 ].Name = "LogicalWidth";
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
aFilterData[ 5 ].Value <<= aActualSize.Width;
aFilterData[ 6 ].Name = "LogicalHeight";
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
aFilterData[ 6 ].Value <<= aActualSize.Height;
Sequence < PropertyValue > aDescriptor( 3 );
aDescriptor[ 0 ].Name = "OutputStream";
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
aDescriptor[ 0 ].Value <<= xOutputStream;
aDescriptor[ 1 ].Name = "FilterName";
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
aDescriptor[ 1 ].Value <<= sFormat;
aDescriptor[ 2 ].Name = "FilterData";
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
aDescriptor[ 2 ].Value <<= aFilterData;
Reference < lang::XComponent > xSourceDoc( mxShape, UNO_QUERY_THROW );
Reference < XGraphicExportFilter > xGraphicExporter = GraphicExportFilter::create( rFilterBase.getComponentContext() );
xGraphicExporter->setSourceDocument( xSourceDoc );
xGraphicExporter->filter( aDescriptor );
mpTempStream.Seek( STREAM_SEEK_TO_BEGIN );
Graphic aGraphic;
GraphicFilter aFilter( false );
if ( aFilter.ImportGraphic( aGraphic, "", mpTempStream, GRFILTER_FORMAT_NOTFOUND, NULL, 0, static_cast < Sequence < PropertyValue >* > ( NULL ), NULL ) != GRFILTER_OK )
oox: added methods to lock Smart-Art edition Added the possibility of rendering the basic shapes generated for a Smart-Art into a bitmap and replacing them with it in order to not letting to edit the Smart-Art. This possibility is controlled using a configuration parameter located at Options -> Load/Save -> MS Office -> SmartArt to LibreOffice shapes or reverse. Made the "oox" library to depend on the "drawinglayer" and "svx" libraries. Made the "ooxmlexport" C++ unit tests in the "sw" module to depend on the "drawinglayer" and "svx" components. Fixed to set to diagram type a new "oox::drawingml::Shape" representing a Smart-Art in the "getShape" method of the "oox::shape::ShapeContextHandler" class. Added the "keepDiagramCompatibilityInfo" and "renderDiagramToGraphic" protected methods to the "oox::drawingml::Shape" class. "keepDiagramCompatibilityInfo" is now called after an instance of type "FRAMETYPE_DIAGRAM" has added all its children in the "addShape" method and the proper setting is in place. "keepDiagramCompatibilityInfo" substitutes previous similar code in the "createAndInsert" method and also calls "renderDiagramToGraphic". The "renderDiagramToGraphic" renders the basic shapes in a Smart-Art into a PNG image and replaces these basic shapes with a new "GraphicObjectShape" filled with the new PNG image. It also sets the "MoveProtect" and "SizeProtect" properties of the "GraphicObjectShape". Change-Id: Ie4002238ff5fae758a5881b03735bf1f0721ed5b Reviewed-on: https://gerrit.libreoffice.org/6059 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
2013-09-26 20:35:48 +03:00
{
SAL_WARN( "oox.drawingml", OSL_THIS_FUNC
<< "Unable to import rendered stream into graphic object" );
return xShape;
}
Reference < graphic::XGraphic > xGraphic( aGraphic.GetXGraphic() );
Reference < lang::XMultiServiceFactory > xServiceFact( rFilterBase.getModel(), UNO_QUERY_THROW );
xShape = Reference < XShape > ( xServiceFact->createInstance( OUString( "com.sun.star.drawing.GraphicObjectShape" ) ), UNO_QUERY_THROW );
Reference < XPropertySet > xPropSet( xShape, UNO_QUERY_THROW );
xPropSet->setPropertyValue( OUString( "Graphic" ), Any( xGraphic ) );
xPropSet->setPropertyValue( OUString( "MoveProtect" ), Any( sal_True ) );
xPropSet->setPropertyValue( OUString( "SizeProtect" ), Any( sal_True ) );
xPropSet->setPropertyValue( OUString( "Name" ), Any( OUString( "RenderedShapes" ) ) );
}
catch( const Exception& e )
{
SAL_WARN( "oox.drawingml", OSL_THIS_FUNC << "Exception: " << e.Message );
}
return xShape;
}
2008-01-17 07:06:10 +00:00
void Shape::setTextBody(const TextBodyPtr & pTextBody)
{
mpTextBody = pTextBody;
}
TextBodyPtr Shape::getTextBody()
{
return mpTextBody;
}
void Shape::setMasterTextListStyle( const TextListStylePtr& pMasterTextListStyle )
{
SAL_INFO("oox.drawingml", OSL_THIS_FUNC << "set master text list style to shape id: " << msId);
2008-01-17 07:06:10 +00:00
mpMasterTextListStyle = pMasterTextListStyle;
}
2012-12-13 19:02:26 +01:00
OUString Shape::finalizeServiceName( XmlFilterBase& rFilter, const OUString& rServiceName, const awt::Rectangle& rShapeRect )
{
OUString aServiceName = rServiceName;
switch( meFrameType )
{
case FRAMETYPE_OLEOBJECT:
{
2012-12-13 19:02:26 +01:00
awt::Size aOleSize( rShapeRect.Width, rShapeRect.Height );
if( rFilter.getOleObjectHelper().importOleObject( maShapeProperties, *mxOleObjectInfo, aOleSize ) )
aServiceName = "com.sun.star.drawing.OLE2Shape";
// get the path to the representation graphic
OUString aGraphicPath;
if( !mxOleObjectInfo->maShapeId.isEmpty() )
if( ::oox::vml::Drawing* pVmlDrawing = rFilter.getVmlDrawing() )
if( const ::oox::vml::ShapeBase* pVmlShape = pVmlDrawing->getShapes().getShapeById( mxOleObjectInfo->maShapeId, true ) )
aGraphicPath = pVmlShape->getGraphicPath();
// import and store the graphic
if( !aGraphicPath.isEmpty() )
{
Reference< graphic::XGraphic > xGraphic = rFilter.getGraphicHelper().importEmbeddedGraphic( aGraphicPath );
if( xGraphic.is() )
maShapeProperties.setProperty(PROP_Graphic, xGraphic);
}
}
break;
default:;
}
return aServiceName;
}
void Shape::finalizeXShape( XmlFilterBase& rFilter, const Reference< XShapes >& rxShapes )
{
switch( meFrameType )
{
case FRAMETYPE_CHART:
{
OSL_ENSURE( !mxChartShapeInfo->maFragmentPath.isEmpty(), "Shape::finalizeXShape - missing chart fragment" );
if( mxShape.is() && !mxChartShapeInfo->maFragmentPath.isEmpty() ) try
{
// set the chart2 OLE class ID at the OLE shape
PropertySet aShapeProp( mxShape );
aShapeProp.setProperty( PROP_CLSID, OUString( "12dcae26-281f-416f-a234-c3086127382e" ) );
// get the XModel interface of the embedded object from the OLE shape
Reference< frame::XModel > xDocModel;
aShapeProp.getProperty( xDocModel, PROP_Model );
Reference< chart2::XChartDocument > xChartDoc( xDocModel, UNO_QUERY_THROW );
// load the chart data from the XML fragment
chart::ChartSpaceModel aModel;
rFilter.importFragment( new chart::ChartSpaceFragment( rFilter, mxChartShapeInfo->maFragmentPath, aModel ) );
// convert imported chart model to chart document
Reference< drawing::XShapes > xExternalPage;
if( !mxChartShapeInfo->mbEmbedShapes )
xExternalPage = rxShapes;
if( rFilter.getChartConverter() )
{
rFilter.getChartConverter()->convertFromModel( rFilter, aModel, xChartDoc, xExternalPage, mxShape->getPosition(), mxShape->getSize() );
if( !xChartDoc->hasInternalDataProvider() )
{
Reference< chart2::data::XDataReceiver > xDataRec( xChartDoc, UNO_QUERY );
Reference< chart2::data::XDataSource > xData( xDataRec->getUsedData(), UNO_QUERY );
2013-07-09 14:00:21 +05:30
if( xData->getDataSequences().getLength() <= 0 || xData->getDataSequences()[0]->getValues()->getData().getLength() <= 0 )
{
rFilter.useInternalChartDataTable( true );
rFilter.getChartConverter()->convertFromModel( rFilter, aModel, xChartDoc, xExternalPage, mxShape->getPosition(), mxShape->getSize() );
rFilter.useInternalChartDataTable( false );
}
}
}
}
catch( Exception& )
{
}
}
break;
default:;
}
}
void Shape::putPropertyToGrabBag( const OUString& sPropertyName, const Any& aPropertyValue )
{
PropertyValue pNewProperty;
pNewProperty.Name = sPropertyName;
pNewProperty.Value = aPropertyValue;
putPropertyToGrabBag( pNewProperty );
}
ooxml: Preserve shape style attribute fillRef Shape style attributes contain the default format for the shape in case that no direct format is specified for it. This is an example of the attribute we want to preserve with this patch: <wps:style> ... <a:fillRef idx="1"> <a:schemeClr val="accent1"/> </a:fillRef> ... </wps:style> The relevant values in these tags are stored at the maShapeStyleRefs member in the Shape object. The storage happens at ShapeStyleContext::onCreateContext which is run when the <a:fillRef> tag is opened. The ShapeStyleRef object contains the idx value and a Color object which will contain the inner tag <a:schemeClr>. The Color object has been modified to store the string value of schemeClr. The storage happens at ColorValueContext::onStartElement which is run when the tag <a:schemeClr> is opened. Later, Shape::createAndInsert is called by the ShapeContextHandler to create the actual XShape, this happens when the tag <wps:wsp> is closed. createAndInsert puts idx and schemeClr values into the InteropGrabBag property of the XShape with the name StyleFillRef. On export time, when the shape data is written at ShapeExport::WriteCustomShape, we added a call to DrawingML::WriteShapeStyle. This method will check the existence of the InteropGrabBag property in the shape, read the StyleFillRef prop inside it and output the proper XML to the style definition. DrawingML::WriteShapeStyle also writes some mock tags into the <wps:style> because we found that they are compulsory. We will replace them with the proper data in further patches. The method putPropertyToGrabBag was added to the Shape object for convenience. The data files for some /sd/qa/ unit tests were updated to reflect the new property StyleFillRef inside the InteropGrabBag. Change-Id: I5ffa5242852461a1a709a8f169d40f0d7a2c9aa3
2014-01-14 18:43:06 +01:00
void Shape::putPropertyToGrabBag( const PropertyValue& pProperty )
{
Reference< XPropertySet > xSet( mxShape, UNO_QUERY );
Reference< XPropertySetInfo > xSetInfo( xSet->getPropertySetInfo() );
const OUString& aGrabBagPropName = OUString( UNO_NAME_MISC_OBJ_INTEROPGRABBAG );
if( mxShape.is() && xSet.is() && xSetInfo.is() && xSetInfo->hasPropertyByName( aGrabBagPropName ) )
{
Sequence< PropertyValue > aGrabBag;
xSet->getPropertyValue( aGrabBagPropName ) >>= aGrabBag;
sal_Int32 length = aGrabBag.getLength();
aGrabBag.realloc( length + 1 );
aGrabBag[length] = pProperty;
xSet->setPropertyValue( aGrabBagPropName, Any( aGrabBag ) );
}
}
void Shape::putPropertiesToGrabBag( const Sequence< PropertyValue >& aProperties )
{
Reference< XPropertySet > xSet( mxShape, UNO_QUERY );
Reference< XPropertySetInfo > xSetInfo( xSet->getPropertySetInfo() );
const OUString& aGrabBagPropName = OUString( UNO_NAME_MISC_OBJ_INTEROPGRABBAG );
if( mxShape.is() && xSet.is() && xSetInfo.is() && xSetInfo->hasPropertyByName( aGrabBagPropName ) )
{
// get existing grab bag
Sequence< PropertyValue > aGrabBag;
xSet->getPropertyValue( aGrabBagPropName ) >>= aGrabBag;
sal_Int32 length = aGrabBag.getLength();
// update grab bag size to contain the new items
aGrabBag.realloc( length + aProperties.getLength() );
// put the new items
for( sal_Int32 i=0; i < aProperties.getLength(); ++i )
{
aGrabBag[length + i].Name = aProperties[i].Name;
aGrabBag[length + i].Value = aProperties[i].Value;
}
// put it back to the shape
xSet->setPropertyValue( aGrabBagPropName, Any( aGrabBag ) );
}
}
2008-01-17 07:06:10 +00:00
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */