LibreOffice Module sw (master)  1
Public Types | Static Public Member Functions | List of all members
SwTextBoxHelper Class Reference

A TextBox is a TextFrame, that is tied to a drawinglayer shape. More...

#include <textboxhelper.hxx>

Public Types

using SavedLink = std::map< const SwFrameFormat *, const SwFrameFormat * >
 Maps a draw format to a fly format. More...
 
using SavedContent = std::map< const SwFrameFormat *, SwFormatContent >
 Maps a draw format to content. More...
 

Static Public Member Functions

static void create (SwFrameFormat *pShape, bool bCopyText=false)
 Create a TextBox for a shape. More...
 
static void destroy (SwFrameFormat *pShape)
 Destroy a TextBox for a shape. More...
 
static css::uno::Any queryInterface (const SwFrameFormat *pShape, const css::uno::Type &rType)
 Get interface of a shape's TextBox, if there is any. More...
 
static void syncProperty (SwFrameFormat *pShape, sal_uInt16 nWID, sal_uInt8 nMemberID, const css::uno::Any &rValue)
 Sync property of TextBox with the one of the shape. More...
 
static void syncProperty (SwFrameFormat *pShape, std::u16string_view rPropertyName, const css::uno::Any &rValue)
 Does the same, but works on properties which lack an sw-specific WID / MemberID. More...
 
static void getProperty (SwFrameFormat const *pShape, sal_uInt16 nWID, sal_uInt8 nMemberID, css::uno::Any &rValue)
 Get a property of the underlying TextFrame. More...
 
static css::uno::Any getProperty (SwFrameFormat const *pShape, const OUString &rPropName)
 Get a property of the underlying TextFrame. More...
 
static css::text::TextContentAnchorType mapAnchorType (const RndStdIds &rAnchorID)
 There are two types of enum of anchor type, so this function maps this. More...
 
static void syncFlyFrameAttr (SwFrameFormat &rShape, SfxItemSet const &rSet)
 Similar to syncProperty(), but used by the internal API (e.g. for UI purposes). More...
 
static void updateTextBoxMargin (SdrObject *pObj)
 Copy shape attributes to the text frame. More...
 
static bool setWrapThrough (SwFrameFormat *pShape)
 Sets the surround to through for the textframe of the given shape, not to interfere with the layout. More...
 
static bool changeAnchor (SwFrameFormat *pShape)
 Sets the anchor of the associated textframe of the given shape, and returns true on success. More...
 
static bool doTextBoxPositioning (SwFrameFormat *pShape)
 Does the positioning for the associated textframe of the shape, and returns true on success. More...
 
static std::optional< bool > isAnchorTypeDifferent (SwFrameFormat *pShape)
 Returns true if the anchor different for the given shape, and the associated textframe of the given shape. More...
 
static bool isTextBoxShapeHasValidTextFrame (SwFrameFormat *pShape)
 Returns true if the given shape has a valid textframe. More...
 
static bool DoTextBoxZOrderCorrection (SwFrameFormat *pShape)
 
static SwFrameFormatgetOtherTextBoxFormat (const SwFrameFormat *pFormat, sal_uInt16 nType)
 If we have an associated TextFrame, then return that. More...
 
static SwFrameFormatgetOtherTextBoxFormat (css::uno::Reference< css::drawing::XShape > const &xShape)
 If we have an associated TextFrame, then return that. More...
 
static css::uno::Reference< css::text::XTextFrame > getUnoTextFrame (css::uno::Reference< css::drawing::XShape > const &xShape)
 If we have an associated TextFrame, then return its XTextFrame. More...
 
static tools::Rectangle getTextRectangle (SwFrameFormat *pShape, bool bAbsolute=true)
 Return the textbox rectangle of a draw shape (in twips). More...
 
static bool isTextBox (const SwFrameFormat *pFormat, sal_uInt16 nType)
 Is the frame format a text box? More...
 
