diff --git a/modules/video/CMakeLists.txt b/modules/video/CMakeLists.txt new file mode 100644 index 0000000000..e3b94c576e --- /dev/null +++ b/modules/video/CMakeLists.txt @@ -0,0 +1,43 @@ +# ######################################################################################### +# # +# OpenSpace # +# # +# Copyright (c) 2014-2023 # +# # +# 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. # +# ######################################################################################### + +include(${PROJECT_SOURCE_DIR}/support/cmake/module_definition.cmake) + +set(HEADER_FILES + videomodule.h +) +source_group("Header Files" FILES ${HEADER_FILES}) + +set(SOURCE_FILES + videomodule.cpp + videomodule_lua.inl +) +source_group("Source Files" FILES ${SOURCE_FILES}) + +create_new_module( + "Video" + video_module + STATIC + ${HEADER_FILES} ${SOURCE_FILES} +) \ No newline at end of file diff --git a/modules/video/include.cmake b/modules/video/include.cmake new file mode 100644 index 0000000000..39d82b97ec --- /dev/null +++ b/modules/video/include.cmake @@ -0,0 +1,6 @@ +set(DEFAULT_MODULE ON) + +set(OPENSPACE_DEPENDENCIES + base + globebrowsing +) diff --git a/modules/video/videomodule.cpp b/modules/video/videomodule.cpp new file mode 100644 index 0000000000..ed789a528f --- /dev/null +++ b/modules/video/videomodule.cpp @@ -0,0 +1,94 @@ +/***************************************************************************************** + * * + * OpenSpace * + * * + * Copyright (c) 2014-2023 * + * * + * 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. * + ****************************************************************************************/ + +#include +#include +#include +#include + +#include "videomodule_lua.inl" + +namespace { + constexpr openspace::properties::Property::PropertyInfo EnabledInfo = { + "Enabled", + "Enabled", + "Decides if this module should be enabled" + }; + + struct [[codegen::Dictionary(VideoModule)]] Parameters { + // [[codegen::verbatim(EnabledInfo.description)]] + std::optional enabled; + }; + +#include "videomodule_codegen.cpp" +} // namespace + +namespace openspace { + +VideoModule::VideoModule() + : OpenSpaceModule(VideoModule::Name) + , _enabled(EnabledInfo) +{ + addProperty(_enabled); +} + +void VideoModule::internalInitialize(const ghoul::Dictionary& dict) { + const Parameters p = codegen::bake(dict); + + _enabled = p.enabled.value_or(_enabled); + /* + ghoul::TemplateFactory* fScreenSpaceRenderable = + FactoryManager::ref().factory(); + ghoul_assert(fScreenSpaceRenderable, "ScreenSpaceRenderable factory was not created"); + + // Register ScreenSpaceSkyBrowser + fScreenSpaceRenderable->registerClass("ScreenSpaceSkyBrowser"); + + ghoul::TemplateFactory* fRenderable = + FactoryManager::ref().factory(); + ghoul_assert(fRenderable, "Renderable factory was not created"); + + // Register ScreenSpaceSkyTarget + fRenderable->registerClass("RenderableSkyTarget"); + */ +} + +std::vector VideoModule::documentations() const { + /* return { + RenderableSkyTarget::Documentation(), + ScreenSpaceSkyBrowser::Documentation() + };*/ + return std::vector(); +} + +scripting::LuaLibrary VideoModule::luaLibrary() const { + return { + "video", + { + + } + }; +} + +} // namespace openspace diff --git a/modules/video/videomodule.h b/modules/video/videomodule.h new file mode 100644 index 0000000000..b18885d3c8 --- /dev/null +++ b/modules/video/videomodule.h @@ -0,0 +1,52 @@ +/***************************************************************************************** + * * + * OpenSpace * + * * + * Copyright (c) 2014-2023 * + * * + * 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. * + ****************************************************************************************/ + +#ifndef __OPENSPACE_MODULE_VIDEO___VIDEOMODULE___H__ +#define __OPENSPACE_MODULE_VIDEO___VIDEOMODULE___H__ + +#include + +#include + +namespace openspace { + +class VideoModule : public OpenSpaceModule { +public: + constexpr static const char* Name = "Video"; + + VideoModule(); + + scripting::LuaLibrary luaLibrary() const override; + std::vector documentations() const override; + +protected: + void internalInitialize(const ghoul::Dictionary& dict) override; + +private: + properties::BoolProperty _enabled; +}; + +} // namespace openspace + +#endif // __OPENSPACE_MODULE_VIDEO___VIDEOMODULE___H__ diff --git a/modules/video/videomodule_lua.inl b/modules/video/videomodule_lua.inl new file mode 100644 index 0000000000..6c9c6277f8 --- /dev/null +++ b/modules/video/videomodule_lua.inl @@ -0,0 +1,32 @@ +/***************************************************************************************** + * * + * OpenSpace * + * * + * Copyright (c) 2014-2023 * + * * + * 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. * + ****************************************************************************************/ + +#include +#include + +namespace { + constexpr std::string_view _loggerCat = "VideoModule"; + +//#include "videomodule_lua_codegen.cpp" +} // namespace