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