Full dark mode
This commit is contained in:
parent
f2bdbd8061
commit
cc610760d6
1 changed files with 225 additions and 75 deletions
|
@ -45,170 +45,263 @@ float FollowerBase::efGainMaxDecibelsDebug = 12.0f;
|
|||
|
||||
// Custom Cardinal filtering
|
||||
static const struct {
|
||||
const char* filename;
|
||||
const char* const filename;
|
||||
const char* shapes[4];
|
||||
} pathsToFilterOut[] = {
|
||||
{
|
||||
"Core/AudioInterface.svg",
|
||||
"/Core/AudioInterface.svg",
|
||||
{"path39377","path39381","path39383","path39379"}
|
||||
},
|
||||
{
|
||||
"Core/AudioInterface2.svg",
|
||||
"/Core/AudioInterface2.svg",
|
||||
{"path18733","path18737","path18731","path18735"}
|
||||
},
|
||||
{
|
||||
"Core/AudioInterface16.svg",
|
||||
"/Core/AudioInterface16.svg",
|
||||
{"path40283","path40287","path40289","path40285"}
|
||||
},
|
||||
{
|
||||
"Core/CV-CC.svg",
|
||||
"/Core/CV-CC.svg",
|
||||
{"path12881","path12885","path12887","path12883"}
|
||||
},
|
||||
{
|
||||
"Core/CV-Gate.svg",
|
||||
"/Core/CV-Gate.svg",
|
||||
{"path13127","path13131","path13133","path13129"}
|
||||
},
|
||||
{
|
||||
"Core/CV-MIDI.svg",
|
||||
"/Core/CV-MIDI.svg",
|
||||
{"path12747","path12751","path12753","path12749"}
|
||||
},
|
||||
{
|
||||
"Core/MIDI-CC.svg",
|
||||
"/Core/MIDI-CC.svg",
|
||||
{"path9740","path9744","path9746","path9742"}
|
||||
},
|
||||
{
|
||||
"Core/MIDI-CV.svg",
|
||||
"/Core/MIDI-CV.svg",
|
||||
{"path11803","path11807","path11809","path11805"}
|
||||
},
|
||||
{
|
||||
"Core/MIDI-Gate.svg",
|
||||
"/Core/MIDI-Gate.svg",
|
||||
{"path11634","path11638","path11640","path11636"}
|
||||
},
|
||||
{
|
||||
"Core/MIDI-Map.svg",
|
||||
"/Core/MIDI-Map.svg",
|
||||
{"path21209","path21213","path21215","path21211"}
|
||||
},
|
||||
{
|
||||
"Core/Notes.svg",
|
||||
"/Core/Notes.svg",
|
||||
{"path6935","path6939","path6941","path6937"}
|
||||
},
|
||||
{
|
||||
"Fundamental/8vert.svg",
|
||||
"/Fundamental/8vert.svg",
|
||||
{"path69642","path69646","path69640","path69644"}
|
||||
},
|
||||
{
|
||||
"Fundamental/ADSR.svg",
|
||||
"/Fundamental/ADSR.svg",
|
||||
{"path33693","path33697","path33699","path33695"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Delay.svg",
|
||||
"/Fundamental/Delay.svg",
|
||||
{"path25369","path25373","path25375","path25371"}
|
||||
},
|
||||
{
|
||||
"Fundamental/LFO-1.svg",
|
||||
"/Fundamental/LFO-1.svg",
|
||||
{"path35889","path35893","path35895","path35891"}
|
||||
},
|
||||
{
|
||||
"Fundamental/LFO-2.svg",
|
||||
"/Fundamental/LFO-2.svg",
|
||||
{"path36131","path36135","path36137","path36133"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Merge.svg",
|
||||
"/Fundamental/Merge.svg",
|
||||
{"path29991","path29995","path29989","path29993"}
|
||||
},
|
||||
{
|
||||
"Fundamental/MidSide.svg",
|
||||
"/Fundamental/MidSide.svg",
|
||||
{"path44181","path44185","path44179","path44183"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Mutes.svg",
|
||||
"/Fundamental/Mutes.svg",
|
||||
{"path21613","path21617","path21611","path21615"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Noise.svg",
|
||||
"/Fundamental/Noise.svg",
|
||||
{"path105594","path105598","path105592","path105596"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Octave.svg",
|
||||
"/Fundamental/Octave.svg",
|
||||
{"path38471","path38475","path38469","path38473"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Pulses.svg",
|
||||
"/Fundamental/Pulses.svg",
|
||||
{"path46241","path46245","path46239","path46243"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Quantizer.svg",
|
||||
"/Fundamental/Quantizer.svg",
|
||||
{"path38549","path38553","path38547","path38551"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Random.svg",
|
||||
"/Fundamental/Random.svg",
|
||||
{"path89732","path89736","path89730","path89734"}
|
||||
},
|
||||
{
|
||||
"Fundamental/SEQ3.svg",
|
||||
"/Fundamental/SEQ3.svg",
|
||||
{"path35687","path35691","path35693","path35689"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Scope.svg",
|
||||
"/Fundamental/Scope.svg",
|
||||
{"path33887","path33891","path33893","path33889"}
|
||||
},
|
||||
// These 2 do not have logos on them
|
||||
{
|
||||
"Fundamental/SequentialSwitch1.svg",
|
||||
{nullptr,nullptr,nullptr,nullptr}
|
||||
},
|
||||
{
|
||||
"Fundamental/SequentialSwitch2.svg",
|
||||
{nullptr,nullptr,nullptr,nullptr}
|
||||
},
|
||||
{
|
||||
"Fundamental/Split.svg",
|
||||
"/Fundamental/Split.svg",
|
||||
{"path29999","path30003","path29997","path30001"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Sum.svg",
|
||||
"/Fundamental/Sum.svg",
|
||||
{"path10913","path10917","path10911","path10915"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Unity.svg",
|
||||
"/Fundamental/Unity.svg",
|
||||
{"path21219","path21223","path21217","path21221"}
|
||||
},
|
||||
// These 2 also do not have logos on them
|
||||
{
|
||||
"Fundamental/VCA-1.svg",
|
||||
{nullptr,nullptr,nullptr,nullptr}
|
||||
},
|
||||
{
|
||||
"Fundamental/VCA.svg",
|
||||
{nullptr,nullptr,nullptr,nullptr}
|
||||
},
|
||||
{
|
||||
"Fundamental/VCF.svg",
|
||||
"/Fundamental/VCF.svg",
|
||||
{"path25239","path25243","path25245","path25241"}
|
||||
},
|
||||
{
|
||||
"Fundamental/VCMixer.svg",
|
||||
"/Fundamental/VCMixer.svg",
|
||||
{"path125839","path125843","path125845","path125841"}
|
||||
},
|
||||
{
|
||||
"Fundamental/VCO-1.svg",
|
||||
"/Fundamental/VCO-1.svg",
|
||||
{"path33533","path33537","path33539","path33535"}
|
||||
},
|
||||
{
|
||||
"Fundamental/VCO-2.svg",
|
||||
"/Fundamental/VCO-2.svg",
|
||||
{"path37557","path37561","path37563","path37559"}
|
||||
},
|
||||
{
|
||||
"Fundamental/Viz.svg",
|
||||
"/Fundamental/Viz.svg",
|
||||
{"path41769","path41773","path41767","path41771"}
|
||||
},
|
||||
};
|
||||
static const struct {
|
||||
const char* const filename;
|
||||
const char* shapeIdsToIgnore[5];
|
||||
const int shapeNumberToIgnore;
|
||||
} svgFilesToInvert[] = {
|
||||
{ "/AnimatedCircuits/FoldingLight.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Blinds.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Braids.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Branches.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Clouds.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Elements.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Frames.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Kinks.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Links.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Marbles.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Peaks.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Plaits.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Rings.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Ripples.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Shades.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Sheep.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Shelves.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Stages.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Streams.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Tides.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Tides2.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Veils.svg", {}, -1 },
|
||||
{ "/AudibleInstruments/Warps.svg", {}, -1 },
|
||||
{ "/Bidoo/ACNE.svg", {}, -1 },
|
||||
{ "/Bidoo/ANTN.svg", {}, -1 },
|
||||
{ "/Bidoo/BAFIS.svg", {}, -1 },
|
||||
{ "/Bidoo/BAR.svg", {"rect833"}, -1 },
|
||||
{ "/Bidoo/BISTROT.svg", {}, -1 },
|
||||
{ "/Bidoo/BORDL.svg", {"rect959-3-0-7-5","rect959-3-0-7","rect959-3-0","rect959-3"}, -1 },
|
||||
{ "/Bidoo/CANARD.svg", {"rect959-3-7"}, -1 },
|
||||
{ "/Bidoo/CHUTE.svg", {}, -1 },
|
||||
{ "/Bidoo/DFUZE.svg", {}, -1 },
|
||||
{ "/Bidoo/DIKTAT.svg", {"rect843","rect843-0","rect843-0-8"}, -1 },
|
||||
{ "/Bidoo/DTROY.svg", {"rect959-3"}, -1 },
|
||||
{ "/Bidoo/DUKE.svg", {}, -1 },
|
||||
{ "/Bidoo/EMILE.svg", {}, -1 },
|
||||
{ "/Bidoo/FLAME.svg", {}, -1 },
|
||||
{ "/Bidoo/FORK.svg", {}, -1 },
|
||||
{ "/Bidoo/FREIN.svg", {}, -1 },
|
||||
{ "/Bidoo/HCTIP.svg", {}, -1 },
|
||||
{ "/Bidoo/HUITRE.svg", {}, -1 },
|
||||
{ "/Bidoo/LATE.svg", {}, -1 },
|
||||
{ "/Bidoo/LIMBO.svg", {}, -1 },
|
||||
{ "/Bidoo/LIMONADE.svg", {"rect839","rect839-6"}, -1 },
|
||||
{ "/Bidoo/LOURDE.svg", {}, -1 },
|
||||
{ "/Bidoo/MAGMA.svg", {}, -1 },
|
||||
{ "/Bidoo/MINIBAR.svg", {"rect833"}, -1 },
|
||||
{ "/Bidoo/MOIRE.svg", {"rect843","rect843-7"}, -1 },
|
||||
{ "/Bidoo/MS.svg", {}, -1 },
|
||||
{ "/Bidoo/MU.svg", {"rect864"}, -1 },
|
||||
{ "/Bidoo/OAI.svg", {}, -1 },
|
||||
{ "/Bidoo/OUAIVE.svg", {"rect959-3-7"}, -1 },
|
||||
{ "/Bidoo/PERCO.svg", {}, -1 },
|
||||
{ "/Bidoo/PILOT.svg", {"rect843-6-4-5","rect843","rect843-4","rect843-6-4","rect843-6-7"}, -1 },
|
||||
{ "/Bidoo/POUPRE.svg", {}, -1 },
|
||||
{ "/Bidoo/RABBIT.svg", {}, -1 },
|
||||
{ "/Bidoo/REI.svg", {}, -1 },
|
||||
{ "/Bidoo/SIGMA.svg", {}, -1 },
|
||||
{ "/Bidoo/TIARE.svg", {}, -1 },
|
||||
{ "/Bidoo/TOCANTE.svg", {"rect843"}, -1 },
|
||||
{ "/Bidoo/VOID.svg", {}, -1 },
|
||||
{ "/Bidoo/ZINC.svg", {}, -1 },
|
||||
{ "/Bidoo/ZOUMAI.svg", {}, -1 },
|
||||
{ "/cf/ALGEBRA.svg", {}, -1 },
|
||||
{ "/cf/BUFFER.svg", {}, -1 },
|
||||
{ "/cf/CHOKE.svg", {}, -1 },
|
||||
{ "/cf/CUBE.svg", {}, -1 },
|
||||
{ "/cf/CUTS.svg", {}, -1 },
|
||||
{ "/cf/DISTO.svg", {}, -1 },
|
||||
{ "/cf/EACH.svg", {}, -1 },
|
||||
{ "/cf/FOUR.svg", {}, -1 },
|
||||
{ "/cf/FUNKTION.svg", {}, -1 },
|
||||
{ "/cf/L3DS3Q.svg", {}, 3 },
|
||||
{ "/cf/LABEL.svg", {}, -1 },
|
||||
{ "/cf/LEDS.svg", {}, -1 },
|
||||
{ "/cf/LEDSEQ.svg", {}, 3 },
|
||||
{ "/cf/MASTER.svg", {}, -1 },
|
||||
{ "/cf/METRO.svg", {}, -1 },
|
||||
{ "/cf/MONO.svg", {}, -1 },
|
||||
{ "/cf/PATCH.svg", {}, -1 },
|
||||
{ "/cf/PEAK.svg", {}, -1 },
|
||||
{ "/cf/PLAY.svg", {}, -1 },
|
||||
{ "/cf/PLAYER.svg", {}, -1 },
|
||||
{ "/cf/SLIDERSEQ.svg", {}, -1 },
|
||||
{ "/cf/STEPS.svg", {}, -1 },
|
||||
{ "/cf/STEREO.svg", {}, -1 },
|
||||
{ "/cf/SUB.svg", {}, -1 },
|
||||
{ "/cf/trSEQ.svg", {}, -1 },
|
||||
{ "/cf/VARIABLE.svg", {}, -1 },
|
||||
{ "/DrumKit/Baronial.svg", {}, -1 },
|
||||
{ "/DrumKit/BD9.svg", {}, -1 },
|
||||
{ "/DrumKit/ClosedHH.svg", {}, -1 },
|
||||
{ "/DrumKit/CR78.svg", {}, -1 },
|
||||
{ "/DrumKit/DMX.svg", {}, -1 },
|
||||
{ "/DrumKit/Gnome.svg", {}, -1 },
|
||||
{ "/DrumKit/Marionette.svg", {}, -1 },
|
||||
{ "/DrumKit/OpenHH.svg", {}, -1 },
|
||||
{ "/DrumKit/SBD.svg", {}, -1 },
|
||||
{ "/DrumKit/Sequencer.svg", {}, -1 },
|
||||
{ "/DrumKit/Snare.svg", {}, -1 },
|
||||
{ "/DrumKit/Tomi.svg", {}, -1 },
|
||||
{ "/Fundamental/SequentialSwitch1.svg", {}, -1 },
|
||||
{ "/Fundamental/SequentialSwitch2.svg", {}, -1 },
|
||||
{ "/Fundamental/VCA-1.svg", {}, -1 },
|
||||
{ "/Fundamental/VCA.svg", {}, -1 },
|
||||
};
|
||||
|
||||
static void removeShape(NSVGimage* const handle, const char* const id)
|
||||
{
|
||||
for (NSVGshape *shape = handle->shapes, *old = nullptr; shape != nullptr; old = shape, shape = shape->next)
|
||||
{
|
||||
if (strcmp(shape->id, id) != 0)
|
||||
if (std::strcmp(shape->id, id) != 0)
|
||||
continue;
|
||||
|
||||
if (old != nullptr)
|
||||
|
@ -222,28 +315,48 @@ static void removeShape(NSVGimage* const handle, const char* const id)
|
|||
}
|
||||
}
|
||||
|
||||
static void invertPaint(NSVGpaint& paint)
|
||||
static bool invertPaint(NSVGpaint& paint, const char* const svgFileToInvert = nullptr)
|
||||
{
|
||||
// Special case for DrumKit background grandient
|
||||
if (paint.type == NSVG_PAINT_LINEAR_GRADIENT && svgFileToInvert != nullptr && std::strncmp(svgFileToInvert, "/DrumKit/", 9) == 0)
|
||||
{
|
||||
paint.type = NSVG_PAINT_COLOR;
|
||||
paint.color = 0xff000000;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (paint.type != NSVG_PAINT_COLOR)
|
||||
return;
|
||||
return false;
|
||||
|
||||
// Special case for Bidoo red color
|
||||
if (paint.color == 0xff001fcd && svgFileToInvert != nullptr && std::strncmp(svgFileToInvert, "/Bidoo/", 7) == 0)
|
||||
{
|
||||
paint.color = 0xcf8b94c4;
|
||||
return true;
|
||||
}
|
||||
|
||||
switch (paint.color)
|
||||
{
|
||||
// scope (do nothing)
|
||||
// scopes or other special things (do nothing)
|
||||
case 0x40ffffff:
|
||||
case 0xff004200:
|
||||
case 0xff2b281e:
|
||||
break;
|
||||
case 0xff2d2827:
|
||||
case 0xff303030:
|
||||
case 0xff362c23:
|
||||
case 0xff40352c:
|
||||
return false;
|
||||
// pure black (convert to not quite pure white)
|
||||
case 0xff000000:
|
||||
paint.color = 0xffd0d0d0;
|
||||
break;
|
||||
return true;
|
||||
// all others (direct invert)
|
||||
default:
|
||||
paint.color = (paint.color & 0xff000000)
|
||||
| (0xff0000 - (paint.color & 0xff0000))
|
||||
| (0xff00 - (paint.color & 0xff00))
|
||||
| (0xff - (paint.color & 0xff));
|
||||
break;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -263,24 +376,61 @@ NSVGimage* nsvgParseFromFileCardinal(const char* const filename, const char* con
|
|||
|
||||
if (filenamelen < filterlen)
|
||||
continue;
|
||||
if (std::strncmp(filename + (filenamelen-filterlen), pathToFilterOut, filterlen) != 0)
|
||||
continue;
|
||||
|
||||
if (std::strncmp(filename + (filenamelen-filterlen), pathToFilterOut, filterlen) == 0)
|
||||
puts("Removing CC-ND deadlock from file...");
|
||||
removeShape(handle, pathsToFilterOut[i].shapes[0]);
|
||||
removeShape(handle, pathsToFilterOut[i].shapes[1]);
|
||||
removeShape(handle, pathsToFilterOut[i].shapes[2]);
|
||||
removeShape(handle, pathsToFilterOut[i].shapes[3]);
|
||||
|
||||
for (NSVGshape* shape = handle->shapes; shape != nullptr; shape = shape->next)
|
||||
{
|
||||
if (pathsToFilterOut[i].shapes[0] != nullptr)
|
||||
{
|
||||
puts("Removing CC-ND deadlock from file...");
|
||||
removeShape(handle, pathsToFilterOut[i].shapes[0]);
|
||||
removeShape(handle, pathsToFilterOut[i].shapes[1]);
|
||||
removeShape(handle, pathsToFilterOut[i].shapes[2]);
|
||||
removeShape(handle, pathsToFilterOut[i].shapes[3]);
|
||||
}
|
||||
|
||||
for (NSVGshape* shape = handle->shapes; shape != nullptr; shape = shape->next)
|
||||
{
|
||||
invertPaint(shape->fill);
|
||||
invertPaint(shape->stroke);
|
||||
}
|
||||
invertPaint(shape->fill);
|
||||
invertPaint(shape->stroke);
|
||||
}
|
||||
|
||||
return handle;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < sizeof(svgFilesToInvert)/sizeof(svgFilesToInvert[0]); ++i)
|
||||
{
|
||||
const char* const svgFileToInvert = svgFilesToInvert[i].filename;
|
||||
const size_t filenamelen = std::strlen(filename);
|
||||
const size_t filterlen = std::strlen(svgFileToInvert);
|
||||
|
||||
if (filenamelen < filterlen)
|
||||
continue;
|
||||
if (std::strncmp(filename + (filenamelen-filterlen), svgFileToInvert, filterlen) != 0)
|
||||
continue;
|
||||
|
||||
const char* const* const shapeIdsToIgnore = svgFilesToInvert[i].shapeIdsToIgnore;
|
||||
const int shapeNumberToIgnore = svgFilesToInvert[i].shapeNumberToIgnore;
|
||||
int shapeCounter = 0;
|
||||
|
||||
for (NSVGshape* shape = handle->shapes; shape != nullptr; shape = shape->next, ++shapeCounter)
|
||||
{
|
||||
if (shapeNumberToIgnore == shapeCounter)
|
||||
continue;
|
||||
|
||||
bool ignore = false;
|
||||
for (size_t j = 0; j < 5 && shapeIdsToIgnore[j] != nullptr; ++j)
|
||||
{
|
||||
if (std::strcmp(shape->id, shapeIdsToIgnore[j]) == 0)
|
||||
{
|
||||
ignore = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (ignore)
|
||||
continue;
|
||||
|
||||
if (invertPaint(shape->fill, svgFileToInvert))
|
||||
invertPaint(shape->stroke, svgFileToInvert);
|
||||
}
|
||||
|
||||
return handle;
|
||||
}
|
||||
|
||||
return handle;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue