@@ -97,7 +97,8 @@ struct GlobalUI { | |||||
const ParamWidget *last_param_widget; // never dereferenced, may have already been deleted. unset after redraw(). | const ParamWidget *last_param_widget; // never dereferenced, may have already been deleted. unset after redraw(). | ||||
int last_param_gid; // updated during redraw() | int last_param_gid; // updated during redraw() | ||||
float last_param_value; // updated in onMouseMove() and onChange(). corresponding param may not exist anymore. | float last_param_value; // updated in onMouseMove() and onChange(). corresponding param may not exist anymore. | ||||
float value_clipboard; | |||||
float value_clipboard; // last copied value | |||||
int gid_clipboard; // param GID of last copied value (-1 if none) | |||||
TextField *tf_id; | TextField *tf_id; | ||||
TextField *tf_value; | TextField *tf_value; | ||||
bool b_lock; // true=don't update info (e.g. when receiving VST parameter updates from host) | bool b_lock; // true=don't update info (e.g. when receiving VST parameter updates from host) | ||||
@@ -151,6 +152,7 @@ struct GlobalUI { | |||||
param_info.last_param_gid = 0; | param_info.last_param_gid = 0; | ||||
param_info.last_param_value = 0.0f; | param_info.last_param_value = 0.0f; | ||||
param_info.value_clipboard = 0.0f; | param_info.value_clipboard = 0.0f; | ||||
param_info.gid_clipboard = -1; | |||||
param_info.tf_id = NULL; | param_info.tf_id = NULL; | ||||
param_info.tf_value = NULL; | param_info.tf_value = NULL; | ||||
param_info.b_lock = false; | param_info.b_lock = false; | ||||
@@ -96,7 +96,9 @@ HOST_OBJ= \ | |||||
src/Core/MIDIToCVInterface.o \ | src/Core/MIDIToCVInterface.o \ | ||||
src/Core/MIDITriggerToCVInterface.o \ | src/Core/MIDITriggerToCVInterface.o \ | ||||
src/Core/Notes.o \ | src/Core/Notes.o \ | ||||
src/Core/QuadMIDIToCVInterface.o | |||||
src/Core/QuadMIDIToCVInterface.o \ | |||||
src/Core/ParamProxy.o \ | |||||
src/Core/HalfNotes.o | |||||
LIB_OBJ= \ | LIB_OBJ= \ | ||||
$(COMMON_OBJ) \ | $(COMMON_OBJ) \ | ||||
@@ -11,6 +11,8 @@ RACK_PLUGIN_MODEL_DECLARE(Core, MIDICCToCVInterface); | |||||
RACK_PLUGIN_MODEL_DECLARE(Core, MIDITriggerToCVInterface); | RACK_PLUGIN_MODEL_DECLARE(Core, MIDITriggerToCVInterface); | ||||
RACK_PLUGIN_MODEL_DECLARE(Core, Blank); | RACK_PLUGIN_MODEL_DECLARE(Core, Blank); | ||||
RACK_PLUGIN_MODEL_DECLARE(Core, Notes); | RACK_PLUGIN_MODEL_DECLARE(Core, Notes); | ||||
RACK_PLUGIN_MODEL_DECLARE(Core, ParamProxy); | |||||
RACK_PLUGIN_MODEL_DECLARE(Core, HalfNotes); | |||||
#undef SLUG | #undef SLUG | ||||
#define SLUG Core | #define SLUG Core | ||||
@@ -24,6 +26,8 @@ RACK_PLUGIN_INIT(Core) { | |||||
RACK_PLUGIN_MODEL_ADD(Core, MIDITriggerToCVInterface); | RACK_PLUGIN_MODEL_ADD(Core, MIDITriggerToCVInterface); | ||||
RACK_PLUGIN_MODEL_ADD(Core, Blank); | RACK_PLUGIN_MODEL_ADD(Core, Blank); | ||||
RACK_PLUGIN_MODEL_ADD(Core, Notes); | RACK_PLUGIN_MODEL_ADD(Core, Notes); | ||||
RACK_PLUGIN_MODEL_ADD(Core, ParamProxy); | |||||
RACK_PLUGIN_MODEL_ADD(Core, HalfNotes); | |||||
} | } | ||||
#endif // RACK_HOST | #endif // RACK_HOST |
@@ -0,0 +1,49 @@ | |||||
#include "global_pre.hpp" | |||||
#include "Core.hpp" | |||||
#include "global.hpp" | |||||
using namespace rack; | |||||
struct HalfNotesWidget : ModuleWidget { | |||||
TextField *textField; | |||||
HalfNotesWidget(Module *module) : ModuleWidget(module) { | |||||
setPanel(SVG::load(assetGlobal("res/Core/HalfNotes.svg"))); | |||||
addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0))); | |||||
addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); | |||||
addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |||||
addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |||||
textField = Widget::create<LedDisplayTextField>(mm2px(Vec(3.39962f, 14.8373f))); | |||||
textField->box.size = mm2px(Vec(74.480f*0.46f, 102.753f)); | |||||
textField->multiline = true; | |||||
addChild(textField); | |||||
} | |||||
json_t *toJson() override { | |||||
json_t *rootJ = ModuleWidget::toJson(); | |||||
// text | |||||
json_object_set_new(rootJ, "text", json_string(textField->text.c_str())); | |||||
return rootJ; | |||||
} | |||||
void fromJson(json_t *rootJ) override { | |||||
ModuleWidget::fromJson(rootJ); | |||||
// text | |||||
json_t *textJ = json_object_get(rootJ, "text"); | |||||
if (textJ) | |||||
textField->text = json_string_value(textJ); | |||||
} | |||||
}; | |||||
RACK_PLUGIN_MODEL_INIT(Core, HalfNotes) { | |||||
Model *modelHalfNotes = Model::create<Module, HalfNotesWidget>("Core", "HalfNotes", "Half Notes", BLANK_TAG); | |||||
return modelHalfNotes; | |||||
} |
@@ -0,0 +1,374 @@ | |||||
/* | |||||
Copyright (c) 2019 bsp | |||||
Permission is hereby granted, free of charge, to any person obtaining a copy | |||||
of this software and associated documentation files (the "Software"), to deal | |||||
in the Software without restriction, including without limitation the rights | |||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||||
copies of the Software, and to permit persons to whom the Software is | |||||
furnished to do so, subject to the following conditions: | |||||
The above copyright notice and this permission notice shall be included in all | |||||
copies or substantial portions of the Software. | |||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||||
SOFTWARE. | |||||
*/ | |||||
#include "global_pre.hpp" | |||||
#include "Core.hpp" | |||||
#include "global_ui.hpp" | |||||
using namespace rack; | |||||
extern void rack::engineSetParam(Module *module, int paramId, float value, bool bVSTAutomate); | |||||
namespace rack { | |||||
extern bool vst2_find_module_and_paramid_by_unique_paramid(int uniqueParamId, Module**retModule, int *retParamId); | |||||
} | |||||
struct ParamProxy; | |||||
// struct TrigButton : TL1105 { | |||||
// struct ParamProxyTrigButton : CKD6 { | |||||
struct ParamProxyTrigButton : LEDButton { | |||||
ParamWidget *id_widget; | |||||
ParamProxyTrigButton() { | |||||
addFrame(SVG::load(assetGlobal("res/ComponentLibrary/LEDButtonLit.svg"))); | |||||
} | |||||
void onAction(EventAction &e) override; | |||||
void onDragEnd(EventDragEnd &e) override; | |||||
}; | |||||
struct NullButton : SVGSwitch, ToggleSwitch { | |||||
NullButton() { | |||||
addFrame(SVG::load(assetPlugin("res/null.svg"))); | |||||
addFrame(SVG::load(assetPlugin("res/null.svg"))); | |||||
} | |||||
}; | |||||
struct RoundSmallBlackKnobParamId : RoundSmallBlackKnob { | |||||
RoundSmallBlackKnobParamId() { | |||||
} | |||||
void onChange(EventChange &e) override; | |||||
}; | |||||
struct ParamProxy : Module { | |||||
static const uint32_t NUM_PARAM_ROWS = 8u; | |||||
enum RowParamIds { | |||||
ROW_PARAM_CONSTVAL, | |||||
ROW_PARAM_MIN, | |||||
ROW_PARAM_MAX, | |||||
ROW_PARAM_PARAMID, | |||||
ROW_PARAM_LEARNFROMCLIPBOARD, | |||||
NUM_ROW_PARAMS | |||||
}; | |||||
enum ParamIds { | |||||
PARAM_0_CONSTVAL, | |||||
PARAM_0_MIN, | |||||
PARAM_0_MAX, | |||||
PARAM_0_PARAMID, | |||||
PARAM_0_LEARNFROMCLIPBOARD, | |||||
PARAM_1_CONSTVAL, | |||||
PARAM_1_MIN, | |||||
PARAM_1_MAX, | |||||
PARAM_1_PARAMID, | |||||
PARAM_1_LEARNFROMCLIPBOARD, | |||||
PARAM_2_CONSTVAL, | |||||
PARAM_2_MIN, | |||||
PARAM_2_MAX, | |||||
PARAM_2_PARAMID, | |||||
PARAM_2_LEARNFROMCLIPBOARD, | |||||
PARAM_3_CONSTVAL, | |||||
PARAM_3_MIN, | |||||
PARAM_3_MAX, | |||||
PARAM_3_PARAMID, | |||||
PARAM_3_LEARNFROMCLIPBOARD, | |||||
PARAM_4_CONSTVAL, | |||||
PARAM_4_MIN, | |||||
PARAM_4_MAX, | |||||
PARAM_4_PARAMID, | |||||
PARAM_4_LEARNFROMCLIPBOARD, | |||||
PARAM_5_CONSTVAL, | |||||
PARAM_5_MIN, | |||||
PARAM_5_MAX, | |||||
PARAM_5_PARAMID, | |||||
PARAM_5_LEARNFROMCLIPBOARD, | |||||
PARAM_6_CONSTVAL, | |||||
PARAM_6_MIN, | |||||
PARAM_6_MAX, | |||||
PARAM_6_PARAMID, | |||||
PARAM_6_LEARNFROMCLIPBOARD, | |||||
PARAM_7_CONSTVAL, | |||||
PARAM_7_MIN, | |||||
PARAM_7_MAX, | |||||
PARAM_7_PARAMID, | |||||
PARAM_7_LEARNFROMCLIPBOARD, | |||||
NUM_PARAMS | |||||
}; | |||||
enum InputIds { | |||||
INPUT_0_CV, | |||||
INPUT_1_CV, | |||||
INPUT_2_CV, | |||||
INPUT_3_CV, | |||||
INPUT_4_CV, | |||||
INPUT_5_CV, | |||||
INPUT_6_CV, | |||||
INPUT_7_CV, | |||||
NUM_INPUTS | |||||
}; | |||||
enum OutputIds { | |||||
NUM_OUTPUTS | |||||
}; | |||||
enum LightIds { | |||||
NUM_LIGHTS | |||||
}; | |||||
bool b_update_leds; | |||||
float last_output_state[NUM_PARAM_ROWS]; | |||||
void resetOutputState(void) { | |||||
for(uint32_t rowIdx = 0u; rowIdx < ParamProxy::NUM_PARAM_ROWS; rowIdx++) | |||||
{ | |||||
last_output_state[rowIdx] = 0.0f; | |||||
} | |||||
} | |||||
ParamProxy() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) { | |||||
b_update_leds = true; | |||||
resetOutputState(); | |||||
} | |||||
void step() override; | |||||
}; | |||||
void ParamProxy::step() { | |||||
int rowParamBaseId = ParamProxy::PARAM_0_CONSTVAL; | |||||
for(uint32_t rowIdx = 0u; rowIdx < ParamProxy::NUM_PARAM_ROWS; rowIdx++) | |||||
{ | |||||
float curVal; | |||||
if(inputs[rowIdx].active) | |||||
{ | |||||
// Use CV input when a cable's plugged in | |||||
curVal = inputs[rowIdx].value * (1.0f / 10.0f); | |||||
if(curVal < 0.0f) | |||||
curVal = 0.0f; | |||||
else if(curVal > 1.0f) | |||||
curVal = 1.0f; | |||||
} | |||||
else | |||||
{ | |||||
// Use constant value when nothing's connected | |||||
curVal = params[rowParamBaseId + ParamProxy::ROW_PARAM_CONSTVAL].value; | |||||
} | |||||
int targetParamGID = int(params[rowParamBaseId + ParamProxy::ROW_PARAM_PARAMID].value); | |||||
if(targetParamGID > 0) | |||||
{ | |||||
// Rescale to min/max range | |||||
float minVal = params[rowParamBaseId + ParamProxy::ROW_PARAM_MIN].value; | |||||
float maxVal = params[rowParamBaseId + ParamProxy::ROW_PARAM_MAX].value; | |||||
if(minVal > maxVal) | |||||
{ | |||||
float t = minVal; | |||||
minVal = maxVal; | |||||
maxVal = t; | |||||
} | |||||
curVal = minVal + (maxVal - minVal) * curVal; | |||||
if(curVal != last_output_state[rowIdx]) | |||||
{ | |||||
last_output_state[rowIdx] = curVal; | |||||
// Find target module + param | |||||
// (todo) should we lock global_ui->app.mtx_param for this ? | |||||
Module *module; | |||||
int paramId; | |||||
if(vst2_find_module_and_paramid_by_unique_paramid(targetParamGID, &module, ¶mId)) | |||||
{ | |||||
ModuleWidget *moduleWidget = global_ui->app.gRackWidget->findModuleWidgetByModule(module); | |||||
if(NULL != moduleWidget) | |||||
{ | |||||
// Find | |||||
ParamWidget *paramWidget = moduleWidget->findParamWidgetByParamId(paramId); | |||||
if(NULL != paramWidget) | |||||
{ | |||||
if(isfinite(paramWidget->minValue) && isfinite(paramWidget->maxValue)) | |||||
{ | |||||
// De-Normalize parameter | |||||
global_ui->param_info.b_lock = true; | |||||
float paramRange = (paramWidget->maxValue - paramWidget->minValue); | |||||
if(paramRange > 0.0f) | |||||
{ | |||||
float value = (curVal * paramRange) + paramWidget->minValue; | |||||
// Dprintf("ParamProxy: paramId=%d value=%f min=%f max=%f\n", paramId, value, paramWidget->minValue, paramWidget->maxValue); | |||||
engineSetParam(module, paramId, value, false/*bVSTAutomate*/); | |||||
// Update UI widget | |||||
paramWidget->setValue(value); | |||||
} | |||||
global_ui->param_info.b_lock = false; | |||||
} | |||||
} | |||||
} | |||||
} // if find paramid | |||||
} // if value has changed | |||||
} // if targetParamGID > 0 | |||||
// Next param row | |||||
rowParamBaseId += ParamProxy::NUM_ROW_PARAMS; | |||||
} // loop param rows | |||||
} | |||||
struct ParamProxyWidget : ModuleWidget { | |||||
ParamWidget *bt_widgets[ParamProxy::NUM_PARAM_ROWS]; | |||||
ParamProxyWidget(ParamProxy *module); | |||||
void draw(NVGcontext *vg) override; | |||||
void fromJson(json_t *rootJ) override { | |||||
ModuleWidget::fromJson(rootJ); | |||||
ParamProxy *ppMod = dynamic_cast<ParamProxy*>(module); | |||||
ppMod->b_update_leds = true; | |||||
ppMod->resetOutputState(); | |||||
} | |||||
}; | |||||
ParamProxyWidget::ParamProxyWidget(ParamProxy *module) : ModuleWidget(module) { | |||||
setPanel(SVG::load(assetGlobal("res/Core/ParamProxy.svg"))); | |||||
addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0))); | |||||
addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); | |||||
addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |||||
addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |||||
sF32 cy = 63.0f; | |||||
int rowParamBaseId = ParamProxy::PARAM_0_CONSTVAL; | |||||
for(uint32_t rowIdx = 0u; rowIdx < ParamProxy::NUM_PARAM_ROWS; rowIdx++) | |||||
{ | |||||
sF32 cx = 2.0f; | |||||
sF32 cyk = cy + 1.2f; // knob | |||||
sF32 cyt = cy + 3.3f; // copyfromclipboard button | |||||
#define PORT_STX 27.0f | |||||
#define KNOB_STX 25.0f | |||||
// CV Input | |||||
addInput(Port::create<PJ301MPort>(Vec(cx, cy), Port::INPUT, module, ParamProxy::INPUT_0_CV + int32_t(rowIdx))); | |||||
cx += PORT_STX; | |||||
// Const Val | |||||
addParam(ParamWidget::create<RoundSmallBlackKnob>(Vec(cx, cyk), module, rowParamBaseId + ParamProxy::ROW_PARAM_CONSTVAL, 0.0f, 1.0f, 0.5f)); | |||||
cx += KNOB_STX; | |||||
// Min Val | |||||
addParam(ParamWidget::create<RoundSmallBlackKnob>(Vec(cx, cyk), module, rowParamBaseId + ParamProxy::ROW_PARAM_MIN, 0.0f, 1.0f, 0.0f)); | |||||
cx += KNOB_STX; | |||||
// Max Val | |||||
addParam(ParamWidget::create<RoundSmallBlackKnob>(Vec(cx, cyk), module, rowParamBaseId + ParamProxy::ROW_PARAM_MAX, 0.0f, 1.0f, 1.0f)); | |||||
cx += KNOB_STX; | |||||
// Param Id | |||||
ParamWidget *idWidget = ParamWidget::create<RoundSmallBlackKnobParamId>(Vec(cx, cyk), module, rowParamBaseId + ParamProxy::ROW_PARAM_PARAMID, 0.0f, 10000.0f, 0.0f); | |||||
addParam(idWidget); | |||||
cx += KNOB_STX; | |||||
// Learn from clipboard button | |||||
ParamProxyTrigButton *bt = ParamWidget::create<ParamProxyTrigButton>(Vec(cx, cyt), module, rowParamBaseId + ParamProxy::ROW_PARAM_LEARNFROMCLIPBOARD, 0.0f, 1.0f, 0.0f); | |||||
bt->id_widget = idWidget; | |||||
bt_widgets[rowIdx] = bt; | |||||
addParam(bt); | |||||
// Next param row (aligned to row height of Core.Notes module) | |||||
cy += 36.0f; | |||||
rowParamBaseId += ParamProxy::NUM_ROW_PARAMS; | |||||
} | |||||
module->b_update_leds = true; | |||||
} | |||||
void ParamProxyWidget::draw(NVGcontext *vg) { | |||||
// Highlight button when the corresponding row has a valid target param | |||||
ParamProxy *ppMod = dynamic_cast<ParamProxy*>(module); | |||||
if(ppMod->b_update_leds) | |||||
{ | |||||
ppMod->b_update_leds = false; | |||||
int paramIdParamId = ParamProxy::PARAM_0_PARAMID; | |||||
for(uint32_t rowIdx = 0u; rowIdx < ParamProxy::NUM_PARAM_ROWS; rowIdx++) | |||||
{ | |||||
float btState = (module->params[paramIdParamId].value > 0.0f) ? 1.0f : 0.0f; | |||||
bt_widgets[rowIdx]->setValue(btState); | |||||
paramIdParamId += ParamProxy::NUM_ROW_PARAMS; | |||||
} | |||||
} | |||||
ModuleWidget::draw(vg); | |||||
} | |||||
void RoundSmallBlackKnobParamId::onChange(EventChange &e) { | |||||
RoundSmallBlackKnob::onChange(e); | |||||
ParamProxy *ppMod = dynamic_cast<ParamProxy*>(module); | |||||
ppMod->b_update_leds = true; | |||||
} | |||||
void ParamProxyTrigButton::onAction(EventAction &e) { | |||||
if(-1 != rack::global_ui->param_info.gid_clipboard) | |||||
{ | |||||
printf("xxx ParamProxyTrigButton: copy clipboard param id %d to proxy param %d\n", | |||||
rack::global_ui->param_info.gid_clipboard, | |||||
paramId - 1/*ROW_PARAM_PARAMID*/ | |||||
); | |||||
float gidf = float(rack::global_ui->param_info.gid_clipboard); | |||||
module->params[paramId - 1/*ROW_PARAM_PARAMID*/].value = gidf; | |||||
id_widget->setValue(gidf); | |||||
setValue((gidf > 0.0f) ? 1.0f : 0.0f); | |||||
ParamProxy *ppMod = dynamic_cast<ParamProxy*>(module); | |||||
ppMod->b_update_leds = true; | |||||
} | |||||
} | |||||
void ParamProxyTrigButton::onDragEnd(EventDragEnd &e) { | |||||
ParamProxy *ppMod = dynamic_cast<ParamProxy*>(module); | |||||
ppMod->b_update_leds = true; | |||||
} | |||||
RACK_PLUGIN_MODEL_INIT(Core, ParamProxy) { | |||||
Model *modelParamProxy = Model::create<ParamProxy, ParamProxyWidget>("Core", "ParamProxy", "ParamProxy", CONTROLLER_TAG); | |||||
return modelParamProxy; | |||||
} |
@@ -389,7 +389,8 @@ void ModuleWidget::onHoverKey(EventHoverKey &e) { | |||||
case 'w': | case 'w': | ||||
if (windowIsModPressed() && !windowIsShiftPressed()) { | if (windowIsModPressed() && !windowIsShiftPressed()) { | ||||
global_ui->param_info.value_clipboard = global_ui->param_info.last_param_value; | global_ui->param_info.value_clipboard = global_ui->param_info.last_param_value; | ||||
printf("xxx CopyParamItem: value=%f\n", global_ui->param_info.value_clipboard); | |||||
global_ui->param_info.gid_clipboard = global_ui->param_info.last_param_gid; | |||||
printf("xxx CopyParamItem: value=%f id=%d\n", global_ui->param_info.value_clipboard, global_ui->param_info.gid_clipboard); | |||||
e.consumed = true; | e.consumed = true; | ||||
return; | return; | ||||
} | } | ||||
@@ -29,9 +29,10 @@ extern void log_printf(const char *logData, ...); | |||||
#define Dprintf printf | #define Dprintf printf | ||||
#endif // USE_LOG_PRINTF | #endif // USE_LOG_PRINTF | ||||
namespace rack { | |||||
namespace rack { | |||||
bool vst2_find_module_and_paramid_by_unique_paramid(int uniqueParamId, Module**retModule, int *retParamId); | |||||
float Light::getBrightness() { | float Light::getBrightness() { | ||||
// LEDs are diodes, so don't allow reverse current. | // LEDs are diodes, so don't allow reverse current. | ||||
@@ -268,7 +269,7 @@ static int loc_vst2_find_unique_param_by_module_and_paramid(Module *module, int | |||||
return module->vst2_unique_param_base_id + paramId; | return module->vst2_unique_param_base_id + paramId; | ||||
} | } | ||||
static bool loc_vst2_find_module_and_paramid_by_unique_paramid(int uniqueParamId, Module**retModule, int *retParamId) { | |||||
bool vst2_find_module_and_paramid_by_unique_paramid(int uniqueParamId, Module**retModule, int *retParamId) { | |||||
if(uniqueParamId >= 0) | if(uniqueParamId >= 0) | ||||
{ | { | ||||
if(uniqueParamId < VST2_MAX_UNIQUE_PARAM_IDS) | if(uniqueParamId < VST2_MAX_UNIQUE_PARAM_IDS) | ||||
@@ -360,7 +361,7 @@ void vst2_handle_queued_params(void) { | |||||
{ | { | ||||
Module *module; | Module *module; | ||||
int paramId; | int paramId; | ||||
if(loc_vst2_find_module_and_paramid_by_unique_paramid(qp.unique_id, &module, ¶mId)) | |||||
if(vst2_find_module_and_paramid_by_unique_paramid(qp.unique_id, &module, ¶mId)) | |||||
{ | { | ||||
ModuleWidget *moduleWidget = global_ui->app.gRackWidget->findModuleWidgetByModule(module); | ModuleWidget *moduleWidget = global_ui->app.gRackWidget->findModuleWidgetByModule(module); | ||||
if(NULL != moduleWidget) | if(NULL != moduleWidget) | ||||
@@ -412,7 +413,7 @@ void vst2_handle_queued_params(void) { | |||||
float vst2_get_param(int uniqueParamId) { | float vst2_get_param(int uniqueParamId) { | ||||
Module *module; | Module *module; | ||||
int paramId; | int paramId; | ||||
if(loc_vst2_find_module_and_paramid_by_unique_paramid(uniqueParamId, &module, ¶mId)) | |||||
if(vst2_find_module_and_paramid_by_unique_paramid(uniqueParamId, &module, ¶mId)) | |||||
{ | { | ||||
if(sUI(paramId) < sUI(module->params.size())) // paranoia | if(sUI(paramId) < sUI(module->params.size())) // paranoia | ||||
{ | { | ||||
@@ -436,10 +437,10 @@ float vst2_get_param(int uniqueParamId) { | |||||
return 0.0f; | return 0.0f; | ||||
} | } | ||||
void vst2_get_param_name (int uniqueParamId, char *s, int sMaxLen) { | |||||
void vst2_get_param_name(int uniqueParamId, char *s, int sMaxLen) { | |||||
Module *module; | Module *module; | ||||
int paramId; | int paramId; | ||||
if(loc_vst2_find_module_and_paramid_by_unique_paramid(uniqueParamId, &module, ¶mId)) | |||||
if(vst2_find_module_and_paramid_by_unique_paramid(uniqueParamId, &module, ¶mId)) | |||||
{ | { | ||||
if(sUI(paramId) < sUI(module->params.size())) // paranoia | if(sUI(paramId) < sUI(module->params.size())) // paranoia | ||||
{ | { | ||||
@@ -0,0 +1,75 @@ | |||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||||
<!-- Created with Inkscape (http://www.inkscape.org/) --> | |||||
<svg | |||||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||||
xmlns:cc="http://creativecommons.org/ns#" | |||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||||
xmlns:svg="http://www.w3.org/2000/svg" | |||||
xmlns="http://www.w3.org/2000/svg" | |||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||||
width="17.999601" | |||||
height="18" | |||||
viewBox="0 0 4.7623944 4.7624998" | |||||
version="1.1" | |||||
id="svg7595" | |||||
inkscape:version="0.92.3 (2405546, 2018-03-11)" | |||||
sodipodi:docname="LEDButtonLit.svg"> | |||||
<defs | |||||
id="defs7589"> | |||||
<clipPath | |||||
id="clip444"> | |||||
<path | |||||
d="m 1201.582,338.19922 h 18 v 18 h -18 z m 0,0" | |||||
id="path24586" | |||||
inkscape:connector-curvature="0" /> | |||||
</clipPath> | |||||
</defs> | |||||
<sodipodi:namedview | |||||
id="base" | |||||
pagecolor="#ffffff" | |||||
bordercolor="#666666" | |||||
borderopacity="1.0" | |||||
inkscape:pageopacity="0.0" | |||||
inkscape:pageshadow="2" | |||||
inkscape:zoom="7.9195959" | |||||
inkscape:cx="-64.418253" | |||||
inkscape:cy="0.82092183" | |||||
inkscape:document-units="mm" | |||||
inkscape:current-layer="layer1" | |||||
showgrid="false" | |||||
fit-margin-top="0" | |||||
fit-margin-left="0" | |||||
fit-margin-right="0" | |||||
fit-margin-bottom="0" | |||||
inkscape:window-width="1920" | |||||
inkscape:window-height="1137" | |||||
inkscape:window-x="-8" | |||||
inkscape:window-y="-8" | |||||
inkscape:window-maximized="1" | |||||
units="px" /> | |||||
<metadata | |||||
id="metadata7592"> | |||||
<rdf:RDF> | |||||
<cc:Work | |||||
rdf:about=""> | |||||
<dc:format>image/svg+xml</dc:format> | |||||
<dc:type | |||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||||
<dc:title /> | |||||
</cc:Work> | |||||
</rdf:RDF> | |||||
</metadata> | |||||
<g | |||||
inkscape:label="Layer 1" | |||||
inkscape:groupmode="layer" | |||||
id="layer1" | |||||
transform="translate(-46.755712,-67.833036)"> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path31385" | |||||
d="m 46.899276,69.399864 c -0.448549,1.235067 0.189124,2.602426 1.423167,3.052011 1.236107,0.448551 2.602415,-0.188103 3.052021,-1.42317 0.44958,-1.236099 -0.187086,-2.601391 -1.423167,-3.052008 -1.235075,-0.448554 -2.600378,0.187068 -3.052021,1.423167" | |||||
style="clip-rule:nonzero;fill:#2b712b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332" /> | |||||
</g> | |||||
</svg> |
@@ -0,0 +1,113 @@ | |||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||||
<!-- Created with Inkscape (http://www.inkscape.org/) --> | |||||
<svg | |||||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||||
xmlns:cc="http://creativecommons.org/ns#" | |||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||||
xmlns:svg="http://www.w3.org/2000/svg" | |||||
xmlns="http://www.w3.org/2000/svg" | |||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||||
width="40.6395mm" | |||||
height="128.4993mm" | |||||
viewBox="0 0 40.6395 128.4993" | |||||
version="1.1" | |||||
id="svg30767" | |||||
inkscape:version="0.92.3 (2405546, 2018-03-11)" | |||||
sodipodi:docname="HalfNotes.svg"> | |||||
<defs | |||||
id="defs30761" /> | |||||
<sodipodi:namedview | |||||
id="base" | |||||
pagecolor="#ffffff" | |||||
bordercolor="#666666" | |||||
borderopacity="1.0" | |||||
inkscape:pageopacity="0.0" | |||||
inkscape:pageshadow="2" | |||||
inkscape:zoom="3.959798" | |||||
inkscape:cx="11.76052" | |||||
inkscape:cy="443.71577" | |||||
inkscape:document-units="mm" | |||||
inkscape:current-layer="layer1" | |||||
showgrid="false" | |||||
fit-margin-top="0" | |||||
fit-margin-left="0" | |||||
fit-margin-right="0" | |||||
fit-margin-bottom="0" | |||||
inkscape:window-width="1920" | |||||
inkscape:window-height="1137" | |||||
inkscape:window-x="-8" | |||||
inkscape:window-y="-8" | |||||
inkscape:window-maximized="1" | |||||
inkscape:snap-bbox="true" | |||||
inkscape:bbox-nodes="true" /> | |||||
<metadata | |||||
id="metadata30764"> | |||||
<rdf:RDF> | |||||
<cc:Work | |||||
rdf:about=""> | |||||
<dc:format>image/svg+xml</dc:format> | |||||
<dc:type | |||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||||
<dc:title></dc:title> | |||||
</cc:Work> | |||||
</rdf:RDF> | |||||
</metadata> | |||||
<g | |||||
inkscape:label="Layer 1" | |||||
inkscape:groupmode="layer" | |||||
id="layer1" | |||||
transform="translate(-30.557143,-52.920968)" | |||||
style="display:inline"> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path3835" | |||||
d="M 30.579938,53.013299 H 71.126642 V 181.32657 H 30.579938 Z m 0,0" | |||||
style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.24945153" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path3837" | |||||
d="M 71.173492,52.92097 H 30.533773 v 128.4993 h 40.639719 z m -0.0937,128.31189 h -40.453 V 53.107008 h 40.453005 z m 0,0" | |||||
style="fill:#ababab;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.24945153" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="m 44.205919,62.187839 c 0,0.176389 0.14333,0.325215 0.31972,0.325215 0.17639,0 0.31969,-0.148826 0.31969,-0.325215 v -1.5875 l 1.30641,1.714278 c 0.0882,0.110243 0.18189,0.187413 0.33623,0.187413 h 0.0219 c 0.18189,0 0.32522,-0.143316 0.32522,-0.325215 v -2.359201 c 0,-0.176389 -0.14333,-0.319705 -0.31972,-0.319705 -0.17639,0 -0.32522,0.143316 -0.32522,0.319705 v 1.526864 l -1.25677,-1.648132 c -0.0882,-0.115757 -0.18189,-0.192927 -0.33624,-0.192927 h -0.0661 c -0.18189,0 -0.32522,0.143316 -0.32522,0.325219 z m 0,0" | |||||
id="path23448" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="m 49.018579,62.535103 c 0.915,0 1.57646,-0.689017 1.57646,-1.532378 v -0.0055 c 0,-0.843361 -0.65595,-1.526868 -1.57095,-1.526868 -0.91504,0 -1.5765,0.68902 -1.5765,1.532378 v 0.01101 c 0,0.843361 0.65596,1.521354 1.57099,1.521354 z m 0.006,-0.600823 c -0.52366,0 -0.89848,-0.424437 -0.89848,-0.931555 v -0.0055 c 0,-0.507118 0.36381,-0.926042 0.89298,-0.926042 0.52363,0 0.89295,0.424434 0.89295,0.931552 v 0.01101 c 0,0.507118 -0.36378,0.920531 -0.88745,0.920531 z m 0,0" | |||||
id="path23440" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="m 51.740299,62.182325 c 0,0.181903 0.1433,0.330729 0.32519,0.330729 0.18193,0 0.32523,-0.148826 0.32523,-0.330729 V 60.12078 h 0.6284 c 0.16535,0 0.29764,-0.132292 0.29764,-0.297656 0,-0.165365 -0.13229,-0.303167 -0.29764,-0.303167 h -1.90722 c -0.16535,0 -0.29764,0.137802 -0.29764,0.303167 0,0.165364 0.13229,0.297656 0.29764,0.297656 h 0.6284 z m 0,0" | |||||
id="path23444" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="m 54.105249,62.485495 h 1.65915 c 0.16538,0 0.29217,-0.126781 0.29217,-0.286632 0,-0.159854 -0.12679,-0.292145 -0.29217,-0.292145 h -1.33943 v -0.622872 h 1.12999 c 0.15984,0 0.29213,-0.126781 0.29213,-0.286632 0,-0.165364 -0.13229,-0.292146 -0.29213,-0.292146 h -1.12999 v -0.600823 h 1.32292 c 0.15984,0 0.29213,-0.126781 0.29213,-0.292145 0,-0.159851 -0.13229,-0.292143 -0.29213,-0.292143 h -1.64264 c -0.18189,0 -0.32522,0.148827 -0.32522,0.33073 v 2.30959 c 0,0.181902 0.14333,0.325218 0.32522,0.325218 z m 0,0" | |||||
id="path23436" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="m 57.692049,62.529593 c 0.63941,0 1.08588,-0.33073 1.08588,-0.920532 v -0.01101 c 0,-0.512628 -0.33623,-0.727604 -0.93705,-0.887454 -0.51261,-0.132292 -0.6394,-0.192927 -0.6394,-0.385851 v -0.01101 c 0,-0.143316 0.12679,-0.259073 0.38032,-0.259073 0.20395,0 0.40792,0.07166 0.62287,0.198438 0.0496,0.03305 0.0992,0.04961 0.16538,0.04961 0.16535,0 0.30318,-0.132292 0.30318,-0.30317 0,-0.126778 -0.0717,-0.214973 -0.14333,-0.25907 -0.27009,-0.165364 -0.57877,-0.259072 -0.94259,-0.259072 -0.60632,0 -1.03628,0.352777 -1.03628,0.892968 v 0.0055 c 0,0.589799 0.38586,0.755164 0.98118,0.909504 0.49607,0.126781 0.60081,0.209462 0.60081,0.374826 v 0.01101 c 0,0.170879 -0.16535,0.275608 -0.42993,0.275608 -0.28663,0 -0.5347,-0.09922 -0.75519,-0.264583 -0.0441,-0.03306 -0.10471,-0.06063 -0.1874,-0.06063 -0.17088,0 -0.30868,0.132291 -0.30868,0.303166 0,0.09922 0.0551,0.192927 0.12679,0.242535 0.33073,0.237024 0.72207,0.358291 1.11344,0.35829 z m 0,0" | |||||
id="path23432" /> | |||||
</g> | |||||
<g | |||||
inkscape:groupmode="layer" | |||||
id="layer3" | |||||
inkscape:label="widgets" | |||||
style="display:none" | |||||
transform="translate(0,1.9042969e-6)"> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#ffff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.3213588;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect33077" | |||||
width="74.480209" | |||||
height="102.75342" | |||||
x="3.399621" | |||||
y="14.837339" /> | |||||
</g> | |||||
</svg> |
@@ -0,0 +1,475 @@ | |||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||||
<!-- Created with Inkscape (http://www.inkscape.org/) --> | |||||
<svg | |||||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||||
xmlns:cc="http://creativecommons.org/ns#" | |||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||||
xmlns:svg="http://www.w3.org/2000/svg" | |||||
xmlns="http://www.w3.org/2000/svg" | |||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||||
width="50.799999mm" | |||||
height="128.4993mm" | |||||
viewBox="0 0 50.799999 128.4993" | |||||
version="1.1" | |||||
id="svg48736" | |||||
inkscape:version="0.92.3 (2405546, 2018-03-11)" | |||||
sodipodi:docname="ParamProxy.svg"> | |||||
<defs | |||||
id="defs48730" /> | |||||
<sodipodi:namedview | |||||
id="base" | |||||
pagecolor="#ffffff" | |||||
bordercolor="#666666" | |||||
borderopacity="1.0" | |||||
inkscape:pageopacity="0.0" | |||||
inkscape:pageshadow="2" | |||||
inkscape:zoom="3.959798" | |||||
inkscape:cx="105.14906" | |||||
inkscape:cy="402.11702" | |||||
inkscape:document-units="mm" | |||||
inkscape:current-layer="layer1" | |||||
showgrid="false" | |||||
fit-margin-top="0" | |||||
fit-margin-left="0" | |||||
fit-margin-right="0" | |||||
fit-margin-bottom="0" | |||||
inkscape:snap-bbox="true" | |||||
inkscape:bbox-nodes="true" | |||||
inkscape:window-width="1677" | |||||
inkscape:window-height="1016" | |||||
inkscape:window-x="381" | |||||
inkscape:window-y="64" | |||||
inkscape:window-maximized="0" | |||||
inkscape:snap-page="true" | |||||
inkscape:snap-global="false" /> | |||||
<metadata | |||||
id="metadata48733"> | |||||
<rdf:RDF> | |||||
<cc:Work | |||||
rdf:about=""> | |||||
<dc:format>image/svg+xml</dc:format> | |||||
<dc:type | |||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||||
<dc:title /> | |||||
</cc:Work> | |||||
</rdf:RDF> | |||||
</metadata> | |||||
<g | |||||
inkscape:label="Layer 1" | |||||
inkscape:groupmode="layer" | |||||
id="layer1" | |||||
transform="translate(-339.725,84.74965)" | |||||
style="display:inline"> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path40442" | |||||
d="m 339.8187,-84.456869 h 50.61397 V 43.856402 H 339.8187 Z m 0,0" | |||||
style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path40444" | |||||
d="m 390.525,-84.74965 h -50.8 v 128.4993 h 50.8 z M 390.33896,43.56224 H 339.91241 V -84.563613 h 50.42655 z m 0,0" | |||||
style="fill:#ababab;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="" | |||||
id="path47866" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="" | |||||
id="path47814" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="" | |||||
id="path47770" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="" | |||||
id="path47726" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="" | |||||
id="path47690" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="" | |||||
id="path47662" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
style="fill:#ffd714;fill-opacity:1;stroke:none;stroke-width:0.35277775" | |||||
d="" | |||||
id="path47630" /> | |||||
<g | |||||
aria-label="R N D" | |||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.15000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||||
id="text904" | |||||
transform="matrix(0.18524187,0,0,0.18524187,326.50304,16.577928)"> | |||||
<path | |||||
d="m 254.46405,-19.209966 q 0.3359,0.113688 0.65112,0.485758 0.3204,0.372071 0.64079,1.023194 l 1.05937,2.108398 h -1.12138 l -0.98702,-1.979207 q -0.38241,-0.775147 -0.74414,-1.028361 -0.35657,-0.253215 -0.97669,-0.253215 h -1.13688 v 3.260783 h -1.04386 v -7.715291 h 2.35644 q 1.32292,0 1.97404,0.552938 0.65113,0.552937 0.65113,1.669148 0,0.728638 -0.34107,1.209229 -0.33589,0.480591 -0.98185,0.666626 z m -2.61483,-3.240112 v 2.73885 h 1.31258 q 0.75448,0 1.13689,-0.346232 0.38757,-0.351399 0.38757,-1.028361 0,-0.676961 -0.38757,-1.018025 -0.38241,-0.346232 -1.13689,-0.346232 z" | |||||
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.15000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||||
id="path910" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 250.80536,-10.078741 h 1.4056 l 3.42098,6.4543863 v -6.4543863 h 1.01286 v 7.7152912 h -1.4056 l -3.42098,-6.4543862 v 6.4543862 h -1.01286 z" | |||||
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.15000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||||
id="path912" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 251.84922,4.0082541 v 5.9996339 h 1.26091 q 1.5968,0 2.33577,-0.7234703 0.74414,-0.7234701 0.74414,-2.2840983 0,-1.5502929 -0.74414,-2.2685953 -0.73897,-0.72347 -2.33577,-0.72347 z m -1.04386,-0.8578288 h 2.14457 q 2.24276,0 3.29179,0.9353434 1.04903,0.9301758 1.04903,2.9145507 0,1.9947103 -1.0542,2.9300537 -1.0542,0.9353429 -3.28662,0.9353429 h -2.14457 z" | |||||
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.15000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||||
id="path914" | |||||
inkscape:connector-curvature="0" /> | |||||
</g> | |||||
<g | |||||
aria-label="PARAM PROXY" | |||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#a5a5a5;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||||
id="text4717" | |||||
transform="matrix(0.51585715,0,0,0.51585715,177.51272,-104.3978)"> | |||||
<path | |||||
d="m 328.77818,51.725641 v 2.899048 h 1.31258 q 0.72864,0 1.12655,-0.377238 0.3979,-0.377238 0.3979,-1.07487 0,-0.692464 -0.3979,-1.069702 -0.39791,-0.377238 -1.12655,-0.377238 z m -1.04387,-0.857829 h 2.35645 q 1.29708,0 1.95854,0.589111 0.66662,0.583944 0.66662,1.715658 0,1.142049 -0.66662,1.725993 -0.66146,0.583943 -1.95854,0.583943 h -1.31258 v 3.100586 h -1.04387 z" | |||||
style="fill:#a5a5a5;fill-opacity:1;stroke-width:0.26458332" | |||||
id="path4719" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 336.01805,51.896173 -1.41594,3.839559 h 2.83704 z m -0.58912,-1.028361 h 1.18339 l 2.94039,7.715291 h -1.0852 l -0.7028,-1.979207 h -3.47782 l -0.7028,1.979207 h -1.10071 z" | |||||
style="fill:#a5a5a5;fill-opacity:1;stroke-width:0.26458332" | |||||
id="path4721" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 344.33278,54.965753 q 0.3359,0.113688 0.65113,0.485758 0.32039,0.372071 0.64078,1.023194 l 1.05937,2.108398 h -1.12138 l -0.98702,-1.979207 q -0.3824,-0.775147 -0.74414,-1.028361 -0.35657,-0.253215 -0.97668,-0.253215 h -1.13688 v 3.260783 h -1.04387 v -7.715291 h 2.35645 q 1.32291,0 1.97404,0.552938 0.65112,0.552938 0.65112,1.669149 0,0.728637 -0.34106,1.209228 -0.3359,0.480591 -0.98186,0.666626 z m -2.61482,-3.240112 v 2.738851 h 1.31258 q 0.75447,0 1.13688,-0.346232 0.38757,-0.3514 0.38757,-1.028361 0,-0.676962 -0.38757,-1.018026 -0.38241,-0.346232 -1.13688,-0.346232 z" | |||||
style="fill:#a5a5a5;fill-opacity:1;stroke-width:0.26458332" | |||||
id="path4723" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 350.17739,51.896173 -1.41594,3.839559 h 2.83704 z m -0.58911,-1.028361 h 1.18339 l 2.94039,7.715291 h -1.08521 l -0.7028,-1.979207 h -3.47782 l -0.7028,1.979207 h -1.10071 z" | |||||
style="fill:#a5a5a5;fill-opacity:1;stroke-width:0.26458332" | |||||
id="path4725" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 354.83344,50.867812 h 1.55546 l 1.96887,5.250325 1.9792,-5.250325 h 1.55547 v 7.715291 h -1.01803 v -6.77478 l -1.98954,5.291667 h -1.04903 l -1.98955,-5.291667 v 6.77478 h -1.01285 z" | |||||
style="fill:#a5a5a5;fill-opacity:1;stroke-width:0.26458332" | |||||
id="path4727" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 368.38299,51.725641 v 2.899048 h 1.31259 q 0.72863,0 1.12654,-0.377238 0.39791,-0.377238 0.39791,-1.07487 0,-0.692464 -0.39791,-1.069702 -0.39791,-0.377238 -1.12654,-0.377238 z m -1.04386,-0.857829 h 2.35645 q 1.29707,0 1.95853,0.589111 0.66663,0.583944 0.66663,1.715658 0,1.142049 -0.66663,1.725993 -0.66146,0.583943 -1.95853,0.583943 h -1.31259 v 3.100586 h -1.04386 z" | |||||
style="fill:#a5a5a5;fill-opacity:1;stroke-width:0.26458332" | |||||
id="path4729" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 377.38503,54.965753 q 0.3359,0.113688 0.65112,0.485758 0.3204,0.372071 0.64079,1.023194 l 1.05937,2.108398 h -1.12138 l -0.98702,-1.979207 q -0.38241,-0.775147 -0.74414,-1.028361 -0.35657,-0.253215 -0.97669,-0.253215 h -1.13688 v 3.260783 h -1.04386 v -7.715291 h 2.35644 q 1.32292,0 1.97404,0.552938 0.65113,0.552938 0.65113,1.669149 0,0.728637 -0.34107,1.209228 -0.3359,0.480591 -0.98185,0.666626 z m -2.61483,-3.240112 v 2.738851 h 1.31258 q 0.75448,0 1.13688,-0.346232 0.38758,-0.3514 0.38758,-1.028361 0,-0.676962 -0.38758,-1.018026 -0.3824,-0.346232 -1.13688,-0.346232 z" | |||||
style="fill:#a5a5a5;fill-opacity:1;stroke-width:0.26458332" | |||||
id="path4731" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 384.21665,51.575779 q -1.13688,0 -1.80867,0.847494 -0.66663,0.847493 -0.66663,2.309936 0,1.457275 0.66663,2.304769 0.67179,0.847493 1.80867,0.847493 1.13688,0 1.79834,-0.847493 0.66663,-0.847494 0.66663,-2.304769 0,-1.462443 -0.66663,-2.309936 -0.66146,-0.847494 -1.79834,-0.847494 z m 0,-0.847493 q 1.62264,0 2.59416,1.090372 0.97152,1.085205 0.97152,2.914551 0,1.824178 -0.97152,2.914551 -0.97152,1.085205 -2.59416,1.085205 -1.62781,0 -2.60449,-1.085205 -0.97152,-1.085205 -0.97152,-2.914551 0,-1.829346 0.97152,-2.914551 0.97668,-1.090372 2.60449,-1.090372 z" | |||||
style="fill:#a5a5a5;fill-opacity:1;stroke-width:0.26458332" | |||||
id="path4733" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 388.3611,50.867812 h 1.12138 l 1.9172,2.868042 1.92753,-2.868042 h 1.12138 l -2.48047,3.7052 2.64583,4.010091 h -1.12138 l -2.17041,-3.281453 -2.18591,3.281453 h -1.12655 l 2.75436,-4.118611 z" | |||||
style="fill:#a5a5a5;fill-opacity:1;stroke-width:0.26458332" | |||||
id="path4735" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 394.92917,50.867812 h 1.12138 l 2.13941,3.172933 2.1239,-3.172933 h 1.12138 l -2.72852,4.041097 v 3.674194 h -1.04903 v -3.674194 z" | |||||
style="fill:#a5a5a5;fill-opacity:1;stroke-width:0.26458332" | |||||
id="path4737" | |||||
inkscape:connector-curvature="0" /> | |||||
</g> | |||||
<g | |||||
aria-label="CV" | |||||
style="font-style:normal;font-weight:normal;font-size:8.28145313px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#cacaca;fill-opacity:1;stroke:none;stroke-width:0.20703632" | |||||
id="text4742" | |||||
transform="matrix(0.46130952,0,0,0.46130952,194.03739,-97.973253)"> | |||||
<path | |||||
d="m 325.86291,63.455498 v 0.861304 q -0.41246,-0.38415 -0.88152,-0.574202 -0.46503,-0.190053 -0.9907,-0.190053 -1.03519,0 -1.58513,0.634857 -0.54994,0.630814 -0.54994,1.827743 0,1.192885 0.54994,1.827742 0.54994,0.630814 1.58513,0.630814 0.52567,0 0.9907,-0.190053 0.46906,-0.190053 0.88152,-0.574202 v 0.853216 q -0.42863,0.291145 -0.90983,0.436717 -0.47715,0.145573 -1.01092,0.145573 -1.37081,0 -2.15932,-0.837042 -0.78852,-0.841085 -0.78852,-2.292765 0,-1.455724 0.78852,-2.292766 0.78851,-0.841085 2.15932,-0.841085 0.54185,0 1.01901,0.145572 0.4812,0.141529 0.90174,0.42863 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4766" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 328.68944,69.027687 -2.3049,-6.037212 h 0.85322 l 1.91266,5.082904 1.9167,-5.082904 h 0.84917 l -2.30085,6.037212 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4768" | |||||
inkscape:connector-curvature="0" /> | |||||
</g> | |||||
<g | |||||
aria-label="CO" | |||||
style="font-style:normal;font-weight:normal;font-size:8.28145313px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#cacaca;fill-opacity:1;stroke:none;stroke-width:0.20703632" | |||||
id="text4746" | |||||
transform="matrix(0.46130952,0,0,0.46130952,195.21718,-97.973253)"> | |||||
<path | |||||
d="m 341.98058,63.451478 v 0.861303 q -0.41245,-0.384149 -0.88152,-0.574202 -0.46502,-0.190053 -0.9907,-0.190053 -1.03518,0 -1.58512,0.634857 -0.54994,0.630814 -0.54994,1.827743 0,1.192885 0.54994,1.827743 0.54994,0.630813 1.58512,0.630813 0.52568,0 0.9907,-0.190052 0.46907,-0.190053 0.88152,-0.574203 v 0.853216 q -0.42863,0.291145 -0.90982,0.436718 -0.47716,0.145572 -1.01092,0.145572 -1.37081,0 -2.15933,-0.837041 -0.78851,-0.841085 -0.78851,-2.292766 0,-1.455724 0.78851,-2.292766 0.78852,-0.841085 2.15933,-0.841085 0.54185,0 1.019,0.145573 0.4812,0.141529 0.90174,0.42863 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4771" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 345.70077,63.540439 q -0.88961,0 -1.41529,0.663163 -0.52163,0.663163 -0.52163,1.807524 0,1.140317 0.52163,1.803481 0.52568,0.663163 1.41529,0.663163 0.88961,0 1.4072,-0.663163 0.52163,-0.663164 0.52163,-1.803481 0,-1.144361 -0.52163,-1.807524 -0.51759,-0.663163 -1.4072,-0.663163 z m 0,-0.663164 q 1.26971,0 2.02992,0.853217 0.76022,0.849172 0.76022,2.280634 0,1.427418 -0.76022,2.280635 -0.76021,0.849172 -2.02992,0.849172 -1.27376,0 -2.03802,-0.849172 -0.76021,-0.849173 -0.76021,-2.280635 0,-1.431462 0.76021,-2.280634 0.76426,-0.853217 2.03802,-0.853217 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4773" | |||||
inkscape:connector-curvature="0" /> | |||||
</g> | |||||
<g | |||||
aria-label="MIN" | |||||
style="font-style:normal;font-weight:normal;font-size:8.28145313px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#cacaca;fill-opacity:1;stroke:none;stroke-width:0.20703632" | |||||
id="text4750" | |||||
transform="matrix(0.46130952,0,0,0.46130952,194.88981,-97.973253)"> | |||||
<path | |||||
d="m 354.59934,63.032246 h 1.21715 l 1.54064,4.108377 1.54873,-4.108377 h 1.21714 v 6.037212 h -0.7966 v -5.301262 l -1.55682,4.140726 h -0.82086 l -1.55682,-4.140726 v 5.301262 h -0.79256 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4776" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 361.74856,63.032246 h 0.81683 v 6.037212 h -0.81683 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4778" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 364.19094,63.032246 h 1.09989 l 2.67691,5.050555 v -5.050555 h 0.79256 v 6.037212 h -1.09988 l -2.67691,-5.050554 v 5.050554 h -0.79257 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4780" | |||||
inkscape:connector-curvature="0" /> | |||||
</g> | |||||
<g | |||||
aria-label="MAX" | |||||
style="font-style:normal;font-weight:normal;font-size:8.28145313px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#cacaca;fill-opacity:1;stroke:none;stroke-width:0.20703632" | |||||
id="text4754" | |||||
transform="matrix(0.46130952,0,0,0.46130952,194.36673,-97.973253)"> | |||||
<path | |||||
d="m 373.55607,62.911008 h 1.21714 l 1.54064,4.108377 1.54873,-4.108377 h 1.21715 v 6.037211 h -0.7966 v -5.301262 l -1.55682,4.140727 h -0.82087 l -1.55681,-4.140727 v 5.301262 h -0.79256 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4783" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 382.72308,63.7157 -1.10796,3.004453 h 2.21998 z m -0.46098,-0.804692 h 0.92601 l 2.30085,6.037211 h -0.84917 l -0.54994,-1.548728 h -2.7214 l -0.54994,1.548728 h -0.8613 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4785" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 386.07529,62.911008 h 0.87748 l 1.50021,2.244241 1.50829,-2.244241 h 0.87748 l -1.94097,2.899317 2.07036,3.137894 h -0.87747 l -1.69835,-2.567735 -1.71047,2.567735 h -0.88153 l 2.15528,-3.222811 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4787" | |||||
inkscape:connector-curvature="0" /> | |||||
</g> | |||||
<g | |||||
aria-label="PID" | |||||
style="font-style:normal;font-weight:normal;font-size:8.28145313px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#cacaca;fill-opacity:1;stroke:none;stroke-width:0.20703632" | |||||
id="text4758" | |||||
transform="matrix(0.46130952,0,0,0.46130952,193.91048,-97.973253)"> | |||||
<path | |||||
d="m 397.34425,62.830037 h 0.81683 v 6.037212 h -0.81683 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4792" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 400.60346,63.501287 v 4.694711 h 0.98666 q 1.24949,0 1.82774,-0.566115 0.58229,-0.566115 0.58229,-1.787306 0,-1.213103 -0.58229,-1.775175 -0.57825,-0.566115 -1.82774,-0.566115 z m -0.81682,-0.67125 h 1.67812 q 1.75496,0 2.57583,0.731906 0.82086,0.727862 0.82086,2.280634 0,1.56086 -0.82491,2.292766 -0.82491,0.731906 -2.57178,0.731906 h -1.67812 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4794" | |||||
inkscape:connector-curvature="0" /> | |||||
</g> | |||||
<g | |||||
aria-label="LRN" | |||||
style="font-style:normal;font-weight:normal;font-size:8.28145313px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#cacaca;fill-opacity:1;stroke:none;stroke-width:0.20703632" | |||||
id="text4762" | |||||
transform="matrix(0.46130952,0,0,0.46130952,194.42407,-97.973253)"> | |||||
<path | |||||
d="m 411.3349,62.84908 h 0.81683 v 5.349786 h 2.93975 v 0.687426 h -3.75658 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4797" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 418.80762,66.055717 q 0.26284,0.08896 0.50951,0.380105 0.2507,0.291145 0.50141,0.800649 l 0.82896,1.649821 h -0.87748 l -0.77235,-1.548729 q -0.29923,-0.606552 -0.58228,-0.804692 -0.27902,-0.19814 -0.76426,-0.19814 h -0.88961 v 2.551561 H 415.9447 V 62.84908 h 1.84392 q 1.03518,0 1.54468,0.432673 0.5095,0.432674 0.5095,1.306108 0,0.570159 -0.26688,0.946221 -0.26284,0.376062 -0.7683,0.521635 z m -2.0461,-2.535387 v 2.14315 h 1.0271 q 0.59037,0 0.8896,-0.270927 0.30328,-0.27497 0.30328,-0.804692 0,-0.529721 -0.30328,-0.796604 -0.29923,-0.270927 -0.8896,-0.270927 z" | |||||
style="fill:#cacaca;fill-opacity:1;stroke-width:0.20703632" | |||||
id="path4799" | |||||
inkscape:connector-curvature="0" /> | |||||
</g> | |||||
</g> | |||||
<g | |||||
inkscape:groupmode="layer" | |||||
id="layer6" | |||||
inkscape:label="widgets" | |||||
style="display:none"> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect49271" | |||||
width="2.1759191" | |||||
height="2.1772995" | |||||
x="12.524985" | |||||
y="54.577202" /> | |||||
<rect | |||||
y="54.577202" | |||||
x="35.725647" | |||||
height="2.1772995" | |||||
width="2.1759191" | |||||
id="rect49816" | |||||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect49818" | |||||
width="2.1759191" | |||||
height="2.1772995" | |||||
x="12.524985" | |||||
y="69.158226" /> | |||||
<rect | |||||
y="69.158226" | |||||
x="35.725647" | |||||
height="2.1772995" | |||||
width="2.1759191" | |||||
id="rect49820" | |||||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect49822" | |||||
width="2.1759191" | |||||
height="2.1772995" | |||||
x="12.524985" | |||||
y="91.147583" /> | |||||
<rect | |||||
y="91.147583" | |||||
x="35.725647" | |||||
height="2.1772995" | |||||
width="2.1759191" | |||||
id="rect49824" | |||||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect49826" | |||||
width="2.1759191" | |||||
height="2.1772995" | |||||
x="12.524985" | |||||
y="107.17003" /> | |||||
<rect | |||||
y="107.17003" | |||||
x="35.725647" | |||||
height="2.1772995" | |||||
width="2.1759191" | |||||
id="rect49828" | |||||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.04378174;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
y="14.837339" | |||||
x="3.2122073" | |||||
height="28.000355" | |||||
width="44.000755" | |||||
id="rect50704" | |||||
style="opacity:1;vector-effect:none;fill:#ffff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.70603204;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
y="55.530807" | |||||
x="3.7069211" | |||||
height="8.2117252" | |||||
width="8.2117281" | |||||
id="rect50717" | |||||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect50719" | |||||
width="8.2117281" | |||||
height="8.2117252" | |||||
x="15.307249" | |||||
y="55.530807" /> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect50721" | |||||
width="8.2117281" | |||||
height="8.2117252" | |||||
x="26.906193" | |||||
y="55.530807" /> | |||||
<rect | |||||
y="55.530807" | |||||
x="38.506519" | |||||
height="8.2117252" | |||||
width="8.2117281" | |||||
id="rect50723" | |||||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect50733" | |||||
width="8.2117281" | |||||
height="8.2117252" | |||||
x="3.7069209" | |||||
y="70.144905" /> | |||||
<rect | |||||
y="70.144905" | |||||
x="15.307249" | |||||
height="8.2117252" | |||||
width="8.2117281" | |||||
id="rect50735" | |||||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
y="70.144905" | |||||
x="26.906193" | |||||
height="8.2117252" | |||||
width="8.2117281" | |||||
id="rect50737" | |||||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect50739" | |||||
width="8.2117281" | |||||
height="8.2117252" | |||||
x="38.506519" | |||||
y="70.144905" /> | |||||
<rect | |||||
y="92.143906" | |||||
x="3.7069209" | |||||
height="8.2117252" | |||||
width="8.2117281" | |||||
id="rect50741" | |||||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect50743" | |||||
width="8.2117281" | |||||
height="8.2117252" | |||||
x="15.307249" | |||||
y="92.143906" /> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect50745" | |||||
width="8.2117281" | |||||
height="8.2117252" | |||||
x="26.906193" | |||||
y="92.143906" /> | |||||
<rect | |||||
y="92.143906" | |||||
x="38.506519" | |||||
height="8.2117252" | |||||
width="8.2117281" | |||||
id="rect50747" | |||||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect50749" | |||||
width="8.2117281" | |||||
height="8.2117252" | |||||
x="3.7069209" | |||||
y="108.1443" /> | |||||
<rect | |||||
y="108.1443" | |||||
x="15.307249" | |||||
height="8.2117252" | |||||
width="8.2117281" | |||||
id="rect50751" | |||||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
y="108.1443" | |||||
x="26.906193" | |||||
height="8.2117252" | |||||
width="8.2117281" | |||||
id="rect50753" | |||||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||||
<rect | |||||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.16517603;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||||
id="rect50755" | |||||
width="8.2117281" | |||||
height="8.2117252" | |||||
x="38.506523" | |||||
y="108.1443" /> | |||||
</g> | |||||
</svg> |