1 /* 2 * The ManaPlus Client 3 * Copyright (C) 2012-2019 The ManaPlus Developers 4 * Copyright (C) 2019-2021 Andrei Karas 5 * 6 * This file is part of The ManaPlus Client. 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program. If not, see <http://www.gnu.org/licenses/>. 20 */ 21 22 /* _______ __ __ __ ______ __ __ _______ __ __ 23 * / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___ /\ / |\/ /\ 24 * / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / / 25 * / / /__ / / // / // / // / / / ___ / // ___ / // /| ' / / 26 * / /_// /\ / /_// / // / // /_/_ / / // / // /\_/ / // / | / / 27 * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ / 28 * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ 29 * 30 * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson 31 * 32 * 33 * Per Larsson a.k.a finalman 34 * Olof Naessén a.k.a jansem/yakslem 35 * 36 * Visit: http://guichan.sourceforge.net 37 * 38 * License: (BSD) 39 * Redistribution and use in source and binary forms, with or without 40 * modification, are permitted provided that the following conditions 41 * are met: 42 * 1. Redistributions of source code must retain the above copyright 43 * notice, this list of conditions and the following disclaimer. 44 * 2. Redistributions in binary form must reproduce the above copyright 45 * notice, this list of conditions and the following disclaimer in 46 * the documentation and/or other materials provided with the 47 * distribution. 48 * 3. Neither the name of Guichan nor the names of its contributors may 49 * be used to endorse or promote products derived from this software 50 * without specific prior written permission. 51 * 52 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 53 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 54 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 55 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 56 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 57 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 58 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 59 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 60 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 61 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 62 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 63 */ 64 65 #ifndef INPUT_MOUSEINPUT_H 66 #define INPUT_MOUSEINPUT_H 67 68 #include "enums/events/mousebutton.h" 69 #include "enums/events/mouseeventtype.h" 70 71 #include "localconsts.h" 72 73 class MouseInput final 74 { 75 public: MouseInput()76 MouseInput() noexcept2 : 77 mType(MouseEventType::MOVED), 78 mButton(MouseButton::EMPTY), 79 mTimeStamp(0), 80 mX(0), 81 mY(0), 82 mRealX(0), 83 mRealY(0) 84 { } 85 MouseInput(const MouseInput & m)86 MouseInput(const MouseInput &m) noexcept2 : 87 mType(m.mType), 88 mButton(m.mButton), 89 mTimeStamp(m.mTimeStamp), 90 mX(m.mX), 91 mY(m.mY), 92 mRealX(m.mRealX), 93 mRealY(m.mRealY) 94 { 95 } 96 A_DEFAULT_COPY(MouseInput)97 A_DEFAULT_COPY(MouseInput) 98 99 MouseInput &operator=(const MouseInput &m) noexcept2 100 { 101 mType = m.mType; 102 mButton = m.mButton; 103 mTimeStamp = m.mTimeStamp; 104 mX = m.mX; 105 mY = m.mY; 106 mRealX = m.mRealX; 107 mRealY = m.mRealY; 108 return *this; 109 } 110 ~MouseInput()111 ~MouseInput() 112 { } 113 setType(MouseEventTypeT type)114 void setType(MouseEventTypeT type) noexcept2 115 { 116 mType = type; 117 } 118 getType()119 MouseEventTypeT getType() const noexcept2 120 { 121 return mType; 122 } 123 setButton(MouseButtonT button)124 void setButton(MouseButtonT button) noexcept2 125 { 126 mButton = button; 127 } 128 getButton()129 MouseButtonT getButton() const noexcept2 130 { 131 return mButton; 132 } 133 getTimeStamp()134 int getTimeStamp() const noexcept2 135 { 136 return mTimeStamp; 137 } 138 setTimeStamp(int timeStamp)139 void setTimeStamp(int timeStamp) noexcept2 140 { 141 mTimeStamp = timeStamp; 142 } 143 setX(int x)144 void setX(int x) noexcept2 145 { 146 mX = x; 147 } 148 getX()149 int getX() const noexcept2 150 { 151 return mX; 152 } 153 setY(int y)154 void setY(int y) noexcept2 155 { 156 mY = y; 157 } 158 getY()159 int getY() const noexcept2 160 { 161 return mY; 162 } 163 setReal(const int x,const int y)164 void setReal(const int x, const int y) noexcept2 165 { mRealX = x; mRealY = y; } 166 getRealX()167 int getRealX() const noexcept2 A_WARN_UNUSED 168 { return mRealX; } 169 getRealY()170 int getRealY() const noexcept2 A_WARN_UNUSED 171 { return mRealY; } 172 173 #ifdef ANDROID getTouchX()174 int getTouchX() const noexcept2 A_WARN_UNUSED 175 { return mRealX; } 176 getTouchY()177 int getTouchY() const noexcept2 A_WARN_UNUSED 178 { return mRealY; } 179 #else // ANDROID 180 getTouchX()181 int getTouchX() const noexcept2 A_WARN_UNUSED 182 { return mX; } 183 getTouchY()184 int getTouchY() const noexcept2 A_WARN_UNUSED 185 { return mY; } 186 #endif // ANDROID 187 188 protected: 189 /** 190 * Holds the type of the mouse input. 191 */ 192 MouseEventTypeT mType; 193 194 /** 195 * Holds the button of the mouse input. 196 */ 197 MouseButtonT mButton; 198 199 /** 200 * Holds the timestamp of the mouse input. Used to 201 * check for double clicks. 202 */ 203 int mTimeStamp; 204 205 /** 206 * Holds the x coordinate of the mouse input. 207 */ 208 int mX; 209 210 /** 211 * Holds the y coordinate of the mouse input. 212 */ 213 int mY; 214 215 int mRealX; 216 217 int mRealY; 218 }; 219 220 #endif // INPUT_MOUSEINPUT_H 221