Added support for custom cursor/icon
This commit is contained in:
parent
d851e35a56
commit
bcf36e7a14
|
|
@ -1,9 +1,5 @@
|
||||||
project "NazaraRenderer"
|
project "NazaraRenderer"
|
||||||
|
|
||||||
links "gdi32"
|
|
||||||
links "opengl32"
|
|
||||||
links "winmm"
|
|
||||||
|
|
||||||
files
|
files
|
||||||
{
|
{
|
||||||
"../include/Nazara/Renderer/**.hpp",
|
"../include/Nazara/Renderer/**.hpp",
|
||||||
|
|
@ -14,6 +10,9 @@ files
|
||||||
|
|
||||||
if (os.is("windows")) then
|
if (os.is("windows")) then
|
||||||
excludes { "../src/Nazara/Renderer/Posix/*.hpp", "../src/Nazara/Renderer/Posix/*.cpp" }
|
excludes { "../src/Nazara/Renderer/Posix/*.hpp", "../src/Nazara/Renderer/Posix/*.cpp" }
|
||||||
|
links "gdi32"
|
||||||
|
links "opengl32"
|
||||||
|
links "winmm"
|
||||||
else
|
else
|
||||||
excludes { "../src/Nazara/Renderer/Win32/*.hpp", "../src/Nazara/Renderer/Win32/*.cpp" }
|
excludes { "../src/Nazara/Renderer/Win32/*.hpp", "../src/Nazara/Renderer/Win32/*.cpp" }
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ files
|
||||||
|
|
||||||
if (os.is("windows")) then
|
if (os.is("windows")) then
|
||||||
excludes { "../src/Nazara/Utility/Posix/*.hpp", "../src/Nazara/Utility/Posix/*.cpp" }
|
excludes { "../src/Nazara/Utility/Posix/*.hpp", "../src/Nazara/Utility/Posix/*.cpp" }
|
||||||
|
links "gdi32"
|
||||||
else
|
else
|
||||||
excludes { "../src/Nazara/Utility/Win32/*.hpp", "../src/Nazara/Utility/Win32/*.cpp" }
|
excludes { "../src/Nazara/Utility/Win32/*.hpp", "../src/Nazara/Utility/Win32/*.cpp" }
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_CURSOR_HPP
|
||||||
|
#define NAZARA_CURSOR_HPP
|
||||||
|
|
||||||
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/Math/Vector2.hpp>
|
||||||
|
|
||||||
|
class NzCursorImpl;
|
||||||
|
class NzImage;
|
||||||
|
class NzWindowImpl;
|
||||||
|
|
||||||
|
class NAZARA_API NzCursor
|
||||||
|
{
|
||||||
|
friend class NzWindowImpl;
|
||||||
|
|
||||||
|
public:
|
||||||
|
NzCursor();
|
||||||
|
~NzCursor();
|
||||||
|
|
||||||
|
bool Create(const NzImage& cursor, int hotSpotX = 0, int hotSpotY = 0);
|
||||||
|
bool Create(const NzImage& cursor, const NzVector2i& hotSpot);
|
||||||
|
void Destroy();
|
||||||
|
|
||||||
|
bool IsValid() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
NzCursorImpl* m_impl;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_CURSOR_HPP
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_ICON_HPP
|
||||||
|
#define NAZARA_ICON_HPP
|
||||||
|
|
||||||
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/Math/Vector2.hpp>
|
||||||
|
|
||||||
|
class NzImage;
|
||||||
|
class NzIconImpl;
|
||||||
|
class NzWindowImpl;
|
||||||
|
|
||||||
|
class NAZARA_API NzIcon
|
||||||
|
{
|
||||||
|
friend class NzWindowImpl;
|
||||||
|
|
||||||
|
public:
|
||||||
|
NzIcon();
|
||||||
|
~NzIcon();
|
||||||
|
|
||||||
|
bool Create(const NzImage& icon);
|
||||||
|
void Destroy();
|
||||||
|
|
||||||
|
bool IsValid() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
NzIconImpl* m_impl;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_ICON_HPP
|
||||||
|
|
@ -24,6 +24,7 @@
|
||||||
#include <Nazara/Core/ThreadCondition.hpp>
|
#include <Nazara/Core/ThreadCondition.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
class NzImage;
|
||||||
class NzUtility;
|
class NzUtility;
|
||||||
class NzWindowImpl;
|
class NzWindowImpl;
|
||||||
|
|
||||||
|
|
@ -62,6 +63,9 @@ enum nzWindowStyle
|
||||||
nzWindowStyle_Default = nzWindowStyle_Closable | nzWindowStyle_Resizable | nzWindowStyle_Titlebar
|
nzWindowStyle_Default = nzWindowStyle_Closable | nzWindowStyle_Resizable | nzWindowStyle_Titlebar
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class NzCursor;
|
||||||
|
class NzIcon;
|
||||||
|
|
||||||
class NAZARA_API NzWindow : NzNonCopyable
|
class NAZARA_API NzWindow : NzNonCopyable
|
||||||
{
|
{
|
||||||
friend class NzUtility;
|
friend class NzUtility;
|
||||||
|
|
@ -97,8 +101,10 @@ class NAZARA_API NzWindow : NzNonCopyable
|
||||||
bool PollEvent(NzEvent* event);
|
bool PollEvent(NzEvent* event);
|
||||||
|
|
||||||
void SetCursor(nzWindowCursor cursor);
|
void SetCursor(nzWindowCursor cursor);
|
||||||
|
void SetCursor(const NzCursor& cursor);
|
||||||
void SetEventListener(bool listener);
|
void SetEventListener(bool listener);
|
||||||
void SetFocus();
|
void SetFocus();
|
||||||
|
void SetIcon(const NzIcon& icon);
|
||||||
void SetMaximumSize(const NzVector2i& maxSize);
|
void SetMaximumSize(const NzVector2i& maxSize);
|
||||||
void SetMaximumSize(int width, int height);
|
void SetMaximumSize(int width, int height);
|
||||||
void SetMinimumSize(const NzVector2i& minSize);
|
void SetMinimumSize(const NzVector2i& minSize);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <Nazara/Utility/Cursor.hpp>
|
||||||
|
|
||||||
|
#if defined(NAZARA_PLATFORM_WINDOWS)
|
||||||
|
#include <Nazara/Utility/Win32/CursorImpl.hpp>
|
||||||
|
#elif defined(NAZARA_PLATFORM_LINUX)
|
||||||
|
#include <Nazara/Utility/Linux/CursorImpl.hpp>
|
||||||
|
#else
|
||||||
|
#error Lack of implementation: Cursor
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Nazara/Utility/Debug.hpp>
|
||||||
|
|
||||||
|
NzCursor::NzCursor() :
|
||||||
|
m_impl(nullptr)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
NzCursor::~NzCursor()
|
||||||
|
{
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NzCursor::Create(const NzImage& cursor, int hotSpotX, int hotSpotY)
|
||||||
|
{
|
||||||
|
Destroy();
|
||||||
|
|
||||||
|
m_impl = new NzCursorImpl;
|
||||||
|
if (!m_impl->Create(cursor, hotSpotX, hotSpotY))
|
||||||
|
{
|
||||||
|
NazaraError("Failed to create cursor implementation");
|
||||||
|
delete m_impl;
|
||||||
|
m_impl = nullptr;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NzCursor::Create(const NzImage& cursor, const NzVector2i& hotSpot)
|
||||||
|
{
|
||||||
|
return Create(cursor, hotSpot.x, hotSpot.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzCursor::Destroy()
|
||||||
|
{
|
||||||
|
if (m_impl)
|
||||||
|
{
|
||||||
|
m_impl->Destroy();
|
||||||
|
delete m_impl;
|
||||||
|
m_impl = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NzCursor::IsValid() const
|
||||||
|
{
|
||||||
|
return m_impl != nullptr;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <Nazara/Utility/Icon.hpp>
|
||||||
|
|
||||||
|
#if defined(NAZARA_PLATFORM_WINDOWS)
|
||||||
|
#include <Nazara/Utility/Win32/IconImpl.hpp>
|
||||||
|
#elif defined(NAZARA_PLATFORM_LINUX)
|
||||||
|
#include <Nazara/Utility/Linux/IconImpl.hpp>
|
||||||
|
#else
|
||||||
|
#error Lack of implementation: Icon
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Nazara/Utility/Debug.hpp>
|
||||||
|
|
||||||
|
NzIcon::NzIcon() :
|
||||||
|
m_impl(nullptr)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
NzIcon::~NzIcon()
|
||||||
|
{
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NzIcon::Create(const NzImage& icon)
|
||||||
|
{
|
||||||
|
Destroy();
|
||||||
|
|
||||||
|
m_impl = new NzIconImpl;
|
||||||
|
if (!m_impl->Create(icon))
|
||||||
|
{
|
||||||
|
NazaraError("Failed to create cursor implementation");
|
||||||
|
delete m_impl;
|
||||||
|
m_impl = nullptr;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzIcon::Destroy()
|
||||||
|
{
|
||||||
|
if (m_impl)
|
||||||
|
{
|
||||||
|
m_impl->Destroy();
|
||||||
|
delete m_impl;
|
||||||
|
m_impl = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NzIcon::IsValid() const
|
||||||
|
{
|
||||||
|
return m_impl != nullptr;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <Nazara/Utility/Win32/CursorImpl.hpp>
|
||||||
|
#include <Nazara/Core/Error.hpp>
|
||||||
|
#include <Nazara/Utility/Image.hpp>
|
||||||
|
#include <Nazara/Utility/Debug.hpp>
|
||||||
|
|
||||||
|
bool NzCursorImpl::Create(const NzImage& cursor, int hotSpotX, int hotSpotY)
|
||||||
|
{
|
||||||
|
NzImage windowsCursor(cursor);
|
||||||
|
if (!windowsCursor.Convert(nzPixelFormat_BGRA8))
|
||||||
|
{
|
||||||
|
NazaraError("Failed to convert cursor to BGRA8");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
HBITMAP bitmap = CreateBitmap(windowsCursor.GetWidth(), windowsCursor.GetHeight(), 1, 32, windowsCursor.GetConstPixels());
|
||||||
|
HBITMAP monoBitmap = CreateBitmap(windowsCursor.GetWidth(), windowsCursor.GetHeight(), 1, 1, nullptr);
|
||||||
|
|
||||||
|
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms648052(v=vs.85).aspx
|
||||||
|
ICONINFO iconInfo;
|
||||||
|
iconInfo.fIcon = FALSE;
|
||||||
|
iconInfo.xHotspot = hotSpotX;
|
||||||
|
iconInfo.yHotspot = hotSpotY;
|
||||||
|
iconInfo.hbmMask = monoBitmap;
|
||||||
|
iconInfo.hbmColor = bitmap;
|
||||||
|
|
||||||
|
m_cursor = CreateIconIndirect(&iconInfo);
|
||||||
|
|
||||||
|
DeleteObject(bitmap);
|
||||||
|
DeleteObject(monoBitmap);
|
||||||
|
|
||||||
|
if (!m_cursor)
|
||||||
|
{
|
||||||
|
NazaraError("Failed to create cursor: " + NzGetLastSystemError());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzCursorImpl::Destroy()
|
||||||
|
{
|
||||||
|
DestroyIcon(m_cursor);
|
||||||
|
}
|
||||||
|
|
||||||
|
HCURSOR NzCursorImpl::GetCursor()
|
||||||
|
{
|
||||||
|
return m_cursor;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_CURSORIMPL_HPP
|
||||||
|
#define NAZARA_CURSORIMPL_HPP
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
class NzImage;
|
||||||
|
|
||||||
|
class NzCursorImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool Create(const NzImage& image, int hotSpotX, int hotSpotY);
|
||||||
|
void Destroy();
|
||||||
|
|
||||||
|
HCURSOR GetCursor();
|
||||||
|
|
||||||
|
private:
|
||||||
|
HICON m_cursor = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_CURSORIMPL_HPP
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <Nazara/Utility/Win32/IconImpl.hpp>
|
||||||
|
#include <Nazara/Utility/Image.hpp>
|
||||||
|
#include <Nazara/Utility/Debug.hpp>
|
||||||
|
|
||||||
|
bool NzIconImpl::Create(const NzImage& icon)
|
||||||
|
{
|
||||||
|
NzImage windowsIcon(icon);
|
||||||
|
if (!windowsIcon.Convert(nzPixelFormat_BGRA8))
|
||||||
|
{
|
||||||
|
NazaraError("Failed to convert icon to BGRA8");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
HBITMAP bitmap = CreateBitmap(windowsIcon.GetWidth(), windowsIcon.GetHeight(), 1, 32, windowsIcon.GetConstPixels());
|
||||||
|
HBITMAP monoBitmap = CreateBitmap(windowsIcon.GetWidth(), windowsIcon.GetHeight(), 1, 1, nullptr);
|
||||||
|
|
||||||
|
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms648052(v=vs.85).aspx
|
||||||
|
ICONINFO iconInfo;
|
||||||
|
iconInfo.fIcon = TRUE;
|
||||||
|
iconInfo.hbmMask = monoBitmap;
|
||||||
|
iconInfo.hbmColor = bitmap;
|
||||||
|
|
||||||
|
m_icon = CreateIconIndirect(&iconInfo);
|
||||||
|
|
||||||
|
DeleteObject(bitmap);
|
||||||
|
DeleteObject(monoBitmap);
|
||||||
|
|
||||||
|
if (!m_icon)
|
||||||
|
{
|
||||||
|
NazaraError("Failed to create icon: " + NzGetLastSystemError());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzIconImpl::Destroy()
|
||||||
|
{
|
||||||
|
DestroyIcon(m_icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
HICON NzIconImpl::GetIcon()
|
||||||
|
{
|
||||||
|
return m_icon;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_ICONIMPL_HPP
|
||||||
|
#define NAZARA_ICONIMPL_HPP
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
class NzImage;
|
||||||
|
|
||||||
|
class NzIconImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool Create(const NzImage& image);
|
||||||
|
void Destroy();
|
||||||
|
|
||||||
|
HICON GetIcon();
|
||||||
|
|
||||||
|
private:
|
||||||
|
HICON m_icon = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_ICONIMPL_HPP
|
||||||
|
|
@ -12,6 +12,11 @@
|
||||||
#include <Nazara/Core/Thread.hpp>
|
#include <Nazara/Core/Thread.hpp>
|
||||||
#include <Nazara/Core/ThreadCondition.hpp>
|
#include <Nazara/Core/ThreadCondition.hpp>
|
||||||
#include <Nazara/Utility/Config.hpp>
|
#include <Nazara/Utility/Config.hpp>
|
||||||
|
#include <Nazara/Utility/Cursor.hpp>
|
||||||
|
#include <Nazara/Utility/Image.hpp>
|
||||||
|
#include <Nazara/Utility/Icon.hpp>
|
||||||
|
#include <Nazara/Utility/Win32/CursorImpl.hpp>
|
||||||
|
#include <Nazara/Utility/Win32/IconImpl.hpp>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <windowsx.h>
|
#include <windowsx.h>
|
||||||
#include <Nazara/Utility/Debug.hpp>
|
#include <Nazara/Utility/Debug.hpp>
|
||||||
|
|
@ -274,9 +279,6 @@ bool NzWindowImpl::IsVisible() const
|
||||||
|
|
||||||
void NzWindowImpl::SetCursor(nzWindowCursor cursor)
|
void NzWindowImpl::SetCursor(nzWindowCursor cursor)
|
||||||
{
|
{
|
||||||
// Pas besoin de libérer le curseur par la suite s'il est partagé
|
|
||||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms648045(v=vs.85).aspx
|
|
||||||
|
|
||||||
switch (cursor)
|
switch (cursor)
|
||||||
{
|
{
|
||||||
case nzWindowCursor_Crosshair:
|
case nzWindowCursor_Crosshair:
|
||||||
|
|
@ -337,9 +339,16 @@ void NzWindowImpl::SetCursor(nzWindowCursor cursor)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pas besoin de libérer le curseur par la suite s'il est partagé
|
||||||
|
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms648045(v=vs.85).aspx
|
||||||
::SetCursor(m_cursor);
|
::SetCursor(m_cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NzWindowImpl::SetCursor(const NzCursor& cursor)
|
||||||
|
{
|
||||||
|
m_cursor = cursor.m_impl->GetCursor();
|
||||||
|
}
|
||||||
|
|
||||||
void NzWindowImpl::SetEventListener(bool listener)
|
void NzWindowImpl::SetEventListener(bool listener)
|
||||||
{
|
{
|
||||||
if (m_ownsWindow)
|
if (m_ownsWindow)
|
||||||
|
|
@ -365,6 +374,14 @@ void NzWindowImpl::SetFocus()
|
||||||
SetForegroundWindow(m_handle);
|
SetForegroundWindow(m_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NzWindowImpl::SetIcon(const NzIcon& icon)
|
||||||
|
{
|
||||||
|
HICON iconHandle = icon.m_impl->GetIcon();
|
||||||
|
|
||||||
|
SendMessage(m_handle, WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(iconHandle));
|
||||||
|
SendMessage(m_handle, WM_SETICON, ICON_SMALL, reinterpret_cast<LPARAM>(iconHandle));
|
||||||
|
}
|
||||||
|
|
||||||
void NzWindowImpl::SetMaximumSize(int width, int height)
|
void NzWindowImpl::SetMaximumSize(int width, int height)
|
||||||
{
|
{
|
||||||
RECT rect = {0, 0, width, height};
|
RECT rect = {0, 0, width, height};
|
||||||
|
|
|
||||||
|
|
@ -57,8 +57,10 @@ class NzWindowImpl : NzNonCopyable
|
||||||
bool IsVisible() const;
|
bool IsVisible() const;
|
||||||
|
|
||||||
void SetCursor(nzWindowCursor cursor);
|
void SetCursor(nzWindowCursor cursor);
|
||||||
|
void SetCursor(const NzCursor& cursor);
|
||||||
void SetEventListener(bool listener);
|
void SetEventListener(bool listener);
|
||||||
void SetFocus();
|
void SetFocus();
|
||||||
|
void SetIcon(const NzIcon& icon);
|
||||||
void SetMaximumSize(int width, int height);
|
void SetMaximumSize(int width, int height);
|
||||||
void SetMinimumSize(int width, int height);
|
void SetMinimumSize(int width, int height);
|
||||||
void SetPosition(int x, int y);
|
void SetPosition(int x, int y);
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,18 @@
|
||||||
#include <Nazara/Utility/Window.hpp>
|
#include <Nazara/Utility/Window.hpp>
|
||||||
#include <Nazara/Core/Error.hpp>
|
#include <Nazara/Core/Error.hpp>
|
||||||
#include <Nazara/Core/LockGuard.hpp>
|
#include <Nazara/Core/LockGuard.hpp>
|
||||||
|
#include <Nazara/Utility/Cursor.hpp>
|
||||||
|
#include <Nazara/Utility/Image.hpp>
|
||||||
|
#include <Nazara/Utility/Icon.hpp>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
#if defined(NAZARA_PLATFORM_WINDOWS)
|
#if defined(NAZARA_PLATFORM_WINDOWS)
|
||||||
|
#include <Nazara/Utility/Win32/CursorImpl.hpp>
|
||||||
|
#include <Nazara/Utility/Win32/IconImpl.hpp>
|
||||||
#include <Nazara/Utility/Win32/WindowImpl.hpp>
|
#include <Nazara/Utility/Win32/WindowImpl.hpp>
|
||||||
#elif defined(NAZARA_PLATFORM_LINUX)
|
#elif defined(NAZARA_PLATFORM_LINUX)
|
||||||
|
#include <Nazara/Utility/Linux/CursorImpl.hpp>
|
||||||
|
#include <Nazara/Utility/Linux/IconImpl.hpp>
|
||||||
#include <Nazara/Utility/Linux/WindowImpl.hpp>
|
#include <Nazara/Utility/Linux/WindowImpl.hpp>
|
||||||
#else
|
#else
|
||||||
#error Lack of implementation: Window
|
#error Lack of implementation: Window
|
||||||
|
|
@ -305,6 +312,20 @@ void NzWindow::SetCursor(nzWindowCursor cursor)
|
||||||
m_impl->SetCursor(cursor);
|
m_impl->SetCursor(cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NzWindow::SetCursor(const NzCursor& cursor)
|
||||||
|
{
|
||||||
|
#if NAZARA_UTILITY_SAFE
|
||||||
|
if (!cursor.IsValid())
|
||||||
|
{
|
||||||
|
NazaraError("Cursor is not valid");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (m_impl)
|
||||||
|
m_impl->SetCursor(cursor);
|
||||||
|
}
|
||||||
|
|
||||||
void NzWindow::SetEventListener(bool listener)
|
void NzWindow::SetEventListener(bool listener)
|
||||||
{
|
{
|
||||||
if (!m_impl)
|
if (!m_impl)
|
||||||
|
|
@ -337,6 +358,20 @@ void NzWindow::SetFocus()
|
||||||
m_impl->SetFocus();
|
m_impl->SetFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NzWindow::SetIcon(const NzIcon& icon)
|
||||||
|
{
|
||||||
|
#if NAZARA_UTILITY_SAFE
|
||||||
|
if (!icon.IsValid())
|
||||||
|
{
|
||||||
|
NazaraError("Icon is not valid");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (m_impl)
|
||||||
|
m_impl->SetIcon(icon);
|
||||||
|
}
|
||||||
|
|
||||||
void NzWindow::SetMaximumSize(const NzVector2i& maxSize)
|
void NzWindow::SetMaximumSize(const NzVector2i& maxSize)
|
||||||
{
|
{
|
||||||
if (m_impl)
|
if (m_impl)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue