From 89b0f199485e68f0bc8d5f823c1c33afdd5cf462 Mon Sep 17 00:00:00 2001 From: Don Honerbrink Date: Mon, 16 Feb 2015 16:57:01 -0600 Subject: [PATCH] Initial concept checkin (untested) --- RetroFE/Source/CMakeLists.txt | 11 +++- RetroFE/Source/Video/NullVideo.cpp | 79 +++++++++++++++++++++++++++ RetroFE/Source/Video/NullVideo.h | 43 +++++++++++++++ RetroFE/Source/Video/VideoFactory.cpp | 12 ++++ 4 files changed, 142 insertions(+), 3 deletions(-) create mode 100644 RetroFE/Source/Video/NullVideo.cpp create mode 100644 RetroFE/Source/Video/NullVideo.h diff --git a/RetroFE/Source/CMakeLists.txt b/RetroFE/Source/CMakeLists.txt index 6c35c18..57f3a6c 100644 --- a/RetroFE/Source/CMakeLists.txt +++ b/RetroFE/Source/CMakeLists.txt @@ -107,7 +107,6 @@ set(RETROFE_HEADERS "${RETROFE_DIR}/Source/Utility/Log.h" "${RETROFE_DIR}/Source/Utility/Utils.h" "${RETROFE_DIR}/Source/Video/IVideo.h" - "${RETROFE_DIR}/Source/Video/GStreamerVideo.h" "${RETROFE_DIR}/Source/Video/VideoFactory.h" "${RETROFE_DIR}/Source/Graphics/ComponentItemBindingBuilder.h" "${RETROFE_DIR}/Source/Graphics/ViewInfo.h" @@ -149,7 +148,6 @@ set(RETROFE_SOURCES "${RETROFE_DIR}/Source/Sound/Sound.cpp" "${RETROFE_DIR}/Source/Utility/Log.cpp" "${RETROFE_DIR}/Source/Utility/Utils.cpp" - "${RETROFE_DIR}/Source/Video/GStreamerVideo.cpp" "${RETROFE_DIR}/Source/Video/VideoFactory.cpp" "${RETROFE_DIR}/Source/Main.cpp" "${RETROFE_DIR}/Source/RetroFE.cpp" @@ -158,6 +156,13 @@ set(RETROFE_SOURCES "${SQLITE3_ROOT}/sqlite3.c" ) +if(NO_VIDEO) +set(RETROFE_HEADERS ${RETROFE_HEADERS} "${RETROFE_DIR}/Source/Video/NullVideo.h") +set(RETROFE_SOURCES ${RETROFE_SOURCES} "${RETROFE_DIR}/Source/Video/NullVideo.cpp") +else() +set(RETROFE_HEADERS ${RETROFE_HEADERS} "${RETROFE_DIR}/Source/Video/GStreamerVideo.h") +set(RETROFE_SOURCES ${RETROFE_SOURCES} "${RETROFE_DIR}/Source/Video/GStreamerVideo.cpp") +endif() set(EXECUTABLE_OUTPUT_PATH "${RETROFE_DIR}/Build" CACHE PATH "Build directory" FORCE) set(LIBRARY_OUTPUT_PATH "${RETROFE_DIR}/Build" CACHE PATH "Build directory" FORCE) @@ -179,4 +184,4 @@ if(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /WX") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP /WX") set_target_properties(RetroFE PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS") -endif() \ No newline at end of file +endif() diff --git a/RetroFE/Source/Video/NullVideo.cpp b/RetroFE/Source/Video/NullVideo.cpp new file mode 100644 index 0000000..a1459af --- /dev/null +++ b/RetroFE/Source/Video/NullVideo.cpp @@ -0,0 +1,79 @@ +/* This file is part of RetroFE. + * + * RetroFE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RetroFE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RetroFE. If not, see . + */ +#include "NullVideo.h" +#include "../Utility/Log.h" +#include "../SDL.h" +#include +#include +#include +#include +#include + +NullVideo::NullVideo() +{ +} +NullVideo::~NullVideo() +{ +} + +void NullVideo::SetNumLoops(int n) +{ +} + +SDL_Texture *NullVideo::GetTexture() const +{ + return NULL; +} + +bool NullVideo::Initialize() +{ + return true; +} + +bool NullVideo::DeInitialize() +{ + return true; +} + +bool NullVideo::Stop() +{ + return true; +} + +bool NullVideo::Play(std::string file) +{ + return true; +} + +int NullVideo::GetHeight() +{ + return 0; +} + +int NullVideo::GetWidth() +{ + return 0; +} + + +void NullVideo::Draw() +{ +} + +void NullVideo::Update(float dt) +{ +} + diff --git a/RetroFE/Source/Video/NullVideo.h b/RetroFE/Source/Video/NullVideo.h new file mode 100644 index 0000000..05736c2 --- /dev/null +++ b/RetroFE/Source/Video/NullVideo.h @@ -0,0 +1,43 @@ +/* This file is part of RetroFE. + * + * RetroFE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RetroFE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RetroFE. If not, see . + */ +#pragma once + +#include "IVideo.h" + +extern "C" +{ +#include +#include +} + + +class NullVideo : public IVideo +{ +public: + NullVideo(); + ~NullVideo(); + bool Initialize(); + bool Play(std::string file); + bool Stop(); + bool DeInitialize(); + SDL_Texture *GetTexture() const; + void Update(float dt); + void Draw(); + void SetNumLoops(int n); + void FreeElements(); + int GetHeight(); + int GetWidth(); +}; diff --git a/RetroFE/Source/Video/VideoFactory.cpp b/RetroFE/Source/Video/VideoFactory.cpp index 4c655ca..d16969a 100644 --- a/RetroFE/Source/Video/VideoFactory.cpp +++ b/RetroFE/Source/Video/VideoFactory.cpp @@ -16,7 +16,12 @@ #include "VideoFactory.h" #include "IVideo.h" + +#ifdef NO_VIDEO +#include "NullVideo.h" +#else #include "GStreamerVideo.h" +#endif bool VideoFactory::Enabled = true; int VideoFactory::NumLoops = 0; @@ -27,9 +32,16 @@ IVideo *VideoFactory::CreateVideo() if(Enabled && !Instance) { +#ifdef NO_VIDEO + Instance = new NullVideo(); +#else Instance = new GStreamerVideo(); +#endif Instance->Initialize(); + +#ifndef NO_VIDEO ((GStreamerVideo *)(Instance))->SetNumLoops(NumLoops); +#endif } return Instance;