Make class prop customizable

This commit is contained in:
Ksaper 2023-03-02 01:58:41 +02:00
parent 5e384d968d
commit 6460a4fbd5
5 changed files with 22 additions and 4 deletions

View File

@ -24,6 +24,7 @@ struct option long_options [] = {
{"screenshot", required_argument, nullptr, 'c'}, {"screenshot", required_argument, nullptr, 'c'},
{"list-properties", no_argument, nullptr, 'l'}, {"list-properties", no_argument, nullptr, 'l'},
{"set-property", required_argument, nullptr, 'o'}, {"set-property", required_argument, nullptr, 'o'},
{"class", required_argument, nullptr, 'x'},
{nullptr, 0, nullptr, 0} {nullptr, 0, nullptr, 0}
}; };
@ -48,7 +49,8 @@ CApplicationContext::CApplicationContext (int argc, char* argv[]) :
maximumFPS (30), maximumFPS (30),
audioVolume (128), audioVolume (128),
audioEnabled (true), audioEnabled (true),
onlyListProperties (false) onlyListProperties (false),
window_class (""),
{ {
int c; int c;
@ -110,6 +112,10 @@ CApplicationContext::CApplicationContext (int argc, char* argv[]) :
this->takeScreenshot = true; this->takeScreenshot = true;
this->screenshot = stringPathFixes (optarg); this->screenshot = stringPathFixes (optarg);
break; break;
case 'x':
this->window_class = optarg;
break;
} }
} }
@ -196,4 +202,5 @@ void CApplicationContext::printHelp (const char* route)
sLog.out ("\t--screenshot\t\t\t\tTakes a screenshot of the background"); sLog.out ("\t--screenshot\t\t\t\tTakes a screenshot of the background");
sLog.out ("\t--list-properties\t\t\tList all the available properties and their possible values"); sLog.out ("\t--list-properties\t\t\tList all the available properties and their possible values");
sLog.out ("\t--set-property <name=value>\tOverrides the default value of the given property"); sLog.out ("\t--set-property <name=value>\tOverrides the default value of the given property");
sLog.out ("\t--class <class name>\t\t\tSets X11 window class");
} }

View File

@ -24,6 +24,7 @@ namespace WallpaperEngine::Application
bool audioEnabled; bool audioEnabled;
bool onlyListProperties; bool onlyListProperties;
FREE_IMAGE_FORMAT screenshotFormat; FREE_IMAGE_FORMAT screenshotFormat;
std::string window_class;
private: private:
void validatePath (); void validatePath ();

View File

@ -222,7 +222,7 @@ void CWallpaperApplication::show ()
// initialize audio context // initialize audio context
WallpaperEngine::Audio::CAudioContext audioContext (audioDriver); WallpaperEngine::Audio::CAudioContext audioContext (audioDriver);
// initialize OpenGL driver // initialize OpenGL driver
WallpaperEngine::Render::Drivers::COpenGLDriver videoDriver (this->m_project->getTitle ().c_str ()); WallpaperEngine::Render::Drivers::COpenGLDriver videoDriver (this->m_project->getTitle ().c_str (), this->m_context);
// initialize the input subsystem // initialize the input subsystem
WallpaperEngine::Input::CInputContext inputContext (videoDriver); WallpaperEngine::Input::CInputContext inputContext (videoDriver);
// initialize render context // initialize render context

View File

@ -4,7 +4,7 @@
using namespace WallpaperEngine::Render::Drivers; using namespace WallpaperEngine::Render::Drivers;
COpenGLDriver::COpenGLDriver (const char* windowTitle) : COpenGLDriver::COpenGLDriver (const char* windowTitle, CApplicationContext& m_context) :
m_frameCounter (0) m_frameCounter (0)
{ {
// initialize glfw // initialize glfw
@ -22,6 +22,9 @@ COpenGLDriver::COpenGLDriver (const char* windowTitle) :
glfwWindowHint (GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); glfwWindowHint (GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE);
#endif /* DEBUG */ #endif /* DEBUG */
if (!m_context.window_class.empty())
windowTitle = m_context.window_class.c_str();
// create window, size doesn't matter as long as we don't show it // create window, size doesn't matter as long as we don't show it
this->m_window = glfwCreateWindow (640, 480, windowTitle, nullptr, nullptr); this->m_window = glfwCreateWindow (640, 480, windowTitle, nullptr, nullptr);

View File

@ -3,13 +3,20 @@
#include <GL/glew.h> #include <GL/glew.h>
#include <GLFW/glfw3.h> #include <GLFW/glfw3.h>
#include "WallpaperEngine/Render/Drivers/CVideoDriver.h" #include "WallpaperEngine/Render/Drivers/CVideoDriver.h"
#include "WallpaperEngine/Application/CApplicationContext.h"
using namespace WallpaperEngine::Application;
namespace WallpaperEngine::Application
{
class CWallpaperApplication;
}
namespace WallpaperEngine::Render::Drivers namespace WallpaperEngine::Render::Drivers
{ {
class COpenGLDriver : public CVideoDriver class COpenGLDriver : public CVideoDriver
{ {
public: public:
explicit COpenGLDriver (const char* windowTitle); explicit COpenGLDriver (const char* windowTitle, CApplicationContext& m_context);
~COpenGLDriver(); ~COpenGLDriver();
float getRenderTime () override; float getRenderTime () override;