blob: 47a7828f9f639e5bbd3c9a7d45dfae32942bed5a [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef SD_SLIDE_VIEW_HXX
#define SD_SLIDE_VIEW_HXX
#include "View.hxx"
class SdDrawDocument;
class BitmapCache;
class SdPage;
namespace sd {
class SlideViewShell;
class Window;
// ----------------------
// - SlideViewFocusMove -
// ----------------------
enum SlideViewFocusMove
{
SLIDEVIEWFOCUSMOVE_NONE = 0,
SLIDEVIEWFOCUSMOVE_TOGGLE = 1,
SLIDEVIEWFOCUSMOVE_SELECT = 2,
SLIDEVIEWFOCUSMOVE_LEFT = 3,
SLIDEVIEWFOCUSMOVE_TOP = 4,
SLIDEVIEWFOCUSMOVE_RIGHT = 5,
SLIDEVIEWFOCUSMOVE_BOTTOM = 6
};
// ---------------
// - SdSlideView -
// ---------------
class SlideView
: public ::sd::View
{
public:
TYPEINFO();
SlideView (
SdDrawDocument* pDoc,
::Window* pWindow,
SlideViewShell* pSlideVShell);
virtual ~SlideView (void);
void Select( sal_uInt16 nSdPageNum, sal_Bool bSelect );
void SelectAllSlides( sal_Bool bSelect );
void MoveFocus( SlideViewFocusMove eMove );
sal_uInt16 GetFocusPage() const;
sal_Bool HasFocus() const;
sal_uInt16 ChangePagesPerRow( sal_uInt16 nNum );
sal_uInt16 GetPagesPerRow() const { return nPagesPerRow; }
virtual void InvalidateOneWin( ::Window& rWin );
virtual void InvalidateOneWin( ::Window& rWin, const Rectangle& rRect );
void SetAllowInvalidate( sal_Bool bFlag );
sal_Bool IsInvalidateAllowed() const;
void Paint(const Rectangle& rRect, OutputDevice* pOut);
void DrawSelectionRect(sal_uInt16 nPage);
Point CalcPagePos( sal_uInt16 nPageNo ) const;
Rectangle GetPageArea( sal_uInt16 nPageNo ) const;
sal_uLong GetPageGap() const;
Rectangle GetFadeIconArea( sal_uInt16 nPageNo ) const;
SdPage* GetHitPage( const Point& rPos ) const;
SdPage* GetFadePage( const Point& rPos ) const;
SdPage* GetNearestPage( const Point& rPos ) const;
void DeleteMarked();
void MoveMarked( sal_uInt16 nTargetPage );
void AddToCache( SdPage* pPage, const Bitmap& rBitmap, long nZoom );
const GraphicObject* GetFromCache( SdPage* pPage, long& rZoom, long nZoomTolerance ) const;
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
virtual void DoCut( ::Window* pWindow = NULL );
virtual void DoCopy( ::Window* pWindow = NULL );
virtual void DoPaste( ::Window* pWindow = NULL );
virtual void StartDrag( const Point& rDragPt, ::Window* pWindow );
virtual void DragFinished( sal_Int8 nDropAction );
virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt, DropTargetHelper& rTargetHelper,
::sd::Window* pTargetWindow = NULL,
sal_uInt16 nPage = SDRPAGE_NOTFOUND,
sal_uInt16 nLayer = SDRPAGE_NOTFOUND );
virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt, DropTargetHelper& rTargetHelper,
::sd::Window* pTargetWindow = NULL,
sal_uInt16 nPage = SDRPAGE_NOTFOUND,
sal_uInt16 nLayer = SDRPAGE_NOTFOUND );
void UpdateAllPages();
private:
Timer aDelayedPaintTimer;
List aDelayedPaints;
SlideViewShell* pSlideViewShell;
BitmapCache* pCache;
VirtualDevice* mpVDev;
sal_uInt16 nAllowInvalidateSmph;
sal_uInt16 nPagesPerRow;
sal_uInt16 nFocusPage;
sal_Bool bInPaint;
sal_Bool bInDelayedPaint;
DECL_LINK( PaintDelayed, Timer * );
void CreateSlideTransferable (::Window* pWindow, sal_Bool bDrag);
};
} // end of namespace sd
#endif