diff options
Diffstat (limited to 'sd/source/ui/slidesorter/inc/view/SlsLayouter.hxx')
-rw-r--r-- | sd/source/ui/slidesorter/inc/view/SlsLayouter.hxx | 299 |
1 files changed, 0 insertions, 299 deletions
diff --git a/sd/source/ui/slidesorter/inc/view/SlsLayouter.hxx b/sd/source/ui/slidesorter/inc/view/SlsLayouter.hxx deleted file mode 100644 index d1371a677..000000000 --- a/sd/source/ui/slidesorter/inc/view/SlsLayouter.hxx +++ /dev/null @@ -1,299 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef SD_SLIDESORTER_VIEW_LAYOUTER_HXX -#define SD_SLIDESORTER_VIEW_LAYOUTER_HXX - -#include "SlideSorter.hxx" -#include "view/SlsPageObjectLayouter.hxx" -#include "view/SlsTheme.hxx" -#include <sal/types.h> -#include <tools/fract.hxx> -#include <vcl/mapmod.hxx> -#include <vector> -#include <utility> - - -class MapMode; -class OutputDevice; -class Size; - -namespace sd { namespace slidesorter { namespace view { - -class InsertPosition; - - - -/** Calculate the size and position of page objects displayed by a slide - sorter. The layouter takes into account various input values: - 1.) Size of the window in which the slide sorter is displayed. - 2.) Desired and minimal and maximal widths of page objects. - 3.) Minimal and maximal number of columns. - 4.) Vertical and horizontal gaps between objects in adjacent columns. - 5.) Borders arround every page object. - 6.) Vertical and horizontal borders between enclosing page and outer - page objects. - From these it calculates various output values: - 1.) The width of page objects. - 2.) The number of columns. - 3.) The size of the enclosing page. - - <p>Sizes and lengths are all in pixel except where explicitly stated - otherwise.</p> - - <p>The GetIndex... methods may return indices that are larger than or - equal to (zero based) the number of pages. This is so because the - number of pages is not known to the class instances. Indices are - calculated with reference to the general grid layout of page - objects.</p> -*/ -class Layouter -{ -public: - enum Orientation { HORIZONTAL, VERTICAL, GRID }; - - Layouter ( - const SharedSdWindow& rpWindow, - const ::boost::shared_ptr<Theme>& rpTheme); - ~Layouter (void); - - ::boost::shared_ptr<PageObjectLayouter> GetPageObjectLayouter (void) const; - /** Set the horizontal and vertical borders in pixel coordinates between - the enclosing window and page objects. The borders may be painted - larger then the given values when the space for the insertion marker - is not sufficient. - @param nLeftBorder - Use a negative value to indicate that the left border size - shall not be modified. A value of 10 is the default. - @param nRightBorder - Use a negative value to indicate that the right border size - shall not be modified. A value of 10 is the default. - @param nTopBorder - Use a negative value to indicate that the top border size - shall not be modified. A value of 10 is the default. - @param nBottomBorder - Use a negative value to indicate that the bottom border size - shall not be modified. A value of 10 is the default. - */ - void SetBorders (sal_Int32 nLeftBorder, sal_Int32 nRightBorder, - sal_Int32 nTopBorder, sal_Int32 nBottomBorder); - - /** Set the interval of valid column counts. When nMinimalColumnCount - <= nMaximalColumnCount is not fullfilled then the call is ignored. - @param nMinimalColumnCount - The default value is 1. The question whether higher values make - any sense is left to the caller. - @param nMaximalColumnCount - The default value is 5. - */ - void SetColumnCount (sal_Int32 nMinimalColumnCount, - sal_Int32 nMaximalColumnCount); - - /** Central method of this class. It takes the input values and - calculates the output values. Both given sizes must not be 0 in any - dimension or the call is ignored. - @param eOrientation - This defines the generaly layout and specifies whether there may - be more than one row or more than one column. - @param rWindowSize - The size of the window in pixels that the slide sorter is - displayed in. This can differ from the size of mpWindow during - detection of whether or not the scroll bars should be visible. - @param rPreviewModelSize - Size of each page in model coordinates. - @param rpWindow - The map mode of this window is adapted to the new layout of the - page objects. - @return - The return value indicates whether the Get... methods can be - used to obtain valid values (<TRUE/>). - */ - bool Rearrange ( - const Orientation eOrientation, - const Size& rWindowSize, - const Size& rPreviewModelSize, - const sal_uInt32 nPageCount); - - /** Change the zoom factor. This does not change the general layout - (number of columns). - */ - void _SetZoom (double nZoomFactor); - void _SetZoom (Fraction nZoomFactor); - - /** Return the number of columns. - */ - sal_Int32 GetColumnCount (void) const; - - sal_Int32 GetRowCount (void) const; - - sal_Int32 GetRow (const sal_Int32 nIndex) const; - - sal_Int32 GetColumn (const sal_Int32 nIndex) const; - - sal_Int32 GetIndex (const sal_Int32 nRow, const sal_Int32 nColumn) const; - - /** Return the scale factor that can be set at the map mode of the - output window. - */ - Fraction GetScaleFactor (void) const; - - Size GetPageObjectSize (void) const; - - /** Return the bounding box in window coordinates of the nIndex-th page - object. - */ - Rectangle GetPageObjectBox ( - const sal_Int32 nIndex, - const bool bIncludeBorderAndGap = false) const; - - /** Return the bounding box in model coordinates of the page that - contains the given amount of page objects. - */ - Rectangle GetTotalBoundingBox (void) const; - - /** Return the index of the first fully or partially visible page - object. This takes into account only the vertical dimension. - @return - The second index may be larger than the number of existing - page objects. - */ - Range GetRangeOfVisiblePageObjects (const Rectangle& rVisibleArea) const; - - /** Return the index of the page object that is rendered at the given - point. - @param rPosition - The position is expected to be in model coordinates relative to - the page origin. - @param bIncludePageBorders - When <TRUE/> then include the page borders into the calculation, - i.e. when a point lies in the border of a page object but not on - the actual page area the index of that page is returned; - otherwise -1 would be returned to indicate that no page object - has been hit. - @param bClampToValidRange - When <TRUE/> then values outside the valid range [0,mnPageCount) - are mapped to 0 (when smaller than 0) or mnPageCount-1 when - equal to or larger than mnPageCount. - When <FALSE/> then -1 is returned for values outside the valid range. - @return - The returned index may be larger than the number of existing - page objects. - */ - sal_Int32 GetIndexAtPoint ( - const Point& rModelPosition, - const bool bIncludePageBorders = false, - const bool bClampToValidRange = true) const; - - /** Return an object that describes the logical and visual properties of - where to do an insert operation when the user would release the the - mouse button at the given position after a drag operation and of - where and how to display an insertion indicator. - @param rModelPosition - The position in the model coordinate system for which to - determine the insertion page index. The position does not have - to be over a page object to return a valid value. - @param rIndicatorSize - The size of the insertion indicator. This size is used to adapt - the location when at the left or right of a row or at the top or - bottom of a column. - @param rModel - The model is used to get access to the selection states of the - pages. This in turn is used to determine the visual bounding - boxes. - */ - InsertPosition GetInsertPosition ( - const Point& rModelPosition, - const Size& rIndicatorSize, - model::SlideSorterModel& rModel) const; - - Range GetValidHorizontalSizeRange (void) const; - Range GetValidVerticalSizeRange (void) const; - - class Implementation; - -private: - ::boost::scoped_ptr<Implementation> mpImplementation; - SharedSdWindow mpWindow; -}; - - - - - -/** Collect all values concerning the logical and visual properties of the - insertion position that is used for drag-and-drop and copy-and-past. -*/ -class InsertPosition -{ -public: - InsertPosition (void); - InsertPosition& operator= (const InsertPosition& rInsertPosition); - bool operator== (const InsertPosition& rInsertPosition) const; - bool operator!= (const InsertPosition& rInsertPosition) const; - - void SetLogicalPosition ( - const sal_Int32 nRow, - const sal_Int32 nColumn, - const sal_Int32 nIndex, - const bool bIsAtRunStart, - const bool bIsAtRunEnd, - const bool bIsExtraSpaceNeeded); - void SetGeometricalPosition( - const Point aLocation, - const Point aLeadingOffset, - const Point aTrailingOffset); - - sal_Int32 GetRow (void) const { return mnRow; } - sal_Int32 GetColumn (void) const { return mnColumn; } - sal_Int32 GetIndex (void) const { return mnIndex; } - Point GetLocation (void) const { return maLocation; } - Point GetLeadingOffset (void) const { return maLeadingOffset; } - Point GetTrailingOffset (void) const { return maTrailingOffset; } - bool IsAtRunStart (void) const { return mbIsAtRunStart; } - bool IsAtRunEnd (void) const { return mbIsAtRunEnd; } - bool IsExtraSpaceNeeded (void) const { return mbIsExtraSpaceNeeded; } - -private: - sal_Int32 mnRow; - sal_Int32 mnColumn; - sal_Int32 mnIndex; - bool mbIsAtRunStart : 1; - bool mbIsAtRunEnd : 1; - bool mbIsExtraSpaceNeeded : 1; - Point maLocation; - Point maLeadingOffset; - Point maTrailingOffset; -}; - - - -} } } // end of namespace ::sd::slidesorter::view - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |