1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_cui.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski #include "borderconn.hxx"
28*b1cdbd2cSJim Jagielski #include <svx/frmsel.hxx>
29*b1cdbd2cSJim Jagielski #include "editeng/bolnitem.hxx"
30*b1cdbd2cSJim Jagielski #include <editeng/boxitem.hxx>
31*b1cdbd2cSJim Jagielski #include <svx/algitem.hxx>
32*b1cdbd2cSJim Jagielski #include <editeng/shaditem.hxx>
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski namespace svx {
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielski /* ============================================================================
37*b1cdbd2cSJim Jagielski SvxLineItem connection
38*b1cdbd2cSJim Jagielski ----------------------
39*b1cdbd2cSJim Jagielski Connects an SvxLineItem (that contains the style of one line of a cell border)
40*b1cdbd2cSJim Jagielski with one frame border from a svx::FrameSelector control. If this connection is
41*b1cdbd2cSJim Jagielski used, no additional code is needed in the Reset() and FillItemSet() functions
42*b1cdbd2cSJim Jagielski of the tab page.
43*b1cdbd2cSJim Jagielski ============================================================================ */
44*b1cdbd2cSJim Jagielski
45*b1cdbd2cSJim Jagielski // 1st: item wrappers ---------------------------------------------------------
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielski class LineItemWrapper : public sfx::SingleItemWrapper< SvxLineItem, const SvxBorderLine* >
48*b1cdbd2cSJim Jagielski {
49*b1cdbd2cSJim Jagielski public:
LineItemWrapper(sal_uInt16 nSlot)50*b1cdbd2cSJim Jagielski inline explicit LineItemWrapper( sal_uInt16 nSlot ) : SingleItemWrapperType( nSlot ) {}
51*b1cdbd2cSJim Jagielski
GetItemValue(const SvxLineItem & rItem) const52*b1cdbd2cSJim Jagielski virtual const SvxBorderLine* GetItemValue( const SvxLineItem& rItem ) const
53*b1cdbd2cSJim Jagielski { return rItem.GetLine(); }
SetItemValue(SvxLineItem & rItem,const SvxBorderLine * pLine) const54*b1cdbd2cSJim Jagielski virtual void SetItemValue( SvxLineItem& rItem, const SvxBorderLine* pLine ) const
55*b1cdbd2cSJim Jagielski { rItem.SetLine( pLine ); }
56*b1cdbd2cSJim Jagielski };
57*b1cdbd2cSJim Jagielski
58*b1cdbd2cSJim Jagielski // 2nd: control wrappers ------------------------------------------------------
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielski class FrameSelectorWrapper : public sfx::SingleControlWrapper< FrameSelector, const SvxBorderLine* >
61*b1cdbd2cSJim Jagielski {
62*b1cdbd2cSJim Jagielski public:
FrameSelectorWrapper(FrameSelector & rFrameSel,FrameBorderType eBorder)63*b1cdbd2cSJim Jagielski inline explicit FrameSelectorWrapper( FrameSelector& rFrameSel, FrameBorderType eBorder ) :
64*b1cdbd2cSJim Jagielski SingleControlWrapperType( rFrameSel ), meBorder( eBorder ) {}
65*b1cdbd2cSJim Jagielski
66*b1cdbd2cSJim Jagielski virtual bool IsControlDontKnow() const;
67*b1cdbd2cSJim Jagielski virtual void SetControlDontKnow( bool bSet );
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski virtual const SvxBorderLine* GetControlValue() const;
70*b1cdbd2cSJim Jagielski virtual void SetControlValue( const SvxBorderLine* pLine );
71*b1cdbd2cSJim Jagielski
72*b1cdbd2cSJim Jagielski private:
73*b1cdbd2cSJim Jagielski FrameBorderType meBorder; /// The line this wrapper works with.
74*b1cdbd2cSJim Jagielski };
75*b1cdbd2cSJim Jagielski
IsControlDontKnow() const76*b1cdbd2cSJim Jagielski bool FrameSelectorWrapper::IsControlDontKnow() const
77*b1cdbd2cSJim Jagielski {
78*b1cdbd2cSJim Jagielski return GetControl().GetFrameBorderState( meBorder ) == FRAMESTATE_DONTCARE;
79*b1cdbd2cSJim Jagielski }
80*b1cdbd2cSJim Jagielski
SetControlDontKnow(bool bSet)81*b1cdbd2cSJim Jagielski void FrameSelectorWrapper::SetControlDontKnow( bool bSet )
82*b1cdbd2cSJim Jagielski {
83*b1cdbd2cSJim Jagielski if( bSet )
84*b1cdbd2cSJim Jagielski GetControl().SetBorderDontCare( meBorder );
85*b1cdbd2cSJim Jagielski }
86*b1cdbd2cSJim Jagielski
GetControlValue() const87*b1cdbd2cSJim Jagielski const SvxBorderLine* FrameSelectorWrapper::GetControlValue() const
88*b1cdbd2cSJim Jagielski {
89*b1cdbd2cSJim Jagielski return GetControl().GetFrameBorderStyle( meBorder );
90*b1cdbd2cSJim Jagielski }
91*b1cdbd2cSJim Jagielski
SetControlValue(const SvxBorderLine * pLine)92*b1cdbd2cSJim Jagielski void FrameSelectorWrapper::SetControlValue( const SvxBorderLine* pLine )
93*b1cdbd2cSJim Jagielski {
94*b1cdbd2cSJim Jagielski GetControl().ShowBorder( meBorder, pLine );
95*b1cdbd2cSJim Jagielski }
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielski // 3rd: connection ------------------------------------------------------------
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski typedef sfx::ItemControlConnection< LineItemWrapper, FrameSelectorWrapper > FrameLineConnection;
100*b1cdbd2cSJim Jagielski
101*b1cdbd2cSJim Jagielski /* ============================================================================
102*b1cdbd2cSJim Jagielski SvxMarginItem connection
103*b1cdbd2cSJim Jagielski ------------------------
104*b1cdbd2cSJim Jagielski Connects an SvxMarginItem (that contains the inner margin of all cell borders)
105*b1cdbd2cSJim Jagielski with the numerical edit controls of the SvxBorderTabPage. If this connection is
106*b1cdbd2cSJim Jagielski used, no additional code is needed in the Reset() and FillItemSet() functions
107*b1cdbd2cSJim Jagielski of the tab page.
108*b1cdbd2cSJim Jagielski ============================================================================ */
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski // 1st: item wrappers ---------------------------------------------------------
111*b1cdbd2cSJim Jagielski
112*b1cdbd2cSJim Jagielski typedef sfx::IdentItemWrapper< SvxMarginItem > MarginItemWrapper;
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski // 2nd: control wrappers ------------------------------------------------------
115*b1cdbd2cSJim Jagielski
116*b1cdbd2cSJim Jagielski class MarginControlsWrapper : public sfx::MultiControlWrapper< SvxMarginItem >
117*b1cdbd2cSJim Jagielski {
118*b1cdbd2cSJim Jagielski public:
119*b1cdbd2cSJim Jagielski explicit MarginControlsWrapper(
120*b1cdbd2cSJim Jagielski MetricField& rMfLeft, MetricField& rMfRight,
121*b1cdbd2cSJim Jagielski MetricField& rMfTop, MetricField& rMfBottom );
122*b1cdbd2cSJim Jagielski
123*b1cdbd2cSJim Jagielski virtual SvxMarginItem GetControlValue() const;
124*b1cdbd2cSJim Jagielski virtual void SetControlValue( SvxMarginItem aItem );
125*b1cdbd2cSJim Jagielski
126*b1cdbd2cSJim Jagielski private:
127*b1cdbd2cSJim Jagielski sfx::Int16MetricFieldWrapper maLeftWrp;
128*b1cdbd2cSJim Jagielski sfx::Int16MetricFieldWrapper maRightWrp;
129*b1cdbd2cSJim Jagielski sfx::Int16MetricFieldWrapper maTopWrp;
130*b1cdbd2cSJim Jagielski sfx::Int16MetricFieldWrapper maBottomWrp;
131*b1cdbd2cSJim Jagielski };
132*b1cdbd2cSJim Jagielski
MarginControlsWrapper(MetricField & rMfLeft,MetricField & rMfRight,MetricField & rMfTop,MetricField & rMfBottom)133*b1cdbd2cSJim Jagielski MarginControlsWrapper::MarginControlsWrapper(
134*b1cdbd2cSJim Jagielski MetricField& rMfLeft, MetricField& rMfRight, MetricField& rMfTop, MetricField& rMfBottom ) :
135*b1cdbd2cSJim Jagielski maLeftWrp( rMfLeft, FUNIT_TWIP ),
136*b1cdbd2cSJim Jagielski maRightWrp( rMfRight, FUNIT_TWIP ),
137*b1cdbd2cSJim Jagielski maTopWrp( rMfTop, FUNIT_TWIP ),
138*b1cdbd2cSJim Jagielski maBottomWrp( rMfBottom, FUNIT_TWIP )
139*b1cdbd2cSJim Jagielski {
140*b1cdbd2cSJim Jagielski RegisterControlWrapper( maLeftWrp );
141*b1cdbd2cSJim Jagielski RegisterControlWrapper( maRightWrp );
142*b1cdbd2cSJim Jagielski RegisterControlWrapper( maTopWrp );
143*b1cdbd2cSJim Jagielski RegisterControlWrapper( maBottomWrp );
144*b1cdbd2cSJim Jagielski }
145*b1cdbd2cSJim Jagielski
GetControlValue() const146*b1cdbd2cSJim Jagielski SvxMarginItem MarginControlsWrapper::GetControlValue() const
147*b1cdbd2cSJim Jagielski {
148*b1cdbd2cSJim Jagielski SvxMarginItem aItem( GetDefaultValue() );
149*b1cdbd2cSJim Jagielski if( !maLeftWrp.IsControlDontKnow() )
150*b1cdbd2cSJim Jagielski aItem.SetLeftMargin( maLeftWrp.GetControlValue() );
151*b1cdbd2cSJim Jagielski if( !maRightWrp.IsControlDontKnow() )
152*b1cdbd2cSJim Jagielski aItem.SetRightMargin( maRightWrp.GetControlValue() );
153*b1cdbd2cSJim Jagielski if( !maTopWrp.IsControlDontKnow() )
154*b1cdbd2cSJim Jagielski aItem.SetTopMargin( maTopWrp.GetControlValue() );
155*b1cdbd2cSJim Jagielski if( !maBottomWrp.IsControlDontKnow() )
156*b1cdbd2cSJim Jagielski aItem.SetBottomMargin( maBottomWrp.GetControlValue() );
157*b1cdbd2cSJim Jagielski return aItem;
158*b1cdbd2cSJim Jagielski }
159*b1cdbd2cSJim Jagielski
SetControlValue(SvxMarginItem aItem)160*b1cdbd2cSJim Jagielski void MarginControlsWrapper::SetControlValue( SvxMarginItem aItem )
161*b1cdbd2cSJim Jagielski {
162*b1cdbd2cSJim Jagielski maLeftWrp.SetControlValue( aItem.GetLeftMargin() );
163*b1cdbd2cSJim Jagielski maRightWrp.SetControlValue( aItem.GetRightMargin() );
164*b1cdbd2cSJim Jagielski maTopWrp.SetControlValue( aItem.GetTopMargin() );
165*b1cdbd2cSJim Jagielski maBottomWrp.SetControlValue( aItem.GetBottomMargin() );
166*b1cdbd2cSJim Jagielski }
167*b1cdbd2cSJim Jagielski
168*b1cdbd2cSJim Jagielski // 3rd: connection ------------------------------------------------------------
169*b1cdbd2cSJim Jagielski
170*b1cdbd2cSJim Jagielski class MarginConnection : public sfx::ItemControlConnection< MarginItemWrapper, MarginControlsWrapper >
171*b1cdbd2cSJim Jagielski {
172*b1cdbd2cSJim Jagielski public:
173*b1cdbd2cSJim Jagielski explicit MarginConnection( const SfxItemSet& rItemSet,
174*b1cdbd2cSJim Jagielski MetricField& rMfLeft, MetricField& rMfRight,
175*b1cdbd2cSJim Jagielski MetricField& rMfTop, MetricField& rMfBottom,
176*b1cdbd2cSJim Jagielski sfx::ItemConnFlags nFlags = sfx::ITEMCONN_DEFAULT );
177*b1cdbd2cSJim Jagielski };
178*b1cdbd2cSJim Jagielski
MarginConnection(const SfxItemSet & rItemSet,MetricField & rMfLeft,MetricField & rMfRight,MetricField & rMfTop,MetricField & rMfBottom,sfx::ItemConnFlags nFlags)179*b1cdbd2cSJim Jagielski MarginConnection::MarginConnection( const SfxItemSet& rItemSet,
180*b1cdbd2cSJim Jagielski MetricField& rMfLeft, MetricField& rMfRight, MetricField& rMfTop, MetricField& rMfBottom,
181*b1cdbd2cSJim Jagielski sfx::ItemConnFlags nFlags ) :
182*b1cdbd2cSJim Jagielski ItemControlConnectionType( SID_ATTR_ALIGN_MARGIN, new MarginControlsWrapper( rMfLeft, rMfRight, rMfTop, rMfBottom ), nFlags )
183*b1cdbd2cSJim Jagielski {
184*b1cdbd2cSJim Jagielski mxCtrlWrp->SetDefaultValue( maItemWrp.GetDefaultItem( rItemSet ) );
185*b1cdbd2cSJim Jagielski }
186*b1cdbd2cSJim Jagielski
187*b1cdbd2cSJim Jagielski /* ============================================================================
188*b1cdbd2cSJim Jagielski SvxShadowItem connection
189*b1cdbd2cSJim Jagielski ------------------------
190*b1cdbd2cSJim Jagielski Connects an SvxShadowItem (that contains shadow position, size, and color) with
191*b1cdbd2cSJim Jagielski the controls of the SvxBorderTabPage. If this connection is used, no additional
192*b1cdbd2cSJim Jagielski code is needed in the Reset() and FillItemSet() functions of the tab page.
193*b1cdbd2cSJim Jagielski ============================================================================ */
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski // 1st: item wrappers ---------------------------------------------------------
196*b1cdbd2cSJim Jagielski
197*b1cdbd2cSJim Jagielski typedef sfx::IdentItemWrapper< SvxShadowItem > ShadowItemWrapper;
198*b1cdbd2cSJim Jagielski
199*b1cdbd2cSJim Jagielski // 2nd: control wrappers ------------------------------------------------------
200*b1cdbd2cSJim Jagielski
201*b1cdbd2cSJim Jagielski typedef sfx::ValueSetWrapper< SvxShadowLocation > ShadowPosWrapper;
202*b1cdbd2cSJim Jagielski static const ShadowPosWrapper::MapEntryType s_pShadowPosMap[] =
203*b1cdbd2cSJim Jagielski {
204*b1cdbd2cSJim Jagielski { 1, SVX_SHADOW_NONE },
205*b1cdbd2cSJim Jagielski { 2, SVX_SHADOW_BOTTOMRIGHT },
206*b1cdbd2cSJim Jagielski { 3, SVX_SHADOW_TOPRIGHT },
207*b1cdbd2cSJim Jagielski { 4, SVX_SHADOW_BOTTOMLEFT },
208*b1cdbd2cSJim Jagielski { 5, SVX_SHADOW_TOPLEFT },
209*b1cdbd2cSJim Jagielski { VALUESET_ITEM_NOTFOUND, SVX_SHADOW_NONE }
210*b1cdbd2cSJim Jagielski };
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim Jagielski class ShadowControlsWrapper : public sfx::MultiControlWrapper< SvxShadowItem >
213*b1cdbd2cSJim Jagielski {
214*b1cdbd2cSJim Jagielski public:
215*b1cdbd2cSJim Jagielski explicit ShadowControlsWrapper( ValueSet& rVsPos, MetricField& rMfSize, ColorListBox& rLbColor );
216*b1cdbd2cSJim Jagielski
217*b1cdbd2cSJim Jagielski virtual SvxShadowItem GetControlValue() const;
218*b1cdbd2cSJim Jagielski virtual void SetControlValue( SvxShadowItem aItem );
219*b1cdbd2cSJim Jagielski
220*b1cdbd2cSJim Jagielski private:
221*b1cdbd2cSJim Jagielski ShadowPosWrapper maPosWrp;
222*b1cdbd2cSJim Jagielski sfx::UShortMetricFieldWrapper maSizeWrp;
223*b1cdbd2cSJim Jagielski sfx::ColorListBoxWrapper maColorWrp;
224*b1cdbd2cSJim Jagielski };
225*b1cdbd2cSJim Jagielski
ShadowControlsWrapper(ValueSet & rVsPos,MetricField & rMfSize,ColorListBox & rLbColor)226*b1cdbd2cSJim Jagielski ShadowControlsWrapper::ShadowControlsWrapper(
227*b1cdbd2cSJim Jagielski ValueSet& rVsPos, MetricField& rMfSize, ColorListBox& rLbColor ) :
228*b1cdbd2cSJim Jagielski maPosWrp( rVsPos, s_pShadowPosMap ),
229*b1cdbd2cSJim Jagielski maSizeWrp( rMfSize, FUNIT_TWIP ),
230*b1cdbd2cSJim Jagielski maColorWrp( rLbColor )
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski RegisterControlWrapper( maPosWrp );
233*b1cdbd2cSJim Jagielski RegisterControlWrapper( maSizeWrp );
234*b1cdbd2cSJim Jagielski RegisterControlWrapper( maColorWrp );
235*b1cdbd2cSJim Jagielski }
236*b1cdbd2cSJim Jagielski
GetControlValue() const237*b1cdbd2cSJim Jagielski SvxShadowItem ShadowControlsWrapper::GetControlValue() const
238*b1cdbd2cSJim Jagielski {
239*b1cdbd2cSJim Jagielski SvxShadowItem aItem( GetDefaultValue() );
240*b1cdbd2cSJim Jagielski if( !maPosWrp.IsControlDontKnow() )
241*b1cdbd2cSJim Jagielski aItem.SetLocation( maPosWrp.GetControlValue() );
242*b1cdbd2cSJim Jagielski if( !maSizeWrp.IsControlDontKnow() )
243*b1cdbd2cSJim Jagielski aItem.SetWidth( maSizeWrp.GetControlValue() );
244*b1cdbd2cSJim Jagielski if( !maColorWrp.IsControlDontKnow() )
245*b1cdbd2cSJim Jagielski aItem.SetColor( maColorWrp.GetControlValue() );
246*b1cdbd2cSJim Jagielski return aItem;
247*b1cdbd2cSJim Jagielski }
248*b1cdbd2cSJim Jagielski
SetControlValue(SvxShadowItem aItem)249*b1cdbd2cSJim Jagielski void ShadowControlsWrapper::SetControlValue( SvxShadowItem aItem )
250*b1cdbd2cSJim Jagielski {
251*b1cdbd2cSJim Jagielski maPosWrp.SetControlValue( aItem.GetLocation() );
252*b1cdbd2cSJim Jagielski maSizeWrp.SetControlValue( aItem.GetWidth() );
253*b1cdbd2cSJim Jagielski maColorWrp.SetControlValue( aItem.GetColor() );
254*b1cdbd2cSJim Jagielski }
255*b1cdbd2cSJim Jagielski
256*b1cdbd2cSJim Jagielski // 3rd: connection ------------------------------------------------------------
257*b1cdbd2cSJim Jagielski
258*b1cdbd2cSJim Jagielski class ShadowConnection : public sfx::ItemControlConnection< ShadowItemWrapper, ShadowControlsWrapper >
259*b1cdbd2cSJim Jagielski {
260*b1cdbd2cSJim Jagielski public:
261*b1cdbd2cSJim Jagielski explicit ShadowConnection( const SfxItemSet& rItemSet,
262*b1cdbd2cSJim Jagielski ValueSet& rVsPos, MetricField& rMfSize, ColorListBox& rLbColor,
263*b1cdbd2cSJim Jagielski sfx::ItemConnFlags nFlags = sfx::ITEMCONN_DEFAULT );
264*b1cdbd2cSJim Jagielski };
265*b1cdbd2cSJim Jagielski
ShadowConnection(const SfxItemSet & rItemSet,ValueSet & rVsPos,MetricField & rMfSize,ColorListBox & rLbColor,sfx::ItemConnFlags nFlags)266*b1cdbd2cSJim Jagielski ShadowConnection::ShadowConnection( const SfxItemSet& rItemSet,
267*b1cdbd2cSJim Jagielski ValueSet& rVsPos, MetricField& rMfSize, ColorListBox& rLbColor, sfx::ItemConnFlags nFlags ) :
268*b1cdbd2cSJim Jagielski ItemControlConnectionType( SID_ATTR_BORDER_SHADOW, new ShadowControlsWrapper( rVsPos, rMfSize, rLbColor ), nFlags )
269*b1cdbd2cSJim Jagielski {
270*b1cdbd2cSJim Jagielski mxCtrlWrp->SetDefaultValue( maItemWrp.GetDefaultItem( rItemSet ) );
271*b1cdbd2cSJim Jagielski }
272*b1cdbd2cSJim Jagielski
273*b1cdbd2cSJim Jagielski // ============================================================================
274*b1cdbd2cSJim Jagielski // ============================================================================
275*b1cdbd2cSJim Jagielski
CreateFrameLineConnection(sal_uInt16 nSlot,FrameSelector & rFrameSel,FrameBorderType eBorder,sfx::ItemConnFlags nFlags)276*b1cdbd2cSJim Jagielski sfx::ItemConnectionBase* CreateFrameLineConnection( sal_uInt16 nSlot,
277*b1cdbd2cSJim Jagielski FrameSelector& rFrameSel, FrameBorderType eBorder, sfx::ItemConnFlags nFlags )
278*b1cdbd2cSJim Jagielski {
279*b1cdbd2cSJim Jagielski return new FrameLineConnection( nSlot, new FrameSelectorWrapper( rFrameSel, eBorder ), nFlags );
280*b1cdbd2cSJim Jagielski }
281*b1cdbd2cSJim Jagielski
CreateMarginConnection(const SfxItemSet & rItemSet,MetricField & rMfLeft,MetricField & rMfRight,MetricField & rMfTop,MetricField & rMfBottom,sfx::ItemConnFlags nFlags)282*b1cdbd2cSJim Jagielski sfx::ItemConnectionBase* CreateMarginConnection( const SfxItemSet& rItemSet,
283*b1cdbd2cSJim Jagielski MetricField& rMfLeft, MetricField& rMfRight,
284*b1cdbd2cSJim Jagielski MetricField& rMfTop, MetricField& rMfBottom,
285*b1cdbd2cSJim Jagielski sfx::ItemConnFlags nFlags )
286*b1cdbd2cSJim Jagielski {
287*b1cdbd2cSJim Jagielski return new MarginConnection( rItemSet, rMfLeft, rMfRight, rMfTop, rMfBottom, nFlags );
288*b1cdbd2cSJim Jagielski }
289*b1cdbd2cSJim Jagielski
CreateShadowConnection(const SfxItemSet & rItemSet,ValueSet & rVsPos,MetricField & rMfSize,ColorListBox & rLbColor,sfx::ItemConnFlags nFlags)290*b1cdbd2cSJim Jagielski sfx::ItemConnectionBase* CreateShadowConnection( const SfxItemSet& rItemSet,
291*b1cdbd2cSJim Jagielski ValueSet& rVsPos, MetricField& rMfSize, ColorListBox& rLbColor,
292*b1cdbd2cSJim Jagielski sfx::ItemConnFlags nFlags )
293*b1cdbd2cSJim Jagielski {
294*b1cdbd2cSJim Jagielski return new ShadowConnection( rItemSet, rVsPos, rMfSize, rLbColor, nFlags );
295*b1cdbd2cSJim Jagielski }
296*b1cdbd2cSJim Jagielski
297*b1cdbd2cSJim Jagielski // ============================================================================
298*b1cdbd2cSJim Jagielski
299*b1cdbd2cSJim Jagielski } // namespace svx
300*b1cdbd2cSJim Jagielski
301