Update ooo320-m1
[ooovba.git] / binfilter / inc / bf_sw / viscrs.hxx
blob0915ba208b37c66f84c77e0f131910c819c85758
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: viscrs.hxx,v $
10 * $Revision: 1.7 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
30 #ifndef _VISCRS_HXX
31 #define _VISCRS_HXX
33 #ifndef _CURSOR_HXX //autogen
34 #include <vcl/cursor.hxx>
35 #endif
36 #include "swcrsr.hxx"
37 #include "swrect.hxx"
38 #include "swregion.hxx"
39 class Window;
40 namespace binfilter {
42 class SwCrsrShell;
43 class SwShellCrsr;
47 // -------- Ab hier Klassen / Methoden fuer den nicht Text-Cursor ------
49 class SwVisCrsr
50 #ifdef SW_CRSR_TIMER
51 : private Timer
52 #endif
54 friend void _InitCore();
55 friend void _FinitCore();
57 BOOL bIsVisible : 1;
58 BOOL bIsDragCrsr : 1;
60 #ifdef SW_CRSR_TIMER
61 BOOL bTimerOn : 1;
62 #endif
64 Cursor aTxtCrsr;
65 const SwCrsrShell* pCrsrShell;
67 #ifdef SW_CRSR_TIMER
68 #endif
69 void _SetPosAndShow();
71 public:
72 ~SwVisCrsr();
74 void Show();
75 void Hide();
77 FASTBOOL IsVisible() const { return bIsVisible; }
78 FASTBOOL IsDragCrsr() const { return bIsDragCrsr; }
79 void SetDragCrsr( BOOL bFlag = TRUE ) { bIsDragCrsr = bFlag; }
81 #ifdef SW_CRSR_TIMER
82 #endif
86 // ------ Ab hier Klassen / Methoden fuer die Selectionen -------
88 class SwSelPaintRects : public SwRects
90 friend void _InitCore();
91 friend void _FinitCore();
93 static long nPixPtX, nPixPtY;
94 static MapMode *pMapMode;
96 // die Shell
97 const SwCrsrShell* pCShell;
100 virtual void FillRects() = 0;
102 public:
103 ~SwSelPaintRects();
105 void Show();
106 void Hide();
108 const SwCrsrShell* GetShell() const { return pCShell; }
112 class SwShellCrsr : public virtual SwCursor, public SwSelPaintRects
114 // Dokument-Positionen der Start/End-Charakter einer SSelection
115 Point aMkPt, aPtPt;
116 const SwPosition* pPt; // fuer Zuordung vom GetPoint() zum aPtPt
118 virtual void FillRects(); // fuer Table- und normalen Crsr
120 public:
121 SwShellCrsr( const SwCrsrShell& rCrsrSh, const SwPosition &rPos );
122 virtual ~SwShellCrsr();
124 virtual operator SwShellCrsr* ();
126 void Show(); // Update und zeige alle Selektionen an
128 const Point& GetPtPos() const { return( SwPaM::GetPoint() == pPt ? aPtPt : aMkPt ); }
129 Point& GetPtPos() { return( SwPaM::GetPoint() == pPt ? aPtPt : aMkPt ); }
130 const Point& GetMkPos() const { return( SwPaM::GetMark() == pPt ? aPtPt : aMkPt ); }
131 Point& GetMkPos() { return( SwPaM::GetMark() == pPt ? aPtPt : aMkPt ); }
132 const Point& GetSttPos() const { return( SwPaM::Start() == pPt ? aPtPt : aMkPt ); }
133 Point& GetSttPos() { return( SwPaM::Start() == pPt ? aPtPt : aMkPt ); }
134 const Point& GetEndPos() const { return( SwPaM::End() == pPt ? aPtPt : aMkPt ); }
135 Point& GetEndPos() { return( SwPaM::End() == pPt ? aPtPt : aMkPt ); }
140 FASTBOOL UpDown( BOOL bUp, USHORT nCnt = 1 );
142 // TRUE: an die Position kann der Cursor gesetzt werden
144 #ifndef PRODUCT
145 // JP 05.03.98: zum Testen des UNO-Crsr Verhaltens hier die Implementierung
146 // am sichtbaren Cursor
147 #endif
149 DECL_FIXEDMEMPOOL_NEWDEL( SwShellCrsr )
154 class SwShellTableCrsr : public virtual SwShellCrsr, public virtual SwTableCursor
156 // die Selection hat die gleiche Reihenfolge wie die
157 // TabellenBoxen. D.h., wird aus dem einen Array an einer Position
158 // etwas geloescht, dann muss es auch im anderen erfolgen!!
161 public:
162 SwShellTableCrsr( const SwCrsrShell& rCrsrSh, const SwPosition& rPos );
163 virtual ~SwShellTableCrsr();
165 virtual operator SwShellTableCrsr* ();
168 // Pruefe, ob sich der SPoint innerhalb der Tabellen-SSelection befindet
170 virtual void SetMark();
171 virtual operator SwShellCrsr* ();
172 virtual operator SwTableCursor* ();
174 // TRUE: an die Position kann der Cursor gesetzt werden
176 // JP 05.03.98: zum Testen des UNO-Crsr Verhaltens hier die Implementierung
177 // am sichtbaren Cursor
182 } //namespace binfilter
183 #endif // _VISCRS_HXX