20#include <config_wasm_strip.h>
36#include <com/sun/star/accessibility/AccessibleEventId.hpp>
37#include <com/sun/star/accessibility/AccessibleStateType.hpp>
43#include <bitmaps.hlst>
50using ::com::sun::star::uno::Reference;
51using ::com::sun::star::uno::Any;
52using ::com::sun::star::accessibility::XAccessible;
60 "svx::GetFrameBorderTypeFromIndex - invalid index" );
67 "svx::GetIndexFromFrameBorderType - invalid frame border type" );
68 return static_cast< size_t >( eBorder ) - 1;
112 aTmp.GetUnion( rSource, rDest );
154 SAL_WARN(
"svx.dialog",
"svx::FrameBorder::SetState - use SetCoreStyle to make border visible" );
210 default:
SAL_WARN(
"svx.dialog",
"svx::FrameBorder::GetKeyboardNeighbor - unknown key code" );
216 mrFrameSel( rFrameSel ),
237 mbFullRepaint( true ),
238 mbAutoSelect( true ),
240#
if !ENABLE_WASM_STRIP_ACCESSIBILITY
253#if OSL_DEBUG_LEVEL >= 2
257 DBG_ASSERT( bOk,
"svx::FrameSelectorImpl::FrameSelectorImpl - missing entry in maAllBorders" );
275#if !ENABLE_WASM_STRIP_ACCESSIBILITY
278 rpChild->Invalidate();
291 if( (*aIt)->IsEnabled() )
315 RID_SVXBMP_FRMSEL_ARROW1,
316 RID_SVXBMP_FRMSEL_ARROW2,
317 RID_SVXBMP_FRMSEL_ARROW3,
318 RID_SVXBMP_FRMSEL_ARROW4,
319 RID_SVXBMP_FRMSEL_ARROW5,
320 RID_SVXBMP_FRMSEL_ARROW6,
321 RID_SVXBMP_FRMSEL_ARROW7,
322 RID_SVXBMP_FRMSEL_ARROW8,
323 RID_SVXBMP_FRMSEL_ARROW9,
324 RID_SVXBMP_FRMSEL_ARROW10,
325 RID_SVXBMP_FRMSEL_ARROW11,
326 RID_SVXBMP_FRMSEL_ARROW12,
327 RID_SVXBMP_FRMSEL_ARROW13,
328 RID_SVXBMP_FRMSEL_ARROW14,
329 RID_SVXBMP_FRMSEL_ARROW15,
330 RID_SVXBMP_FRMSEL_ARROW16
340 pColorAry1[0] =
Color( 0, 0, 0 );
342 pColorAry1[1] =
Color( 0, 255, 0 );
344 pColorAry1[2] =
Color( 255, 0, 255 );
351 aBmpEx.
Replace(pColorAry1, pColorAry2, 3);
372 tools::Long nBetwBordersSize = (((nMinSize - nFixedSize) / 2) - 1) | 1;
375 mnCtrlSize = 2 * nBetwBordersSize + nFixedSize;
385 size_t nCol, nCols, nRow, nRows;
431 const double fHorDiagAngle(atan2(fabs(aCellRange.
getHeight()), fabs(aCellRange.
getWidth())));
432 const double fVerDiagAngle(fHorDiagAngle > 0.0 ? M_PI_2 - fHorDiagAngle : 0.0);
436 std::vector< Point > aFocusVec;
458 (*aIt)->ClearClickArea();
466 tools::Long nClO = FRAMESEL_GEOM_WIDTH / 2 + FRAMESEL_GEOM_ADD_CLICK_OUTER;
540 SAL_WARN(
"svx.dialog",
"svx::FrameSelectorImpl::GetBorder - unknown border type" );
566 (*aIt)->MergeFocusToPolyPolygon( aPPoly );
567 aPPoly.
Optimize( PolyOptimizeFlags::CLOSE );
570 mpVirDev->DrawPolyPolygon( aPPoly );
575 DBG_ASSERT( rBorder.
IsEnabled(),
"svx::FrameSelectorImpl::DrawArrows - access to disabled border" );
593 int nImgIndex1 = -1, nImgIndex2 = -1;
599 aPos1 =
Point( nLinePos, nTLPos ); nImgIndex1 = 0;
600 aPos2 =
Point( nLinePos, nBRPos ); nImgIndex2 = 1;
606 aPos1 =
Point( nTLPos, nLinePos ); nImgIndex1 = 2;
607 aPos2 =
Point( nBRPos, nLinePos ); nImgIndex2 = 3;
611 aPos1 =
Point( nTLPos, nTLPos ); nImgIndex1 = 4;
612 aPos2 =
Point( nBRPos, nBRPos ); nImgIndex2 = 5;
615 aPos1 =
Point( nTLPos, nBRPos ); nImgIndex1 = 6;
616 aPos2 =
Point( nBRPos, nTLPos ); nImgIndex2 = 7;
657 rRightStyle.
Secn(), rRightStyle.
Dist(), rRightStyle.
Prim( ),
679 rBottomStyle.
Secn(), rBottomStyle.
Dist(), rBottomStyle.
Prim( ),
697 std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor2D(
700 aNewViewInformation2D));
703 pProcessor2D.reset();
728 (*aIt)->MergeFocusToPolyPolygon(aPPoly);
735 aPPoly.
Optimize(PolyOptimizeFlags::CLOSE);
738 rRenderContext.
Invert(aPPoly.
GetObject(nIdx), InvertFlags::TrackFrame);
755 DBG_ASSERT( rBorder.
IsEnabled(),
"svx::FrameSelectorImpl::SetBorderState - access to disabled border" );
759 rMod <<= AccessibleStateType::CHECKED;
761#if !ENABLE_WASM_STRIP_ACCESSIBILITY
763 size_t nVecIdx =
static_cast< size_t >( rBorder.
GetType() );
773#if !ENABLE_WASM_STRIP_ACCESSIBILITY
775 xRet->NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOld, aNew );
783 DBG_ASSERT( rBorder.
IsEnabled(),
"svx::FrameSelectorImpl::SetBorderCoreStyle - access to disabled border" );
809 DBG_ASSERT( rBorder.
IsEnabled(),
"svx::FrameSelectorImpl::SelectBorder - access to disabled border" );
810 rBorder.
Select( bSelect );
829 const SvxBorderLine& rFirstStyle = (*aIt)->GetCoreStyle();
830 for( ++aIt; bEqual && aIt.
Is(); ++aIt )
831 bEqual = ((*aIt)->GetCoreStyle() == rFirstStyle);
842 CustomWidgetController::SetDrawingArea(pDrawingArea);
851#if !ENABLE_WASM_STRIP_ACCESSIBILITY
859 mxImpl->Initialize( nFlags );
866 return mxImpl->GetBorder( eBorder ).IsEnabled();
871 return static_cast< sal_Int32
>(
mxImpl->maEnabBorders.size() );
879 size_t nVecIdx =
static_cast< size_t >(
nIndex );
880 if( nVecIdx < mxImpl->maEnabBorders.size() )
881 eBorder =
mxImpl->maEnabBorders[ nVecIdx ]->GetType();
894 return mxImpl->GetBorder( eBorder ).GetState();
899 const SvxBorderLine& rStyle =
mxImpl->GetBorder( eBorder ).GetCoreStyle();
901 return rStyle.GetOutWidth() ? &rStyle :
nullptr;
906 mxImpl->SetBorderCoreStyle(
mxImpl->GetBorderAccess( eBorder ), pStyle );
934 const SvxBorderLine& rStyle = (*aIt)->GetCoreStyle();
936 for( ++aIt; bFound && aIt.
Is(); ++aIt )
939 (rStyle.GetWidth() == (*aIt)->GetCoreStyle().GetWidth()) &&
940 (rStyle.GetBorderLineStyle() ==
941 (*aIt)->GetCoreStyle().GetBorderLineStyle());
946 rnWidth = rStyle.GetWidth();
947 rnStyle = rStyle.GetBorderLineStyle();
958 const SvxBorderLine& rStyle = (*aIt)->GetCoreStyle();
960 for( ++aIt; bFound && aIt.
Is(); ++aIt )
961 bFound = (rStyle.GetColor() == (*aIt)->GetCoreStyle().GetColor());
964 rColor = rStyle.GetColor();
971 return mxImpl->maSelectHdl;
976 mxImpl->maSelectHdl = rHdl;
981 return mxImpl->GetBorder( eBorder ).IsSelected();
986 mxImpl->SelectBorder(
mxImpl->GetBorderAccess( eBorder ),
true );
987#if !ENABLE_WASM_STRIP_ACCESSIBILITY
994 Any aOldValue, aNewValue;
995 aNewValue <<= AccessibleStateType::FOCUSED;
996 xRet->NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
1011 mxImpl->SelectBorder( **aIt, bSelect );
1017 mxImpl->SelectBorder( **aIt,
true );
1022 mxImpl->maCurrStyle.SetBorderLineStyle( nStyle );
1023 mxImpl->maCurrStyle.SetWidth( nWidth );
1030 mxImpl->maCurrStyle.SetColor(rColor);
1031 mxImpl->maCurrStyle.setComplexColor(rComplexColor);
1039 return mxImpl->maCurrStyle.GetBorderLineStyle();
1045#if !ENABLE_WASM_STRIP_ACCESSIBILITY
1055 size_t nVecIdx =
static_cast< size_t >( eBorder );
1056 if(
IsBorderEnabled( eBorder ) && (1 <= nVecIdx) && (nVecIdx <= mxImpl->maChildVec.size()) )
1059 if( !
mxImpl->maChildVec[ nVecIdx ].is() )
1061 xRet =
mxImpl->maChildVec[ nVecIdx ].get();
1073 Reference< XAccessible > xRet;
1075 if( (*aIt)->ContainsClickPoint( rPos ) )
1092 mxImpl->CopyVirDevToControl(rRenderContext);
1094 mxImpl->DrawAllTrackingRects(rRenderContext);
1118 mxImpl->SilentGrabFocus();
1125 bool bAnyClicked =
false;
1126 bool bNewSelected =
false;
1135 if( (*aIt)->ContainsClickPoint( aPos ) )
1139 if( !(*aIt)->IsSelected() )
1141 bNewSelected =
true;
1154 aDeselectBorders.push_back( *aIt );
1162 mxImpl->SelectBorder( **aIt,
false );
1164 if( bNewSelected || !
mxImpl->SelectedBordersEqual() )
1175 mxImpl->ToggleBorderState( **aIt );
1187 bool bHandled =
false;
1191 sal_uInt16 nCode = aKeyCode.
GetCode();
1197 mxImpl->ToggleBorderState( **aIt );
1207 if( !
mxImpl->maEnabBorders.empty() )
1216 eBorder =
mxImpl->GetBorder( eBorder ).GetKeyboardNeighbor( nCode );
1234 return CustomWidgetController::KeyInput(rKEvt);
1241 mxImpl->SelectBorder( *
mxImpl->maEnabBorders.front(),
true );
1243 mxImpl->DoInvalidate(
false );
1247 if (
mxImpl->maLeft.IsSelected())
1249 else if (
mxImpl->maRight.IsSelected())
1251 else if (
mxImpl->maTop.IsSelected())
1253 else if (
mxImpl->maBottom.IsSelected())
1255 else if (
mxImpl->maHor.IsSelected())
1257 else if (
mxImpl->maVer.IsSelected())
1259 else if (
mxImpl->maTLBR.IsSelected())
1261 else if (
mxImpl->maBLTR.IsSelected())
1267 CustomWidgetController::GetFocus();
1272 mxImpl->DoInvalidate(
false );
1273 CustomWidgetController::LoseFocus();
1278 mxImpl->InitVirtualDevice();
1279 CustomWidgetController::StyleUpdated();
1284 CustomWidgetController::Resize();
1288template<
typename Cont,
typename Iter,
typename Pred >
1290 maIt( rCont.
begin() ),
1296template<
typename Cont,
typename Iter,
typename Pred >
1299 do { ++maIt; }
while( Is() && !maPred( *maIt ) );
const StyleSettings & GetStyleSettings() const
static const AllSettings & GetSettings()
void Replace(const Color &rSearchColor, const Color &rReplaceColor)
const vcl::KeyCode & GetKeyCode() const
const Point & GetPosPixel() const
void DrawBitmapEx(const Point &rDestPt, const BitmapEx &rBitmapEx)
void Invert(const tools::Rectangle &rRect, InvertFlags nFlags=InvertFlags::NONE)
SAL_WARN_UNUSED_RESULT Point LogicToPixel(const Point &rLogicPt) const
constexpr tools::Long Y() const
constexpr tools::Long X() const
constexpr tools::Long Height() const
constexpr tools::Long Width() const
bool GetHighContrastMode() const
Template class for all types of frame border iterators.
FrameBorderIterBase(container_type &rCont)
tools::Rectangle GetClickBoundRect() const
void MergeFocusToPolyPolygon(tools::PolyPolygon &rPPoly) const
const frame::Style & GetUIStyle() const
void AddFocusPolygon(const tools::Polygon &rFocus)
FrameBorderType meKeyLeft
Internal style to draw lines.
bool ContainsClickPoint(const Point &rPos) const
FrameBorderType GetType() const
void AddClickRect(const tools::Rectangle &rRect)
void SetCoreStyle(const editeng::SvxBorderLine *pStyle)
FrameBorderType meKeyRight
Left neighbor for keyboard control.
frame::Style maUIStyle
Core style from application.
void SetState(FrameBorderState eState)
bool mbEnabled
Mouse click areas.
FrameBorderType meKeyTop
Right neighbor for keyboard control.
void Select(bool bSelect)
tools::PolyPolygon maFocusArea
Lower neighbor for keyboard control.
editeng::SvxBorderLine maCoreStyle
Frame border state (on/off/don't care).
FrameBorderState meState
Frame border type (position in control).
void SetKeyboardNeighbors(FrameBorderType eLeft, FrameBorderType eRight, FrameBorderType eTop, FrameBorderType eBottom)
FrameBorderType GetKeyboardNeighbor(sal_uInt16 nKeyCode) const
FrameBorderType meKeyBottom
Upper neighbor for keyboard control.
FrameBorder(FrameBorderType eType)
FrameBorderState GetState() const
static double GetDefaultPatternScale()
const FrameBorderType meType
void Enable(FrameSelFlags nFlags)
tools::PolyPolygon maClickArea
Focus drawing areas.
const Link< LinkParamNone *, void > & GetSelectHdl() const
Returns the current selection handler.
void SetColorToSelection(const Color &rColor, model::ComplexColor const &rComplexColor)
Sets the passed color to all selected frame borders.
virtual bool MouseButtonDown(const MouseEvent &rMEvt) override
const editeng::SvxBorderLine * GetFrameBorderStyle(FrameBorderType eBorder) const
Returns the style of the specified frame border, if it is visible.
virtual void StyleUpdated() override
void DeselectAllBorders()
Deselects all frame borders.
virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessible() override
bool IsAnyBorderVisible() const
Returns true, if any enabled frame border has a visible style (not "don't care").
FrameBorderType GetEnabledBorderType(sal_Int32 nIndex) const
Returns the border type from the passed index (counts only enabled frame borders).
bool IsBorderSelected(FrameBorderType eBorder) const
Returns true, if the specified frame border is selected.
virtual bool KeyInput(const KeyEvent &rKEvt) override
virtual void Resize() override
void SetBorderDontCare(FrameBorderType eBorder)
Sets the specified frame border to "don't care" state.
tools::Rectangle GetClickBoundRect(FrameBorderType eBorder) const
Returns the bounding rectangle of the specified frame border (if enabled).
void HideAllBorders()
Hides all enabled frame borders.
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect) override
bool GetVisibleWidth(tools::Long &rnWidth, SvxBorderLineStyle &rnStyle) const
Returns true, if all visible frame borders have equal widths.
void SelectBorder(FrameBorderType eBorder)
Selects or deselects the specified frame border.
void ShowBorder(FrameBorderType eBorder, const editeng::SvxBorderLine *pStyle)
Shows the specified frame border using the passed style, or hides it, if pStyle is 0.
void SelectAllBorders(bool bSelect)
Selects or deselects all frame borders.
bool SupportsDontCareState() const
Returns true, if the control supports the "don't care" frame border state.
SvxBorderLineStyle getCurrentStyleLineStyle() const
std::unique_ptr< FrameSelectorImpl > mxImpl
Pointer to accessibility object of the control.
sal_Int32 GetEnabledBorderCount() const
Returns the number of enabled frame borders.
virtual void LoseFocus() override
FrameBorderState GetFrameBorderState(FrameBorderType eBorder) const
Returns the state (visible/hidden/don't care) of the specified frame border.
void SetStyleToSelection(tools::Long nWidth, SvxBorderLineStyle nStyle)
Sets the passed line widths to all selected frame borders (in twips).
virtual void SetDrawingArea(weld::DrawingArea *pDrawingArea) override
bool IsAnyBorderSelected() const
Returns true, if any of the enabled frame borders is selected.
virtual void GetFocus() override
void SetSelectHdl(const Link< LinkParamNone *, void > &rHdl)
Sets the passed handler that is called if the selection of the control changes.
virtual ~FrameSelector() override
bool IsBorderEnabled(FrameBorderType eBorder) const
Returns true, if the specified frame border is enabled.
void Initialize(FrameSelFlags nFlags)
Initializes the control, enables/disables frame borders according to flags.
rtl::Reference< a11y::AccFrameSelector > mxAccess
rtl::Reference< a11y::AccFrameSelectorChild > GetChildAccessible(FrameBorderType eBorder)
Returns the accessibility child object of the specified frame border (if enabled).
bool GetVisibleColor(Color &rColor) const
Returns true, if all visible frame borders have equal color.
void SelectAllVisibleBorders()
Selects or deselects all visible frame borders (ignores hidden and "don't care" borders).
void SetXOffset(sal_Int32 nXOffset)
Sets the X output coordinate of the left column.
basegfx::B2DRange GetCellRange(sal_Int32 nCol, sal_Int32 nRow) const
Returns the output range of the cell (nCol,nRow).
void Initialize(sal_Int32 nWidth, sal_Int32 nHeight)
Reinitializes the array with the specified size.
void SetColumnStyleLeft(sal_Int32 nCol, const Style &rStyle)
Sets the left frame style of the specified column.
void SetRowStyleTop(sal_Int32 nRow, const Style &rStyle)
Sets the top frame style of the specified row.
void SetYOffset(sal_Int32 nYOffset)
Sets the Y output coordinate of the top row.
void SetCellStyleDiag(sal_Int32 nCol, sal_Int32 nRow, const Style &rTLBR, const Style &rBLTR)
Sets both diagonal frame styles of the specified cell (nCol,nRow).
drawinglayer::primitive2d::Primitive2DContainer CreateB2DPrimitiveArray() const
Draws the part of the array, that is inside the clipping range.
void SetAllColWidths(sal_Int32 nWidth)
Sets the same output width for all columns.
void SetRowStyleBottom(sal_Int32 nRow, const Style &rStyle)
Sets the bottom frame style of the specified row.
sal_Int32 GetColCount() const
Returns the number of columns in the array.
void SetColumnStyleRight(sal_Int32 nCol, const Style &rStyle)
Sets the right frame style of the specified column.
void SetAllRowHeights(sal_Int32 nHeight)
Sets the same output height for all rows.
sal_Int32 GetRowCount() const
Returns the number of rows in the array.
Contains the widths of primary and secondary line of a frame style.
void Clear()
Sets the frame style to invisible state.
void Set(double nP, double nD, double nS)
Sets the frame style to the passed line widths.
Color GetColorGap() const
Color GetColorSecn() const
Color GetColorPrim() const
SvxBorderLineStyle Type() const
bool IsUsed() const
Check if this style is used - this depends on it having any width definition.
double PatternScale() const
sal_uInt16 GetCode() const
sal_uInt16 GetModifier() const
bool Contains(const Point &rPoint) const
virtual OutputDevice & get_ref_device()=0
constexpr ::Color COL_BLACK(0x00, 0x00, 0x00)
#define DBG_ASSERT(sCon, aError)
@ InnerHorizontal
If set, the inner horizontal frame border is enabled.
@ DiagonalBLTR
If set, the bottom-left to top-right diagonal frame border is enabled.
@ Bottom
If set, the bottom frame border is enabled.
@ DiagonalTLBR
If set, the top-left to bottom-right diagonal frame border is enabled.
@ DontCare
If set, all frame borders will support the don't care state.
@ Right
If set, the right frame border is enabled.
@ Left
If set, the left frame border is enabled.
@ Top
If set, the top frame border is enabled.
@ Outer
If set, all four outer frame borders are enabled.
@ InnerVertical
If set, the inner vertical frame border is enabled.
constexpr sal_uInt16 KEY_LEFT
constexpr sal_uInt16 KEY_UP
constexpr sal_uInt16 KEY_RIGHT
constexpr sal_uInt16 KEY_DOWN
constexpr sal_uInt16 KEY_SPACE
#define SAL_WARN(area, stream)
#define SAL_N_ELEMENTS(arr)
if(aStr !=aBuf) UpdateName_Impl(m_xFollowLb.get()
B2IRange fround(const B2DRange &rRange)
std::unique_ptr< BaseProcessor2D > createPixelProcessor2DFromOutputDevice(OutputDevice &rTargetOutDev, const drawinglayer::geometry::ViewInformation2D &rViewInformation2D)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
enumrange< T >::Iterator begin(enumrange< T >)
std::vector< FrameBorder * > FrameBorderPtrVec
size_t GetIndexFromFrameBorderType(FrameBorderType eBorder)
Returns the zero-based index of a valid frame border type.
FrameBorderType GetFrameBorderTypeFromIndex(size_t nIndex)
Returns the frame border type from a 0-based integer index.
FrameBorderType
Enumerates all borders a frame selection control can contain.
@ Vertical
Inner horizontal frame border.
@ Bottom
Top frame border.
@ TLBR
Inner vertical frame border.
@ Right
Left frame border.
@ Left
No border (special state).
@ Horizontal
Bottom frame border.
@ BLTR
Top-left to bottom-right frame border.
FrameBorderState
All possible states of a frame border.
@ DontCare
Frame border is hidden (off).
@ Hide
Frame border has a visible style.
constexpr rtl::OUStringConstExpr aImageIds[]
FrameBorderIterBase< const FrameBorderPtrVec, FrameBorderPtrVec::const_iterator, FrameBorderSelected_Pred > SelFrameBorderCIter
Iterator for constant svx::FrameBorder containers, iterates over selected borders.
const int FRAMEBORDERTYPE_COUNT
The number of valid frame border types (excluding FrameBorderType::NONE).
frame::Array maArray
Current style and color for new borders.
FrameSelectorImpl(FrameSelector &rFrameSel)
Pointers to accessibility objects for frame borders.
void InitBorderGeometry()
Initializes coordinates of all frame borders.
bool mbTLBR
true = Inner vertical frame border enabled.
void DrawBackground()
Draws the background of the entire control (the gray areas between borders).
void DrawAllFrameBorders()
Draws all frame borders.
bool SelectedBordersEqual() const
Returns true, if all selected frame borders are equal (or if nothing is selected).
bool mbFullRepaint
true = Bottom-left to top-right frame border enabled.
void DrawVirtualDevice()
Draws all contents of the control.
tools::Long mnLine2
Middle of left/top frame borders.
Color maBackCol
Arrows in current system colors.
void SetBorderCoreStyle(FrameBorder &rBorder, const editeng::SvxBorderLine *pStyle)
Sets the core style of the specified frame border, or hides the frame border, if pStyle is 0.
tools::Long mnCtrlSize
Selection handler.
tools::Long mnArrowSize
Size of the control (always square).
FrameBorder maBLTR
All data of top-left to bottom-right frame border.
void SelectBorder(FrameBorder &rBorder, bool bSelect)
Selects a frame border and schedules redraw.
void InitGlobalGeometry()
Initializes global coordinates.
void InitColors()
Fills all color members from current style settings.
void InitVirtualDevice()
Draws the entire control into the internal virtual device.
FrameBorder & GetBorderAccess(FrameBorderType eBorder)
Returns the object representing the specified frame border (write access).
void DrawAllTrackingRects(vcl::RenderContext &rRenderContext)
Draws tracking rectangles for all selected frame borders.
Point GetDevPosFromMousePos(const Point &rMousePos) const
Converts a mouse position to the virtual device position.
FrameBorderPtrVec maEnabBorders
Pointers to all frame borders.
bool mbHor
Offset from frame border middle to draw focus.
FrameBorder maLeft
Position of virtual device in the control.
Color maArrowCol
Background color.
FrameBorder maTLBR
All data of inner vertical frame border.
editeng::SvxBorderLine maCurrStyle
All data of bottom-left to top-right frame border.
Point maVirDevPos
High contrast line color.
tools::Long mnLine3
Middle of inner frame borders.
bool mbBLTR
true = Top-left to bottom-right frame border enabled.
std::vector< rtl::Reference< a11y::AccFrameSelectorChild > > maChildVec
true = High contrast mode.
Color maMarkCol
Selection arrow color.
void Initialize(FrameSelFlags nFlags)
Initializes the control, enables/disables frame borders according to flags.
Color maHCLineCol
Selection marker color.
void DrawArrows(const FrameBorder &rBorder)
Draws selection arrows for the specified frame border.
FrameBorderPtrVec maAllBorders
Flags for enabled frame borders.
bool mbVer
true = Inner horizontal frame border enabled.
bool mbHCMode
true = Auto select a frame border, if focus reaches control.
bool mbAutoSelect
Used for repainting (false = only copy virtual device).
Color GetDrawLineColor(const Color &rColor) const
Returns the color that has to be used to draw a frame border.
void InitArrowImageList()
Creates the image list with selection arrows regarding current style settings.
void SilentGrabFocus()
Grabs focus without auto-selection of a frame border, if no border selected.
std::vector< Image > maArrows
For all buffered drawing operations.
void DoInvalidate(bool bFullRepaint)
Invalidates the control.
void sizeChanged()
call this to recalculate based on parent size
void SetBorderState(FrameBorder &rBorder, FrameBorderState eState)
Sets the state of the specified frame border.
FrameBorder maVer
All data of inner horizontal frame border.
tools::Long mnLine1
Size of an arrow image.
FrameBorder maHor
All data of bottom frame border.
FrameSelFlags mnFlags
Frame link array to draw an array of frame borders.
FrameBorder maRight
All data of left frame border.
const FrameBorder & GetBorder(FrameBorderType eBorder) const
Returns the object representing the specified frame border.
FrameBorder maBottom
All data of top frame border.
tools::Long mnFocusOffs
Middle of right/bottom frame borders.
void CopyVirDevToControl(vcl::RenderContext &rRenderContext)
Copies contents of the virtual device to the control.
ScopedVclPtr< VirtualDevice > mpVirDev
The control itself.
void ToggleBorderState(FrameBorder &rBorder)
Changes the state of a frame border after a control event (mouse/keyboard).
FrameSelector & mrFrameSel
FrameBorder maTop
All data of right frame border.
VclPtr< VirtualDevice > mpVirDev