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