static bool hasTextFrame (const SdrObject *pObj)
 Returns true if the SdrObject has a SwTextFrame otherwise false. More...
 
static sal_Int32 getCount (const SwDoc &rDoc)
 Count number of shapes in the document, excluding TextBoxes. More...
 
static sal_Int32 getCount (SdrPage const *pPage)
 Count number of shapes on the page, excluding TextBoxes. More...
 
static css::uno::Any getByIndex (SdrPage const *pPage, sal_Int32 nIndex)
 Get a shape by index, excluding TextBoxes. More...
 
static sal_Int32 getOrdNum (const SdrObject *pObject)
 Get the order of the shape, excluding TextBoxes. More...
 
static void getShapeWrapThrough (const SwFrameFormat *pTextBox, bool &rWrapThrough)
 If pTextBox is a textbox, then set rWrapThrough to the surround of its shape. More...
 
static void saveLinks (const SwFrameFormats &rFormats, std::map< const SwFrameFormat *, const SwFrameFormat * > &rLinks)
 Saves the current shape -> textbox links in a map, so they can be restored later. More...
 
static void restoreLinks (std::set< ZSortFly > &rOld, std::vector< SwFrameFormat * > &rNew, SavedLink &rSavedLinks)
 Undo the effect of saveLinks() + individual resetLink() calls. More...
 

Detailed Description

A TextBox is a TextFrame, that is tied to a drawinglayer shape.

This class provides helper methods to create, query and maintain such TextBoxes.

Definition at line 52 of file textboxhelper.hxx.

Member Typedef Documentation

Maps a draw format to content.

Definition at line 58 of file textboxhelper.hxx.

Maps a draw format to a fly format.

Definition at line 56 of file textboxhelper.hxx.

Member Function Documentation

bool SwTextBoxHelper::changeAnchor ( SwFrameFormat pShape)
static
void SwTextBoxHelper::create ( SwFrameFormat pShape,
bool  bCopyText = false 
)
static

Create a TextBox for a shape.

If the second parameter is true, the original text in the shape will be copied to the frame

Definition at line 60 of file textboxhelper.cxx.

References eMode, SwFrameFormat::FindRealSdrObject(), SwFormat::GetAttrSet(), SfxObjectShell::GetBaseModel(), SwFormat::GetDoc(), SwDoc::GetDocShell(), SwDoc::getIDocumentState(), SwFrameFormat::GetOtherTextBoxFormat(), SwDoc::GetUniqueFrameName(), SdrObject::getUnoShape(), SfxItemSet::HasItem(), com::sun::star::uno::makeAny(), SwXServiceProvider::MakeInstance(), MID_ANCHOR_ANCHORTYPE, MID_FOLLOW_TEXT_FLOW, MID_FRMSIZE_IS_AUTO_HEIGHT, MID_FRMSIZE_SIZE, MID_HORIORIENT_ORIENT, MID_HORIORIENT_POSITION, MID_HORIORIENT_RELATION, MID_VERTORIENT_ORIENT, MID_VERTORIENT_POSITION, MID_VERTORIENT_RELATION, RES_ANCHOR(), RES_CNTNT(), RES_FOLLOW_TEXT_FLOW(), RES_FRAMEDIR(), RES_FRM_SIZE(), RES_HORI_ORIENT(), RES_TEXT_VERT_ADJUST(), RES_VERT_ORIENT(), SwFormat::SetFormatAttr(), IDocumentState::SetModified(), SwFrameFormat::SetOtherTextBoxFormat(), TypeTextFrame, UNO_NAME_ANCHOR_TYPE, UNO_NAME_BOTTOM_BORDER, UNO_NAME_FILL_TRANSPARENCE, UNO_NAME_HORI_ORIENT, UNO_NAME_HORI_ORIENT_POSITION, UNO_NAME_HORI_ORIENT_RELATION, UNO_NAME_IS_FOLLOWING_TEXT_FLOW, UNO_NAME_LEFT_BORDER, UNO_NAME_RIGHT_BORDER, UNO_NAME_SIZE_TYPE, UNO_NAME_SURROUND, UNO_NAME_TEXT_AUTOGROWHEIGHT, UNO_NAME_TEXT_VERT_ADJUST, UNO_NAME_TEXT_WRITINGMODE, UNO_NAME_TOP_BORDER, UNO_NAME_VERT_ORIENT, UNO_NAME_VERT_ORIENT_POSITION, UNO_NAME_VERT_ORIENT_RELATION, and sw::XTextRangeToSwPaM().

