weld SvxSwPosSizeTabPage
Change-Id: I51c83ec801884a07f7920309535a58b55171b0be Reviewed-on: https://gerrit.libreoffice.org/54934 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
This commit is contained in:
parent
66cd438e35
commit
c4041a3b6c
@ -20,12 +20,9 @@
|
||||
#define INCLUDED_CUI_SOURCE_INC_SWPOSSIZETABPAGE_HXX
|
||||
|
||||
#include <sfx2/tabdlg.hxx>
|
||||
#include <vcl/fixed.hxx>
|
||||
#include <vcl/field.hxx>
|
||||
#include <vcl/layout.hxx>
|
||||
#include <vcl/lstbox.hxx>
|
||||
#include <svx/swframeposstrings.hxx>
|
||||
#include <svx/swframeexample.hxx>
|
||||
#include <vcl/weld.hxx>
|
||||
|
||||
// SvxSwPosSizeTabPage - position and size page for Writer drawing objects
|
||||
struct FrmMap;
|
||||
@ -37,40 +34,6 @@ class SvxSwPosSizeTabPage : public SfxTabPage
|
||||
{
|
||||
using TabPage::DeactivatePage;
|
||||
|
||||
VclPtr<MetricField> m_pWidthMF;
|
||||
VclPtr<MetricField> m_pHeightMF;
|
||||
VclPtr<CheckBox> m_pKeepRatioCB;
|
||||
|
||||
VclPtr<RadioButton> m_pToPageRB;
|
||||
VclPtr<RadioButton> m_pToParaRB;
|
||||
VclPtr<RadioButton> m_pToCharRB;
|
||||
VclPtr<RadioButton> m_pAsCharRB;
|
||||
VclPtr<RadioButton> m_pToFrameRB;
|
||||
|
||||
VclPtr<TriStateBox> m_pPositionCB;
|
||||
VclPtr<TriStateBox> m_pSizeCB;
|
||||
|
||||
VclPtr<VclContainer> m_pPosFrame;
|
||||
VclPtr<FixedText> m_pHoriFT;
|
||||
VclPtr<ListBox> m_pHoriLB;
|
||||
VclPtr<FixedText> m_pHoriByFT;
|
||||
VclPtr<MetricField> m_pHoriByMF;
|
||||
VclPtr<FixedText> m_pHoriToFT;
|
||||
VclPtr<ListBox> m_pHoriToLB;
|
||||
|
||||
VclPtr<CheckBox> m_pHoriMirrorCB;
|
||||
|
||||
VclPtr<FixedText> m_pVertFT;
|
||||
VclPtr<ListBox> m_pVertLB;
|
||||
VclPtr<FixedText> m_pVertByFT;
|
||||
VclPtr<MetricField> m_pVertByMF;
|
||||
VclPtr<FixedText> m_pVertToFT;
|
||||
VclPtr<ListBox> m_pVertToLB;
|
||||
|
||||
VclPtr<CheckBox> m_pFollowCB;
|
||||
|
||||
VclPtr<SvxSwFrameExample> m_pExampleWN;
|
||||
|
||||
Link<SvxSwFrameValidation&,void> m_aValidateLink;
|
||||
|
||||
::tools::Rectangle m_aRect; //size of all selected objects
|
||||
@ -95,24 +58,53 @@ class SvxSwPosSizeTabPage : public SfxTabPage
|
||||
bool m_bIsInRightToLeft;
|
||||
TriState m_nProtectSizeState;
|
||||
|
||||
DECL_LINK(RangeModifyHdl, Control&, void);
|
||||
DECL_LINK(RangeModifyClickHdl, Button*, void);
|
||||
DECL_LINK(AnchorTypeHdl, Button*, void);
|
||||
DECL_LINK( PosHdl, ListBox&, void );
|
||||
DECL_LINK( RelHdl, ListBox&, void );
|
||||
DECL_LINK(MirrorHdl, Button*, void);
|
||||
DECL_LINK( ModifyHdl, Edit&, void );
|
||||
DECL_LINK(ProtectHdl, Button*, void);
|
||||
SwFrameExample m_aExampleWN;
|
||||
|
||||
std::unique_ptr<weld::MetricSpinButton> m_xWidthMF;
|
||||
std::unique_ptr<weld::MetricSpinButton> m_xHeightMF;
|
||||
std::unique_ptr<weld::CheckButton> m_xKeepRatioCB;
|
||||
std::unique_ptr<weld::RadioButton> m_xToPageRB;
|
||||
std::unique_ptr<weld::RadioButton> m_xToParaRB;
|
||||
std::unique_ptr<weld::RadioButton> m_xToCharRB;
|
||||
std::unique_ptr<weld::RadioButton> m_xAsCharRB;
|
||||
std::unique_ptr<weld::RadioButton> m_xToFrameRB;
|
||||
std::unique_ptr<weld::CheckButton> m_xPositionCB;
|
||||
std::unique_ptr<weld::CheckButton> m_xSizeCB;
|
||||
std::unique_ptr<weld::Widget> m_xPosFrame;
|
||||
std::unique_ptr<weld::Label> m_xHoriFT;
|
||||
std::unique_ptr<weld::ComboBoxText> m_xHoriLB;
|
||||
std::unique_ptr<weld::Label> m_xHoriByFT;
|
||||
std::unique_ptr<weld::MetricSpinButton> m_xHoriByMF;
|
||||
std::unique_ptr<weld::Label> m_xHoriToFT;
|
||||
std::unique_ptr<weld::ComboBoxText> m_xHoriToLB;
|
||||
std::unique_ptr<weld::CheckButton> m_xHoriMirrorCB;
|
||||
std::unique_ptr<weld::Label> m_xVertFT;
|
||||
std::unique_ptr<weld::ComboBoxText> m_xVertLB;
|
||||
std::unique_ptr<weld::Label> m_xVertByFT;
|
||||
std::unique_ptr<weld::MetricSpinButton> m_xVertByMF;
|
||||
std::unique_ptr<weld::Label> m_xVertToFT;
|
||||
std::unique_ptr<weld::ComboBoxText> m_xVertToLB;
|
||||
std::unique_ptr<weld::CheckButton> m_xFollowCB;
|
||||
std::unique_ptr<weld::CustomWeld> m_xExampleWN;
|
||||
|
||||
DECL_LINK(RangeModifyHdl, weld::Widget&, void);
|
||||
DECL_LINK(RangeModifyClickHdl, weld::ToggleButton&, void);
|
||||
DECL_LINK(AnchorTypeHdl, weld::ToggleButton&, void);
|
||||
DECL_LINK(PosHdl, weld::ComboBoxText&, void);
|
||||
DECL_LINK(RelHdl, weld::ComboBoxText&, void);
|
||||
DECL_LINK(MirrorHdl, weld::ToggleButton&, void);
|
||||
DECL_LINK(ModifyHdl, weld::MetricSpinButton&, void);
|
||||
DECL_LINK(ProtectHdl, weld::ToggleButton&, void);
|
||||
|
||||
void InitPos(RndStdIds nAnchorType, sal_uInt16 nH, sal_uInt16 nHRel,
|
||||
sal_uInt16 nV, sal_uInt16 nVRel,
|
||||
long nX, long nY);
|
||||
static sal_uInt16 GetMapPos(FrmMap const *pMap, ListBox const &rAlignLB);
|
||||
static short GetAlignment(FrmMap const *pMap, sal_uInt16 nMapPos, ListBox const &rRelationLB);
|
||||
static short GetRelation(ListBox const &rRelationLB);
|
||||
static sal_uInt16 GetMapPos(FrmMap const *pMap, const weld::ComboBoxText& rAlignLB);
|
||||
static short GetAlignment(FrmMap const *pMap, sal_uInt16 nMapPos, const weld::ComboBoxText& rRelationLB);
|
||||
static short GetRelation(const weld::ComboBoxText& rRelationLB);
|
||||
RndStdIds GetAnchorType(bool* pbHasChanged = nullptr);
|
||||
void FillRelLB(FrmMap const *pMap, sal_uInt16 nLBSelPos, sal_uInt16 nAlign, sal_uInt16 nRel, ListBox &rLB, FixedText &rFT);
|
||||
sal_uInt16 FillPosLB(FrmMap const *pMap, sal_uInt16 nAlign, const sal_uInt16 _nRel, ListBox &rLB);
|
||||
void FillRelLB(FrmMap const *pMap, sal_uInt16 nLBSelPos, sal_uInt16 nAlign, sal_uInt16 nRel, weld::ComboBoxText& rLB, weld::Label& rFT);
|
||||
sal_uInt16 FillPosLB(FrmMap const *pMap, sal_uInt16 nAlign, const sal_uInt16 _nRel, weld::ComboBoxText& rLB);
|
||||
|
||||
void UpdateExample();
|
||||
|
||||
@ -120,9 +112,8 @@ class SvxSwPosSizeTabPage : public SfxTabPage
|
||||
void setOptimalRelWidth();
|
||||
|
||||
public:
|
||||
SvxSwPosSizeTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs );
|
||||
SvxSwPosSizeTabPage(TabPageParent pParent, const SfxItemSet& rInAttrs);
|
||||
virtual ~SvxSwPosSizeTabPage() override;
|
||||
virtual void dispose() override;
|
||||
|
||||
static VclPtr<SfxTabPage> Create( TabPageParent, const SfxItemSet* );
|
||||
static const sal_uInt16* GetRanges();
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.18.3 -->
|
||||
<!-- Generated with glade 3.22.1 -->
|
||||
<interface domain="cui">
|
||||
<requires lib="gtk+" version="3.18"/>
|
||||
<requires lib="LibreOffice" version="1.0"/>
|
||||
<object class="GtkAdjustment" id="adjustment1">
|
||||
<property name="lower">0.050000000000000003</property>
|
||||
<property name="upper">99.989999999999995</property>
|
||||
@ -15,6 +14,18 @@
|
||||
<property name="step_increment">1</property>
|
||||
<property name="page_increment">10</property>
|
||||
</object>
|
||||
<object class="GtkAdjustment" id="adjustment3">
|
||||
<property name="lower">-99.989999999999995</property>
|
||||
<property name="upper">99.989999999999995</property>
|
||||
<property name="step_increment">1</property>
|
||||
<property name="page_increment">10</property>
|
||||
</object>
|
||||
<object class="GtkAdjustment" id="adjustment4">
|
||||
<property name="lower">0.050000000000000003</property>
|
||||
<property name="upper">99.989999999999995</property>
|
||||
<property name="step_increment">1</property>
|
||||
<property name="page_increment">10</property>
|
||||
</object>
|
||||
<object class="GtkGrid" id="SwPosSizePage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
@ -55,9 +66,10 @@
|
||||
<property name="can_focus">False</property>
|
||||
<property name="column_spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="width:0.00cm">
|
||||
<object class="GtkSpinButton" id="width">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="activates_default">True</property>
|
||||
<property name="adjustment">adjustment1</property>
|
||||
<property name="digits">2</property>
|
||||
</object>
|
||||
@ -70,10 +82,10 @@
|
||||
<object class="GtkLabel" id="widthft">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes" context="swpossizepage|widthft">_Width:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">width:0.00cm</property>
|
||||
<property name="mnemonic_widget">width</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
@ -92,10 +104,11 @@
|
||||
<property name="can_focus">False</property>
|
||||
<property name="column_spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="height:0.00cm">
|
||||
<object class="GtkSpinButton" id="height">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="adjustment">adjustment1</property>
|
||||
<property name="activates_default">True</property>
|
||||
<property name="adjustment">adjustment4</property>
|
||||
<property name="digits">2</property>
|
||||
</object>
|
||||
<packing>
|
||||
@ -107,10 +120,10 @@
|
||||
<object class="GtkLabel" id="heightft">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes" context="swpossizepage|heightft">H_eight:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">height:0.00cm</property>
|
||||
<property name="mnemonic_widget">height</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
@ -163,7 +176,7 @@
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="svxlo-SvxSwFrameExample" id="preview">
|
||||
<object class="GtkDrawingArea" id="preview">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
@ -210,7 +223,6 @@
|
||||
<property name="xalign">0</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">topara</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
@ -226,7 +238,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">tochar</property>
|
||||
<property name="group">topage</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
@ -242,7 +254,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">aschar</property>
|
||||
<property name="group">topage</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
@ -258,7 +270,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">toframe</property>
|
||||
<property name="group">topage</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
@ -329,10 +341,10 @@
|
||||
<object class="GtkLabel" id="horiposft">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes" context="swpossizepage|horiposft">Hori_zontal:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">horipos</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
@ -343,10 +355,10 @@
|
||||
<object class="GtkLabel" id="horibyft">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes" context="swpossizepage|horibyft">b_y:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">byhori:0.00cm</property>
|
||||
<property name="mnemonic_widget">byhori</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
@ -357,10 +369,10 @@
|
||||
<object class="GtkLabel" id="vertbyft">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes" context="swpossizepage|vertbyft">_by:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">byvert:0.00cm</property>
|
||||
<property name="mnemonic_widget">byvert</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
@ -371,10 +383,10 @@
|
||||
<object class="GtkLabel" id="horitoft">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes" context="swpossizepage|horitoft">_to:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">horianchor</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">4</property>
|
||||
@ -382,9 +394,10 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="byhori:0.00cm">
|
||||
<object class="GtkSpinButton" id="byhori">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="activates_default">True</property>
|
||||
<property name="adjustment">adjustment2</property>
|
||||
<property name="digits">2</property>
|
||||
</object>
|
||||
@ -417,10 +430,10 @@
|
||||
<object class="GtkLabel" id="vertposft">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes" context="swpossizepage|vertposft">_Vertical:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">vertpos</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
@ -438,10 +451,11 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="byvert:0.00cm">
|
||||
<object class="GtkSpinButton" id="byvert">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="adjustment">adjustment2</property>
|
||||
<property name="activates_default">True</property>
|
||||
<property name="adjustment">adjustment3</property>
|
||||
<property name="digits">2</property>
|
||||
</object>
|
||||
<packing>
|
||||
@ -453,10 +467,10 @@
|
||||
<object class="GtkLabel" id="verttoft">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes" context="swpossizepage|verttoft">t_o:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">vertanchor</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">4</property>
|
||||
|
@ -19,11 +19,12 @@
|
||||
#ifndef INCLUDED_SVX_SWFRAMEEXAMPLE_HXX
|
||||
#define INCLUDED_SVX_SWFRAMEEXAMPLE_HXX
|
||||
|
||||
#include <vcl/window.hxx>
|
||||
#include <tools/color.hxx>
|
||||
#include <tools/gen.hxx>
|
||||
#include <svx/svxdllapi.h>
|
||||
#include <svx/swframetypes.hxx>
|
||||
#include <vcl/customweld.hxx>
|
||||
#include <vcl/window.hxx>
|
||||
#include <com/sun/star/text/WrapTextMode.hpp>
|
||||
|
||||
class SVX_DLLPUBLIC SvxSwFrameExample : public vcl::Window
|
||||
@ -87,6 +88,68 @@ public:
|
||||
void SetRelPos(const Point& rP);
|
||||
};
|
||||
|
||||
class SVX_DLLPUBLIC SwFrameExample : public weld::CustomWidgetController
|
||||
{
|
||||
Color m_aTransColor; ///< transparency
|
||||
Color m_aBgCol; ///< background
|
||||
Color m_aFrameColor; ///< graphic frame
|
||||
Color m_aAlignColor; ///< align anchor
|
||||
Color m_aBorderCol; ///< frame of doc
|
||||
Color m_aPrintAreaCol; ///< frame of printable area of doc
|
||||
Color m_aTxtCol; ///< symbolised text
|
||||
Color m_aBlankCol; ///< area of symbol for blank
|
||||
Color m_aBlankFrameCol; ///< frame of symbol for blank
|
||||
|
||||
tools::Rectangle aPage;
|
||||
tools::Rectangle aPagePrtArea;
|
||||
tools::Rectangle aTextLine;
|
||||
tools::Rectangle aPara;
|
||||
tools::Rectangle aParaPrtArea;
|
||||
tools::Rectangle aFrameAtFrame;
|
||||
tools::Rectangle aDrawObj;
|
||||
tools::Rectangle aAutoCharFrame;
|
||||
Size aFrmSize;
|
||||
|
||||
short nHAlign;
|
||||
short nHRel;
|
||||
|
||||
short nVAlign;
|
||||
short nVRel;
|
||||
|
||||
css::text::WrapTextMode nWrap;
|
||||
RndStdIds nAnchor;
|
||||
bool bTrans;
|
||||
|
||||
Point aRelPos;
|
||||
|
||||
void InitColors_Impl();
|
||||
void InitAllRects_Impl(vcl::RenderContext& rRenderContext);
|
||||
void CalcBoundRect_Impl(vcl::RenderContext& rRenderContext, tools::Rectangle &rRect);
|
||||
tools::Rectangle DrawInnerFrame_Impl(vcl::RenderContext& rRenderContext, const tools::Rectangle &rRect, const Color &rFillColor, const Color &rBorderColor);
|
||||
|
||||
virtual void StyleUpdated() override;
|
||||
virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&) override;
|
||||
public:
|
||||
|
||||
SwFrameExample();
|
||||
|
||||
virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override;
|
||||
|
||||
void SetWrap(css::text::WrapTextMode nW) { nWrap = nW; }
|
||||
|
||||
void SetHAlign(short nH) { nHAlign = nH; }
|
||||
void SetHoriRel(short nR) { nHRel = nR; }
|
||||
|
||||
void SetVAlign(short nV) { nVAlign = nV; }
|
||||
void SetVertRel(short nR) { nVRel = nR; }
|
||||
|
||||
void SetTransparent(bool bT) { bTrans = bT; }
|
||||
void SetAnchor(RndStdIds nA) { nAnchor = nA; }
|
||||
|
||||
void SetRelPos(const Point& rP);
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif // INCLUDED_SVX_SWFRAMEEXAMPLE_HXX
|
||||
|
||||
|
@ -684,7 +684,7 @@ public:
|
||||
}
|
||||
void set_help_id(const OString& rName) { m_xSpinButton->set_help_id(rName); }
|
||||
void set_position(int nCursorPos) { m_xSpinButton->set_position(nCursorPos); }
|
||||
const weld::SpinButton* get_widget() const { return m_xSpinButton.get(); }
|
||||
weld::SpinButton& get_widget() { return *m_xSpinButton; }
|
||||
};
|
||||
|
||||
class VCL_DLLPUBLIC TimeSpinButton
|
||||
@ -741,7 +741,7 @@ public:
|
||||
return m_xSpinButton->get_value_changed_from_saved();
|
||||
}
|
||||
void set_position(int nCursorPos) { m_xSpinButton->set_position(nCursorPos); }
|
||||
weld::SpinButton* get_widget() { return m_xSpinButton.get(); }
|
||||
weld::SpinButton& get_widget() { return *m_xSpinButton; }
|
||||
};
|
||||
|
||||
class VCL_DLLPUBLIC Label : virtual public Widget
|
||||
|
@ -635,13 +635,13 @@ IMPL_LINK( SmDistanceDialog, GetFocusHdl, weld::Widget&, rControl, void )
|
||||
{
|
||||
sal_uInt16 i;
|
||||
|
||||
if (&rControl == m_xMetricField1->get_widget())
|
||||
if (&rControl == &m_xMetricField1->get_widget())
|
||||
i = 0;
|
||||
else if (&rControl == m_xMetricField2->get_widget())
|
||||
else if (&rControl == &m_xMetricField2->get_widget())
|
||||
i = 1;
|
||||
else if (&rControl == m_xMetricField3->get_widget())
|
||||
else if (&rControl == &m_xMetricField3->get_widget())
|
||||
i = 2;
|
||||
else if (&rControl == m_xMetricField4->get_widget())
|
||||
else if (&rControl == &m_xMetricField4->get_widget())
|
||||
i = 3;
|
||||
else
|
||||
return;
|
||||
|
@ -716,4 +716,670 @@ void SvxSwFrameExample::SetRelPos(const Point& rP)
|
||||
aRelPos.setY( -5 );
|
||||
}
|
||||
|
||||
SwFrameExample::SwFrameExample()
|
||||
: nHAlign(HoriOrientation::CENTER)
|
||||
, nHRel(RelOrientation::FRAME)
|
||||
, nVAlign(VertOrientation::TOP)
|
||||
, nVRel(RelOrientation::PRINT_AREA)
|
||||
, nWrap(WrapTextMode_NONE)
|
||||
, nAnchor(RndStdIds::FLY_AT_PAGE)
|
||||
, bTrans(false)
|
||||
, aRelPos(Point(0,0))
|
||||
{
|
||||
InitColors_Impl();
|
||||
}
|
||||
|
||||
void SwFrameExample::SetDrawingArea(weld::DrawingArea* pDrawingArea)
|
||||
{
|
||||
pDrawingArea->set_size_request(pDrawingArea->get_approximate_digit_width() * 16,
|
||||
pDrawingArea->get_text_height() * 12);
|
||||
CustomWidgetController::SetDrawingArea(pDrawingArea);
|
||||
}
|
||||
|
||||
void SwFrameExample::InitColors_Impl()
|
||||
{
|
||||
const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
|
||||
m_aBgCol = rSettings.GetWindowColor();
|
||||
|
||||
bool bHC = rSettings.GetHighContrastMode();
|
||||
|
||||
m_aFrameColor = COL_LIGHTGREEN;
|
||||
m_aAlignColor = COL_LIGHTRED;
|
||||
m_aTransColor = COL_TRANSPARENT;
|
||||
|
||||
m_aTxtCol = bHC?
|
||||
svtools::ColorConfig().GetColorValue(svtools::FONTCOLOR).nColor :
|
||||
COL_GRAY;
|
||||
m_aPrintAreaCol = bHC? m_aTxtCol : COL_GRAY;
|
||||
m_aBorderCol = m_aTxtCol;
|
||||
m_aBlankCol = bHC? m_aTxtCol : COL_LIGHTGRAY;
|
||||
m_aBlankFrameCol = bHC? m_aTxtCol : COL_GRAY;
|
||||
}
|
||||
|
||||
void SwFrameExample::StyleUpdated()
|
||||
{
|
||||
InitColors_Impl();
|
||||
CustomWidgetController::StyleUpdated();
|
||||
}
|
||||
|
||||
void SwFrameExample::InitAllRects_Impl(vcl::RenderContext& rRenderContext)
|
||||
{
|
||||
aPage.SetSize(GetOutputSizePixel());
|
||||
|
||||
sal_uInt32 nOutWPix = aPage.GetWidth();
|
||||
sal_uInt32 nOutHPix = aPage.GetHeight();
|
||||
|
||||
// PrintArea
|
||||
sal_uInt32 nLBorder;
|
||||
sal_uInt32 nRBorder;
|
||||
sal_uInt32 nTBorder;
|
||||
sal_uInt32 nBBorder;
|
||||
|
||||
sal_uInt32 nLTxtBorder;
|
||||
sal_uInt32 nRTxtBorder;
|
||||
sal_uInt32 nTTxtBorder;
|
||||
sal_uInt32 nBTxtBorder;
|
||||
|
||||
if (nAnchor != RndStdIds::FLY_AS_CHAR)
|
||||
{
|
||||
nLBorder = 14;
|
||||
nRBorder = 10;
|
||||
nTBorder = 10;
|
||||
nBBorder = 15;
|
||||
|
||||
nLTxtBorder = 8;
|
||||
nRTxtBorder = 4;
|
||||
nTTxtBorder = 2;
|
||||
nBTxtBorder = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
nLBorder = 2;
|
||||
nRBorder = 2;
|
||||
nTBorder = 2;
|
||||
nBBorder = 2;
|
||||
|
||||
nLTxtBorder = 2;
|
||||
nRTxtBorder = 2;
|
||||
nTTxtBorder = 2;
|
||||
nBTxtBorder = 2;
|
||||
}
|
||||
aPagePrtArea = tools::Rectangle(Point(nLBorder, nTBorder), Point((nOutWPix - 1) - nRBorder, (nOutHPix - 1) - nBBorder));
|
||||
|
||||
// Example text: Preparing for the text output
|
||||
// A line of text
|
||||
aTextLine = aPagePrtArea;
|
||||
aTextLine.SetSize(Size(aTextLine.GetWidth(), 2));
|
||||
aTextLine.AdjustLeft(nLTxtBorder );
|
||||
aTextLine.AdjustRight( -sal_Int32(nRTxtBorder) );
|
||||
aTextLine.Move(0, nTTxtBorder);
|
||||
|
||||
// Rectangle to edges including paragraph
|
||||
sal_uInt16 nLines = static_cast<sal_uInt16>((aPagePrtArea.GetHeight() / 2 - nTTxtBorder - nBTxtBorder)
|
||||
/ (aTextLine.GetHeight() + 2));
|
||||
aPara = aPagePrtArea;
|
||||
aPara.SetSize(Size(aPara.GetWidth(),
|
||||
(aTextLine.GetHeight() + 2) * nLines + nTTxtBorder + nBTxtBorder));
|
||||
|
||||
// Rectangle around paragraph without borders
|
||||
aParaPrtArea = aPara;
|
||||
aParaPrtArea.AdjustLeft(nLTxtBorder );
|
||||
aParaPrtArea.AdjustRight( -sal_Int32(nRTxtBorder) );
|
||||
aParaPrtArea.AdjustTop(nTTxtBorder );
|
||||
aParaPrtArea.AdjustBottom( -sal_Int32(nBTxtBorder) );
|
||||
|
||||
if (nAnchor == RndStdIds::FLY_AS_CHAR || nAnchor == RndStdIds::FLY_AT_CHAR)
|
||||
{
|
||||
vcl::Font aFont = OutputDevice::GetDefaultFont(
|
||||
DefaultFontType::LATIN_TEXT, Application::GetSettings().GetLanguageTag().getLanguageType(),
|
||||
GetDefaultFontFlags::OnlyOne, &rRenderContext );
|
||||
aFont.SetColor( m_aTxtCol );
|
||||
aFont.SetFillColor( m_aBgCol );
|
||||
aFont.SetWeight(WEIGHT_NORMAL);
|
||||
|
||||
if (nAnchor == RndStdIds::FLY_AS_CHAR)
|
||||
{
|
||||
aFont.SetFontSize(Size(0, aParaPrtArea.GetHeight() - 2));
|
||||
rRenderContext.SetFont(aFont);
|
||||
aParaPrtArea.SetSize(Size(rRenderContext.GetTextWidth(DEMOTEXT), rRenderContext.GetTextHeight()));
|
||||
}
|
||||
else
|
||||
{
|
||||
aFont.SetFontSize(Size(0, aParaPrtArea.GetHeight() / 2));
|
||||
rRenderContext.SetFont(aFont);
|
||||
aAutoCharFrame.SetSize(Size(rRenderContext.GetTextWidth(OUString('A')), GetTextHeight()));
|
||||
aAutoCharFrame.SetPos(Point(aParaPrtArea.Left() + (aParaPrtArea.GetWidth() - aAutoCharFrame.GetWidth()) / 2,
|
||||
aParaPrtArea.Top() + (aParaPrtArea.GetHeight() - aAutoCharFrame.GetHeight()) / 2));
|
||||
}
|
||||
}
|
||||
|
||||
// Inner Frame anchored at the Frame
|
||||
aFrameAtFrame = aPara;
|
||||
aFrameAtFrame.AdjustLeft(9 );
|
||||
aFrameAtFrame.AdjustRight( -5 );
|
||||
aFrameAtFrame.AdjustBottom(5 );
|
||||
aFrameAtFrame.SetPos(Point(aFrameAtFrame.Left() + 2, (aPagePrtArea.Bottom() - aFrameAtFrame.GetHeight()) / 2 + 5));
|
||||
|
||||
// Size of the frame to be positioned
|
||||
if (nAnchor != RndStdIds::FLY_AS_CHAR)
|
||||
{
|
||||
sal_uInt32 nLFBorder = nAnchor == RndStdIds::FLY_AT_PAGE ? nLBorder : nLTxtBorder;
|
||||
sal_uInt32 nRFBorder = nAnchor == RndStdIds::FLY_AT_PAGE ? nRBorder : nRTxtBorder;
|
||||
|
||||
switch (nHRel)
|
||||
{
|
||||
case RelOrientation::PAGE_LEFT:
|
||||
case RelOrientation::FRAME_LEFT:
|
||||
aFrmSize = Size(nLFBorder - 4, (aTextLine.GetHeight() + 2) * 3);
|
||||
break;
|
||||
|
||||
case RelOrientation::PAGE_RIGHT:
|
||||
case RelOrientation::FRAME_RIGHT:
|
||||
aFrmSize = Size(nRFBorder - 4, (aTextLine.GetHeight() + 2) * 3);
|
||||
break;
|
||||
|
||||
default:
|
||||
aFrmSize = Size(nLBorder - 3, (aTextLine.GetHeight() + 2) * 3);
|
||||
break;
|
||||
}
|
||||
aFrmSize.setWidth( std::max(5L, aFrmSize.Width()) );
|
||||
aFrmSize.setHeight( std::max(5L, aFrmSize.Height()) );
|
||||
}
|
||||
else
|
||||
{
|
||||
sal_uInt32 nFreeWidth = aPagePrtArea.GetWidth() - rRenderContext.GetTextWidth(DEMOTEXT);
|
||||
|
||||
aFrmSize = Size(nFreeWidth / 2, (aTextLine.GetHeight() + 2) * 3);
|
||||
aDrawObj.SetSize(Size(std::max(5L, static_cast<long>(nFreeWidth) / 3L), std::max(5L, aFrmSize.Height() * 3L)));
|
||||
aDrawObj.SetPos(Point(aParaPrtArea.Right() + 1, aParaPrtArea.Bottom() / 2));
|
||||
aParaPrtArea.SetRight( aDrawObj.Right() );
|
||||
}
|
||||
}
|
||||
|
||||
void SwFrameExample::CalcBoundRect_Impl(vcl::RenderContext& rRenderContext, tools::Rectangle &rRect)
|
||||
{
|
||||
switch (nAnchor)
|
||||
{
|
||||
case RndStdIds::FLY_AT_PAGE:
|
||||
{
|
||||
switch (nHRel)
|
||||
{
|
||||
case RelOrientation::FRAME:
|
||||
case RelOrientation::PAGE_FRAME:
|
||||
rRect.SetLeft( aPage.Left() );
|
||||
rRect.SetRight( aPage.Right() );
|
||||
break;
|
||||
|
||||
case RelOrientation::PRINT_AREA:
|
||||
case RelOrientation::PAGE_PRINT_AREA:
|
||||
rRect.SetLeft( aPagePrtArea.Left() );
|
||||
rRect.SetRight( aPagePrtArea.Right() );
|
||||
break;
|
||||
|
||||
case RelOrientation::PAGE_LEFT:
|
||||
rRect.SetLeft( aPage.Left() );
|
||||
rRect.SetRight( aPagePrtArea.Left() );
|
||||
break;
|
||||
|
||||
case RelOrientation::PAGE_RIGHT:
|
||||
rRect.SetLeft( aPagePrtArea.Right() );
|
||||
rRect.SetRight( aPage.Right() );
|
||||
break;
|
||||
}
|
||||
|
||||
switch (nVRel)
|
||||
{
|
||||
case RelOrientation::PRINT_AREA:
|
||||
case RelOrientation::PAGE_PRINT_AREA:
|
||||
rRect.SetTop( aPagePrtArea.Top() );
|
||||
rRect.SetBottom( aPagePrtArea.Bottom() );
|
||||
break;
|
||||
|
||||
case RelOrientation::FRAME:
|
||||
case RelOrientation::PAGE_FRAME:
|
||||
rRect.SetTop( aPage.Top() );
|
||||
rRect.SetBottom( aPage.Bottom() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case RndStdIds::FLY_AT_FLY:
|
||||
{
|
||||
switch (nHRel)
|
||||
{
|
||||
case RelOrientation::FRAME:
|
||||
case RelOrientation::PAGE_FRAME:
|
||||
rRect.SetLeft( aFrameAtFrame.Left() );
|
||||
rRect.SetRight( aFrameAtFrame.Right() );
|
||||
break;
|
||||
|
||||
case RelOrientation::PRINT_AREA:
|
||||
case RelOrientation::PAGE_PRINT_AREA:
|
||||
rRect.SetLeft( aFrameAtFrame.Left() + FLYINFLY_BORDER );
|
||||
rRect.SetRight( aFrameAtFrame.Right() - FLYINFLY_BORDER );
|
||||
break;
|
||||
|
||||
case RelOrientation::PAGE_RIGHT:
|
||||
rRect.SetLeft( aFrameAtFrame.Left() );
|
||||
rRect.SetRight( aFrameAtFrame.Left() + FLYINFLY_BORDER );
|
||||
break;
|
||||
|
||||
case RelOrientation::PAGE_LEFT:
|
||||
rRect.SetLeft( aFrameAtFrame.Right() );
|
||||
rRect.SetRight( aFrameAtFrame.Right() - FLYINFLY_BORDER );
|
||||
break;
|
||||
}
|
||||
|
||||
switch (nVRel)
|
||||
{
|
||||
case RelOrientation::FRAME:
|
||||
case RelOrientation::PAGE_FRAME:
|
||||
rRect.SetTop( aFrameAtFrame.Top() );
|
||||
rRect.SetBottom( aFrameAtFrame.Bottom() );
|
||||
break;
|
||||
|
||||
case RelOrientation::PRINT_AREA:
|
||||
case RelOrientation::PAGE_PRINT_AREA:
|
||||
rRect.SetTop( aFrameAtFrame.Top() + FLYINFLY_BORDER );
|
||||
rRect.SetBottom( aFrameAtFrame.Bottom() - FLYINFLY_BORDER );
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RndStdIds::FLY_AT_PARA:
|
||||
case RndStdIds::FLY_AT_CHAR:
|
||||
{
|
||||
switch (nHRel)
|
||||
{
|
||||
case RelOrientation::FRAME:
|
||||
rRect.SetLeft( aPara.Left() );
|
||||
rRect.SetRight( aPara.Right() );
|
||||
break;
|
||||
|
||||
case RelOrientation::PRINT_AREA:
|
||||
rRect.SetLeft( aParaPrtArea.Left() );
|
||||
rRect.SetRight( aParaPrtArea.Right() );
|
||||
break;
|
||||
|
||||
case RelOrientation::PAGE_LEFT:
|
||||
rRect.SetLeft( aPage.Left() );
|
||||
rRect.SetRight( aPagePrtArea.Left() );
|
||||
break;
|
||||
|
||||
case RelOrientation::PAGE_RIGHT:
|
||||
rRect.SetLeft( aPagePrtArea.Right() );
|
||||
rRect.SetRight( aPage.Right() );
|
||||
break;
|
||||
|
||||
case RelOrientation::PAGE_FRAME:
|
||||
rRect.SetLeft( aPage.Left() );
|
||||
rRect.SetRight( aPage.Right() );
|
||||
break;
|
||||
|
||||
case RelOrientation::PAGE_PRINT_AREA:
|
||||
rRect.SetLeft( aPagePrtArea.Left() );
|
||||
rRect.SetRight( aPagePrtArea.Right() );
|
||||
break;
|
||||
|
||||
case RelOrientation::FRAME_LEFT:
|
||||
rRect.SetLeft( aPara.Left() );
|
||||
rRect.SetRight( aParaPrtArea.Left() );
|
||||
break;
|
||||
|
||||
case RelOrientation::FRAME_RIGHT:
|
||||
rRect.SetLeft( aParaPrtArea.Right() );
|
||||
rRect.SetRight( aPara.Right() );
|
||||
break;
|
||||
|
||||
case RelOrientation::CHAR:
|
||||
rRect.SetLeft( aAutoCharFrame.Left() );
|
||||
rRect.SetRight( aAutoCharFrame.Left() );
|
||||
break;
|
||||
}
|
||||
|
||||
switch (nVRel)
|
||||
{
|
||||
case RelOrientation::FRAME:
|
||||
rRect.SetTop( aPara.Top() );
|
||||
rRect.SetBottom( aPara.Bottom() );
|
||||
break;
|
||||
|
||||
case RelOrientation::PRINT_AREA:
|
||||
rRect.SetTop( aParaPrtArea.Top() );
|
||||
rRect.SetBottom( aParaPrtArea.Bottom() );
|
||||
break;
|
||||
|
||||
case RelOrientation::CHAR:
|
||||
if (nVAlign != VertOrientation::NONE &&
|
||||
nVAlign != VertOrientation::CHAR_BOTTOM)
|
||||
rRect.SetTop( aAutoCharFrame.Top() );
|
||||
else
|
||||
rRect.SetTop( aAutoCharFrame.Bottom() );
|
||||
rRect.SetBottom( aAutoCharFrame.Bottom() );
|
||||
break;
|
||||
// OD 12.11.2003 #i22341#
|
||||
case RelOrientation::TEXT_LINE:
|
||||
rRect.SetTop( aAutoCharFrame.Top() );
|
||||
rRect.SetBottom( aAutoCharFrame.Top() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case RndStdIds::FLY_AS_CHAR:
|
||||
rRect.SetLeft( aParaPrtArea.Left() );
|
||||
rRect.SetRight( aParaPrtArea.Right() );
|
||||
|
||||
switch (nVAlign)
|
||||
{
|
||||
case VertOrientation::NONE:
|
||||
case VertOrientation::TOP:
|
||||
case VertOrientation::CENTER:
|
||||
case VertOrientation::BOTTOM:
|
||||
{
|
||||
FontMetric aMetric(rRenderContext.GetFontMetric());
|
||||
|
||||
rRect.SetTop( aParaPrtArea.Bottom() - aMetric.GetDescent() );
|
||||
rRect.SetBottom( rRect.Top() );
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
case VertOrientation::LINE_TOP:
|
||||
case VertOrientation::LINE_CENTER:
|
||||
case VertOrientation::LINE_BOTTOM:
|
||||
rRect.SetTop( aParaPrtArea.Top() );
|
||||
rRect.SetBottom( aDrawObj.Bottom() );
|
||||
break;
|
||||
|
||||
case VertOrientation::CHAR_TOP:
|
||||
case VertOrientation::CHAR_CENTER:
|
||||
case VertOrientation::CHAR_BOTTOM:
|
||||
rRect.SetTop( aParaPrtArea.Top() );
|
||||
rRect.SetBottom( aParaPrtArea.Bottom() );
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
tools::Rectangle SwFrameExample::DrawInnerFrame_Impl(vcl::RenderContext& rRenderContext, const tools::Rectangle &rRect,
|
||||
const Color &rFillColor, const Color &rBorderColor)
|
||||
{
|
||||
DrawRect_Impl(rRenderContext, rRect, rFillColor, rBorderColor);
|
||||
|
||||
// determine the area relative to which the positioning happens
|
||||
tools::Rectangle aRect(rRect); // aPagePrtArea = Default
|
||||
CalcBoundRect_Impl(rRenderContext, aRect);
|
||||
|
||||
if (nAnchor == RndStdIds::FLY_AT_FLY && &rRect == &aPagePrtArea)
|
||||
{
|
||||
// draw text paragraph
|
||||
tools::Rectangle aTxt(aTextLine);
|
||||
sal_Int32 nStep = aTxt.GetHeight() + 2;
|
||||
sal_uInt16 nLines = static_cast<sal_uInt16>(aParaPrtArea.GetHeight() / (aTextLine.GetHeight() + 2));
|
||||
|
||||
for (sal_uInt16 i = 0; i < nLines; i++)
|
||||
{
|
||||
if (i == nLines - 1)
|
||||
aTxt.SetSize(Size(aTxt.GetWidth() / 2, aTxt.GetHeight()));
|
||||
DrawRect_Impl(rRenderContext, aTxt, m_aTxtCol, m_aTransColor);
|
||||
aTxt.Move(0, nStep);
|
||||
}
|
||||
}
|
||||
|
||||
return aRect;
|
||||
}
|
||||
|
||||
void SwFrameExample::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
|
||||
{
|
||||
rRenderContext.SetMapMode(MapMode(MapUnit::MapPixel));
|
||||
|
||||
InitAllRects_Impl(rRenderContext);
|
||||
|
||||
// Draw page
|
||||
DrawRect_Impl(rRenderContext, aPage, m_aBgCol, m_aBorderCol);
|
||||
|
||||
// Draw PrintArea
|
||||
tools::Rectangle aRect = DrawInnerFrame_Impl(rRenderContext, aPagePrtArea, m_aTransColor, m_aPrintAreaCol);
|
||||
|
||||
if (nAnchor == RndStdIds::FLY_AT_FLY)
|
||||
aRect = DrawInnerFrame_Impl(rRenderContext, aFrameAtFrame, m_aBgCol, m_aBorderCol);
|
||||
|
||||
long lXPos = 0;
|
||||
long lYPos = 0;
|
||||
|
||||
// Horizontal alignment
|
||||
if (nAnchor != RndStdIds::FLY_AS_CHAR)
|
||||
{
|
||||
switch (nHAlign)
|
||||
{
|
||||
case HoriOrientation::RIGHT:
|
||||
{
|
||||
lXPos = aRect.Right() - aFrmSize.Width() + 1;
|
||||
break;
|
||||
}
|
||||
case HoriOrientation::CENTER:
|
||||
{
|
||||
lXPos = aRect.Left() + (aRect.GetWidth() - aFrmSize.Width()) / 2;
|
||||
break;
|
||||
}
|
||||
case HoriOrientation::NONE:
|
||||
{
|
||||
lXPos = aRect.Left() + aRelPos.X();
|
||||
break;
|
||||
}
|
||||
|
||||
default: // HoriOrientation::LEFT
|
||||
lXPos = aRect.Left();
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lXPos = aRect.Right() + 2;
|
||||
}
|
||||
|
||||
// Vertical Alignment
|
||||
if (nAnchor != RndStdIds::FLY_AS_CHAR)
|
||||
{
|
||||
switch (nVAlign)
|
||||
{
|
||||
case VertOrientation::BOTTOM:
|
||||
case VertOrientation::LINE_BOTTOM:
|
||||
{
|
||||
// #i22341#
|
||||
if ( nVRel != RelOrientation::TEXT_LINE )
|
||||
{
|
||||
lYPos = aRect.Bottom() - aFrmSize.Height() + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
lYPos = aRect.Top();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VertOrientation::CENTER:
|
||||
case VertOrientation::LINE_CENTER:
|
||||
{
|
||||
lYPos = aRect.Top() + (aRect.GetHeight() - aFrmSize.Height()) / 2;
|
||||
break;
|
||||
}
|
||||
case VertOrientation::NONE:
|
||||
{
|
||||
// #i22341#
|
||||
if ( nVRel != RelOrientation::CHAR && nVRel != RelOrientation::TEXT_LINE )
|
||||
lYPos = aRect.Top() + aRelPos.Y();
|
||||
else
|
||||
lYPos = aRect.Top() - aRelPos.Y();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
// #i22341#
|
||||
if ( nVRel != RelOrientation::TEXT_LINE )
|
||||
{
|
||||
lYPos = aRect.Top();
|
||||
}
|
||||
else
|
||||
{
|
||||
lYPos = aRect.Bottom() - aFrmSize.Height() + 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(nVAlign)
|
||||
{
|
||||
case VertOrientation::CENTER:
|
||||
case VertOrientation::CHAR_CENTER:
|
||||
case VertOrientation::LINE_CENTER:
|
||||
lYPos = aRect.Top() + (aRect.GetHeight() - aFrmSize.Height()) / 2;
|
||||
break;
|
||||
|
||||
case VertOrientation::TOP:
|
||||
case VertOrientation::CHAR_BOTTOM:
|
||||
case VertOrientation::LINE_BOTTOM:
|
||||
lYPos = aRect.Bottom() - aFrmSize.Height() + 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
lYPos = aRect.Top() - aRelPos.Y();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
tools::Rectangle aFrmRect(Point(lXPos, lYPos), aFrmSize);
|
||||
|
||||
tools::Rectangle* pOuterFrame = &aPage;
|
||||
|
||||
if (nAnchor == RndStdIds::FLY_AT_FLY)
|
||||
pOuterFrame = &aFrameAtFrame;
|
||||
|
||||
if (aFrmRect.Left() < pOuterFrame->Left())
|
||||
aFrmRect.Move(pOuterFrame->Left() - aFrmRect.Left(), 0);
|
||||
if (aFrmRect.Right() > pOuterFrame->Right())
|
||||
aFrmRect.Move(pOuterFrame->Right() - aFrmRect.Right(), 0);
|
||||
|
||||
if (aFrmRect.Top() < pOuterFrame->Top())
|
||||
aFrmRect.Move(0, pOuterFrame->Top() - aFrmRect.Top());
|
||||
if (aFrmRect.Bottom() > pOuterFrame->Bottom())
|
||||
aFrmRect.Move(0, pOuterFrame->Bottom() - aFrmRect.Bottom());
|
||||
|
||||
// Draw Test paragraph
|
||||
const long nTxtLineHeight = aTextLine.GetHeight();
|
||||
tools::Rectangle aTxt(aTextLine);
|
||||
sal_Int32 nStep;
|
||||
sal_uInt16 nLines;
|
||||
|
||||
if (nAnchor == RndStdIds::FLY_AT_FLY)
|
||||
{
|
||||
aTxt.SetLeft( aFrameAtFrame.Left() + FLYINFLY_BORDER );
|
||||
aTxt.SetRight( aFrameAtFrame.Right() - FLYINFLY_BORDER );
|
||||
aTxt.SetTop( aFrameAtFrame.Top() + FLYINFLY_BORDER );
|
||||
aTxt.SetBottom( aTxt.Top() + aTextLine.GetHeight() - 1 );
|
||||
|
||||
nStep = aTxt.GetHeight() + 2;
|
||||
nLines = static_cast<sal_uInt16>(((aFrameAtFrame.GetHeight() - 2 * FLYINFLY_BORDER) * 2 / 3)
|
||||
/ (aTxt.GetHeight() + 2));
|
||||
}
|
||||
else
|
||||
{
|
||||
nStep = aTxt.GetHeight() + 2;
|
||||
nLines = static_cast<sal_uInt16>(aParaPrtArea.GetHeight() / (aTextLine.GetHeight() + 2));
|
||||
}
|
||||
|
||||
if (nAnchor != RndStdIds::FLY_AS_CHAR)
|
||||
{
|
||||
// Simulate text
|
||||
const long nOldR = aTxt.Right();
|
||||
const long nOldL = aTxt.Left();
|
||||
|
||||
// #i22341#
|
||||
const bool bIgnoreWrap = nAnchor == RndStdIds::FLY_AT_CHAR &&
|
||||
( nHRel == RelOrientation::CHAR || nVRel == RelOrientation::CHAR ||
|
||||
nVRel == RelOrientation::TEXT_LINE );
|
||||
|
||||
for (sal_uInt16 i = 0; i < nLines; ++i)
|
||||
{
|
||||
if (i == (nLines - 1))
|
||||
aTxt.SetSize(Size(aTxt.GetWidth() / 2, aTxt.GetHeight()));
|
||||
|
||||
if (aTxt.IsOver(aFrmRect) && nAnchor != RndStdIds::FLY_AS_CHAR && !bIgnoreWrap)
|
||||
{
|
||||
switch(nWrap)
|
||||
{
|
||||
case WrapTextMode_NONE:
|
||||
aTxt.SetTop( aFrmRect.Bottom() + nTxtLineHeight );
|
||||
aTxt.SetBottom( aTxt.Top() + nTxtLineHeight - 1 );
|
||||
break;
|
||||
|
||||
case WrapTextMode_LEFT:
|
||||
aTxt.SetRight( aFrmRect.Left() );
|
||||
break;
|
||||
|
||||
case WrapTextMode_RIGHT:
|
||||
aTxt.SetLeft( aFrmRect.Right() );
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
if (pOuterFrame->IsInside(aTxt))
|
||||
DrawRect_Impl(rRenderContext, aTxt, m_aTxtCol, m_aTransColor );
|
||||
|
||||
aTxt.Move(0, nStep);
|
||||
aTxt.SetRight( nOldR );
|
||||
aTxt.SetLeft( nOldL );
|
||||
}
|
||||
aTxt.Move(0, -nStep);
|
||||
|
||||
if (nAnchor != RndStdIds::FLY_AT_FLY && aTxt.Bottom() > aParaPrtArea.Bottom())
|
||||
{
|
||||
// Text has been replaced by frame, so adjust parameters height
|
||||
sal_Int32 nDiff = aTxt.Bottom() - aParaPrtArea.Bottom();
|
||||
aParaPrtArea.AdjustBottom(nDiff );
|
||||
aPara.AdjustBottom(nDiff );
|
||||
|
||||
CalcBoundRect_Impl(rRenderContext, aRect);
|
||||
|
||||
aParaPrtArea.AdjustBottom( -nDiff );
|
||||
aPara.AdjustBottom( -nDiff );
|
||||
}
|
||||
if (nAnchor == RndStdIds::FLY_AT_CHAR && bIgnoreWrap)
|
||||
rRenderContext.DrawText(aAutoCharFrame, OUString('A'));
|
||||
}
|
||||
else
|
||||
{
|
||||
rRenderContext.DrawText(aParaPrtArea, OUString(DEMOTEXT));
|
||||
DrawRect_Impl(rRenderContext, aDrawObj, m_aBlankCol, m_aBlankFrameCol );
|
||||
}
|
||||
|
||||
// Draw rectangle on which the frame is aligned:
|
||||
DrawRect_Impl(rRenderContext, aRect, m_aTransColor, m_aAlignColor);
|
||||
|
||||
// Frame View
|
||||
bool bDontFill = (nAnchor == RndStdIds::FLY_AT_CHAR && aFrmRect.IsOver(aAutoCharFrame)) || bTrans;
|
||||
DrawRect_Impl(rRenderContext, aFrmRect, bDontFill? m_aTransColor : m_aBgCol, m_aFrameColor);
|
||||
}
|
||||
|
||||
void SwFrameExample::SetRelPos(const Point& rP)
|
||||
{
|
||||
aRelPos = rP;
|
||||
|
||||
if (aRelPos.X() > 0)
|
||||
aRelPos.setX( 5 );
|
||||
if (aRelPos.X() < 0)
|
||||
aRelPos.setX( -5 );
|
||||
|
||||
if (aRelPos.Y() > 0)
|
||||
aRelPos.setY( 5 );
|
||||
if (aRelPos.Y() < 0)
|
||||
aRelPos.setY( -5 );
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
@ -2304,9 +2304,8 @@ public:
|
||||
bool bTakeOwnership) override
|
||||
{
|
||||
weld::TimeSpinButton* pRet = new weld::TimeSpinButton(weld_spin_button(id, bTakeOwnership), eFormat);
|
||||
SalInstanceSpinButton* pButton = dynamic_cast<SalInstanceSpinButton*>(pRet->get_widget());
|
||||
assert(pButton);
|
||||
pButton->DisableRemainderFactor(); //so with hh::mm::ss, incrementing mm will not reset ss
|
||||
SalInstanceSpinButton& rButton = dynamic_cast<SalInstanceSpinButton&>(pRet->get_widget());
|
||||
rButton.DisableRemainderFactor(); //so with hh::mm::ss, incrementing mm will not reset ss
|
||||
return pRet;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user