aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/script/objects/sgammaset.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/script/objects/sgammaset.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/script/objects/sgammaset.cpp')
-rw-r--r--Src/Wasabi/api/script/objects/sgammaset.cpp201
1 files changed, 201 insertions, 0 deletions
diff --git a/Src/Wasabi/api/script/objects/sgammaset.cpp b/Src/Wasabi/api/script/objects/sgammaset.cpp
new file mode 100644
index 00000000..e1913e43
--- /dev/null
+++ b/Src/Wasabi/api/script/objects/sgammaset.cpp
@@ -0,0 +1,201 @@
+#include <precomp.h>
+#include "SGammaset.h"
+
+#include <api.h>
+#include <api/script/script.h>
+#include <api/script/scriptmgr.h>
+#include <api/script/objecttable.h>
+
+// {0D024DB9-9574-42d0-B8C7-26B553F1F987}
+static const GUID gammasetSoGuid =
+{ 0xd024db9, 0x9574, 0x42d0, { 0xb8, 0xc7, 0x26, 0xb5, 0x53, 0xf1, 0xf9, 0x87 } };
+
+GammasetScriptController _gammasetController;
+GammasetScriptController *gammasetController=&_gammasetController;
+
+// -- Functions table -------------------------------------
+function_descriptor_struct GammasetScriptController::exportedFunction[] = {
+ {L"apply", 0, (void*)SGammaset::script_vcpu_apply },
+ {L"getID", 0, (void*)SGammaset::script_vcpu_getID },
+ {L"rename", 1, (void*)SGammaset::script_vcpu_rename },
+ {L"remove", 0, (void*)SGammaset::script_vcpu_update },
+ {L"delete", 0, (void*)SGammaset::script_vcpu_delete },
+ {L"getGeneralGroup", 0, (void*)SGammaset::script_vcpu_getDefaultGammaGroup },
+ {L"getGammaGroup", 1, (void*)SGammaset::script_vcpu_getGammaGroup },
+ {L"getNumGammaGroups", 0, (void*)SGammaset::script_vcpu_getNumGammaGroups },
+ {L"enumGammaGroup", 0, (void*)SGammaset::script_vcpu_enumGammaGroup },
+};
+// --------------------------------------------------------
+
+const wchar_t *GammasetScriptController::getClassName() {
+ return L"Gammaset";
+}
+
+const wchar_t *GammasetScriptController::getAncestorClassName() {
+ return L"Object";
+}
+
+ScriptObjectController *GammasetScriptController::getAncestorController() { return rootScriptObjectController; }
+
+ScriptObject *GammasetScriptController::instantiate() {
+ SGammaset *xd = new SGammaset;
+ ASSERT(xd != NULL);
+ return xd->getScriptObject();
+}
+
+void GammasetScriptController::destroy(ScriptObject *o) {
+ SGammaset *xd = static_cast<SGammaset *>(o->vcpu_getInterface(gammasetSoGuid));
+ ASSERT(xd != NULL);
+ delete xd;
+}
+
+void *GammasetScriptController::encapsulate(ScriptObject *o) {
+ return NULL; // no encapsulation for now
+}
+
+void GammasetScriptController::deencapsulate(void *o) {
+}
+
+int GammasetScriptController::getNumFunctions() {
+ return sizeof(exportedFunction) / sizeof(function_descriptor_struct);
+}
+
+const function_descriptor_struct *GammasetScriptController::getExportedFunctions() {
+ return exportedFunction;
+}
+
+GUID GammasetScriptController::getClassGuid() {
+ return gammasetSoGuid;
+}
+
+void SGammaset::__construct()
+{
+ getScriptObject()->vcpu_setInterface(gammasetSoGuid, (void *)static_cast<SGammaset *>(this));
+ getScriptObject()->vcpu_setClassName(L"Gammaset");
+ getScriptObject()->vcpu_setController(gammasetController);
+ this->gammasetID = NULL;
+}
+
+SGammaset::SGammaset()
+{
+ this->__construct();
+}
+
+SGammaset::SGammaset(const wchar_t * gammaSetID)
+{
+ this->__construct();
+ this->gammasetID = gammaSetID;
+}
+
+SGammaset::SGammaset(int n)
+{
+ this->__construct();
+ this->gammasetID = WASABI_API_COLORTHEMES->enumGammaSet(n);
+}
+
+SGammaset::~SGammaset()
+{
+}
+
+// VCPU
+
+scriptVar SGammaset::script_vcpu_apply(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) {
+ SCRIPT_FUNCTION_INIT;
+ SGammaset *m = static_cast<SGammaset *>(o->vcpu_getInterface(gammasetSoGuid));
+ if (m)
+ {
+ WASABI_API_SKIN->colortheme_setColorSet(m->gammasetID);
+ //WASABI_API_COLORTHEMES->setGammaSet(m->gammasetID);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+scriptVar SGammaset::script_vcpu_update(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) {
+ SCRIPT_FUNCTION_INIT;
+ SGammaset *m = static_cast<SGammaset *>(o->vcpu_getInterface(gammasetSoGuid));
+ if (m)
+ {
+ WASABI_API_COLORTHEMES->updateGammaSet(m->gammasetID);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+scriptVar SGammaset::script_vcpu_delete(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) {
+ SCRIPT_FUNCTION_INIT;
+ SGammaset *m = static_cast<SGammaset *>(o->vcpu_getInterface(gammasetSoGuid));
+ if (m)
+ {
+ WASABI_API_COLORTHEMES->deleteGammaSet(m->gammasetID);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+scriptVar SGammaset::script_vcpu_rename(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar name) {
+ SCRIPT_FUNCTION_INIT;
+ ASSERT(name.type == SCRIPT_STRING);
+ SGammaset *m = static_cast<SGammaset *>(o->vcpu_getInterface(gammasetSoGuid));
+ if (m)
+ {
+ WASABI_API_COLORTHEMES->renameGammaSet(m->gammasetID, name.data.sdata);
+ }
+ RETURN_SCRIPT_VOID;
+}
+
+scriptVar SGammaset::script_vcpu_getID(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) {
+ SCRIPT_FUNCTION_INIT;
+ SGammaset *m = static_cast<SGammaset *>(o->vcpu_getInterface(gammasetSoGuid));
+ if (m)
+ {
+ return MAKE_SCRIPT_STRING(m->gammasetID);
+ }
+ return MAKE_SCRIPT_STRING(L"");
+}
+
+scriptVar SGammaset::script_vcpu_getDefaultGammaGroup(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) {
+ SCRIPT_FUNCTION_INIT;
+ ScriptObject *s = NULL;
+ SGammaset *m = static_cast<SGammaset *>(o->vcpu_getInterface(gammasetSoGuid));
+ if (m)
+ {
+ SGammagroup *gg = new SGammagroup(m->gammasetID, -1);
+ if (gg != NULL && gg->grp != NULL) s = gg->getScriptObject();
+ }
+ return MAKE_SCRIPT_OBJECT(s);
+}
+
+scriptVar SGammaset::script_vcpu_getGammaGroup(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar name) {
+ SCRIPT_FUNCTION_INIT;
+ ASSERT(name.type == SCRIPT_STRING);
+ ScriptObject *s = NULL;
+ SGammaset *m = static_cast<SGammaset *>(o->vcpu_getInterface(gammasetSoGuid));
+ if (m)
+ {
+ SGammagroup *gg = new SGammagroup(m->gammasetID, GET_SCRIPT_STRING(name));
+ if (gg != NULL) s = gg->getScriptObject();
+ }
+ return MAKE_SCRIPT_OBJECT(s);
+}
+
+scriptVar SGammaset::script_vcpu_enumGammaGroup(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar n) {
+ SCRIPT_FUNCTION_INIT;
+ ASSERT(n.type == SCRIPT_INT);
+ ScriptObject *s = NULL;
+ SGammaset *m = static_cast<SGammaset *>(o->vcpu_getInterface(gammasetSoGuid));
+ if (m)
+ {
+ SGammagroup *gg = new SGammagroup(m->gammasetID, GET_SCRIPT_INT(n));
+ if (gg != NULL) s = gg->getScriptObject();
+ }
+ return MAKE_SCRIPT_OBJECT(s);
+}
+
+scriptVar SGammaset::script_vcpu_getNumGammaGroups(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) {
+ SCRIPT_FUNCTION_INIT;
+ int n = 0;
+ SGammaset *m = static_cast<SGammaset *>(o->vcpu_getInterface(gammasetSoGuid));
+ if (m)
+ {
+ n = WASABI_API_COLORTHEMES->getNumGammaGroups(m->gammasetID);
+ }
+ return MAKE_SCRIPT_INT(n);
+} \ No newline at end of file