A few more light mode modules

This commit is contained in:
falkTX 2022-09-14 14:48:52 +01:00
parent 2472b06f59
commit 9116eb61fb
4 changed files with 123 additions and 35 deletions

View file

@ -110,7 +110,11 @@ endif
# --------------------------------------------------------------
# Extra libraries to link against
ifeq ($(NOPLUGINS),true)
RACK_EXTRA_LIBS = ../../plugins/noplugins.a
else
RACK_EXTRA_LIBS = ../../plugins/plugins.a
endif
RACK_EXTRA_LIBS += ../rack.a
RACK_EXTRA_LIBS += $(DEP_LIB_PATH)/libquickjs.a

View file

@ -378,11 +378,15 @@ enum LightMode {
kModeCardinal,
kModeFehlerFabrik,
kModeForsitan,
kModeFundamental, // FIXME remove
kModeFundamental,
kModeGoodSheperd,
kModeH4n4,
kModeHamptonHarmonics,
kModeLomas,
kModeMockba,
kModeMog,
kModePrism,
kModeRepelzen,
kModeSonusmodular,
};
@ -525,15 +529,31 @@ static const struct {
{ kModeLomas, "/LomasModules/res/AdvancedSampler.svg", {}, -1 },
{ kModeLomas, "/LomasModules/res/GateSequencer.svg", {}, -1 },
// MIT
// TODO Mockba
{ kModeMockba, "/MockbaModular/res/Blank.svg", {}, -1 },
// TODO
// CC0
// TODO Mog
{ kModeMog, "/Mog/res/Network.svg", {}, -1 },
{ kModeMog, "/Mog/res/Nexus.svg", {}, -1 },
// CC-BY-NC-ND-4.0
// TODO Orbits - non compat license
// CC-BY-SA-4.0
// TODO Prism
{ kModePrism, "/Prism/res/prism_Droplet.svg", {}, -1 },
{ kModePrism, "/Prism/res/prism_Rainbow.svg", {}, -1 },
{ kModePrism, "/Prism/res/RainbowScaleExpander.svg", {}, -1 },
// CC-BY-SA-4.0
// TODO repelzen
{ kModeRepelzen, "/repelzen/res/reface/reburst_bg.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/refold_bg.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/repelzen_bg1.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/repelzen_bg2.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/repelzen_bg3.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/repelzen_bg4.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/repelzen_bg5.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/repelzen_bg6.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/repelzen_bg7.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/repelzen_bg8.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/retrig_bg.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/rewin_bg.svg", {}, -1 },
{ kModeRepelzen, "/repelzen/res/reface/rexmix_bg.svg", {}, -1 },
// GPLv3+
{ kModeSonusmodular, "/sonusmodular/res/addiction.svg", {}, -1 },
{ kModeSonusmodular, "/sonusmodular/res/bitter.svg", {}, -1 },
@ -852,20 +872,34 @@ bool invertPaintForDarkMode(const DarkMode mode, NSVGshape* const shape, NSVGpai
static inline
bool invertPaintForLightMode(const LightMode mode, NSVGshape* const shape, NSVGpaint& paint)
{
switch (paint.type)
if (paint.type == NSVG_PAINT_LINEAR_GRADIENT)
{
case NSVG_PAINT_NONE:
return true;
case NSVG_PAINT_LINEAR_GRADIENT:
for (int i=0; i<paint.gradient->nstops; ++i)
paint.gradient->stops[i].color = invertColor(paint.gradient->stops[i].color);
return true;
case NSVG_PAINT_COLOR:
break;
default:
return false;
switch (mode)
{
case kModeFundamental:
paint.gradient->stops[0].color = 0xffffffff;
paint.gradient->stops[1].color = 0xffe6d6d6;
return true;
default:
for (int i=0; i<paint.gradient->nstops; ++i)
paint.gradient->stops[i].color = invertColor(paint.gradient->stops[i].color);
return true;
}
}
if (paint.type == NSVG_PAINT_RADIAL_GRADIENT && mode == kModeMog)
{
std::free(paint.gradient);
paint.type = NSVG_PAINT_COLOR;
paint.color = 0xffe5e5e5;
return true;
}
if (paint.type == NSVG_PAINT_NONE)
return true;
if (paint.type != NSVG_PAINT_COLOR)
return false;
switch (mode)
{
case kModeAutinn:
@ -931,15 +965,73 @@ bool invertPaintForLightMode(const LightMode mode, NSVGshape* const shape, NSVGp
return true;
}
break;
case kModeMog:
switch (paint.color)
{
case 0xff442499:
case 0xff587ee2:
case 0xff1ecae8:
case 0xff2dd6ac:
case 0xffcf924c:
case 0xffd8b3bb:
case 0xff29165d:
case 0xff354d89:
case 0xff127b8d:
case 0xff1b8269:
case 0xff7e592e:
case 0xff836d72:
return false;
}
break;
case kModePrism:
switch (paint.color)
{
case 0xff000000:
case 0xff505770:
case 0xff657c9b:
case 0xff7ba357:
case 0xff7f64f2:
case 0xff99e4ff:
case 0xffa7ff6c:
case 0xffc279e2:
case 0xffe079c4:
case 0xffe5ff66:
case 0xffff88d0:
case 0xffffa369:
return false;
case 0xff0f0f0f:
if (std::strcmp(shape->id, "path10") == 0 || std::strcmp(shape->id, "circle506") == 0)
{
paint.color = 0xffffffff;
return true;
}
return false;
case 0xffbababa:
paint.color = 0xff000000;
return true;
}
break;
case kModeRepelzen:
switch (paint.color)
{
case 0xff4c4ccc:
case 0xff87a610:
case 0xffb78e09:
return false;
case 0xff44bbd8:
paint.color = 0xff228ba5;
return true;
}
break;
case kModeSonusmodular:
switch (paint.color)
{
case 0xff2a2aff:
case 0xff87cdde:
case 0xffe9afaf:
case 0xff4e4ed3:
case 0xff55ddff:
case 0xff87cdde:
case 0xffdbdbe3:
case 0xffe9afaf:
return false;
case 0xff0a1284:
paint.color = 0xff7a82f5;
@ -950,20 +1042,8 @@ bool invertPaintForLightMode(const LightMode mode, NSVGshape* const shape, NSVGp
break;
}
switch (paint.type)
{
case NSVG_PAINT_NONE:
return true;
case NSVG_PAINT_LINEAR_GRADIENT:
for (int i=0; i<paint.gradient->nstops; ++i)
paint.gradient->stops[i].color = invertColor(paint.gradient->stops[i].color);
return true;
case NSVG_PAINT_COLOR:
paint.color = invertColor(paint.color);
return true;
default:
return false;
}
paint.color = invertColor(paint.color);
return true;
}
extern "C" {
@ -1169,13 +1249,13 @@ NSVGimage* nsvgParseFromFileCardinal(const char* const filename, const char* con
if (std::strncmp(filename + (filenamelen-filterlen), svgFileToInvert, filterlen) != 0)
continue;
const LightMode mode = svgFilesToInvertForLightMode[i].mode;
hasLightMode = true;
handleMOD = nullptr;
shapesOrig = handle->shapes;
shapesMOD = nsvg__duplicateShapes(shapesOrig);
const LightMode mode = svgFilesToInvertForLightMode[i].mode;
// shape paint inversion
for (NSVGshape* shape = shapesMOD; shape != nullptr; shape = shape->next)
{