34#include <svx/strings.hrc>
35#include <svx/svxids.hrc>
39#include <editeng/editids.hrc>
43#include <osl/diagnose.h>
44#include <rtl/math.hxx>
50#define CTRL_ITEM_COUNT 14
52#define OBJECT_BORDER_COUNT 4
55#define INDENT_FIRST_LINE 2
56#define INDENT_LEFT_MARGIN 3
57#define INDENT_RIGHT_MARGIN 4
128 size_t nSize2 =
sizeof(sal_uInt16) *
nPercSize;
166 Ruler(pParent, nWinStyle),
170 bAppSetNullOffset(false),
182 pBindings(&rBindings),
189 mbCoarseSnapping(false),
218 sal_uInt16 nTabStopId =
bHorz ? SID_ATTR_TABSTOP : SID_ATTR_TABSTOP_VERTICAL;
235 rIndent.nStyle = RulerIndentStyle::Top;
238 mpIndents[0].nStyle = RulerIndentStyle::Top;
239 mpIndents[1].nStyle = RulerIndentStyle::Top;
314 double aHalfTick = aTick / 2.0;
315 double aHalfTickPixel = aTickPixel / 2.0;
317 if (aSnapToFrameMargin)
319 if (aPosition > aLeftFramePosition - aHalfTickPixel && aPosition < aLeftFramePosition + aHalfTickPixel)
320 return aLeftFramePosition;
322 if (aPosition > aRightFramePosition - aHalfTickPixel && aPosition < aRightFramePosition + aHalfTickPixel)
323 return aRightFramePosition;
330 tools::Long aTranslatedPosition = aPosition - aPointOfReferencePixel;
334 aPositionLogic = rtl::math::round((aPositionLogic + aHalfTick) / aTick) * aTick;
338 return aPosition + aPointOfReferencePixel;
427 return bHorz ? nIdx : nIdx + 2;
439 RulerMarginStyle::NONE : RulerMarginStyle::Sizeable;
538 if (aSelection.
eType == RulerType::DontKnow)
540 SetQuickHelpText(
"");
546 sal_Int32 aNoDecimalPlaces = 1 + std::ceil(std::log10(aRoundingFactor));
547 OUString sUnit = OUString::createFromAscii(aUnitData.
aUnitStr);
549 switch (aSelection.
eType)
551 case RulerType::Indent:
562 nIndentValue =
mxParaItem->GetTextFirstLineOffset();
567 fValue = rtl::math::round(fValue / aUnitData.
nTickUnit, aNoDecimalPlaces);
569 SetQuickHelpText(OUString::number(fValue) +
" " + sUnit);
572 case RulerType::Border:
583 fStart = rtl::math::round(fStart / aUnitData.
nTickUnit, aNoDecimalPlaces);
585 fEnd = rtl::math::round(fEnd / aUnitData.
nTickUnit, aNoDecimalPlaces);
588 OUString::number(fStart) +
" " + sUnit +
" - " +
589 OUString::number(fEnd) +
" " + sUnit );
592 case RulerType::Margin1:
603 fValue = rtl::math::round(fValue / aUnitData.
nTickUnit, aNoDecimalPlaces);
604 SetQuickHelpText(OUString::number(fValue) +
" " + sUnit);
608 case RulerType::Margin2:
619 fValue = rtl::math::round(fValue / aUnitData.
nTickUnit, aNoDecimalPlaces);
620 SetQuickHelpText(OUString::number(fValue) +
" " + sUnit);
626 SetQuickHelpText(
"");
710 mxRulerImpl->bIsTableRows = (pItem->
Which() == SID_RULER_ROWS || pItem->
Which() == SID_RULER_ROWS_VERTICAL);
738 bool bProtectColumns =
742 if( !bProtectColumns )
744 nStyleFlags |= RulerBorderStyle::Moveable;
746 nStyleFlags |= RulerBorderStyle::Sizeable;
754 for(sal_uInt16
i = 0;
i < nBorders; ++
i)
758 mpBorders[
i].nStyle |= RulerBorderStyle::Invisible;
841 leftFirstLine = leftMargin -
mxParaItem->GetTextFirstLineOffset();
847 leftFirstLine = leftMargin +
mxParaItem->GetTextFirstLineOffset();
927 Point aOwnPos = GetPosPixel();
933 Size aOwnSize = GetSizePixel();
935 lPos = aOwnSize.
Width() - aEdtWinSize.
Width();
936 lPos -= (aEdtWinPos - aOwnPos).
X();
940 Point aPos(aEdtWinPos - aOwnPos);
941 lPos =
bHorz ? aPos.
X() : aPos.
Y();
1001 return SvxTabAdjust::Left;
1021 const tools::Long lParaIndent = nLeftFrameMargin + nParaItemTxtLeft;
1022 const tools::Long lRightMargin = nRightFrameMargin - nParaItemTxtLeft;
1035 const sal_uInt16 nDefTabBuf = lPosPixel > lRightIndent || lLastTab > lRightIndent
1037 :
static_cast<sal_uInt16
>( (lRightIndent - lPosPixel) / nDefTabDist );
1055 lTabStartLogic = lParaIndent + lRightMargin - lTabStartLogic;
1061 lLastTabOffsetLogic = pTab->
GetTabPos();
1062 tools::Long lPos = lTabStartLogic + (bRTL ? -lLastTabOffsetLogic : lLastTabOffsetLogic);
1069 lLastTabOffsetLogic -= lLastTabOffsetLogic % lCurrentDefTabDist;
1072 for (j = 0; j < nDefTabBuf; ++j)
1075 lLastTabOffsetLogic += lCurrentDefTabDist;
1208 "issue #126721# - invalid current column!");
1214 nLeft =
mxColumnItem->GetActiveColumnDescription().nStart;
1282#define NEG_FLAG ( (nFlags & SvxRulerSupportFlags::NEGATIVE_MARGINS) == \
1283 SvxRulerSupportFlags::NEGATIVE_MARGINS )
1284#define TAB_FLAG ( mxColumnItem && mxColumnItem->IsTable() )
1296 if((bLeft || bHoriRows) && lDragPos <
nMaxLeft)
1298 else if((bRight||bHoriRows) && lDragPos >
nMaxRight)
1300 return lDragPos - lNullPix;
1312 pTabs[
i].
nPos += lDiff;
1325 if (aDragPosition == 0)
1339 bool bProtectColumns =
1344 bProtectColumns ? RulerMarginStyle::NONE : RulerMarginStyle::Sizeable;
1471 bool bProtectColumns =
1475 const RulerMarginStyle nMarginStyle = bProtectColumns ? RulerMarginStyle::NONE : RulerMarginStyle::Sizeable;
1530 if(lTabPosition != -1)
1534 Point(lTabPosition, -aZero.
Y() + nHeight)),
1535 ShowTrackFlags::Split | ShowTrackFlags::Clip );
1546 Point(lTabPosition, -aZero.
Y() + nHeight) ),
1547 ShowTrackFlags::Clip | ShowTrackFlags::Split );
1554 if(lTabPosition != -1)
1558 Point(-aZero.
X() + nWidth, lTabPosition)),
1559 ShowTrackFlags::Split | ShowTrackFlags::Clip );
1571 Point(-aZero.
X()+nWidth, lTabPosition)),
1572 ShowTrackFlags::Clip | ShowTrackFlags::Split );
1600 mpTabs[nIdx].nStyle &= ~RULER_STYLE_INVISIBLE;
1606 mpTabs[nIdx].nPos = aDragPosition;
1618 mpTabs[
i].nStyle &= ~RULER_STYLE_INVISIBLE;
1623 mpTabs[nIdx].nPos = aDragPosition;
1629 mpTabs[nIdx].nStyle &= ~RULER_STYLE_INVISIBLE;
1648 for(sal_uInt16 j=0;j<
mxRulerImpl->nControllerItems;j++)
1673 mpTabs[
i].nPos += lDifference;
1686 bool bLeftIndentsCorrected =
false;
1687 bool bRightIndentsCorrected =
false;
1708 case RulerDragSize::Move:
1728 bRightIndentsCorrected =
true;
1734 bLeftIndentsCorrected =
true;
1746 OSL_FAIL(
"svx::SvxRuler::DragBorders(), unknown drag type!" );
1748 case RulerType::Border:
1761 nStartLimit =
nIndex - 1;
1774 case RulerType::Margin1:
1779 case RulerType::Margin2:
1787 for(
int i = nStartLimit;
i >= nLimit; --
i)
1802 bRightIndentsCorrected =
true;
1808 bLeftIndentsCorrected =
true;
1869 case RulerDragSize::N1:
1876 case RulerDragSize::N2:
1884 if(!bRightIndentsCorrected &&
1886 nDragSize != RulerDragSize::N2 &&
1892 else if(!bLeftIndentsCorrected &&
1894 nDragSize != RulerDragSize::N1 &&
1921 sal_uInt16
nId = SID_ATTR_LONG_LRSPACE;
1984 nId = SID_ATTR_LONG_ULSPACE;
2002 lNewValue = (rtl::math::round(lNewValue /
static_cast<double>(aUnitData.
nTickUnit) * aRoundingFactor) / aRoundingFactor) * aUnitData.
nTickUnit;
2092 mxParaItem->SetTextFirstLineOffset(sal::static_int_cast<short>(nNewFirstLineOffset));
2096 sal_uInt16 nParagraphId =
bHorz ? SID_ATTR_PARA_LRSPACE : SID_ATTR_PARA_LRSPACE_VERTICAL;
2116 for ( sal_uInt16
i = 0;
i < pItem->
Count(); )
2118 if ( SvxTabAdjust::Default == (*pItem)[
i].GetAdjustment() )
2127 for(j = 0; j < nCoreIdx; ++j)
2186 sal_uInt16 nTabStopId =
bHorz ? SID_ATTR_TABSTOP : SID_ATTR_TABSTOP_VERTICAL;
2247 sal_uInt16 nColId =
mxRulerImpl->bIsTableRows ? (
bHorz ? SID_RULER_ROWS : SID_RULER_ROWS_VERTICAL) :
2248 (
bHorz ? SID_RULER_BORDERS : SID_RULER_BORDERS_VERTICAL);
2302 case RulerType::Margin2:
2303 case RulerType::Margin1:
2304 case RulerType::Border:
2318 if(
eType != RulerType::Border)
2344 sal_uInt16 nStartBorder;
2345 sal_uInt16 nEndBorder;
2348 nStartBorder = nIdx + 1;
2363 for(sal_uInt16
i = nStartBorder;
i < nEndBorder; ++
i)
2372 mxRulerImpl->pPercBuf[
i] =
static_cast<sal_uInt16
>((lActWidth * 1000)
2374 mxRulerImpl->pBlockBuf[
i] =
static_cast<sal_uInt16
>(lActBorderSum);
2381 for(sal_uInt16 ii = nStart; ii <
mxColumnItem->Count() - 1; ++ii)
2395 mxRulerImpl->pPercBuf[
i] =
static_cast<sal_uInt16
>((lActWidth * 1000)
2397 mxRulerImpl->pBlockBuf[
i] =
static_cast<sal_uInt16
>(lActBorderSum);
2403 case RulerType::Tab:
2454 if( RulerType::Tab ==
eType ||
2455 ( ( RulerType::Border ==
eType ||
2456 RulerType::Margin1 ==
eType ||
2457 RulerType::Margin2 ==
eType ) &&
2497 bool bContentProtected =
mxRulerImpl->aProtectItem->IsContentProtected();
2498 if( bContentProtected )
return;
2508 nTabPos = (
mxRulerImpl->bIsTabsRelativeToIndent ?
2535 case RulerType::Margin1:
2623 case RulerType::Margin2:
2701 case RulerType::Border:
2706 case RulerDragSize::N1 :
2737 case RulerDragSize::Move:
2799 if(nLeftCol==USHRT_MAX)
2805 if(nActRightCol == nIdx)
2812 if(nActLeftCol!=USHRT_MAX)
2821 if(nActLeftCol!=USHRT_MAX)
2843 if(nRightCol==USHRT_MAX)
2869 sal_uInt16 nNotHiddenRightCol =
2872 if( nActLeftCol == nIdx )
2907 case RulerDragSize::N2:
2940 case RulerType::Indent:
3029 case RulerType::Tab:
3057 bool bContentProtected =
mxRulerImpl->aProtectItem->IsContentProtected();
3070 case RulerType::Margin1:
3071 case RulerType::Margin2:
3084 case RulerType::Border:
3095 case RulerType::Indent:
3097 if( bContentProtected )
3110 case RulerType::Tab:
3111 if( bContentProtected )
3136 case RulerType::Margin1:
3140 case RulerType::Margin2:
3144 case RulerType::Indent:
3147 case RulerType::Border:
3153 case RulerType::Tab:
3178 case RulerType::Margin1:
3179 case RulerType::Margin2:
3191 case RulerType::Border:
3205 case RulerType::Indent:
3210 case RulerType::Tab:
3290 sal_uInt16 nTabStopId =
bHorz ? SID_ATTR_TABSTOP : SID_ATTR_TABSTOP_VERTICAL;
3300 RID_SVXSTR_RULER_TAB_LEFT,
3301 RID_SVXSTR_RULER_TAB_RIGHT,
3302 RID_SVXSTR_RULER_TAB_CENTER,
3303 RID_SVXSTR_RULER_TAB_DECIMAL
3309 if ( CommandEventId::ContextMenu == rCommandEvent.
GetCommand() )
3316 std::unique_ptr<weld::Menu> xMenu(xBuilder->weld_menu(
"menu"));
3332 xDev->SetOutputSize(aSz);
3337 Color aFillColor(xDev->GetSettings().GetStyleSettings().GetShadowColor());
3338 DrawTab(*xDev, aFillColor, aPt, nStyle);
3340 OUString
sId(OUString::number(
i + 1));
3350 const int nCount = xMenu->n_children();
3355 OUString sIdent = xMenu->get_id(
i - 1);
3357 xMenu->set_active(sIdent, eMenuUnit == eUnit);
3360 if (eMenuUnit == FieldUnit::M ||
3361 eMenuUnit == FieldUnit::KM ||
3362 eMenuUnit == FieldUnit::FOOT ||
3363 eMenuUnit == FieldUnit::MILE)
3365 xMenu->remove(sIdent);
3367 else if (( eMenuUnit == FieldUnit::CHAR ) && !
bHorz )
3369 xMenu->remove(sIdent);
3371 else if (( eMenuUnit == FieldUnit::LINE ) &&
bHorz )
3373 xMenu->remove(sIdent);
3377 MenuSelect(xMenu->popup_at_rect(pPopupParent, aRect));
3382 Ruler::Command( rCommandEvent );
3387 bool bForceDontConsiderHidden,
3388 sal_uInt16 nAct )
const
3390 if( nAct == USHRT_MAX )
3395 bool bConsiderHidden = !bForceDontConsiderHidden &&
3398 while( nAct < mxColumnItem->
Count() - 1 )
3400 if (
mxColumnItem->At(nAct).bVisible || bConsiderHidden)
3409 bool bForceDontConsiderHidden,
3410 sal_uInt16 nAct )
const
3412 if(nAct == USHRT_MAX)
3415 sal_uInt16 nLeftOffset = 1;
3417 bool bConsiderHidden = !bForceDontConsiderHidden &&
3420 while(nAct >= nLeftOffset)
3422 if (
mxColumnItem->At(nAct - nLeftOffset).bVisible || bConsiderHidden)
3423 return nAct - nLeftOffset;
3431 bool bForceDontConsiderHidden,
3432 sal_uInt16 nAct)
const
3438 bool bForceDontConsiderHidden,
3439 sal_uInt16 nAct)
const
3461 if(nCol == USHRT_MAX)
3477 if(lWidth < lMinSpace)
3484 if(lWidth < lMinSpace)
3490 if(nCol == USHRT_MAX)
3501 while(nActCol <
mpBorders.size() || nActCol == USHRT_MAX)
3504 if(nActCol == USHRT_MAX)
3518 if(nRight != USHRT_MAX)
3520 lWidth =
mpBorders[nRight].nPos - lOldPos;
3528 if(lWidth < lMinSpace)
3530 if(nActCol == USHRT_MAX)
3535 _nMaxRight -=
static_cast<tools::Long>(lFences +
glMinFrame /
static_cast<float>(lMinSpace) * lColumns);
static bool GetLayoutRTL()
static std::unique_ptr< weld::Builder > CreateBuilder(weld::Widget *pParent, const OUString &rUIFile, bool bMobile=false, sal_uInt64 nLOKWindowId=0)
CommandEventId GetCommand() const
const Point & GetMousePosPixel() const
SAL_WARN_UNUSED_RESULT Point LogicToLogic(const Point &rPtSource, const MapMode *pMapModeSource, const MapMode *pMapModeDest) const
constexpr tools::Long Y() const
constexpr tools::Long X() const
void SetPagePos(tools::Long nOff=0, tools::Long nWidth=0)
virtual void MouseMove(const MouseEvent &rMEvt) override
const MapMode & GetCurrentMapMode() const
sal_uInt16 GetDragModifier() const
tools::Long GetMargin1() const
void SetTabs(sal_uInt32 n=0, const RulerTab *pTabAry=nullptr)
bool IsDragCanceled() const
void SetNullOffset(tools::Long nPos)
RulerType GetDragType() const
const RulerSelection & GetHoverSelection() const
void SetWinPos(tools::Long nOff, tools::Long nWidth=0)
tools::Long GetClickPos() const
bool IsDragDelete() const
virtual void dispose() override
tools::Long GetNullOffset() const
void SetLeftFrameMargin(tools::Long nPos)
void SetIndents(sal_uInt32 n=0, const RulerIndent *pIndentAry=nullptr)
static void DrawTab(vcl::RenderContext &rRenderContext, const Color &rFillColor, const Point &rPos, sal_uInt16 nStyle)
const RulerUnitData & GetCurrentRulerUnit() const
void SetExtraType(RulerExtra eNewExtraType, sal_uInt16 nStyle=0)
RulerDragSize GetDragSize() const
void SetRightFrameMargin(tools::Long nPos)
void SetBorders(sal_uInt32 n=0, const RulerBorder *pBrdAry=nullptr)
void Deactivate() override
tools::Long GetMargin2() const
FieldUnit GetUnit() const
void SetTextRTL(bool bRTL)
RulerType GetRulerType(const Point &rPos, sal_uInt16 *pAryPos=nullptr)
sal_uInt16 GetDragAryPos() const
void SetUnit(FieldUnit eNewUnit)
tools::Long GetDragPos() const
void LeaveRegistrations(std::string_view pFile={}, int nLine=0)
sal_uInt16 EnterRegistrations(std::string_view pFile={}, int nLine=0)
void Update(sal_uInt16 nId)
SfxDispatcher * GetDispatcher() const
const SfxPoolItem * ExecuteList(sal_uInt16 nSlot, SfxCallMode nCall, std::initializer_list< SfxPoolItem const * > args, std::initializer_list< SfxPoolItem const * > internalargs=std::initializer_list< SfxPoolItem const * >())
void StartListening(SfxBroadcaster &rBroadcaster, DuplicateHandling eDuplicateHanding=DuplicateHandling::Unexpected)
void EndListening(SfxBroadcaster &rBroadcaster, bool bRemoveAllDuplicates=false)
constexpr tools::Long Height() const
constexpr tools::Long Width() const
virtual SvxProtectItem * Clone(SfxItemPool *pPool=nullptr) const override
void AdjustMargin1(tools::Long lDiff)
tools::Long ConvertHSizePixel(tools::Long lSize) const
std::unique_ptr< SvxLRSpaceItem > mxBorderItem
virtual void MouseMove(const MouseEvent &rMEvt) override
sal_uInt16 GetObjectBordersOff(sal_uInt16 nIdx) const
std::vector< RulerBorder > mpObjectBorders
void SetDefTabDist(tools::Long)
virtual void Command(const CommandEvent &rCEvt) override
tools::Long lLogicNullOffset
void DrawLine_Impl(tools::Long &lTabPos, int, bool Horizontal)
tools::Long lInitialDragPos
void StartListening_Impl()
virtual void Drag() override
void UpdateFrameMinMax(const SfxRectangleItem *pItem)
tools::Long GetLogicRightIndent() const
tools::Long GetLeftFrameMargin() const
void UpdateParaContents_Impl(tools::Long lDiff, UpdateType)
tools::Long ConvertPosLogic(tools::Long lPos) const
tools::Long GetRightIndent() const
tools::Long GetFirstLineIndent() const
tools::Long PixelVAdjust(tools::Long lPos, tools::Long lPos2) const
tools::Long RoundToCurrentMapMode(tools::Long lValue) const
void SetActive(bool bOn=true)
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
virtual bool StartDrag() override
tools::Long GetLeftIndent() const
tools::Long ConvertVSizeLogic(tools::Long lSize) const
void TabMenuSelect(std::u16string_view rIdent)
tools::Long ConvertPosPixel(tools::Long lPos) const
tools::Long ConvertVPosLogic(tools::Long lPos) const
tools::Long GetLeftMin() const
tools::Long GetRightMax() const
virtual ~SvxRuler() override
tools::Long GetFrameLeft() const
void MenuSelect(std::u16string_view ident)
std::vector< RulerIndent > mpIndents
virtual void ExtraDown() override
tools::Long GetRightFrameMargin() const
tools::Long PixelHAdjust(tools::Long lPos, tools::Long lPos2) const
std::unique_ptr< SvxRuler_Impl > mxRulerImpl
tools::Long GetCorrectedDragPos(bool bLeft=true, bool bRight=true)
std::unique_ptr< SvxColumnItem > mxColumnItem
std::unique_ptr< SvxObjectItem > mxObjectItem
sal_uInt16 GetActRightColumn(bool bForceDontConsiderHidden=false, sal_uInt16 nAct=USHRT_MAX) const
std::unique_ptr< SvxLongLRSpaceItem > mxLRSpaceItem
tools::Long ConvertHSizeLogic(tools::Long lSize) const
SvxRulerDragFlags nDragType
tools::Long ConvertSizePixel(tools::Long lSize) const
tools::Long MakePositionSticky(tools::Long rValue, tools::Long aPointOfReference, bool aSnapToFrameMargin=true) const
std::unique_ptr< SfxRectangleItem > mxMinMaxItem
std::vector< RulerBorder > mpBorders
friend class SvxRulerItem
void UpdateTextRTL(const SfxBoolItem *pItem)
VclPtr< vcl::Window > pEditWin
std::unique_ptr< SvxPagePosSizeItem > mxPagePosItem
std::vector< RulerTab > mpTabs
tools::Long GetPageWidth() const
std::unique_ptr< SvxTabStopItem > mxTabStopItem
tools::Long ConvertHPosLogic(tools::Long lPos) const
tools::Long ConvertVPosPixel(tools::Long lPos) const
bool IsActLastColumn(bool bForceDontConsiderHidden=false, sal_uInt16 nAct=USHRT_MAX) const
sal_uInt16 GetActLeftColumn(bool bForceDontConsiderHidden=false, sal_uInt16 nAct=USHRT_MAX) const
virtual void EndDrag() override
SvxRuler(vcl::Window *pParent, vcl::Window *pEditWin, SvxRulerSupportFlags nRulerFlags, SfxBindings &rBindings, WinBits nWinStyle)
std::unique_ptr< SvxLRSpaceItem > mxParaItem
tools::Long ConvertSizeLogic(tools::Long lSize) const
std::vector< std::unique_ptr< SvxRulerItem > > pCtrlItems
std::unique_ptr< SvxLongULSpaceItem > mxULSpaceItem
tools::Long ConvertVSizePixel(tools::Long lSize) const
void UpdateBorder(const SvxLRSpaceItem *pItem)
void SetValues(RulerChangeType type, tools::Long value)
tools::Long lAppNullOffset
void SetNullOffsetLogic(tools::Long lOff)
tools::Long ConvertHPosPixel(tools::Long lPos) const
tools::Long CalcPropMaxRight(sal_uInt16 nCol=USHRT_MAX) const
void PrepareProportional_Impl(RulerType)
SvxRulerSupportFlags nFlags
virtual void Click() override
tools::Long PixelAdjust(tools::Long lPos, tools::Long lPos2) const
bool IsActFirstColumn(bool bForceDontConsiderHidden=false, sal_uInt16 nAct=USHRT_MAX) const
void SetTabsRelativeToIndent(bool bRel)
virtual void dispose() override
void Remove(const sal_uInt16 nPos, const sal_uInt16 nLen=1)
bool Insert(const SvxTabStop &rTab)
SvxTabAdjust & GetAdjustment()
reference_type * get() const
float GetDPIScaleFactor() const
const sal_uInt16 nVisCols
#define DBG_ASSERT(sCon, aError)
OUString SvxResId(TranslateId aId)
virtual sal_uInt32 GetId() const override
constexpr sal_uInt16 KEY_MOD2
constexpr sal_uInt16 KEY_MOD1
constexpr sal_uInt16 KEY_SHIFT
tools::Long const nRightMargin
tools::Long const nBorder
tools::Long const nLeftMargin
sal_Int32 toInt32(std::u16string_view str, sal_Int16 radix=10)
FieldUnit EnglishStringToMetric(std::u16string_view rEnglishMetricString)
weld::Window * GetPopupParent(vcl::Window &rOutWin, tools::Rectangle &rRect)
constexpr sal_uInt16 RULER_STYLE_DONTKNOW
constexpr sal_uInt16 RULER_TAB_CENTER
constexpr sal_uInt16 RULER_TAB_DEFAULT
constexpr sal_uInt16 RULER_TAB_RIGHT
constexpr sal_uInt16 RULER_STYLE_INVISIBLE
constexpr sal_uInt16 RULER_TAB_RTL
constexpr sal_uInt16 RULER_TAB_LEFT
@ PARAGRAPH_MARGINS_VERTICAL
@ OBJECT_SIZE_PROPORTIONAL
@ OBJECT_LEFT_INDENT_ONLY
constexpr sal_uInt16 RULER_TAB_DECIMAL
sal_uInt16 DPIScaleFactor
tools::Long lMaxRightLogic
void SetPercSize(sal_uInt16 nSize)
std::unique_ptr< SvxProtectItem > aProtectItem
std::unique_ptr< sal_uInt16[]> pPercBuf
tools::Long lMaxLeftLogic
std::unique_ptr< SfxBoolItem > pTextRTLItem
bool bIsTabsRelativeToIndent
sal_uInt16 nControllerItems
std::unique_ptr< sal_uInt16[]> pBlockBuf
constexpr tools::Long glMinFrame
const TranslateId RID_SVXSTR_RULER_TAB[]
static SvxTabAdjust ToAttrTab_Impl(sal_uInt16 eAdj)
#define INDENT_FIRST_LINE
#define INDENT_RIGHT_MARGIN
static sal_uInt16 ToSvTab_Impl(SvxTabAdjust eAdj)
#define OBJECT_BORDER_COUNT
static RulerTabData ruler_tab_svx
#define INDENT_LEFT_MARGIN
static void ModifyTabs_Impl(sal_uInt16 nCount, RulerTab *pTabs, tools::Long lDiff)