xref: /aoo4110/main/svx/source/inc/frmselimpl.hxx (revision b1cdbd2c)
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 #ifndef SVX_FRMSELIMPL_HXX
25*b1cdbd2cSJim Jagielski #define SVX_FRMSELIMPL_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <vcl/virdev.hxx>
28*b1cdbd2cSJim Jagielski #include <vcl/image.hxx>
29*b1cdbd2cSJim Jagielski #include <svx/frmsel.hxx>
30*b1cdbd2cSJim Jagielski #include <svx/framelinkarray.hxx>
31*b1cdbd2cSJim Jagielski #include <editeng/borderline.hxx>
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski namespace svx {
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski namespace a11y { class AccFrameSelector; }
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski // ============================================================================
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski class FrameBorder
40*b1cdbd2cSJim Jagielski {
41*b1cdbd2cSJim Jagielski public:
42*b1cdbd2cSJim Jagielski     explicit            FrameBorder( FrameBorderType eType );
43*b1cdbd2cSJim Jagielski 
GetType() const44*b1cdbd2cSJim Jagielski     inline FrameBorderType GetType() const { return meType; }
45*b1cdbd2cSJim Jagielski 
IsEnabled() const46*b1cdbd2cSJim Jagielski     inline bool         IsEnabled() const { return mbEnabled; }
47*b1cdbd2cSJim Jagielski     void                Enable( FrameSelFlags nFlags );
48*b1cdbd2cSJim Jagielski 
GetState() const49*b1cdbd2cSJim Jagielski     inline FrameBorderState GetState() const { return meState; }
50*b1cdbd2cSJim Jagielski     void                SetState( FrameBorderState eState );
51*b1cdbd2cSJim Jagielski 
IsSelected() const52*b1cdbd2cSJim Jagielski     inline bool         IsSelected() const { return mbSelected; }
Select(bool bSelect)53*b1cdbd2cSJim Jagielski     inline void         Select( bool bSelect ) { mbSelected = bSelect; }
54*b1cdbd2cSJim Jagielski 
GetCoreStyle() const55*b1cdbd2cSJim Jagielski     const SvxBorderLine& GetCoreStyle() const { return maCoreStyle; }
56*b1cdbd2cSJim Jagielski     void                SetCoreStyle( const SvxBorderLine* pStyle );
57*b1cdbd2cSJim Jagielski 
SetUIColor(const Color & rColor)58*b1cdbd2cSJim Jagielski     inline void         SetUIColor( const Color& rColor ) {maUIStyle.SetColor( rColor ); }
GetUIStyle() const59*b1cdbd2cSJim Jagielski     inline const frame::Style& GetUIStyle() const { return maUIStyle; }
60*b1cdbd2cSJim Jagielski 
ClearFocusArea()61*b1cdbd2cSJim Jagielski     inline void         ClearFocusArea() { maFocusArea.Clear(); }
62*b1cdbd2cSJim Jagielski     void                AddFocusPolygon( const Polygon& rFocus );
63*b1cdbd2cSJim Jagielski     void                MergeFocusToPolyPolygon( PolyPolygon& rPPoly ) const;
64*b1cdbd2cSJim Jagielski 
ClearClickArea()65*b1cdbd2cSJim Jagielski     inline void         ClearClickArea() { maClickArea.Clear(); }
66*b1cdbd2cSJim Jagielski     void                AddClickRect( const Rectangle& rRect );
67*b1cdbd2cSJim Jagielski     bool                ContainsClickPoint( const Point& rPos ) const;
68*b1cdbd2cSJim Jagielski     void                MergeClickAreaToPolyPolygon( PolyPolygon& rPPoly ) const;
69*b1cdbd2cSJim Jagielski     Rectangle           GetClickBoundRect() const;
70*b1cdbd2cSJim Jagielski 
71*b1cdbd2cSJim Jagielski     void                SetKeyboardNeighbors(
72*b1cdbd2cSJim Jagielski                             FrameBorderType eLeft, FrameBorderType eRight,
73*b1cdbd2cSJim Jagielski                             FrameBorderType eTop, FrameBorderType eBottom );
74*b1cdbd2cSJim Jagielski     FrameBorderType     GetKeyboardNeighbor( sal_uInt16 nKeyCode ) const;
75*b1cdbd2cSJim Jagielski 
76*b1cdbd2cSJim Jagielski private:
77*b1cdbd2cSJim Jagielski     const FrameBorderType meType;       /// Frame border type (position in control).
78*b1cdbd2cSJim Jagielski     FrameBorderState    meState;        /// Frame border state (on/off/don't care).
79*b1cdbd2cSJim Jagielski     SvxBorderLine       maCoreStyle;    /// Core style from application.
80*b1cdbd2cSJim Jagielski     frame::Style        maUIStyle;      /// Internal style to draw lines.
81*b1cdbd2cSJim Jagielski     FrameBorderType     meKeyLeft;      /// Left neighbor for keyboard control.
82*b1cdbd2cSJim Jagielski     FrameBorderType     meKeyRight;     /// Right neighbor for keyboard control.
83*b1cdbd2cSJim Jagielski     FrameBorderType     meKeyTop;       /// Upper neighbor for keyboard control.
84*b1cdbd2cSJim Jagielski     FrameBorderType     meKeyBottom;    /// Lower neighbor for keyboard control.
85*b1cdbd2cSJim Jagielski     PolyPolygon         maFocusArea;    /// Focus drawing areas.
86*b1cdbd2cSJim Jagielski     PolyPolygon         maClickArea;    /// Mouse click areas.
87*b1cdbd2cSJim Jagielski     bool                mbEnabled;      /// true = Border enabled in control.
88*b1cdbd2cSJim Jagielski     bool                mbSelected;     /// true = Border selected in control.
89*b1cdbd2cSJim Jagielski };
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski // ============================================================================
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski typedef std::vector< FrameBorder* >     FrameBorderPtrVec;
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski struct FrameSelectorImpl : public Resource
96*b1cdbd2cSJim Jagielski {
97*b1cdbd2cSJim Jagielski     typedef ::com::sun::star::uno::Reference<
98*b1cdbd2cSJim Jagielski         ::com::sun::star::accessibility::XAccessible >  XAccessibleRef;
99*b1cdbd2cSJim Jagielski     typedef std::vector< a11y::AccFrameSelector* >      AccessibleImplVec;
100*b1cdbd2cSJim Jagielski     typedef std::vector< XAccessibleRef >               XAccessibleRefVec;
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski     FrameSelector&      mrFrameSel;     /// The control itself.
103*b1cdbd2cSJim Jagielski     VirtualDevice       maVirDev;       /// For all buffered drawing operations.
104*b1cdbd2cSJim Jagielski     ImageList           maILArrows;     /// Arrows in current system colors.
105*b1cdbd2cSJim Jagielski     Color               maBackCol;      /// Background color.
106*b1cdbd2cSJim Jagielski     Color               maArrowCol;     /// Selection arrow color.
107*b1cdbd2cSJim Jagielski     Color               maMarkCol;      /// Selection marker color.
108*b1cdbd2cSJim Jagielski     Color               maHCLineCol;    /// High contrast line color.
109*b1cdbd2cSJim Jagielski     Point               maVirDevPos;    /// Position of virtual device in the control.
110*b1cdbd2cSJim Jagielski     Point               maMousePos;     /// Last mouse pointer position.
111*b1cdbd2cSJim Jagielski 
112*b1cdbd2cSJim Jagielski     FrameBorder         maLeft;         /// All data of left frame border.
113*b1cdbd2cSJim Jagielski     FrameBorder         maRight;        /// All data of right frame border.
114*b1cdbd2cSJim Jagielski     FrameBorder         maTop;          /// All data of top frame border.
115*b1cdbd2cSJim Jagielski     FrameBorder         maBottom;       /// All data of bottom frame border.
116*b1cdbd2cSJim Jagielski     FrameBorder         maHor;          /// All data of inner horizontal frame border.
117*b1cdbd2cSJim Jagielski     FrameBorder         maVer;          /// All data of inner vertical frame border.
118*b1cdbd2cSJim Jagielski     FrameBorder         maTLBR;         /// All data of top-left to bottom-right frame border.
119*b1cdbd2cSJim Jagielski     FrameBorder         maBLTR;         /// All data of bottom-left to top-right frame border.
120*b1cdbd2cSJim Jagielski     SvxBorderLine       maCurrStyle;    /// Current style and color for new borders.
121*b1cdbd2cSJim Jagielski     frame::Array        maArray;        /// Frame link array to draw an array of frame borders.
122*b1cdbd2cSJim Jagielski 
123*b1cdbd2cSJim Jagielski     FrameSelFlags       mnFlags;        /// Flags for enabled frame borders.
124*b1cdbd2cSJim Jagielski     FrameBorderPtrVec   maAllBorders;   /// Pointers to all frame borders.
125*b1cdbd2cSJim Jagielski     FrameBorderPtrVec   maEnabBorders;  /// Pointers to enables frame borders.
126*b1cdbd2cSJim Jagielski     Link                maSelectHdl;    /// Selection handler.
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski     long                mnCtrlSize;     /// Size of the control (always square).
129*b1cdbd2cSJim Jagielski     long                mnArrowSize;    /// Size of an arrow image.
130*b1cdbd2cSJim Jagielski     long                mnLine1;        /// Middle of left/top frame borders.
131*b1cdbd2cSJim Jagielski     long                mnLine2;        /// Middle of inner frame borders.
132*b1cdbd2cSJim Jagielski     long                mnLine3;        /// Middle of right/bottom frame borders.
133*b1cdbd2cSJim Jagielski     long                mnFocusOffs;    /// Offset from frame border middle to draw focus.
134*b1cdbd2cSJim Jagielski 
135*b1cdbd2cSJim Jagielski     bool                mbHor;          /// true = Inner horizontal frame border enabled.
136*b1cdbd2cSJim Jagielski     bool                mbVer;          /// true = Inner vertical frame border enabled.
137*b1cdbd2cSJim Jagielski     bool                mbTLBR;         /// true = Top-left to bottom-right frame border enabled.
138*b1cdbd2cSJim Jagielski     bool                mbBLTR;         /// true = Bottom-left to top-right frame border enabled.
139*b1cdbd2cSJim Jagielski     bool                mbFullRepaint;  /// Used for repainting (false = only copy virtual device).
140*b1cdbd2cSJim Jagielski     bool                mbAutoSelect;   /// true = Auto select a frame border, if focus reaches control.
141*b1cdbd2cSJim Jagielski     bool                mbClicked;      /// true = The control has been clicked at least one time.
142*b1cdbd2cSJim Jagielski     bool                mbHCMode;       /// true = High contrast mode.
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski     a11y::AccFrameSelector* mpAccess;   /// Pointer to accessibility object of the control.
145*b1cdbd2cSJim Jagielski     XAccessibleRef      mxAccess;       /// Reference to accessibility object of the control.
146*b1cdbd2cSJim Jagielski     AccessibleImplVec   maChildVec;     /// Pointers to accessibility objects for frame borders.
147*b1cdbd2cSJim Jagielski     XAccessibleRefVec   mxChildVec;     /// References to accessibility objects for frame borders.
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski     explicit            FrameSelectorImpl( FrameSelector& rFrameSel );
150*b1cdbd2cSJim Jagielski                         ~FrameSelectorImpl();
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski     // initialization ---------------------------------------------------------
153*b1cdbd2cSJim Jagielski 
154*b1cdbd2cSJim Jagielski     /** Initializes the control, enables/disables frame borders according to flags. */
155*b1cdbd2cSJim Jagielski     void                Initialize( FrameSelFlags nFlags );
156*b1cdbd2cSJim Jagielski 
157*b1cdbd2cSJim Jagielski     /** Fills all color members from current style settings. */
158*b1cdbd2cSJim Jagielski     void                InitColors();
159*b1cdbd2cSJim Jagielski     /** Creates the image list with selection arrows regarding current style settings. */
160*b1cdbd2cSJim Jagielski     void                InitArrowImageList();
161*b1cdbd2cSJim Jagielski     /** Initializes global coordinates. */
162*b1cdbd2cSJim Jagielski     void                InitGlobalGeometry();
163*b1cdbd2cSJim Jagielski     /** Initializes coordinates of all frame borders. */
164*b1cdbd2cSJim Jagielski     void                InitBorderGeometry();
165*b1cdbd2cSJim Jagielski     /** Initializes click areas of all enabled frame borders. */
166*b1cdbd2cSJim Jagielski     void                InitClickAreas();
167*b1cdbd2cSJim Jagielski     /** Draws the entire control into the internal virtual device. */
168*b1cdbd2cSJim Jagielski     void                InitVirtualDevice();
169*b1cdbd2cSJim Jagielski 
170*b1cdbd2cSJim Jagielski     // frame border access ----------------------------------------------------
171*b1cdbd2cSJim Jagielski 
172*b1cdbd2cSJim Jagielski     /** Returns the object representing the specified frame border. */
173*b1cdbd2cSJim Jagielski     const FrameBorder&  GetBorder( FrameBorderType eBorder ) const;
174*b1cdbd2cSJim Jagielski     /** Returns the object representing the specified frame border (write access). */
175*b1cdbd2cSJim Jagielski     FrameBorder&        GetBorderAccess( FrameBorderType eBorder );
176*b1cdbd2cSJim Jagielski 
177*b1cdbd2cSJim Jagielski     // drawing ----------------------------------------------------------------
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski     /** Draws the background of the entire control (the gray areas between borders). */
180*b1cdbd2cSJim Jagielski     void                DrawBackground();
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski     /** Draws selection arrows for the specified frame border. */
183*b1cdbd2cSJim Jagielski     void                DrawArrows( const FrameBorder& rBorder );
184*b1cdbd2cSJim Jagielski     /** Draws arrows in current selection state for all enabled frame borders. */
185*b1cdbd2cSJim Jagielski     void                DrawAllArrows();
186*b1cdbd2cSJim Jagielski 
187*b1cdbd2cSJim Jagielski     /** Returns the color that has to be used to draw a frame border. */
188*b1cdbd2cSJim Jagielski     Color               GetDrawLineColor( const Color& rColor ) const;
189*b1cdbd2cSJim Jagielski     /** Draws all frame borders. */
190*b1cdbd2cSJim Jagielski     void                DrawAllFrameBorders();
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski     /** Draws all contents of the control. */
193*b1cdbd2cSJim Jagielski     void                DrawVirtualDevice();
194*b1cdbd2cSJim Jagielski     /** Copies contents of the virtual device to the control. */
195*b1cdbd2cSJim Jagielski     void                CopyVirDevToControl();
196*b1cdbd2cSJim Jagielski 
197*b1cdbd2cSJim Jagielski     /** Draws tracking rectangles for all selected frame borders. */
198*b1cdbd2cSJim Jagielski     void                DrawAllTrackingRects();
199*b1cdbd2cSJim Jagielski 
200*b1cdbd2cSJim Jagielski     /** Converts a mouse position to the virtual device position. */
201*b1cdbd2cSJim Jagielski     Point               GetDevPosFromMousePos( const Point& rMousePos ) const;
202*b1cdbd2cSJim Jagielski 
203*b1cdbd2cSJim Jagielski     /** Invalidates the control.
204*b1cdbd2cSJim Jagielski         @param bFullRepaint  true = Full repaint; false = update selection only. */
205*b1cdbd2cSJim Jagielski     void                DoInvalidate( bool bFullRepaint );
206*b1cdbd2cSJim Jagielski 
207*b1cdbd2cSJim Jagielski     // frame border state and style -------------------------------------------
208*b1cdbd2cSJim Jagielski 
209*b1cdbd2cSJim Jagielski     /** Sets the state of the specified frame border. */
210*b1cdbd2cSJim Jagielski     void                SetBorderState( FrameBorder& rBorder, FrameBorderState eState );
211*b1cdbd2cSJim Jagielski     /** Sets the core style of the specified frame border, or hides the frame border, if pStyle is 0. */
212*b1cdbd2cSJim Jagielski     void                SetBorderCoreStyle( FrameBorder& rBorder, const SvxBorderLine* pStyle );
213*b1cdbd2cSJim Jagielski     /** Sets the color of the specified frame border. */
214*b1cdbd2cSJim Jagielski     void                SetBorderColor( FrameBorder& rBorder, const Color& rColor );
215*b1cdbd2cSJim Jagielski 
216*b1cdbd2cSJim Jagielski     /** Changes the state of a frame border after a control event (mouse/keyboard). */
217*b1cdbd2cSJim Jagielski     void                ToggleBorderState( FrameBorder& rBorder );
218*b1cdbd2cSJim Jagielski 
219*b1cdbd2cSJim Jagielski     // frame border selection -------------------------------------------------
220*b1cdbd2cSJim Jagielski 
221*b1cdbd2cSJim Jagielski     /** Selects a frame border and schedules redraw. */
222*b1cdbd2cSJim Jagielski     void                SelectBorder( FrameBorder& rBorder, bool bSelect );
223*b1cdbd2cSJim Jagielski     /** Grabs focus without auto-selection of a frame border, if no border selected. */
224*b1cdbd2cSJim Jagielski     void                SilentGrabFocus();
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski     /** Returns true, if all selected frame borders are equal (or if nothing is selected). */
227*b1cdbd2cSJim Jagielski     bool                SelectedBordersEqual() const;
228*b1cdbd2cSJim Jagielski };
229*b1cdbd2cSJim Jagielski 
230*b1cdbd2cSJim Jagielski // ============================================================================
231*b1cdbd2cSJim Jagielski 
232*b1cdbd2cSJim Jagielski /** Dummy predicate for frame border iterators to use all borders in a container. */
233*b1cdbd2cSJim Jagielski struct FrameBorderDummy_Pred
234*b1cdbd2cSJim Jagielski {
operator ()svx::FrameBorderDummy_Pred235*b1cdbd2cSJim Jagielski     inline bool operator()( const FrameBorder* ) const { return true; }
236*b1cdbd2cSJim Jagielski };
237*b1cdbd2cSJim Jagielski 
238*b1cdbd2cSJim Jagielski /** Predicate for frame border iterators to use only visible borders in a container. */
239*b1cdbd2cSJim Jagielski struct FrameBorderVisible_Pred
240*b1cdbd2cSJim Jagielski {
operator ()svx::FrameBorderVisible_Pred241*b1cdbd2cSJim Jagielski     inline bool operator()( const FrameBorder* pBorder ) const { return pBorder->GetState() == FRAMESTATE_SHOW; }
242*b1cdbd2cSJim Jagielski };
243*b1cdbd2cSJim Jagielski 
244*b1cdbd2cSJim Jagielski /** Predicate for frame border iterators to use only selected borders in a container. */
245*b1cdbd2cSJim Jagielski struct FrameBorderSelected_Pred
246*b1cdbd2cSJim Jagielski {
operator ()svx::FrameBorderSelected_Pred247*b1cdbd2cSJim Jagielski     inline bool operator()( const FrameBorder* pBorder ) const { return pBorder->IsSelected(); }
248*b1cdbd2cSJim Jagielski };
249*b1cdbd2cSJim Jagielski 
250*b1cdbd2cSJim Jagielski /** Template class for all types of frame border iterators. */
251*b1cdbd2cSJim Jagielski template< typename Cont, typename Iter, typename Pred >
252*b1cdbd2cSJim Jagielski class FrameBorderIterBase
253*b1cdbd2cSJim Jagielski {
254*b1cdbd2cSJim Jagielski public:
255*b1cdbd2cSJim Jagielski     typedef Cont                                        container_type;
256*b1cdbd2cSJim Jagielski     typedef Iter                                        iterator_type;
257*b1cdbd2cSJim Jagielski     typedef Pred                                        predicate_type;
258*b1cdbd2cSJim Jagielski     typedef typename Cont::value_type                   value_type;
259*b1cdbd2cSJim Jagielski     typedef FrameBorderIterBase< Cont, Iter, Pred >    this_type;
260*b1cdbd2cSJim Jagielski 
261*b1cdbd2cSJim Jagielski     explicit            FrameBorderIterBase( container_type& rCont );
Is() const262*b1cdbd2cSJim Jagielski     inline bool         Is() const { return maIt != maEnd; }
263*b1cdbd2cSJim Jagielski     this_type&          operator++();
operator *() const264*b1cdbd2cSJim Jagielski     inline value_type   operator*() const { return *maIt; }
265*b1cdbd2cSJim Jagielski 
266*b1cdbd2cSJim Jagielski private:
267*b1cdbd2cSJim Jagielski     iterator_type       maIt;
268*b1cdbd2cSJim Jagielski     iterator_type       maEnd;
269*b1cdbd2cSJim Jagielski     predicate_type      maPred;
270*b1cdbd2cSJim Jagielski };
271*b1cdbd2cSJim Jagielski 
272*b1cdbd2cSJim Jagielski /** Iterator for constant svx::FrameBorder containers, iterates over all borders. */
273*b1cdbd2cSJim Jagielski typedef FrameBorderIterBase< const FrameBorderPtrVec, FrameBorderPtrVec::const_iterator, FrameBorderDummy_Pred >
274*b1cdbd2cSJim Jagielski     FrameBorderCIter;
275*b1cdbd2cSJim Jagielski 
276*b1cdbd2cSJim Jagielski /** Iterator for mutable svx::FrameBorder containers, iterates over all borders. */
277*b1cdbd2cSJim Jagielski typedef FrameBorderIterBase< FrameBorderPtrVec, FrameBorderPtrVec::iterator, FrameBorderDummy_Pred >
278*b1cdbd2cSJim Jagielski     FrameBorderIter;
279*b1cdbd2cSJim Jagielski 
280*b1cdbd2cSJim Jagielski /** Iterator for constant svx::FrameBorder containers, iterates over visible borders. */
281*b1cdbd2cSJim Jagielski typedef FrameBorderIterBase< const FrameBorderPtrVec, FrameBorderPtrVec::const_iterator, FrameBorderVisible_Pred >
282*b1cdbd2cSJim Jagielski     VisFrameBorderCIter;
283*b1cdbd2cSJim Jagielski 
284*b1cdbd2cSJim Jagielski /** Iterator for mutable svx::FrameBorder containers, iterates over visible borders. */
285*b1cdbd2cSJim Jagielski typedef FrameBorderIterBase< FrameBorderPtrVec, FrameBorderPtrVec::iterator, FrameBorderVisible_Pred >
286*b1cdbd2cSJim Jagielski     VisFrameBorderIter;
287*b1cdbd2cSJim Jagielski 
288*b1cdbd2cSJim Jagielski /** Iterator for constant svx::FrameBorder containers, iterates over selected borders. */
289*b1cdbd2cSJim Jagielski typedef FrameBorderIterBase< const FrameBorderPtrVec, FrameBorderPtrVec::const_iterator, FrameBorderSelected_Pred >
290*b1cdbd2cSJim Jagielski     SelFrameBorderCIter;
291*b1cdbd2cSJim Jagielski 
292*b1cdbd2cSJim Jagielski /** Iterator for mutable svx::FrameBorder containers, iterates over selected borders. */
293*b1cdbd2cSJim Jagielski typedef FrameBorderIterBase< FrameBorderPtrVec, FrameBorderPtrVec::iterator, FrameBorderSelected_Pred >
294*b1cdbd2cSJim Jagielski     SelFrameBorderIter;
295*b1cdbd2cSJim Jagielski 
296*b1cdbd2cSJim Jagielski // ============================================================================
297*b1cdbd2cSJim Jagielski 
298*b1cdbd2cSJim Jagielski } // namespace svx
299*b1cdbd2cSJim Jagielski 
300*b1cdbd2cSJim Jagielski #endif
301*b1cdbd2cSJim Jagielski 
302