From b175eed3ca950204c9b52fdcebc897f337b7bf19 Mon Sep 17 00:00:00 2001 From: James Cowgill Date: Tue, 15 May 2018 13:58:15 +0100 Subject: New upstream version 2.5.0+dfsg --- src/SFML/Window/OSX/CursorImpl.mm | 97 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src/SFML/Window/OSX/CursorImpl.mm (limited to 'src/SFML/Window/OSX/CursorImpl.mm') diff --git a/src/SFML/Window/OSX/CursorImpl.mm b/src/SFML/Window/OSX/CursorImpl.mm new file mode 100644 index 0000000..5f41376 --- /dev/null +++ b/src/SFML/Window/OSX/CursorImpl.mm @@ -0,0 +1,97 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2018 Marco Antognini (antognini.marco@gmail.com), +// 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 + +#import +#import +#import + +namespace sf +{ +namespace priv +{ + +//////////////////////////////////////////////////////////// +CursorImpl::CursorImpl() : +m_cursor(nil) +{ + // Just ask for a pool + ensureThreadHasPool(); +} + + +//////////////////////////////////////////////////////////// +CursorImpl::~CursorImpl() +{ + [m_cursor release]; +} + + +//////////////////////////////////////////////////////////// +bool CursorImpl::loadFromPixels(const Uint8* pixels, Vector2u size, Vector2u hotspot) +{ + NSSize nssize = NSMakeSize(size.x, size.y); + NSImage* image = [NSImage imageWithRawData:pixels andSize:nssize]; + NSPoint nshotspot = NSMakePoint(hotspot.x, hotspot.y); + + m_cursor = [[NSCursor alloc] initWithImage:image hotSpot:nshotspot]; + + return m_cursor != nil; +} + + +//////////////////////////////////////////////////////////// +bool CursorImpl::loadFromSystem(Cursor::Type type) +{ + switch (type) + { + default: return false; + + case Cursor::Arrow: m_cursor = [NSCursor arrowCursor]; break; + case Cursor::Text: m_cursor = [NSCursor IBeamCursor]; break; + case Cursor::Hand: m_cursor = [NSCursor pointingHandCursor]; break; + case Cursor::SizeHorizontal: m_cursor = [NSCursor resizeLeftRightCursor]; break; + case Cursor::SizeVertical: m_cursor = [NSCursor resizeUpDownCursor]; break; + case Cursor::Cross: m_cursor = [NSCursor crosshairCursor]; break; + case Cursor::NotAllowed: m_cursor = [NSCursor operationNotAllowedCursor]; break; + } + + // Since we didn't allocate the cursor ourself, we have to retain it + // in order to not break the retain count. + [m_cursor retain]; + + // For all non-default cases, it was a success. + return true; +} + + +} // namespace priv + +} // namespace sf + -- cgit v1.2.3