From ef8a2700fee78b4135e9a58fb25c314dac0b68c5 Mon Sep 17 00:00:00 2001 From: LaurentGom Date: Thu, 15 Jul 2010 21:13:55 +0000 Subject: [PATCH] FS#162 - Add a function to retrieve the system specific handle of a window git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1530 4e206d99-4929-0410-ac5d-dfc041789085 --- CSFML/include/SFML/Graphics/RenderWindow.h | 10 ++++++++++ CSFML/include/SFML/Window/Window.h | 10 ++++++++++ CSFML/src/SFML/Graphics/RenderWindow.cpp | 9 +++++++++ CSFML/src/SFML/Graphics/csfml-graphics-d.def | 1 + CSFML/src/SFML/Graphics/csfml-graphics.def | 1 + CSFML/src/SFML/Window/Window.cpp | 10 ++++++++++ CSFML/src/SFML/Window/csfml-window-d.def | 1 + CSFML/src/SFML/Window/csfml-window.def | 1 + doc/build/Doxygen.hpp | 4 ++-- dotnet/extlibs/csfml-graphics.dll | Bin 1153536 -> 1153536 bytes dotnet/extlibs/csfml-window.dll | Bin 49152 -> 49152 bytes dotnet/src/Graphics/RenderWindow.cs | 13 +++++++++++++ dotnet/src/Window/Window.cs | 13 +++++++++++++ include/SFML/Graphics/Shader.hpp | 2 +- include/SFML/Graphics/Sprite.hpp | 6 +++--- include/SFML/Graphics/View.hpp | 7 ------- include/SFML/System/Utf.hpp | 2 +- include/SFML/Window/Window.hpp | 14 ++++++++++++++ src/SFML/Window/Linux/GlxContext.cpp | 2 +- src/SFML/Window/Linux/WindowImplX11.cpp | 2 +- src/SFML/Window/Linux/WindowImplX11.hpp | 2 +- src/SFML/Window/Win32/WglContext.cpp | 2 +- src/SFML/Window/Win32/WindowImplWin32.cpp | 2 +- src/SFML/Window/Win32/WindowImplWin32.hpp | 2 +- src/SFML/Window/Window.cpp | 7 +++++++ src/SFML/Window/WindowImpl.hpp | 2 +- 26 files changed, 104 insertions(+), 21 deletions(-) diff --git a/CSFML/include/SFML/Graphics/RenderWindow.h b/CSFML/include/SFML/Graphics/RenderWindow.h index 5f09d4e74..922c8ad7b 100644 --- a/CSFML/include/SFML/Graphics/RenderWindow.h +++ b/CSFML/include/SFML/Graphics/RenderWindow.h @@ -287,6 +287,16 @@ CSFML_API float sfRenderWindow_GetFrameTime(const sfRenderWindow* renderWindow); //////////////////////////////////////////////////////////// CSFML_API void sfRenderWindow_SetJoystickThreshold(sfRenderWindow* renderWindow, float threshold); +//////////////////////////////////////////////////////////// +/// Retrieve the Os-specific handle of a window +/// +/// \param renderWindow : Renderwindow object +/// +/// \return Window handle +/// +//////////////////////////////////////////////////////////// +CSFML_API sfWindowHandle sfRenderWindow_GetSystemHandle(const sfRenderWindow* renderWindow); + //////////////////////////////////////////////////////////// /// Draw something on a renderwindow /// diff --git a/CSFML/include/SFML/Window/Window.h b/CSFML/include/SFML/Window/Window.h index 7e0044140..3d7396c28 100644 --- a/CSFML/include/SFML/Window/Window.h +++ b/CSFML/include/SFML/Window/Window.h @@ -296,5 +296,15 @@ CSFML_API float sfWindow_GetFrameTime(const sfWindow* window); //////////////////////////////////////////////////////////// CSFML_API void sfWindow_SetJoystickThreshold(sfWindow* window, float threshold); +//////////////////////////////////////////////////////////// +/// Retrieve the Os-specific handle of a window +/// +/// \param window : Window object +/// +/// \return Window handle +/// +//////////////////////////////////////////////////////////// +CSFML_API sfWindowHandle sfWindow_GetSystemHandle(const sfWindow* window); + #endif // SFML_WINDOW_H diff --git a/CSFML/src/SFML/Graphics/RenderWindow.cpp b/CSFML/src/SFML/Graphics/RenderWindow.cpp index 3348b08a8..ca4569c34 100644 --- a/CSFML/src/SFML/Graphics/RenderWindow.cpp +++ b/CSFML/src/SFML/Graphics/RenderWindow.cpp @@ -350,6 +350,15 @@ void sfRenderWindow_SetJoystickThreshold(sfRenderWindow* renderWindow, float thr } +//////////////////////////////////////////////////////////// +/// Retrieve the Os-specific handle of a window +//////////////////////////////////////////////////////////// +sfWindowHandle sfRenderWindow_GetSystemHandle(const sfRenderWindow* renderWindow) +{ + CSFML_CALL_RETURN(renderWindow, GetSystemHandle(), 0); +} + + //////////////////////////////////////////////////////////// /// Draw something on a renderwindow //////////////////////////////////////////////////////////// diff --git a/CSFML/src/SFML/Graphics/csfml-graphics-d.def b/CSFML/src/SFML/Graphics/csfml-graphics-d.def index f9690ad53..4817921ad 100644 --- a/CSFML/src/SFML/Graphics/csfml-graphics-d.def +++ b/CSFML/src/SFML/Graphics/csfml-graphics-d.def @@ -223,6 +223,7 @@ EXPORTS sfRenderWindow_SetFramerateLimit sfRenderWindow_GetFrameTime sfRenderWindow_SetJoystickThreshold + sfRenderWindow_GetSystemHandle sfRenderWindow_DrawSprite sfRenderWindow_DrawText sfRenderWindow_DrawShape diff --git a/CSFML/src/SFML/Graphics/csfml-graphics.def b/CSFML/src/SFML/Graphics/csfml-graphics.def index eda23e979..544ee2b49 100644 --- a/CSFML/src/SFML/Graphics/csfml-graphics.def +++ b/CSFML/src/SFML/Graphics/csfml-graphics.def @@ -223,6 +223,7 @@ EXPORTS sfRenderWindow_SetFramerateLimit sfRenderWindow_GetFrameTime sfRenderWindow_SetJoystickThreshold + sfRenderWindow_GetSystemHandle sfRenderWindow_DrawSprite sfRenderWindow_DrawText sfRenderWindow_DrawShape diff --git a/CSFML/src/SFML/Window/Window.cpp b/CSFML/src/SFML/Window/Window.cpp index 7f22871b3..ff833ce16 100644 --- a/CSFML/src/SFML/Window/Window.cpp +++ b/CSFML/src/SFML/Window/Window.cpp @@ -313,6 +313,7 @@ float sfWindow_GetFrameTime(const sfWindow* window) CSFML_CALL_RETURN(window, GetFrameTime(), 0.f) } + //////////////////////////////////////////////////////////// /// Change the joystick threshold, ie. the value below which /// no move event will be generated @@ -321,3 +322,12 @@ void sfWindow_SetJoystickThreshold(sfWindow* window, float threshold) { CSFML_CALL(window, SetJoystickThreshold(threshold)) } + + +//////////////////////////////////////////////////////////// +/// Retrieve the Os-specific handle of a window +//////////////////////////////////////////////////////////// +sfWindowHandle sfWindow_GetSystemHandle(const sfWindow* window) +{ + CSFML_CALL_RETURN(window, GetSystemHandle(), 0); +} diff --git a/CSFML/src/SFML/Window/csfml-window-d.def b/CSFML/src/SFML/Window/csfml-window-d.def index 2bb80c88b..6a9cb9ef2 100644 --- a/CSFML/src/SFML/Window/csfml-window-d.def +++ b/CSFML/src/SFML/Window/csfml-window-d.def @@ -33,6 +33,7 @@ EXPORTS sfWindow_SetFramerateLimit sfWindow_GetFrameTime sfWindow_SetJoystickThreshold + sfWindow_GetSystemHandle sfContext_Create sfContext_Destroy sfContext_SetActive diff --git a/CSFML/src/SFML/Window/csfml-window.def b/CSFML/src/SFML/Window/csfml-window.def index 2f6a2d573..a6e00897a 100644 --- a/CSFML/src/SFML/Window/csfml-window.def +++ b/CSFML/src/SFML/Window/csfml-window.def @@ -33,6 +33,7 @@ EXPORTS sfWindow_SetFramerateLimit sfWindow_GetFrameTime sfWindow_SetJoystickThreshold + sfWindow_GetSystemHandle sfContext_Create sfContext_Destroy sfContext_SetActive diff --git a/doc/build/Doxygen.hpp b/doc/build/Doxygen.hpp index 032e03545..dc1ece9cd 100644 --- a/doc/build/Doxygen.hpp +++ b/doc/build/Doxygen.hpp @@ -27,11 +27,11 @@ /// return EXIT_FAILURE; /// sf::Sprite sprite(image); /// -/// // Create a graphical string to display +/// // Create a graphical text to display /// sf::Font font; /// if (!font.LoadFromFile("arial.ttf")) /// return EXIT_FAILURE; -/// sf::String text("Hello SFML", font, 50); +/// sf::Text text("Hello SFML", font, 50); /// /// // Load a music to play /// sf::Music music; diff --git a/dotnet/extlibs/csfml-graphics.dll b/dotnet/extlibs/csfml-graphics.dll index ee9bcece78e08d8676d4529f1e3de34d9c504dee..726f0901a64f2a03de168af424192b55fa10d6ca 100644 GIT binary patch delta 21609 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 F{{c_20_6Yz delta 21657 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 diff --git a/dotnet/extlibs/csfml-window.dll b/dotnet/extlibs/csfml-window.dll index 2a041a51466e4524d392ae83d5c2c697566b9171..2af195c73dc4e7af0743be9050da472303d0dadd 100644 GIT binary patch delta 5382 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 delta 5345 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 + /// OS-specific handle of the window + /// + //////////////////////////////////////////////////////////// + public override IntPtr SystemHandle + { + get {return sfRenderWindow_GetSystemHandle(This);} + } + //////////////////////////////////////////////////////////// ///

