From 1d8ef7165f717bb131819b1ec64b7cef9c1be4f0 Mon Sep 17 00:00:00 2001 From: thefiddler Date: Sun, 27 Apr 2014 19:44:45 +0200 Subject: [PATCH] [OpenTK] Disable custom MouseCursors They require further development, due to byte-order differences between platforms. MouseCursor is now derived from WindowIcon, which we will use for INativeWindow.Icon support in the future, in order to remove the dependency to System.Drawing. --- Source/OpenTK/MouseCursor.cs | 25 +++++++++++++++++--- Source/OpenTK/OpenTK.csproj | 1 + Source/OpenTK/WindowIcon.cs | 45 ++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 Source/OpenTK/WindowIcon.cs diff --git a/Source/OpenTK/MouseCursor.cs b/Source/OpenTK/MouseCursor.cs index db1d92b4..47f8fcc6 100644 --- a/Source/OpenTK/MouseCursor.cs +++ b/Source/OpenTK/MouseCursor.cs @@ -31,10 +31,14 @@ using System; namespace OpenTK { - - public class MouseCursor + /// + /// Represents a predefined or custom mouse cursor. + /// + public sealed class MouseCursor : WindowIcon { static readonly MouseCursor default_cursor = new MouseCursor(); + static readonly MouseCursor empty_cursor = new MouseCursor( + new byte[16 * 16 * 4], 16, 16, 0, 0); byte[] rgba; int width; @@ -46,7 +50,8 @@ namespace OpenTK { } - public MouseCursor(byte[] rgba, int width, int height, int x, int y) + // Todo: make public when byte-order issues are resolved + internal MouseCursor(byte[] rgba, int width, int height, int x, int y) { if (rgba == null) throw new ArgumentNullException(); @@ -70,6 +75,9 @@ namespace OpenTK internal int X { get { return x; } } internal int Y { get { return y; } } + /// + /// Gets the default mouse cursor for this platform. + /// public static MouseCursor Default { get @@ -77,6 +85,17 @@ namespace OpenTK return default_cursor; } } + + /// + /// Gets an empty (invisible) mouse cursor. + /// + public static MouseCursor Empty + { + get + { + return empty_cursor; + } + } } } diff --git a/Source/OpenTK/OpenTK.csproj b/Source/OpenTK/OpenTK.csproj index 495e9348..4df5b952 100644 --- a/Source/OpenTK/OpenTK.csproj +++ b/Source/OpenTK/OpenTK.csproj @@ -795,6 +795,7 @@ Code + diff --git a/Source/OpenTK/WindowIcon.cs b/Source/OpenTK/WindowIcon.cs new file mode 100644 index 00000000..94cfde4f --- /dev/null +++ b/Source/OpenTK/WindowIcon.cs @@ -0,0 +1,45 @@ +#region License +// +// WindowIcon.cs +// +// Author: +// Stefanos A. +// +// Copyright (c) 2006-2014 Stefanos Apostolopoulos +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +#endregion + +using System; + +namespace OpenTK +{ + /// + /// Stores a window icon. A window icon is defined + /// as a 2-dimensional buffer of RGBA values. + /// + public class WindowIcon + { + internal protected WindowIcon() + { + } + } +} +