/************************************************************** * * 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