/// Default view of the window @@ -592,6 +602,9 @@ namespace SFML [DllImport("csfml-graphics", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] static extern void sfRenderWindow_ConvertCoords(IntPtr This, uint WindowX, uint WindowY, out float ViewX, out float ViewY, IntPtr TargetView); + [DllImport("csfml-graphics", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] + static extern IntPtr sfRenderWindow_GetSystemHandle(IntPtr This); + #endregion } } diff --git a/dotnet/src/Window/Window.cs b/dotnet/src/Window/Window.cs index 45fda1f1f..5c75d872e 100644 --- a/dotnet/src/Window/Window.cs +++ b/dotnet/src/Window/Window.cs @@ -341,6 +341,16 @@ namespace SFML sfWindow_SetJoystickThreshold(This, threshold); } + //////////////////////////////////////////////////////////// + /// + /// OS-specific handle of the window + /// + //////////////////////////////////////////////////////////// + public virtual IntPtr SystemHandle + { + get {return sfWindow_GetSystemHandle(This);} + } + //////////////////////////////////////////////////////////// /// /// Wait for a new event and dispatch it to the corresponding @@ -642,6 +652,9 @@ namespace SFML [DllImport("csfml-window", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] static extern void sfWindow_SetJoystickThreshold(IntPtr This, float Threshold); + + [DllImport("csfml-window", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] + static extern IntPtr sfWindow_GetSystemHandle(IntPtr This); #endregion } } diff --git a/include/SFML/Graphics/Shader.hpp b/include/SFML/Graphics/Shader.hpp index 67ba03750..b6fde662a 100644 --- a/include/SFML/Graphics/Shader.hpp +++ b/include/SFML/Graphics/Shader.hpp @@ -279,7 +279,7 @@ public : void Bind() const; //////////////////////////////////////////////////////////// - /// \brief Bind the shader (deactivate it) + /// \brief Unbind the shader (deactivate it) /// /// This function is normally for internal use only, unless /// you want to use the shader with a custom OpenGL rendering diff --git a/include/SFML/Graphics/Sprite.hpp b/include/SFML/Graphics/Sprite.hpp index de0c65919..7759a1919 100644 --- a/include/SFML/Graphics/Sprite.hpp +++ b/include/SFML/Graphics/Sprite.hpp @@ -277,9 +277,9 @@ private : /// /// // Create a sprite /// sf::Sprite sprite; -/// text.SetImage(image); -/// text.SetSubRect(sf::IntRect(10, 10, 50, 30)); -/// text.Resize(100, 60); +/// sprite.SetImage(image); +/// sprite.SetSubRect(sf::IntRect(10, 10, 50, 30)); +/// sprite.Resize(100, 60); /// /// // Display it /// window.Draw(sprite); // window is a sf::RenderWindow diff --git a/include/SFML/Graphics/View.hpp b/include/SFML/Graphics/View.hpp index 89e22b056..62fb09f78 100644 --- a/include/SFML/Graphics/View.hpp +++ b/include/SFML/Graphics/View.hpp @@ -144,13 +144,6 @@ public : /// \brief Reset the view to the given rectangle /// /// Note that this function resets the rotation angle to 0. - /// It is a function provided for convenience, equivalent to the - /// following calls: - /// \code - /// view.SetCenter(rectangle.GetCenter()); - /// view.SetSize(rectangle.GetSize()); - /// view.SetRotation(0); - /// \endcode /// /// \param rectangle Rectangle defining the zone to display /// diff --git a/include/SFML/System/Utf.hpp b/include/SFML/System/Utf.hpp index a28d6a0d2..ae3b4351e 100644 --- a/include/SFML/System/Utf.hpp +++ b/include/SFML/System/Utf.hpp @@ -409,7 +409,7 @@ public : }; //////////////////////////////////////////////////////////// -/// \brief Specialization of the Utf template for UTF-16 +/// \brief Specialization of the Utf template for UTF-32 /// //////////////////////////////////////////////////////////// template <> diff --git a/include/SFML/Window/Window.hpp b/include/SFML/Window/Window.hpp index b2a6ad0b6..963d4046f 100644 --- a/include/SFML/Window/Window.hpp +++ b/include/SFML/Window/Window.hpp @@ -433,6 +433,20 @@ public : //////////////////////////////////////////////////////////// void SetJoystickThreshold(float threshold); + //////////////////////////////////////////////////////////// + /// \brief Get the OS-specific handle of the window + /// + /// The type of the returned handle is sf::WindowHandle, + /// which is a typedef to the handle type defined by the OS. + /// You shouldn't need to use this function, unless you have + /// very specific stuff to implement that SFML doesn't support, + /// or implement a temporary workaround until a bug is fixed. + /// + /// \return System handle of the window + /// + //////////////////////////////////////////////////////////// + WindowHandle GetSystemHandle() const; + private : //////////////////////////////////////////////////////////// diff --git a/src/SFML/Window/Linux/GlxContext.cpp b/src/SFML/Window/Linux/GlxContext.cpp index b04bb00ba..38f281208 100644 --- a/src/SFML/Window/Linux/GlxContext.cpp +++ b/src/SFML/Window/Linux/GlxContext.cpp @@ -76,7 +76,7 @@ myOwnsWindow(false) myDisplay = static_cast(owner)->GetDisplay(); // Get the owner window and its device context - myWindow = static_cast(owner->GetHandle()); + myWindow = static_cast(owner->GetSystemHandle()); // Create the context if (myWindow) diff --git a/src/SFML/Window/Linux/WindowImplX11.cpp b/src/SFML/Window/Linux/WindowImplX11.cpp index 78584bca3..490e6fa98 100644 --- a/src/SFML/Window/Linux/WindowImplX11.cpp +++ b/src/SFML/Window/Linux/WindowImplX11.cpp @@ -277,7 +277,7 @@ WindowImplX11::~WindowImplX11() //////////////////////////////////////////////////////////// -WindowHandle WindowImplX11::GetHandle() const +WindowHandle WindowImplX11::GetSystemHandle() const { return myWindow; } diff --git a/src/SFML/Window/Linux/WindowImplX11.hpp b/src/SFML/Window/Linux/WindowImplX11.hpp index 64ee519ab..f46f87cd0 100644 --- a/src/SFML/Window/Linux/WindowImplX11.hpp +++ b/src/SFML/Window/Linux/WindowImplX11.hpp @@ -89,7 +89,7 @@ private : /// \return Handle of the window /// //////////////////////////////////////////////////////////// - virtual WindowHandle GetHandle() const; + virtual WindowHandle GetSystemHandle() const; //////////////////////////////////////////////////////////// /// \brief Process incoming events from the operating system diff --git a/src/SFML/Window/Win32/WglContext.cpp b/src/SFML/Window/Win32/WglContext.cpp index 318d784b1..6d1d89556 100644 --- a/src/SFML/Window/Win32/WglContext.cpp +++ b/src/SFML/Window/Win32/WglContext.cpp @@ -71,7 +71,7 @@ myContext (NULL), myOwnsWindow (false) { // Get the owner window and its device context - myWindow = static_cast(owner->GetHandle()); + myWindow = static_cast(owner->GetSystemHandle()); myDeviceContext = GetDC(myWindow); // Create the context diff --git a/src/SFML/Window/Win32/WindowImplWin32.cpp b/src/SFML/Window/Win32/WindowImplWin32.cpp index 613f782ea..f65986656 100644 --- a/src/SFML/Window/Win32/WindowImplWin32.cpp +++ b/src/SFML/Window/Win32/WindowImplWin32.cpp @@ -200,7 +200,7 @@ WindowImplWin32::~WindowImplWin32() //////////////////////////////////////////////////////////// -WindowHandle WindowImplWin32::GetHandle() const +WindowHandle WindowImplWin32::GetSystemHandle() const { return myHandle; } diff --git a/src/SFML/Window/Win32/WindowImplWin32.hpp b/src/SFML/Window/Win32/WindowImplWin32.hpp index 65ed99ec5..f34b5d72a 100644 --- a/src/SFML/Window/Win32/WindowImplWin32.hpp +++ b/src/SFML/Window/Win32/WindowImplWin32.hpp @@ -78,7 +78,7 @@ private : /// \return Handle of the window /// //////////////////////////////////////////////////////////// - virtual WindowHandle GetHandle() const; + virtual WindowHandle GetSystemHandle() const; //////////////////////////////////////////////////////////// /// \brief Process incoming events from the operating system diff --git a/src/SFML/Window/Window.cpp b/src/SFML/Window/Window.cpp index 7a775fa8a..ba3ea9ad9 100644 --- a/src/SFML/Window/Window.cpp +++ b/src/SFML/Window/Window.cpp @@ -384,6 +384,13 @@ void Window::SetJoystickThreshold(float threshold) } +//////////////////////////////////////////////////////////// +WindowHandle Window::GetSystemHandle() const +{ + return myWindow ? myWindow->GetSystemHandle() : 0; +} + + //////////////////////////////////////////////////////////// void Window::OnCreate() { diff --git a/src/SFML/Window/WindowImpl.hpp b/src/SFML/Window/WindowImpl.hpp index 0cf8cd356..104f671f8 100644 --- a/src/SFML/Window/WindowImpl.hpp +++ b/src/SFML/Window/WindowImpl.hpp @@ -130,7 +130,7 @@ public : /// \return Handle of the window /// //////////////////////////////////////////////////////////// - virtual WindowHandle GetHandle() const = 0; + virtual WindowHandle GetSystemHandle() const = 0; //////////////////////////////////////////////////////////// /// \brief Show or hide the mouse cursor