summaryrefslogtreecommitdiff
path: root/sd/source/ui/inc
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2004-01-20 10:47:02 +0000
committerOliver Bolte <obo@openoffice.org>2004-01-20 10:47:02 +0000
commitfcffcf337d2ce1263f8fe298c5b8f71a3eb8ffbf (patch)
tree358b9d7692a2d4dcbeb0a4e54f6e3b67f13e1e51 /sd/source/ui/inc
parentcadf036fab0807db19fe82a2b997e15969b8d4fe (diff)
INTEGRATION: CWS impress1 (1.1.2); FILE ADDED
2003/09/16 14:09:06 af 1.1.2.1: #1119996# Renamed from sdwindow.hxx
Diffstat (limited to 'sd/source/ui/inc')
-rw-r--r--sd/source/ui/inc/Window.hxx236
1 files changed, 236 insertions, 0 deletions
diff --git a/sd/source/ui/inc/Window.hxx b/sd/source/ui/inc/Window.hxx
new file mode 100644
index 000000000000..d5d2f1fe6f59
--- /dev/null
+++ b/sd/source/ui/inc/Window.hxx
@@ -0,0 +1,236 @@
+/*************************************************************************
+ *
+ * $RCSfile: Window.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: obo $ $Date: 2004-01-20 11:47:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SD_WINDOW_HXX
+#define SD_WINDOW_HXX
+
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+#ifndef _WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+#ifndef _TRANSFER_HXX //autogen
+#include <svtools/transfer.hxx>
+#endif
+
+namespace sd {
+
+class ViewShell;
+
+// Since we removed all old SV-stuff, there is no brush any more
+// and so there is no BRUSH_SIZE defined in VCL.
+// So I define it here
+// #i2237#
+// removed old stuff here which still forced zoom to be
+// %BRUSH_SIZE which is outdated now
+//#define BRUSH_SIZE 8
+
+/** An SdWindow contains the actual working area of ViewShell.
+
+ <p>The zoom factor used by this class controls how much the page and the
+ shapes on it are scaled down (<100%) or up (>100%) when displayed on the
+ output device represented by the <type>OutputDevice</type>base class. A
+ zoom factor of 100% would result (with a correctly set DPI value for an
+ output device) in a one to one mapping of the internal coordinates that
+ are stored in 100th of mm. The zoom factor is stored in the map mode
+ member of the <type>OutputDevice</type> base class. It is calculated to
+ be an integer percent value.
+*/
+class Window
+ : public ::Window,
+ public ::DropTargetHelper
+{
+public:
+ Window (::Window* pParent);
+ ~Window();
+
+ void SetViewShell (ViewShell* pViewSh);
+
+ void ShareViewArea(::sd::Window* pOtherWin);
+
+ /** Set the zoom factor to the specified value and center the display
+ area arround the zoom center.
+ @param nZoom
+ The zoom factor is given as integral percent value.
+ */
+ void SetZoom(long nZoom);
+
+ /** This internally used method performs the actual adaption of the
+ window's map mode to the specified zoom factor.
+ @param nZoom
+ The zoom factor is given as integral percent value.
+ @return
+ When the given zoom factor lies outside the valid range enclosed
+ by the minimal zoom factor previously calculated by
+ <member>CalcMinZoom</member> and a constant upper value it is
+ forced into that interval. Therefore the returned value is a
+ valid zoom factor.
+ */
+ long SetZoomFactor(long nZoom);
+
+ /** This method is called when the whole page shall be displayed in the
+ window. Position and zoom factor are set so that the given
+ rectangle is displayed as large as possible in the window while at
+ the same time maintaining the rectangle's aspect ratio and adding a
+ small space at all its four sides (about 3% of width and height).
+ As a result the this window's map mode is adapted accordingly.
+ @param rZoomRect
+ The rectangle is expected to be given relative to the upper left
+ corner of the window in logical coordinates (100th of mm).
+ @return
+ The new zoom factor is returned as integral percent value.
+ */
+ long SetZoomRect(const Rectangle& rZoomRect);
+
+ void SetMinZoomAutoCalc(BOOL bAuto) { bMinZoomAutoCalc = bAuto; }
+ void SetCalcMinZoomByMinSide(BOOL bMin) { bCalcMinZoomByMinSide = bMin; }
+
+ /** Calculate the minimal zoom factor as the value at which the
+ application area would completely fill the window. All values set
+ manually or programatically are set to this value if they are
+ smaller. If the currently used zoom factor is smaller than the minimal zoom
+ factor than set the minimal zoom factor as the new current zoom
+ factor.
+
+ <p>This calculation is performed only when the
+ <member>bMinZoomAutoCalc</member> is set (to <TRUE/>).</p>
+ */
+ void CalcMinZoom();
+ void SetMinZoom(long nMin) { nMinZoom = (USHORT) nMin; }
+ long GetMinZoom() const { return nMinZoom; }
+ void SetMaxZoom(long nMax) { nMaxZoom = (USHORT) nMax; }
+ long GetMaxZoom() const { return nMaxZoom; }
+
+ long GetZoom() const
+ { return GetMapMode().GetScaleX().GetNumerator() * 100L /
+ GetMapMode().GetScaleX().GetDenominator(); }
+
+ Point GetWinViewPos() { return aWinPos; }
+ Point GetViewOrigin() { return aViewOrigin; }
+ Size GetViewSize() { return aViewSize; }
+ void SetWinViewPos(const Point& rPnt);
+ void SetViewOrigin(const Point& rPnt);
+ void SetViewSize(const Size& rSize);
+ void SetCenterAllowed(BOOL bIsAllowed) { bCenterAllowed = bIsAllowed; }
+
+ void UpdateMapOrigin(BOOL bInvalidate = TRUE);
+ double GetVisibleX(); // Interface fuer ScrollBars
+ double GetVisibleY();
+ void SetVisibleXY(double fX, double fY);
+ double GetVisibleWidth();
+ double GetVisibleHeight();
+ double GetScrlLineWidth();
+ double GetScrlLineHeight();
+ double GetScrlPageWidth();
+ double GetScrlPageHeight();
+ void DropScroll(const Point& rMousePos);
+ virtual void GrabFocus();
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+ // DropTargetHelper
+ virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt );
+ virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt );
+
+protected:
+ ::sd::Window* pShareWin;
+ Point aWinPos;
+ Point aViewOrigin;
+ Size aViewSize;
+ USHORT nMinZoom;
+ USHORT nMaxZoom;
+ /** This flag tells whether to re-calculate the minimal zoom factor
+ depening on the current zoom factor. According to task #105436# its
+ default value is now FALSE.
+ */
+ BOOL bMinZoomAutoCalc;
+ BOOL bCalcMinZoomByMinSide;
+ BOOL bCenterAllowed;
+ long nTicks;
+ BOOL bDraggedFrom;
+
+ ViewShell* mpViewShell;
+
+ virtual void Resize();
+ virtual void Paint(const Rectangle& rRect);
+ virtual void KeyInput(const KeyEvent& rKEvt);
+ virtual void MouseMove(const MouseEvent& rMEvt);
+ virtual void MouseButtonUp(const MouseEvent& rMEvt);
+ virtual void MouseButtonDown(const MouseEvent& rMEvt);
+ virtual void Command(const CommandEvent& rCEvt);
+ virtual void RequestHelp( const HelpEvent& rEvt );
+ virtual void LoseFocus();
+
+ /** Create an accessibility object that makes this window accessible.
+
+ @return
+ The returned reference is empty if an accessible object could
+ not be created.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible>
+ CreateAccessible (void);
+};
+
+} // end of namespace sd
+
+#endif