LibreOffice Module sw (master) 1
|
Handles export of drawings using RTF markup. More...
#include <rtfsdrexport.hxx>
Public Member Functions | |
RtfSdrExport (RtfExport &rExport) | |
~RtfSdrExport () override | |
void | AddSdrObject (const SdrObject &rObj) |
Export the sdr object as Sdr. More... | |
void | WriteOutliner (const OutlinerParaObject &rParaObj, TextTypes eType) |
Write editeng text, e.g. shape or comment. More... | |
Public Member Functions inherited from EscherEx | |
EscherEx (std::shared_ptr< EscherExGlobal > xGlobal, SvStream *pOutStrm, bool bOOXML=false) | |
virtual | ~EscherEx () override |
virtual sal_uInt32 | GenerateShapeId () |
EscherGraphicProvider & | GetGraphicProvider () |
SvStream * | QueryPictureStream () |
void | Flush (SvStream *pPicStreamMergeBSE=nullptr) |
void | InsertAtCurrentPos (sal_uInt32 nBytes) |
void | InsertPersistOffset (sal_uInt32 nKey, sal_uInt32 nOffset) |
void | ReplacePersistOffset (sal_uInt32 nKey, sal_uInt32 nOffset) |
sal_uInt32 | GetPersistOffset (sal_uInt32 nKey) |
bool | SeekToPersistOffset (sal_uInt32 nKey) |
void | InsertAtPersistOffset (sal_uInt32 nKey, sal_uInt32 nValue) |
void | SetEditAs (const OUString &rEditAs) |
const OUString & | GetEditAs () const |
SvStream & | GetStream () const |
sal_uInt64 | GetStreamPos () const |
virtual void | OpenContainer (sal_uInt16 nEscherContainer, int nRecInstance=0) |
virtual void | CloseContainer () |
void | BeginAtom () |
void | EndAtom (sal_uInt16 nRecType, int nRecVersion=0, int nRecInstance=0) |
void | AddAtom (sal_uInt32 nAtomSitze, sal_uInt16 nRecType, int nRecVersion=0, int nRecInstance=0) |
void | AddChildAnchor (const tools::Rectangle &rRectangle) |
void | AddClientAnchor (const tools::Rectangle &rRectangle) |
virtual sal_uInt32 | EnterGroup (const OUString &rShapeName, const tools::Rectangle *pBoundRect) |
sal_uInt32 | EnterGroup (const tools::Rectangle *pBoundRect=nullptr) |
sal_uInt32 | GetGroupLevel () const |
void | SetGroupSnapRect (sal_uInt32 nGroupLevel, const tools::Rectangle &rRect) |
void | SetGroupLogicRect (sal_uInt32 nGroupLevel, const tools::Rectangle &rRect) |
virtual void | LeaveGroup () |
virtual void | AddShape (sal_uInt32 nShpInstance, ShapeFlag nFlagIds, sal_uInt32 nShapeID=0) |
virtual void | Commit (EscherPropertyContainer &rProps, const tools::Rectangle &rRect) |
void | AddSdrPage (const SdrPage &rPage, bool ooxmlExport=false) |
void | AddUnoShapes (const css::uno::Reference< css::drawing::XShapes > &rxShapes, bool ooxmlExport=false) |
sal_uInt32 | AddSdrObject (const SdrObject &rObj, bool ooxmlExport=false, sal_uInt32 nId=0) |
virtual void | AddSdrObjectVMLObject (const SdrObject &) |
void | EndSdrObjectPage () |
virtual EscherExHostAppData * | StartShape (const css::uno::Reference< css::drawing::XShape > &rShape, const tools::Rectangle *pChildAnchor) |
virtual void | EndShape (sal_uInt16 nShapeType, sal_uInt32 nShapeID) |
virtual EscherExHostAppData * | EnterAdditionalTextGroup () |
virtual sal_uInt32 | QueryTextID (const css::uno::Reference< css::drawing::XShape > &, sal_uInt32 nShapeId) |
sal_uInt32 | AddDummyShape () |
void | SetHellLayerId (SdrLayerID nId) |
SdrLayerID | GetHellLayerId () const |
Public Member Functions inherited from EscherPersistTable | |
bool | PtIsID (sal_uInt32 nID) |
void | PtInsert (sal_uInt32 nID, sal_uInt32 nOfs) |
void | PtDelete (sal_uInt32 nID) |
sal_uInt32 | PtGetOffsetByID (sal_uInt32 nID) |
void | PtReplace (sal_uInt32 nID, sal_uInt32 nOfs) |
void | PtReplaceOrInsert (sal_uInt32 nID, sal_uInt32 nOfs) |
EscherPersistTable () | |
virtual | ~EscherPersistTable () |
EscherPersistTable & | operator= (EscherPersistTable const &)=delete |
EscherPersistTable (EscherPersistTable const &)=delete | |
Static Public Member Functions | |
static bool | isTextBox (const SwFrameFormat &rFrameFormat) |
Is this a standalone TextFrame, or used as a TextBox of a shape? More... | |
Static Public Member Functions inherited from EscherEx | |
static sal_uInt32 | GetColor (const sal_uInt32 nColor) |
static sal_uInt32 | GetColor (const Color &rColor) |
static const SdrObject * | GetSdrObject (const css::uno::Reference< css::drawing::XShape > &rXShape) |
Private Member Functions | |
sal_Int32 | StartShape () |
void | EndShape (sal_Int32 nShapeElement) |
void | Commit (EscherPropertyContainer &rProps, const tools::Rectangle &rRect) override |
void | OpenContainer (sal_uInt16 nEscherContainer, int nRecInstance=0) override |
void | CloseContainer () override |
sal_uInt32 | EnterGroup (const OUString &rShapeName, const tools::Rectangle *pBoundRect) override |
void | LeaveGroup () override |
void | AddShape (sal_uInt32 nShapeType, ShapeFlag nShapeFlags, sal_uInt32 nShapeId=0) override |
void | AddLineDimensions (const tools::Rectangle &rRectangle) |
Add starting and ending point of a line to the m_pShapeAttrList. More... | |
void | AddRectangleDimensions (OStringBuffer &rBuffer, const tools::Rectangle &rRectangle) |
Add position and size to the OStringBuffer. More... | |
void | impl_writeGraphic () |
Exports the pib property of the shape. More... | |
virtual EscherExHostAppData * | StartShape (const css::uno::Reference< css::drawing::XShape > &rShape, const tools::Rectangle *pChildAnchor) |
Start the shape for which we just collected the information. More... | |
virtual void | EndShape (sal_uInt16 nShapeType, sal_uInt32 nShapeID) |
End the shape. More... | |
Private Attributes | |
RtfExport & | m_rExport |
RtfAttributeOutput & | m_rAttrOutput |
const SdrObject * | m_pSdrObject |
sal_uInt32 | m_nShapeType |
Remember the shape type. More... | |
ShapeFlag | m_nShapeFlags |
Remember the shape flags. More... | |
OStringBuffer | m_aShapeStyle |
Remember style, the most important shape attribute ;-) More... | |
std::map< OString, OString > | m_aShapeProps |
std::unique_ptr< bool[]> | m_pShapeTypeWritten |
Remember which shape types we had already written. More... | |
bool | m_bInGroup = false |
Additional Inherited Members | |
Public Attributes inherited from EscherPersistTable | |
::std::vector< std::unique_ptr< EscherPersistEntry > > | maPersistTable |
Protected Member Functions inherited from EscherEx | |
bool | DoSeek (sal_uInt32 nKey) |
Protected Attributes inherited from EscherEx | |
std::shared_ptr< EscherExGlobal > | mxGlobal |
std::unique_ptr< ImplEESdrWriter > | mpImplEESdrWriter |
std::unique_ptr< SvStream > | mxOwnStrm |
SvStream * | mpOutStrm |
sal_uInt32 | mnStrmStartOfs |
std::vector< sal_uInt32 > | mOffsets |
std::vector< sal_uInt16 > | mRecTypes |
sal_uInt32 | mnCurrentDg |
sal_uInt32 | mnCountOfs |
sal_uInt32 | mnGroupLevel |
SdrLayerID | mnHellLayerId |
bool | mbEscherSpgr |
bool | mbEscherDg |
bool | mbOOXML |
OUString | mEditAs |
Handles export of drawings using RTF markup.
Definition at line 37 of file rtfsdrexport.hxx.
|
explicit |
Definition at line 45 of file rtfsdrexport.cxx.
References ESCHER_ShpInst_COUNT, ESCHER_ShpInst_Nil, m_pShapeTypeWritten, make_shared(), and EscherEx::mnGroupLevel.
|
override |
Definition at line 59 of file rtfsdrexport.cxx.
|
private |
Add starting and ending point of a line to the m_pShapeAttrList.
Definition at line 443 of file rtfsdrexport.cxx.
References tools::Rectangle::Bottom(), tools::Rectangle::Left(), m_aShapeProps, m_aShapeStyle, m_nShapeFlags, OOO_STRING_SVTOOLS_RTF_SHPBOTTOM, OOO_STRING_SVTOOLS_RTF_SHPLEFT, OOO_STRING_SVTOOLS_RTF_SHPRIGHT, OOO_STRING_SVTOOLS_RTF_SHPTOP, tools::Rectangle::Right(), and tools::Rectangle::Top().
Referenced by Commit().
|
private |
Add position and size to the OStringBuffer.
Definition at line 461 of file rtfsdrexport.cxx.
References tools::Rectangle::Bottom(), tools::Rectangle::Left(), m_aShapeProps, OOO_STRING_SVTOOLS_RTF_SHPBOTTOM, OOO_STRING_SVTOOLS_RTF_SHPLEFT, OOO_STRING_SVTOOLS_RTF_SHPRIGHT, OOO_STRING_SVTOOLS_RTF_SHPTOP, tools::Rectangle::Right(), and tools::Rectangle::Top().
Referenced by Commit().
void RtfSdrExport::AddSdrObject | ( | const SdrObject & | rObj | ) |
Export the sdr object as Sdr.
Call this when you need to export the object as Sdr in RTF.
Definition at line 726 of file rtfsdrexport.cxx.
References EscherEx::AddSdrObject(), and m_pSdrObject.
Referenced by RtfAttributeOutput::OutputFlyFrame_Impl().
|
overrideprivatevirtual |
Reimplemented from EscherEx.
Definition at line 98 of file rtfsdrexport.cxx.
References m_nShapeFlags, and m_nShapeType.
|
overrideprivatevirtual |
Reimplemented from EscherEx.
Definition at line 74 of file rtfsdrexport.cxx.
References EscherEx::CloseContainer(), EndShape(), ESCHER_ShpInst_Nil, ESCHER_SpContainer, m_nShapeType, EscherEx::mRecTypes, and StartShape().
|
overrideprivatevirtual |
Reimplemented from EscherEx.
Definition at line 137 of file rtfsdrexport.cxx.
References aBuf, AddLineDimensions(), AddRectangleDimensions(), aSegments, ESCHER_Prop_adjustValue, ESCHER_Prop_AnchorText, ESCHER_Prop_dxTextLeft, ESCHER_Prop_dxTextRight, ESCHER_Prop_dyTextBottom, ESCHER_Prop_dyTextTop, ESCHER_Prop_fFillOK, ESCHER_Prop_fillBackColor, ESCHER_Prop_fillBlip, ESCHER_Prop_fillColor, ESCHER_Prop_fillOpacity, ESCHER_Prop_fillType, ESCHER_Prop_FitTextToShape, ESCHER_Prop_fNoFillHitTest, ESCHER_Prop_fNoLineDrawDash, ESCHER_Prop_fshadowObscured, ESCHER_Prop_geoBottom, ESCHER_Prop_geoLeft, ESCHER_Prop_geoRight, ESCHER_Prop_geoTop, ESCHER_Prop_lineBackColor, ESCHER_Prop_lineColor, ESCHER_Prop_lineJoinStyle, ESCHER_Prop_pSegmentInfo, ESCHER_Prop_pVertices, ESCHER_Prop_shapePath, ESCHER_Prop_txflTextFlow, ESCHER_Prop_WrapText, ESCHER_ShpInst_Line, ESCHER_ShpInst_Nil, ESCHER_WrapByPoints, ESCHER_WrapNone, ESCHER_WrapSquare, ESCHER_WrapThrough, ESCHER_WrapTopBottom, EscherPropertyContainer::GetOpt(), EscherPropertyContainer::GetOpts(), i, impl_GetPointComponent(), impl_GetUInt16(), m_aShapeProps, m_aShapeStyle, m_nShapeType, msopathClientEscape, msopathClose, msopathCurveTo, msopathEnd, msopathEscape, msopathLineTo, msopathMoveTo, nId, EscherPropSortStruct::nProp, OOO_STRING_SVTOOLS_RTF_PICT, OOO_STRING_SVTOOLS_RTF_PNGBLIP, OOO_STRING_SVTOOLS_RTF_SHPWR, SAL_INFO, SAL_NEWLINE_STRING, SAL_WARN, and msfilter::rtfutil::WriteHex().
|
private |
Definition at line 717 of file rtfsdrexport.cxx.
References m_rAttrOutput, and RtfAttributeOutput::RunText().
Referenced by CloseContainer().
|
privatevirtual |
|
overrideprivatevirtual |
Reimplemented from EscherEx.
Definition at line 89 of file rtfsdrexport.cxx.
References EscherEx::GenerateShapeId(), and m_bInGroup.
|
private |
Exports the pib property of the shape.
Definition at line 484 of file rtfsdrexport.cxx.
References aBuf, GraphicConverter::Export(), SvMemoryStream::GetData(), Graphic::GetPrefSize(), GetXShapeForSdrObject(), Size::Height(), m_aShapeProps, m_pSdrObject, OOO_STRING_SVTOOLS_RTF_PICH, OOO_STRING_SVTOOLS_RTF_PICT, OOO_STRING_SVTOOLS_RTF_PICW, OOO_STRING_SVTOOLS_RTF_PNGBLIP, SAL_NEWLINE_STRING, SvMemoryStream::TellEnd(), TOOLS_WARN_EXCEPTION, Size::Width(), and msfilter::rtfutil::WriteHex().
Referenced by StartShape().
|
static |
Is this a standalone TextFrame, or used as a TextBox of a shape?
Definition at line 732 of file rtfsdrexport.cxx.
References SwTextBoxHelper::isTextBox(), and RES_FLYFRMFMT().
Referenced by RtfAttributeOutput::OutputFlyFrame_Impl().
|
overrideprivatevirtual |
|
overrideprivatevirtual |
Reimplemented from EscherEx.
Definition at line 61 of file rtfsdrexport.cxx.
References ESCHER_ShpInst_Nil, ESCHER_SpContainer, m_aShapeProps, m_aShapeStyle, m_nShapeType, and EscherEx::OpenContainer().
|
private |
Definition at line 528 of file rtfsdrexport.cxx.
References DynCastSdrTextObj(), ESCHER_ShpInst_Nil, ESCHER_ShpInst_PictureFrame, FindFrameFormat(), RtfExport::GetCurrentEncoding(), SdrObject::GetDescription(), SvxFontItem::GetFamilyName(), SfxItemSet::GetItem(), SdrObject::GetName(), SdrObject::GetOrdNum(), SwTextBoxHelper::getOtherTextBoxFormat(), EditTextObject::GetParaAttribs(), EditTextObject::GetText(), OutlinerParaObject::GetTextObject(), impl_writeGraphic(), lcl_AppendSP(), MSWordExportBase::m_aFrames, m_aShapeProps, m_aShapeStyle, m_bInGroup, m_nShapeType, m_pSdrObject, m_rAttrOutput, m_rExport, OOO_STRING_SVTOOLS_RTF_IGNORE, OOO_STRING_SVTOOLS_RTF_SHP, OOO_STRING_SVTOOLS_RTF_SHPBXIGNORE, OOO_STRING_SVTOOLS_RTF_SHPBYIGNORE, OOO_STRING_SVTOOLS_RTF_SHPINST, OOO_STRING_SVTOOLS_RTF_SHPZ, msfilter::rtfutil::OutString(), RES_DRAWFRMFMT(), RTF_MULTIPLIER, RtfAttributeOutput::RunText(), TransformMetric(), TXT_HFTXTBOX, WriteOutliner(), and RtfAttributeOutput::writeTextFrame().
Referenced by CloseContainer().
|
privatevirtual |
Start the shape for which we just collected the information.
Returns the element's tag number, -1 means we wrote nothing.
Reimplemented from EscherEx.
void RtfSdrExport::WriteOutliner | ( | const OutlinerParaObject & | rParaObj, |
TextTypes | eType | ||
) |
Write editeng text, e.g. shape or comment.
Definition at line 660 of file rtfsdrexport.cxx.
References aStr, eType, MSWord_SdrAttrIter::GetNextCharSet(), MSWord_SdrAttrIter::GetNodeCharSet(), EditTextObject::GetParagraphCount(), EditTextObject::GetText(), OutlinerParaObject::GetTextObject(), MSWord_SdrAttrIter::IsTextAttr(), m_rAttrOutput, m_rExport, min(), RtfAttributeOutput::MoveCharacterProperties(), n, MSWord_SdrAttrIter::NextPara(), MSWord_SdrAttrIter::NextPos(), OOO_STRING_SVTOOLS_RTF_PAR, OOO_STRING_SVTOOLS_RTF_SHPTXT, MSWord_SdrAttrIter::OutAttr(), MSWord_SdrAttrIter::OutParaAttr(), msfilter::rtfutil::OutString(), RtfAttributeOutput::RunText(), SAL_INFO, SAL_NEWLINE_STRING, TXT_HFTXTBOX, and MSWord_SdrAttrIter::WhereNext().
Referenced by RtfAttributeOutput::PostitField(), and StartShape().
|
private |
Definition at line 54 of file rtfsdrexport.hxx.
Referenced by AddLineDimensions(), AddRectangleDimensions(), Commit(), impl_writeGraphic(), OpenContainer(), and StartShape().
|
private |
Remember style, the most important shape attribute ;-)
Definition at line 52 of file rtfsdrexport.hxx.
Referenced by AddLineDimensions(), Commit(), OpenContainer(), and StartShape().
|
private |
Definition at line 59 of file rtfsdrexport.hxx.
Referenced by EnterGroup(), LeaveGroup(), and StartShape().
|
private |
Remember the shape flags.
Definition at line 49 of file rtfsdrexport.hxx.
Referenced by AddLineDimensions(), and AddShape().
|
private |
Remember the shape type.
Definition at line 46 of file rtfsdrexport.hxx.
Referenced by AddShape(), CloseContainer(), Commit(), OpenContainer(), and StartShape().
|
private |
Definition at line 43 of file rtfsdrexport.hxx.
Referenced by AddSdrObject(), impl_writeGraphic(), and StartShape().
|
private |
Remember which shape types we had already written.
Definition at line 57 of file rtfsdrexport.hxx.
Referenced by RtfSdrExport().
|
private |
Definition at line 41 of file rtfsdrexport.hxx.
Referenced by EndShape(), StartShape(), and WriteOutliner().
|
private |
Definition at line 39 of file rtfsdrexport.hxx.
Referenced by StartShape(), and WriteOutliner().