From eda1f5ebab37ed9073c26f7eab582a846db5be3b Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 2 Mar 2013 00:28:22 +0100 Subject: [PATCH] Added 2D module Former-commit-id: 4e1ad41928e04e9de4b4288b973f37b6eb0755db --- build/scripts/module/2d.lua | 41 ++++++++++++++++++++++++ build/scripts/module/lua.lua | 35 ++++++++++++++++++++ include/Nazara/2D.hpp | 35 ++++++++++++++++++++ include/Nazara/2D/2D.hpp | 29 +++++++++++++++++ include/Nazara/2D/Config.hpp | 38 ++++++++++++++++++++++ include/Nazara/2D/Debug.hpp | 11 +++++++ include/Nazara/2D/DebugOff.hpp | 8 +++++ src/Nazara/2D/2D.cpp | 58 ++++++++++++++++++++++++++++++++++ 8 files changed, 255 insertions(+) create mode 100644 build/scripts/module/2d.lua create mode 100644 build/scripts/module/lua.lua create mode 100644 include/Nazara/2D.hpp create mode 100644 include/Nazara/2D/2D.hpp create mode 100644 include/Nazara/2D/Config.hpp create mode 100644 include/Nazara/2D/Debug.hpp create mode 100644 include/Nazara/2D/DebugOff.hpp create mode 100644 src/Nazara/2D/2D.cpp diff --git a/build/scripts/module/2d.lua b/build/scripts/module/2d.lua new file mode 100644 index 000000000..fd419970b --- /dev/null +++ b/build/scripts/module/2d.lua @@ -0,0 +1,41 @@ +if (not _OPTIONS["united"]) then + project "Nazara2D" +end + +files +{ + "../include/Nazara/2D/**.hpp", + "../include/Nazara/2D/**.inl", + "../src/Nazara/2D/**.hpp", + "../src/Nazara/2D/**.cpp" +} + +if (os.is("windows")) then + excludes { "../src/Nazara/2D/Posix/*.hpp", "../src/Nazara/2D/Posix/*.cpp" } +else + excludes { "../src/Nazara/2D/Win32/*.hpp", "../src/Nazara/2D/Win32/*.cpp" } +end + +if (_OPTIONS["united"]) then + excludes "../src/Nazara/2D/Debug/Leaks.cpp" +else + configuration "DebugStatic" + links "NazaraCore-s-d" + links "NazaraUtility-s-d" + links "NazaraRenderer-s-d" + + configuration "ReleaseStatic" + links "NazaraCore-s" + links "NazaraUtility-s" + links "NazaraRenderer-s" + + configuration "DebugDLL" + links "NazaraCore-d" + links "NazaraUtility-d" + links "NazaraRenderer-d" + + configuration "ReleaseDLL" + links "NazaraCore" + links "NazaraUtility" + links "NazaraRenderer" +end \ No newline at end of file diff --git a/build/scripts/module/lua.lua b/build/scripts/module/lua.lua new file mode 100644 index 000000000..54c81fab3 --- /dev/null +++ b/build/scripts/module/lua.lua @@ -0,0 +1,35 @@ +if (not _OPTIONS["united"]) then + project "NazaraLua" +end + +files +{ + "../include/Nazara/Lua/**.hpp", + "../include/Nazara/Lua/**.h", + "../include/Nazara/Lua/**.inl", + "../src/Nazara/Lua/**.hpp", + "../src/Nazara/Lua/**.c", + "../src/Nazara/Lua/**.cpp" +} + +if (os.is("windows")) then + excludes { "../src/Nazara/Lua/Posix/*.hpp", "../src/Nazara/Lua/Posix/*.cpp" } +else + excludes { "../src/Nazara/Lua/Win32/*.hpp", "../src/Nazara/Lua/Win32/*.cpp" } +end + +if (_OPTIONS["united"]) then + excludes "../src/Nazara/Lua/Debug/Leaks.cpp" +else + configuration "DebugStatic" + links "NazaraCore-s-d" + + configuration "ReleaseStatic" + links "NazaraCore-s" + + configuration "DebugDLL" + links "NazaraCore-d" + + configuration "ReleaseDLL" + links "NazaraCore" +end \ No newline at end of file diff --git a/include/Nazara/2D.hpp b/include/Nazara/2D.hpp new file mode 100644 index 000000000..395cd9ec1 --- /dev/null +++ b/include/Nazara/2D.hpp @@ -0,0 +1,35 @@ +// This file was automatically generated on 20 Feb 2013 at 17:02:32 + +/* + Nazara Engine - 2D module + + Copyright (C) 2012 Jérôme "Lynix" Leclercq (Lynix680@gmail.com) + + 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. +*/ + +#pragma once + +#ifndef NAZARA_GLOBAL_2D_HPP +#define NAZARA_GLOBAL_2D_HPP + +#include +#include + +#endif // NAZARA_GLOBAL_2D_HPP diff --git a/include/Nazara/2D/2D.hpp b/include/Nazara/2D/2D.hpp new file mode 100644 index 000000000..1c82477fb --- /dev/null +++ b/include/Nazara/2D/2D.hpp @@ -0,0 +1,29 @@ +// Copyright (C) 2012 Jérôme Leclercq +// This file is part of the "Nazara Engine - 2D Module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_2D_HPP +#define NAZARA_2D_HPP + +#include +#include + +class NAZARA_API Nz2D +{ + public: + Nz2D() = delete; + ~Nz2D() = delete; + + static bool Initialize(); + + static bool IsInitialized(); + + static void Uninitialize(); + + private: + static unsigned int s_moduleReferenceCounter; +}; + +#endif // NAZARA_2D_HPP diff --git a/include/Nazara/2D/Config.hpp b/include/Nazara/2D/Config.hpp new file mode 100644 index 000000000..8c2031722 --- /dev/null +++ b/include/Nazara/2D/Config.hpp @@ -0,0 +1,38 @@ +/* + Nazara Engine - 2D module + + Copyright (C) 2012 Jérôme "Lynix" Leclercq (Lynix680@gmail.com) + + 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. +*/ + +#pragma once + +#ifndef NAZARA_CONFIG_2D_HPP +#define NAZARA_CONFIG_2D_HPP + +/// Chaque modification d'un paramètre du module nécessite une recompilation de celui-ci + +// Utilise un tracker pour repérer les éventuels leaks (Ralentit l'exécution) +#define NAZARA_2D_MEMORYLEAKTRACKER 0 + +// Active les tests de sécurité basés sur le code (Conseillé pour le développement) +#define NAZARA_2D_SAFE 1 + +#endif // NAZARA_CONFIG_2D_HPP diff --git a/include/Nazara/2D/Debug.hpp b/include/Nazara/2D/Debug.hpp new file mode 100644 index 000000000..6fd8c070f --- /dev/null +++ b/include/Nazara/2D/Debug.hpp @@ -0,0 +1,11 @@ +// Copyright (C) 2012 Jérôme Leclercq +// This file is part of the "Nazara Engine - 2D Module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#if NAZARA_2D_MEMORYLEAKTRACKER || defined(NAZARA_DEBUG) + #include + + #define delete NzMemoryManager::NextFree(__FILE__, __LINE__), delete + #define new new(__FILE__, __LINE__) +#endif diff --git a/include/Nazara/2D/DebugOff.hpp b/include/Nazara/2D/DebugOff.hpp new file mode 100644 index 000000000..25bf94f1e --- /dev/null +++ b/include/Nazara/2D/DebugOff.hpp @@ -0,0 +1,8 @@ +// Copyright (C) 2012 Jérôme Leclercq +// This file is part of the "Nazara Engine - 2D Module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#if NAZARA_2D_MEMORYLEAKTRACKER || defined(NAZARA_DEBUG) + #undef delete + #undef new +#endif diff --git a/src/Nazara/2D/2D.cpp b/src/Nazara/2D/2D.cpp new file mode 100644 index 000000000..408b6fb13 --- /dev/null +++ b/src/Nazara/2D/2D.cpp @@ -0,0 +1,58 @@ +// Copyright (C) 2012 Jérôme Leclercq +// This file is part of the "Nazara Engine - 2D Module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include +#include +#include +#include +#include + +bool Nz2D::Initialize() +{ + if (s_moduleReferenceCounter++ != 0) + return true; // Déjà initialisé + + // Initialisation des dépendances + if (!NzRenderer::Initialize()) + { + NazaraError("Failed to initialize renderer module"); + Uninitialize(); + + return false; + } + + // Initialisation du module + + NazaraNotice("Initialized: 2D module"); + + return true; +} + +bool Nz2D::IsInitialized() +{ + return s_moduleReferenceCounter != 0; +} + +void Nz2D::Uninitialize() +{ + if (s_moduleReferenceCounter != 1) + { + // Le module est soit encore utilisé, soit pas initialisé + if (s_moduleReferenceCounter > 1) + s_moduleReferenceCounter--; + + return; + } + + // Libération du module + s_moduleReferenceCounter = 0; + + NazaraNotice("Uninitialized: 2D module"); + + // Libération des dépendances + NzRenderer::Uninitialize(); +} + +unsigned int Nz2D::s_moduleReferenceCounter = 0;