1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 11 * Licensed to the Apache Software Foundation (ASF) under one or more 12 * contributor license agreements. See the NOTICE file distributed 13 * with this work for additional information regarding copyright 14 * ownership. The ASF licenses this file to you under the Apache 15 * License, Version 2.0 (the "License"); you may not use this file 16 * except in compliance with the License. You may obtain a copy of 17 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 18 */ 19 20 #ifndef INCLUDED_SD_SOURCE_UI_INC_FUSEL_HXX 21 #define INCLUDED_SD_SOURCE_UI_INC_FUSEL_HXX 22 23 #include "fudraw.hxx" 24 25 namespace com { namespace sun { namespace star { namespace media { class XPlayer; } } } } 26 27 class SdrHdl; 28 class SdrObject; 29 30 namespace sd { 31 32 class FuSelection final 33 : public FuDraw 34 { 35 public: 36 37 static rtl::Reference<FuPoor> Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ); 38 virtual void DoExecute( SfxRequest& rReq ) override; 39 40 // Mouse- & Key-Events 41 virtual bool KeyInput(const KeyEvent& rKEvt) override; 42 virtual bool MouseMove(const MouseEvent& rMEvt) override; 43 virtual bool MouseButtonUp(const MouseEvent& rMEvt) override; 44 virtual bool MouseButtonDown(const MouseEvent& rMEvt) override; 45 46 virtual void Activate() override; 47 48 virtual void SelectionHasChanged() override; 49 50 void SetEditMode(sal_uInt16 nMode); GetEditMode() const51 sal_uInt16 GetEditMode() const { return nEditMode; } 52 53 bool HandleImageMapClick(const SdrObject* pObj, const Point& rPos); 54 55 /** is called when the current function should be aborted. <p> 56 This is used when a function gets a KEY_ESCAPE but can also 57 be called directly. 58 59 @returns true if an active function was aborted 60 */ 61 virtual bool cancel() override; 62 63 //let mouse cursor move 64 virtual void ForcePointer(const MouseEvent* pMEvt = nullptr) override; 65 66 private: 67 FuSelection (ViewShell* pViewSh, 68 ::sd::Window* pWin, 69 ::sd::View* pView, 70 SdDrawDocument* pDoc, 71 SfxRequest& rReq); 72 73 virtual ~FuSelection() override; 74 75 bool bTempRotation; 76 bool bSelectionChanged; 77 SdrHdl* pHdl; 78 bool bSuppressChangesOfSelection; 79 bool bMirrorSide0; 80 sal_uInt16 nEditMode; 81 82 /** This pointer stores a candidate for assigning a style in the water 83 can mode between mouse button down and mouse button up. 84 */ 85 SdrObject* pWaterCanCandidate; 86 87 /** Find the object under the given test point without selecting it. 88 @param rTestPoint 89 The coordinates at which to search for a shape. 90 @return 91 The shape at the test point. When there is no shape at this 92 position then NULL is returned. 93 */ 94 SdrObject* pickObject (const Point& rTestPoint); 95 //Add Shift+UP/DOWN/LEFT/RIGHT key to move the position of insert point, 96 //and SHIFT+ENTER key to decide the position and draw the new insert point 97 bool bBeginInsertPoint; 98 Point oldPoint; 99 //let mouse cursor move 100 bool bMovedToCenterPoint; 101 }; 102 103 } // end of namespace sd 104 105 #endif // _SD_FUSEL_HXX 106 107 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 108