Referenced by SwDrawShell::Execute(), and SwXShape::setPropertyValue().

void SwTextBoxHelper::destroy ( SwFrameFormat pShape)
static
bool SwTextBoxHelper::doTextBoxPositioning ( SwFrameFormat pShape)
static
bool SwTextBoxHelper::DoTextBoxZOrderCorrection ( SwFrameFormat pShape)
static
uno::Any SwTextBoxHelper::getByIndex ( SdrPage const *  pPage,
sal_Int32  nIndex 
)
static

Get a shape by index, excluding TextBoxes.

Exceptions
css::lang::IndexOutOfBoundsException

Definition at line 263 of file textboxhelper.cxx.

References SdrObjList::GetObj(), SdrObjList::GetObjCount(), SdrObject::getUnoShape(), i, SdrObject::IsTextBox(), com::sun::star::uno::makeAny(), nCount, and p.

Referenced by SwXDrawPage::getByIndex().

sal_Int32 SwTextBoxHelper::getCount ( const SwDoc rDoc)
static

Count number of shapes in the document, excluding TextBoxes.

Definition at line 251 of file textboxhelper.cxx.

References SwDoc::GetSpzFrameFormats(), and RES_FLYFRMFMT().

Referenced by SwXDrawPage::getCount().

sal_Int32 SwTextBoxHelper::getCount ( SdrPage const *  pPage)
static

Count number of shapes on the page, excluding TextBoxes.

Definition at line 238 of file textboxhelper.cxx.

References SdrObjList::GetObj(), SdrObjList::GetObjCount(), i, SdrObject::IsTextBox(), and p.

sal_Int32 SwTextBoxHelper::getOrdNum ( const SdrObject pObject)
static

Get the order of the shape, excluding TextBoxes.

Definition at line 289 of file textboxhelper.cxx.

References SdrObject::GetOrdNum(), SdrObject::getSdrPageFromSdrObject(), i, SdrObject::IsTextBox(), p, and SAL_WARN.

Referenced by SwXShape::getPropertyValue().

SwFrameFormat * SwTextBoxHelper::getOtherTextBoxFormat ( const SwFrameFormat pFormat,
sal_uInt16  nType 
)
static
static SwFrameFormat* SwTextBoxHelper::getOtherTextBoxFormat ( css::uno::Reference< css::drawing::XShape > const &  xShape)
static

If we have an associated TextFrame, then return that.

void SwTextBoxHelper::getProperty ( SwFrameFormat const *  pShape,
sal_uInt16  nWID,
sal_uInt8  nMemberID,
css::uno::Any &  rValue 
)
static
css::uno::Any SwTextBoxHelper::getProperty ( SwFrameFormat const *  pShape,
const OUString &  rPropName 
)
static

Get a property of the underlying TextFrame.

Definition at line 587 of file textboxhelper.cxx.

References SwXTextFrame::CreateXTextFrame(), SwFormat::GetDoc(), and RES_DRAWFRMFMT().

void SwTextBoxHelper::getShapeWrapThrough ( const SwFrameFormat pTextBox,
bool &  rWrapThrough 
)
static
tools::Rectangle SwTextBoxHelper::getTextRectangle ( SwFrameFormat pShape,
bool  bAbsolute = true 
)
static
uno::Reference< text::XTextFrame > SwTextBoxHelper::getUnoTextFrame ( css::uno::Reference< css::drawing::XShape > const &  xShape)
static

