From 4cc30a1f21db9f8d88e8a3975d5d81e3d57f3383 Mon Sep 17 00:00:00 2001 From: Zachariah Brown Date: Thu, 26 Feb 2015 08:13:29 -0500 Subject: [PATCH] Added touch API --- include/SFML/Window/Touch.h | 61 ++++++++++++++++++++++++++++++++++ src/SFML/Window/CMakeLists.txt | 2 ++ src/SFML/Window/Touch.cpp | 53 +++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 include/SFML/Window/Touch.h create mode 100644 src/SFML/Window/Touch.cpp diff --git a/include/SFML/Window/Touch.h b/include/SFML/Window/Touch.h new file mode 100644 index 0000000..52a05f2 --- /dev/null +++ b/include/SFML/Window/Touch.h @@ -0,0 +1,61 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_TOUCH_H +#define SFML_TOUCH_H + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +//////////////////////////////////////////////////////////// +/// \brief Check if a touch event is currently down +/// +/// \param finger Finger index +/// +/// \return sfTrue if \a finger is currently touching the screen, sfFalse otherwise +/// +//////////////////////////////////////////////////////////// +CSFML_WINDOW_API sfBool sfTouch_isDown(unsigned int finger); + +//////////////////////////////////////////////////////////// +/// \brief Get the current position of a touch in window coordinates +/// +/// This function returns the current touch position +/// relative to the given window, or desktop if NULL is passed. +/// +/// \param finger Finger index +/// \param relativeTo Reference window +/// +/// \return Current position of \a finger, or undefined if it's not down +/// +//////////////////////////////////////////////////////////// +CSFML_WINDOW_API sfVector2i sfTouch_getPosition(unsigned int finger, const sfWindow* relativeTo); + + +#endif // SFML_TOUCH_H diff --git a/src/SFML/Window/CMakeLists.txt b/src/SFML/Window/CMakeLists.txt index 8540e08..521b71d 100644 --- a/src/SFML/Window/CMakeLists.txt +++ b/src/SFML/Window/CMakeLists.txt @@ -18,6 +18,8 @@ set(SRC ${INCROOT}/Mouse.h ${SRCROOT}/Sensor.cpp ${INCROOT}/Sensor.h + ${SRCROOT}/Touch.cpp + ${INCROOT}/Touch.h ${INCROOT}/Types.h ${SRCROOT}/VideoMode.cpp ${INCROOT}/VideoMode.h diff --git a/src/SFML/Window/Touch.cpp b/src/SFML/Window/Touch.cpp new file mode 100644 index 0000000..3d2b8a7 --- /dev/null +++ b/src/SFML/Window/Touch.cpp @@ -0,0 +1,53 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +//////////////////////////////////////////////////////////// +sfBool sfTouch_isDown(unsigned int finger) +{ + return sf::Touch::isDown(finger); +} + +//////////////////////////////////////////////////////////// +sfVector2i sfTouch_getPosition(unsigned int finger, const sfWindow* relativeTo) +{ + sf::Vector2i sfmlPosition; + + if (relativeTo) + sfmlPosition = sf::Touch::getPosition(finger, relativeTo->This); + else + sfmlPosition = sf::Touch::getPosition(finger); + + sfVector2i position = {sfmlPosition.x, sfmlPosition.y}; + return position; +} +