Signed-off-by: falkTX <falktx@falktx.com>tags/22.02
| @@ -1 +1 @@ | |||||
| Subproject commit b948516db4bf1d0f5ba5ee4babeb4980721ec036 | |||||
| Subproject commit 43569f442ff3c54448dfd3b5d1f93a61faa0bd56 | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit 98c7e62cfe878f9bc849abda61cfd70e8c1966e5 | |||||
| Subproject commit 9a2a2a8f82c3ec9f6eb86c677ff8ba4e7e4aa495 | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit 1d88a3e0e94542acf8ac95892ce1ff39b68424f3 | |||||
| Subproject commit ed6b580f9e205f5d5d1ef6b64d5cf49bac955861 | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit 71017fc7704bcb24145bee6b6ab1f7fee3340b03 | |||||
| Subproject commit fe2c34eddc3064f534f2a2bd8e9e329d39021769 | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit eab50a469bd24107bcab6a825050a64e3f0f1aa4 | |||||
| Subproject commit efdf86ca6f47562bde164d145884de92e5ce5fc8 | |||||
| @@ -9,6 +9,10 @@ | |||||
| void writeThemeAndContrastAsDefault() {} | |||||
| void readThemeAndContrastFromDefault() {} | |||||
| void loadThemeAndContrastFromDefault(int* panelTheme, float* panelContrast) { | void loadThemeAndContrastFromDefault(int* panelTheme, float* panelContrast) { | ||||
| *panelTheme = 1; | *panelTheme = 1; | ||||
| *panelContrast = panelContrastDefault; | *panelContrast = panelContrastDefault; | ||||
| @@ -212,7 +212,7 @@ PLUGIN_FILES += $(filter-out AS/src/AS.cpp,$(wildcard AS/src/*.cpp)) | |||||
| PLUGIN_FILES += AS/freeverb/revmodel.cpp | PLUGIN_FILES += AS/freeverb/revmodel.cpp | ||||
| # modules/types which are present in other plugins | # modules/types which are present in other plugins | ||||
| AS_CUSTOM = ADSR LabelDisplayWidget LowFrequencyOscillator VCA allpass comb revmodel | |||||
| AS_CUSTOM = ADSR LabelDisplayWidget LowFrequencyOscillator VCA YellowRedLight allpass comb revmodel | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Atelier | # Atelier | ||||
| @@ -336,7 +336,7 @@ PLUGIN_FILES += $(filter-out Befaco/src/plugin.cpp,$(wildcard Befaco/src/*.cpp)) | |||||
| PLUGIN_BINARIES += Befaco/src/SpringReverbIR.pcm | PLUGIN_BINARIES += Befaco/src/SpringReverbIR.pcm | ||||
| # modules/types which are present in other plugins | # modules/types which are present in other plugins | ||||
| BEFACO_CUSTOM = ADSR | |||||
| BEFACO_CUSTOM = ADSR Mixer | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Bidoo | # Bidoo | ||||
| @@ -390,6 +390,10 @@ PLUGIN_FILES += ESeries/src/E340.cpp | |||||
| # Fundamental | # Fundamental | ||||
| PLUGIN_FILES += $(filter-out Fundamental/src/plugin.cpp,$(wildcard Fundamental/src/*.cpp)) | PLUGIN_FILES += $(filter-out Fundamental/src/plugin.cpp,$(wildcard Fundamental/src/*.cpp)) | ||||
| PLUGIN_FILES += Fundamental/src/dr_wav.c | |||||
| # modules/types which are present in other plugins | |||||
| FUNDAMENTAL_CUSTOM = $(DRWAV) | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # GrandeModular | # GrandeModular | ||||
| @@ -522,7 +526,7 @@ PLUGIN_BINARIES += ValleyAudio/src/VOX_MACH.bin | |||||
| PLUGIN_BINARIES += ValleyAudio/src/XFADE.bin | PLUGIN_BINARIES += ValleyAudio/src/XFADE.bin | ||||
| # modules/types which are present in other plugins | # modules/types which are present in other plugins | ||||
| VALLEYAUDIO_CUSTOM = $(DRWAV) | |||||
| VALLEYAUDIO_CUSTOM = $(DRWAV) DigitalDisplay | |||||
| VALLEYAUDIO_CUSTOM_PER_FILE = TempoKnob | VALLEYAUDIO_CUSTOM_PER_FILE = TempoKnob | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -847,6 +851,13 @@ $(BUILD_DIR)/ESeries/%.cpp.o: ESeries/%.cpp | |||||
| $(foreach m,$(ESERIES_CUSTOM),$(call custom_module_names,$(m),ESeries)) \ | $(foreach m,$(ESERIES_CUSTOM),$(call custom_module_names,$(m),ESeries)) \ | ||||
| -DpluginInstance=pluginInstance__ESeries | -DpluginInstance=pluginInstance__ESeries | ||||
| $(BUILD_DIR)/Fundamental/%.c.o: Fundamental/%.c | |||||
| -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" | |||||
| @echo "Compiling $<" | |||||
| $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@ \ | |||||
| $(foreach m,$(FUNDAMENTAL_CUSTOM),$(call custom_module_names,$(m),Fundamental)) \ | |||||
| -DpluginInstance=pluginInstance__Fundamental | |||||
| $(BUILD_DIR)/Fundamental/%.cpp.o: Fundamental/%.cpp | $(BUILD_DIR)/Fundamental/%.cpp.o: Fundamental/%.cpp | ||||
| -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" | -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" | ||||
| @echo "Compiling $<" | @echo "Compiling $<" | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit d51e97d77b23b0321231b0bdab8c18f24ae159d7 | |||||
| Subproject commit eb0f8f92082eb38600f35170867cd528d898b48e | |||||
| @@ -33,9 +33,11 @@ | |||||
| // AS | // AS | ||||
| #define modelADSR modelASADSR | #define modelADSR modelASADSR | ||||
| #define modelVCA modelASVCA | #define modelVCA modelASVCA | ||||
| #define YellowRedLight ASYellowRedLight | |||||
| #include "AS/src/AS.hpp" | #include "AS/src/AS.hpp" | ||||
| #undef modelADSR | #undef modelADSR | ||||
| #undef modelVCA | #undef modelVCA | ||||
| #undef YellowRedLight | |||||
| // Atelier | // Atelier | ||||
| #include "Atelier/src/plugin.hpp" | #include "Atelier/src/plugin.hpp" | ||||
| @@ -45,8 +47,10 @@ | |||||
| // Befaco | // Befaco | ||||
| #define modelADSR modelBefacoADSR | #define modelADSR modelBefacoADSR | ||||
| #define modelMixer modelBefacoMixer | |||||
| #include "Befaco/src/plugin.hpp" | #include "Befaco/src/plugin.hpp" | ||||
| #undef modelADSR | #undef modelADSR | ||||
| #undef modelMixer | |||||
| // Bidoo | // Bidoo | ||||
| #include "Bidoo/src/plugin.hpp" | #include "Bidoo/src/plugin.hpp" | ||||
| @@ -611,6 +615,7 @@ static void initStatic__Befaco() | |||||
| if (spl.ok()) | if (spl.ok()) | ||||
| { | { | ||||
| #define modelADSR modelBefacoADSR | #define modelADSR modelBefacoADSR | ||||
| #define modelMixer modelBefacoMixer | |||||
| p->addModel(modelEvenVCO); | p->addModel(modelEvenVCO); | ||||
| p->addModel(modelRampage); | p->addModel(modelRampage); | ||||
| p->addModel(modelABC); | p->addModel(modelABC); | ||||
| @@ -629,6 +634,7 @@ static void initStatic__Befaco() | |||||
| p->addModel(modelMuxlicer); | p->addModel(modelMuxlicer); | ||||
| p->addModel(modelMex); | p->addModel(modelMex); | ||||
| #undef modelADSR | #undef modelADSR | ||||
| #undef modelMixer | |||||
| } | } | ||||
| } | } | ||||
| @@ -950,6 +956,7 @@ static void initStatic__Fundamental() | |||||
| p->addModel(modelLFO2); | p->addModel(modelLFO2); | ||||
| p->addModel(modelDelay); | p->addModel(modelDelay); | ||||
| p->addModel(modelADSR); | p->addModel(modelADSR); | ||||
| p->addModel(modelMixer); | |||||
| p->addModel(modelVCMixer); | p->addModel(modelVCMixer); | ||||
| p->addModel(model_8vert); | p->addModel(model_8vert); | ||||
| p->addModel(modelUnity); | p->addModel(modelUnity); | ||||
| @@ -968,6 +975,17 @@ static void initStatic__Fundamental() | |||||
| p->addModel(modelMidSide); | p->addModel(modelMidSide); | ||||
| p->addModel(modelNoise); | p->addModel(modelNoise); | ||||
| p->addModel(modelRandom); | p->addModel(modelRandom); | ||||
| // show all plugins, helping those familiar with v1 Rack modules | |||||
| if (json_t* const modules = json_object_get(spl.rootJ, "modules")) | |||||
| { | |||||
| size_t i; | |||||
| json_t* v; | |||||
| json_array_foreach(modules, i, v) | |||||
| { | |||||
| json_object_set(v, "hidden", json_false()); | |||||
| } | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -28,9 +28,6 @@ LindenbergResearch 43959.0 (not opensource?) | |||||
| Geodesics 42761.0 | Geodesics 42761.0 | ||||
| https://github.com/MarcBoule/Geodesics | https://github.com/MarcBoule/Geodesics | ||||
| mscHack 42316.0 | |||||
| https://github.com/mschack/VCV-Rack-Plugins/ | |||||
| BaconMusic 42095.0 | BaconMusic 42095.0 | ||||
| https://github.com/baconpaul/BaconPlugs/ | https://github.com/baconpaul/BaconPlugs/ | ||||
| @@ -40,6 +40,8 @@ CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/rtmempool.a | |||||
| CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/sfzero.a | CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/sfzero.a | ||||
| CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/water.a | CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/water.a | ||||
| CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/zita-resampler.a | CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/zita-resampler.a | ||||
| ifeq ($(MACOS),true) | |||||
| ifeq ($(USING_JUCE),true) | ifeq ($(USING_JUCE),true) | ||||
| CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/juce_audio_basics.a | CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/juce_audio_basics.a | ||||
| CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/juce_audio_processors.a | CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/juce_audio_processors.a | ||||
| @@ -52,6 +54,8 @@ ifeq ($(USING_JUCE_GUI_EXTRA),true) | |||||
| CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/juce_gui_extra.a | CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/juce_gui_extra.a | ||||
| endif | endif | ||||
| endif | endif | ||||
| endif | |||||
| # ifneq ($(MACOS),true) | # ifneq ($(MACOS),true) | ||||
| # CARLA_EXTRA_LIBS += -Wl,--no-whole-archive -Wl,--end-group | # CARLA_EXTRA_LIBS += -Wl,--no-whole-archive -Wl,--end-group | ||||
| # endif | # endif | ||||
| @@ -46,7 +46,7 @@ float FollowerBase::efGainMaxDecibelsDebug = 12.0f; | |||||
| // Custom Cardinal filtering | // Custom Cardinal filtering | ||||
| static const struct { | static const struct { | ||||
| const char* const filename; | const char* const filename; | ||||
| const char* shapes[4]; | |||||
| const char* shapes[8]; | |||||
| } pathsToFilterOut[] = { | } pathsToFilterOut[] = { | ||||
| { | { | ||||
| "/Core/Audio2.svg", | "/Core/Audio2.svg", | ||||
| @@ -149,95 +149,114 @@ static const struct { | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/8vert.svg", | "/Fundamental/8vert.svg", | ||||
| {"path69642","path69646","path69640","path69644"} | |||||
| {"path17","path21","circle15","path19"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/ADSR.svg", | "/Fundamental/ADSR.svg", | ||||
| {"path33693","path33697","path33699","path33695"} | |||||
| {"path12","path16","circle18","path14"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Delay.svg", | "/Fundamental/Delay.svg", | ||||
| {"path25369","path25373","path25375","path25371"} | |||||
| {"path14","path18","circle20","path16"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/LFO-1.svg", | |||||
| {"path35889","path35893","path35895","path35891"} | |||||
| }, | |||||
| { | |||||
| "/Fundamental/LFO-2.svg", | |||||
| {"path36131","path36135","path36137","path36133"} | |||||
| "/Fundamental/LFO.svg", | |||||
| {"path14","path18","circle20","path16"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Merge.svg", | "/Fundamental/Merge.svg", | ||||
| {"path29991","path29995","path29989","path29993"} | |||||
| {"path16","path20","circle14","path18", | |||||
| "path26","path30","circle24","path28"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/MidSide.svg", | "/Fundamental/MidSide.svg", | ||||
| {"path44181","path44185","path44179","path44183"} | |||||
| {"path23","path27","circle21","path25", | |||||
| "path33","path37","circle31","path35"} | |||||
| }, | |||||
| { | |||||
| "/Fundamental/Mixer.svg", | |||||
| {"path14","path18","circle12","path16"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Mutes.svg", | "/Fundamental/Mutes.svg", | ||||
| {"path21613","path21617","path21611","path21615"} | |||||
| {"path17","path21","circle15","path19"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Noise.svg", | "/Fundamental/Noise.svg", | ||||
| {"path105594","path105598","path105592","path105596"} | |||||
| {"path14","path18","circle12","path16"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Octave.svg", | "/Fundamental/Octave.svg", | ||||
| {"path38471","path38475","path38469","path38473"} | |||||
| {"path14","path18","circle12","path16"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Pulses.svg", | "/Fundamental/Pulses.svg", | ||||
| {"path46241","path46245","path46239","path46243"} | |||||
| {"path14","path18","circle12","path16"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Quantizer.svg", | "/Fundamental/Quantizer.svg", | ||||
| {"path38549","path38553","path38547","path38551"} | |||||
| {"path14","path18","circle12","path16"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Random.svg", | "/Fundamental/Random.svg", | ||||
| {"path89732","path89736","path89730","path89734"} | |||||
| {"path58","path62","circle64","path60"} | |||||
| }, | |||||
| { | |||||
| "/Fundamental/Scope.svg", | |||||
| {"path14","path18","circle20","path16"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/SEQ3.svg", | "/Fundamental/SEQ3.svg", | ||||
| {"path35687","path35691","path35693","path35689"} | |||||
| {"path16","path20","circle22","path18"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Scope.svg", | |||||
| {"path33887","path33891","path33893","path33889"} | |||||
| "/Fundamental/SequentialSwitch1.svg", | |||||
| {"path17","path21","circle15","path19"} | |||||
| }, | |||||
| { | |||||
| "/Fundamental/SequentialSwitch2.svg", | |||||
| {"path17","path21","circle15","path19"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Split.svg", | "/Fundamental/Split.svg", | ||||
| {"path29999","path30003","path29997","path30001"} | |||||
| {"path18","path22","circle16","path20", | |||||
| "path28","path32","circle26","path30"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Sum.svg", | "/Fundamental/Sum.svg", | ||||
| {"path10913","path10917","path10911","path10915"} | |||||
| {"path24","path28","circle22","path26"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Unity.svg", | "/Fundamental/Unity.svg", | ||||
| {"path21219","path21223","path21217","path21221"} | {"path21219","path21223","path21217","path21221"} | ||||
| }, | }, | ||||
| { | |||||
| "/Fundamental/VCA-1.svg", | |||||
| {"path16","path20","circle14","path18"} | |||||
| }, | |||||
| { | { | ||||
| "/Fundamental/VCF.svg", | "/Fundamental/VCF.svg", | ||||
| {"path25239","path25243","path25245","path25241"} | |||||
| {"path12","path16","circle18","path14"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/VCMixer.svg", | "/Fundamental/VCMixer.svg", | ||||
| {"path125839","path125843","path125845","path125841"} | |||||
| {"path12","path16","circle18","path14"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/VCO-1.svg", | |||||
| {"path33533","path33537","path33539","path33535"} | |||||
| "/Fundamental/VCO.svg", | |||||
| {"path14","path18","circle20","path16"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/VCO-2.svg", | |||||
| {"path37557","path37561","path37563","path37559"} | |||||
| "/Fundamental/Viz.svg", | |||||
| {"path14","path18","circle12","path16"} | |||||
| }, | }, | ||||
| { | { | ||||
| "/Fundamental/Viz.svg", | |||||
| {"path41769","path41773","path41767","path41771"} | |||||
| "/Fundamental/WTLFO.svg", | |||||
| {"path12","path16","circle18","path14"} | |||||
| }, | |||||
| { | |||||
| "/Fundamental/WTVCO.svg", | |||||
| {"path12","path16","circle18","path14"} | |||||
| }, | }, | ||||
| }; | }; | ||||
| static const struct { | static const struct { | ||||
| @@ -352,9 +371,6 @@ static const struct { | |||||
| { "/DrumKit/Snare.svg", {}, -1 }, | { "/DrumKit/Snare.svg", {}, -1 }, | ||||
| { "/DrumKit/Tomi.svg", {}, -1 }, | { "/DrumKit/Tomi.svg", {}, -1 }, | ||||
| { "/ESeries/E340.svg", {}, -1 }, | { "/ESeries/E340.svg", {}, -1 }, | ||||
| { "/Fundamental/SequentialSwitch1.svg", {}, -1 }, | |||||
| { "/Fundamental/SequentialSwitch2.svg", {}, -1 }, | |||||
| { "/Fundamental/VCA-1.svg", {}, -1 }, | |||||
| { "/Fundamental/VCA.svg", {}, -1 }, | { "/Fundamental/VCA.svg", {}, -1 }, | ||||
| { "/JW-Modules/Add5.svg", {}, -1 }, | { "/JW-Modules/Add5.svg", {}, -1 }, | ||||
| { "/JW-Modules/BlankPanel1hp.svg", {}, -1 }, | { "/JW-Modules/BlankPanel1hp.svg", {}, -1 }, | ||||
| @@ -380,8 +396,11 @@ static const struct { | |||||
| { "/JW-Modules/XYPad.svg", {}, -1 }, | { "/JW-Modules/XYPad.svg", {}, -1 }, | ||||
| }; | }; | ||||
| static void removeShape(NSVGimage* const handle, const char* const id) | |||||
| static inline void removeShape(NSVGimage* const handle, const char* const id) | |||||
| { | { | ||||
| if (id == nullptr) | |||||
| return; | |||||
| for (NSVGshape *shape = handle->shapes, *old = nullptr; shape != nullptr; old = shape, shape = shape->next) | for (NSVGshape *shape = handle->shapes, *old = nullptr; shape != nullptr; old = shape, shape = shape->next) | ||||
| { | { | ||||
| if (std::strcmp(shape->id, id) != 0) | if (std::strcmp(shape->id, id) != 0) | ||||
| @@ -394,11 +413,13 @@ static void removeShape(NSVGimage* const handle, const char* const id) | |||||
| nsvg__deletePaths(shape->paths); | nsvg__deletePaths(shape->paths); | ||||
| free(shape); | free(shape); | ||||
| break; | |||||
| return; | |||||
| } | } | ||||
| printf("NOTICE: failed to find '%s' shape to remove\n", id); | |||||
| } | } | ||||
| static bool invertPaint(NSVGpaint& paint, const char* const svgFileToInvert = nullptr) | |||||
| static inline bool invertPaint(NSVGpaint& paint, const char* const svgFileToInvert = nullptr) | |||||
| { | { | ||||
| // Special case for DrumKit background grandient | // Special case for DrumKit background grandient | ||||
| if (paint.type == NSVG_PAINT_LINEAR_GRADIENT && svgFileToInvert != nullptr && std::strncmp(svgFileToInvert, "/DrumKit/", 9) == 0) | if (paint.type == NSVG_PAINT_LINEAR_GRADIENT && svgFileToInvert != nullptr && std::strncmp(svgFileToInvert, "/DrumKit/", 9) == 0) | ||||
| @@ -519,6 +540,10 @@ NSVGimage* nsvgParseFromFileCardinal(const char* const filename, const char* con | |||||
| removeShape(handle, pathsToFilterOut[i].shapes[1]); | removeShape(handle, pathsToFilterOut[i].shapes[1]); | ||||
| removeShape(handle, pathsToFilterOut[i].shapes[2]); | removeShape(handle, pathsToFilterOut[i].shapes[2]); | ||||
| removeShape(handle, pathsToFilterOut[i].shapes[3]); | removeShape(handle, pathsToFilterOut[i].shapes[3]); | ||||
| removeShape(handle, pathsToFilterOut[i].shapes[4]); | |||||
| removeShape(handle, pathsToFilterOut[i].shapes[5]); | |||||
| removeShape(handle, pathsToFilterOut[i].shapes[6]); | |||||
| removeShape(handle, pathsToFilterOut[i].shapes[7]); | |||||
| for (NSVGshape* shape = handle->shapes; shape != nullptr; shape = shape->next) | for (NSVGshape* shape = handle->shapes; shape != nullptr; shape = shape->next) | ||||
| { | { | ||||