If we have an associated TextFrame, then return its XTextFrame.

Definition at line 335 of file textboxhelper.cxx.

References getOtherTextBoxFormat().

Referenced by DocxAttributeOutput::GetUnoTextFrame(), and SwXDrawPage::remove().

bool SwTextBoxHelper::hasTextFrame ( const SdrObject pObj)
static

Returns true if the SdrObject has a SwTextFrame otherwise false.

Definition at line 227 of file textboxhelper.cxx.

References getOtherTextBoxFormat(), and SdrObject::getWeakUnoShape().

Referenced by SwDrawShell::ExecDrawDlg(), and SwDrawBaseShell::Execute().

std::optional< bool > SwTextBoxHelper::isAnchorTypeDifferent ( SwFrameFormat pShape)
static

Returns true if the anchor different for the given shape, and the associated textframe of the given shape.

Note: In case of AS_CHAR anchor the anchor type must be different, because if not, layout breaks, but this situation also handled by this function, and returns true in that case too.

Definition at line 1239 of file textboxhelper.cxx.

References SwFormat::GetAnchor(), SwFormatAnchor::GetAnchorId(), and RES_DRAWFRMFMT().

bool SwTextBoxHelper::isTextBox ( const SwFrameFormat pFormat,
sal_uInt16  nType 
)
static
bool SwTextBoxHelper::isTextBoxShapeHasValidTextFrame ( SwFrameFormat pShape)
static

Returns true if the given shape has a valid textframe.

Definition at line 1256 of file textboxhelper.cxx.

References RES_DRAWFRMFMT(), RES_FLYFRMFMT(), SAL_WARN, and SwFormat::Which().

Referenced by SwFEShell::SelectionToBottom(), and SwFEShell::SelectionToTop().

text::TextContentAnchorType SwTextBoxHelper::mapAnchorType ( const RndStdIds rAnchorID)
static

There are two types of enum of anchor type, so this function maps this.

Definition at line 872 of file textboxhelper.cxx.

References SAL_WARN.

uno::Any SwTextBoxHelper::queryInterface ( const SwFrameFormat pShape,
const css::uno::Type &  rType 
)
static

Get interface of a shape's TextBox, if there is any.

Definition at line 363 of file textboxhelper.cxx.

Referenced by SwXShape::queryInterface().

void SwTextBoxHelper::restoreLinks ( std::set< ZSortFly > &  rOld,
std::vector< SwFrameFormat * > &  rNew,
SavedLink rSavedLinks 
)
static

Undo the effect of saveLinks() + individual resetLink() calls.

Definition at line 851 of file textboxhelper.cxx.

References i.

Referenced by sw::DocumentContentOperationsManager::CopyFlyInFlyImpl().

void SwTextBoxHelper::saveLinks ( const SwFrameFormats rFormats,
std::map< const SwFrameFormat *, const SwFrameFormat * > &  rLinks 
)
static

Saves the current shape -> textbox links in a map, so they can be restored later.

Definition at line 841 of file textboxhelper.cxx.

References RES_DRAWFRMFMT().

Referenced by sw::DocumentContentOperationsManager::CopyFlyInFlyImpl().

bool SwTextBoxHelper::setWrapThrough ( SwFrameFormat pShape)
static

Sets the surround to through for the textframe of the given shape, not to interfere with the layout.

Returns true on success.

Definition at line 1064 of file textboxhelper.cxx.

References SwXTextFrame::CreateXTextFrame(), SwFormat::GetDoc(), SwDoc::GetIDocumentUndoRedo(), com::sun::star::uno::makeAny(), RES_DRAWFRMFMT(), SAL_WARN, UNO_NAME_SURROUND, and xFrame.

void SwTextBoxHelper::syncFlyFrameAttr ( SwFrameFormat rShape,
SfxItemSet const &  rSet 
)
static
void SwTextBoxHelper::syncProperty ( SwFrameFormat pShape,
sal_uInt16  nWID,
sal_uInt8  nMemberID,
const css::uno::Any &  rValue 
)
static

Sync property of TextBox with the one of the shape.

Definition at line 602 of file textboxhelper.cxx.

References BOTTOM_BORDER_DISTANCE, CONVERT_TWIPS, convertTwipToMm100(), SwXTextFrame::CreateXTextFrame(), FN_TEXT_RANGE, SwFormat::GetAnchor(), SwFormatAnchor::GetAnchorId(), SwFormat::GetDoc(), tools::Rectangle::getHeight(), tools::Rectangle::getWidth(), tools::Rectangle::getX(), tools::Rectangle::getY(), tools::Rectangle::IsEmpty(), LEFT_BORDER_DISTANCE, MID_ALLOW_OVERLAP, MID_ANCHOR_ANCHORTYPE, MID_CHAIN_NEXTNAME, MID_CHAIN_PREVNAME, MID_FRMSIZE_IS_AUTO_HEIGHT, MID_FRMSIZE_REL_HEIGHT_RELATION, MID_FRMSIZE_REL_WIDTH_RELATION, MID_FRMSIZE_WIDTH_TYPE, MID_HORIORIENT_ORIENT, MID_HORIORIENT_POSITION, MID_HORIORIENT_RELATION, MID_L_MARGIN, MID_R_MARGIN, MID_VERTORIENT_ORIENT, MID_VERTORIENT_POSITION, MID_VERTORIENT_RELATION, nValue, RES_ANCHOR(), RES_BOX(), RES_CHAIN(), RES_DRAWFRMFMT(), RES_FRAMEDIR(), RES_FRM_SIZE(), RES_HORI_ORIENT(), RES_LR_SPACE(), RES_OPAQUE(), RES_TEXT_VERT_ADJUST(), RES_VERT_ORIENT(), RES_WRAP_INFLUENCE_ON_OBJPOS(), RIGHT_BORDER_DISTANCE, SAL_WARN, SwFormatAnchor::SetAnchor(), SwFormat::SetFormatAttr(), TOP_BORDER_DISTANCE, UNO_NAME_ALLOW_OVERLAP, UNO_NAME_BOTTOM_BORDER_DISTANCE, UNO_NAME_CHAIN_NEXT_NAME, UNO_NAME_CHAIN_PREV_NAME, UNO_NAME_FRAME_ISAUTOMATIC_HEIGHT, UNO_NAME_HORI_ORIENT, UNO_NAME_HORI_ORIENT_POSITION, UNO_NAME_HORI_ORIENT_RELATION, UNO_NAME_LEFT_BORDER_DISTANCE, UNO_NAME_LEFT_MARGIN, UNO_NAME_OPAQUE, UNO_NAME_RELATIVE_HEIGHT_RELATION, UNO_NAME_RELATIVE_WIDTH_RELATION, UNO_NAME_RIGHT_BORDER_DISTANCE, UNO_NAME_RIGHT_MARGIN, UNO_NAME_SIZE, UNO_NAME_TEXT_VERT_ADJUST, UNO_NAME_TOP_BORDER_DISTANCE, UNO_NAME_VERT_ORIENT, UNO_NAME_VERT_ORIENT_POSITION, UNO_NAME_VERT_ORIENT_RELATION, UNO_NAME_WIDTH_TYPE, UNO_NAME_WRITING_MODE, and sw::XTextRangeToSwPaM().

Referenced by SwAnchoredDrawObject::GetObjBoundRect(), SwXShape::setPropertyValue(), and SwXShape::setSize().

void SwTextBoxHelper::syncProperty ( SwFrameFormat pShape,
std::u16string_view  rPropertyName,
const css::uno::Any &  rValue 
)
static
void SwTextBoxHelper::updateTextBoxMargin ( SdrObject pObj)
static

The documentation for this class was generated from the following files: