Expand effect engine & ui update (#445)
* update
* update
* update
* .
* .
* .
* update
* .
* .
* .
* .
* update
* .
* update
* .
* update
* update
* update
* update
* update
* update
* .
* update
* update
* update
* .
* .
* .
* Revert "."
This reverts commit 4dd6404b32
.
* update
* .
* .
* .
* .
* .
* .
* .
* .
* .
* .
* .
* ...
* .
* .
* .
* .
* .
* .
* .
* .
* .
* update
* update
* update
* remove svg and pic
* colorpicker imgs to base64 to prevent delayed load if not cached
* fix json2python func
* update swirl with rgba
* add double swirl, tune default val in schema, update explanation
* adjust swirl.py
* FileObserver for config checks with timer as fallback (#4)
@ -27,7 +27,7 @@ cd build
|
||||
# Compile hyperion for cron - take default settings
|
||||
|
||||
# Compile for PR (no tag and no cron)
|
||||
[ "${TRAVIS_EVENT_TYPE:-}" != 'cron' -a -z "${TRAVIS_TAG:-}" ] && PLATFORM=${PLATFORM}-dev
|
||||
[ "${TRAVIS_EVENT_TYPE:-}" != 'cron' -a -z "${TRAVIS_TAG:-}" ] && PLATFORM=${PLATFORM}
|
||||
|
||||
cmake -DPLATFORM=$PLATFORM -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_INSTALL_PREFIX=/usr .. || exit 2
|
||||
|
||||
|
@ -140,23 +140,23 @@ SET( JSON_FILES
|
||||
config/hyperion.config.json.default
|
||||
${HYPERION_SCHEMAS}
|
||||
)
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND python test/jsonchecks/checkjson.py ${JSON_FILES}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE CHECK_JSON_FAILED
|
||||
)
|
||||
IF ( ${CHECK_JSON_FAILED} )
|
||||
MESSAGE (FATAL_ERROR "check of json files failed" )
|
||||
ENDIF ()
|
||||
#EXECUTE_PROCESS (
|
||||
# COMMAND python test/jsonchecks/checkjson.py ${JSON_FILES}
|
||||
# WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
# RESULT_VARIABLE CHECK_JSON_FAILED
|
||||
#)
|
||||
#IF ( ${CHECK_JSON_FAILED} )
|
||||
# MESSAGE (FATAL_ERROR "check of json files failed" )
|
||||
#ENDIF ()
|
||||
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND python test/jsonchecks/checkeffects.py effects effects/schema
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE CHECK_EFFECTS_FAILED
|
||||
)
|
||||
IF ( ${CHECK_EFFECTS_FAILED} )
|
||||
MESSAGE (FATAL_ERROR "check of json effect files failed" )
|
||||
ENDIF ()
|
||||
#EXECUTE_PROCESS (
|
||||
# COMMAND python test/jsonchecks/checkeffects.py effects effects/schema
|
||||
# WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
# RESULT_VARIABLE CHECK_EFFECTS_FAILED
|
||||
#)
|
||||
#IF ( ${CHECK_EFFECTS_FAILED} )
|
||||
# MESSAGE (FATAL_ERROR "check of json effect files failed" )
|
||||
#ENDIF ()
|
||||
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND python test/jsonchecks/checkschema.py config/hyperion.config.json.default libsrc/hyperion/hyperion.schema.json
|
||||
|
@ -12,7 +12,8 @@
|
||||
<select id="effectslist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" />
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<table style="margin-bottom:8px">
|
||||
<div id="eff_desc"></div>
|
||||
<table style="margin-bottom:8px" id="effc_nametable">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="ltd"><label for="name-input" data-i18n="effectsconfigurator_label_effectname">Effect name:</label></td>
|
||||
@ -33,9 +34,12 @@
|
||||
<div class="col-lg-6">
|
||||
<div class="panel panel-default" >
|
||||
<div class="panel-heading">
|
||||
<label for="effectsdellist" data-i18n="effectsconfigurator_label_deleffect">Delete Effect:</label>
|
||||
<label for="effectsdellist" data-i18n="effectsconfigurator_editdeleff"></label>
|
||||
<select id="effectsdellist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" />
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<button class="btn btn-primary" id='btn_delete' data-i18n="effectsconfigurator_button_deleffect">Delete Effect</button>
|
||||
<button class="btn btn-primary" id='btn_edit' data-i18n="effectsconfigurator_button_editeffect"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -482,9 +482,15 @@ li a:active:after {
|
||||
}
|
||||
|
||||
/* drag and resizable modal http://gijgo.com/ */
|
||||
.gj-draggable {
|
||||
cursor: move;
|
||||
.gj-button {
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #ddd;
|
||||
color: #000;
|
||||
border-radius: 3px;
|
||||
padding: 6px 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.gj-unselectable {
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
@ -493,6 +499,46 @@ li a:active:after {
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.gj-margin-left-5 {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.gj-margin-left-10 {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.gj-width-full {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.gj-cursor-pointer {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.gj-text-align-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.gj-font-size-16 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.gj-hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.gj-mdl-icon-plus::after {
|
||||
content: "\E145";
|
||||
}
|
||||
|
||||
.gj-mdl-icon-minus::after {
|
||||
content: "\E15B";
|
||||
}
|
||||
|
||||
.gj-draggable {
|
||||
cursor: move;
|
||||
}
|
||||
.gj-resizable-handle {
|
||||
position: absolute;
|
||||
font-size: 0.1px;
|
||||
@ -563,6 +609,7 @@ li a:active:after {
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
.gj-modal {
|
||||
@ -591,6 +638,15 @@ li a:active:after {
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
.gj-footer {
|
||||
min-height: 16.43px;
|
||||
padding: 15px;
|
||||
border-top: 1px solid #e5e5e5;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.gj-title {
|
||||
margin: 2px;
|
||||
}
|
||||
@ -611,6 +667,7 @@ li a:active:after {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
|
||||
/*https://github.com/flatlogic/awesome-bootstrap-checkbox slighty edited for our purposes*/
|
||||
.checkbox {
|
||||
height:34px;
|
||||
|
@ -209,14 +209,15 @@
|
||||
"remote_maptype_label_multicolor_mean" : "Mehrfarbig",
|
||||
"remote_maptype_label_unicolor_mean" : "Einfarbig",
|
||||
"effectsconfigurator_label_intro" : "Erstelle auf Grundlage der Basiseffekte neue Effekt die nach deinen Wünschen angepasst sind. Je nach Effekt stehen Optionen wie Farbe, Geschwindigkeit, oder Richtung und vieles mehr zur Auswahl.",
|
||||
"effectsconfigurator_label_chooseeff" : "Basis-Effekt auswählen:",
|
||||
"effectsconfigurator_label_chooseeff" : "Template auswählen",
|
||||
"effectsconfigurator_editdeleff" : "Entferne/Lade Effekt",
|
||||
"effectsconfigurator_button_saveeffect" : "Effekt speichern",
|
||||
"effectsconfigurator_label_effectname" : "Effektname",
|
||||
"effectsconfigurator_button_starttest" : "Starte Test",
|
||||
"effectsconfigurator_button_stoptest" : "Stoppe Test",
|
||||
"effectsconfigurator_button_conttest" : "Fortlaufender Test",
|
||||
"effectsconfigurator_label_deleffect" : "Effekt entfernen:",
|
||||
"effectsconfigurator_button_deleffect" : "Effekt entfernen",
|
||||
"effectsconfigurator_button_editeffect" : "Effekt laden",
|
||||
"support_label_title" : "Unterstütze Hyperion",
|
||||
"support_label_intro" : "Hyperion ist ein kostenloses Open Source Projekt und ein kleines Team arbeitet an seiner Weiterentwicklung. Darum benötigen wir DEINE Unterstützung um weiter in bessere Infrastruktur und Weiterentwicklung investieren zu können.",
|
||||
"support_label_spreadtheword" : "Weitersagen!",
|
||||
@ -385,13 +386,13 @@
|
||||
"edt_dev_spec_useRgbwProtocol_title" : "Nutze RGBW Protokoll",
|
||||
"edt_dev_spec_maximumLedCount_title" : "Maximale Anzahl LEDs",
|
||||
"edt_dev_spec_gpioNumber_title" : "GPIO Nummer",
|
||||
"edt_dev_spec_dmaNumber_title" : "DMA Kanal",
|
||||
"edt_dev_spec_gpioMap_title" : "GPIO Zuweisung",
|
||||
"edt_dev_spec_PBFiFo_title" : "Pi-Blaster FiFo",
|
||||
"edt_dev_spec_gpioBcm_title" : "GPIO Pin",
|
||||
"edt_dev_spec_ledIndex_title" : "LED index",
|
||||
"edt_dev_spec_colorComponent_title" : "Farbkomponente",
|
||||
"edt_dev_spec_ledType_title" : "LED typ",
|
||||
"edt_dev_spec_dmaNumber_title" : "DMA Kanal",
|
||||
"edt_conf_general_enable_title" : "Aktiviert",
|
||||
"edt_conf_general_enable_expl" : "Wenn aktiviert, ist die Komponente aktiv.",
|
||||
"edt_conf_general_priority_title" : "Priorität",
|
||||
@ -504,11 +505,19 @@
|
||||
"edt_conf_v4l2_signalDetection_title" : "Signal Erkennung",
|
||||
"edt_conf_v4l2_signalDetection_expl" : "Wenn aktiviert, wird die USB Aufnahme temporär bei \"kein Signal\" abgeschalten.",
|
||||
"edt_conf_v4l2_redSignalThreshold_title" : "Rote Signalschwelle",
|
||||
"edt_conf_v4l2_redSignalThreshold_expl" : "Verdunkelt rote Werte. (Wird als schwarz interpretiert)",
|
||||
"edt_conf_v4l2_redSignalThreshold_expl" : "Je höher die rote Schwelle je eher wird abgeschalten bei entsprechendem rot-Anteil.",
|
||||
"edt_conf_v4l2_greenSignalThreshold_title" : "Grüne Signalschwelle",
|
||||
"edt_conf_v4l2_greenSignalThreshold_expl" : "Verdunkelt grüne Werte. (Wird als schwarz interpretiert)",
|
||||
"edt_conf_v4l2_greenSignalThreshold_expl" : "Je höher die grüne Schwelle je eher wird abgeschalten bei entsprechendem grün-Anteil.",
|
||||
"edt_conf_v4l2_blueSignalThreshold_title" : "Blaue Signalschwelle",
|
||||
"edt_conf_v4l2_blueSignalThreshold_expl" : "Verdunkelt blaue Werte. (Wird als schwarz interpretiert))",
|
||||
"edt_conf_v4l2_blueSignalThreshold_expl" : "Je höher die blaue Schwelle je eher wird abgeschalten bei entsprechendem blau-Anteil.",
|
||||
"edt_conf_v4l2_sDVOffsetMin_title" : "Signal Erkennung VMin",
|
||||
"edt_conf_v4l2_sDVOffsetMin_expl" : "Signal Erkennungs-Bereich vertikal minimum (0.0-1.0)",
|
||||
"edt_conf_v4l2_sDHOffsetMin_title" : "Signal Erkennung HMin",
|
||||
"edt_conf_v4l2_sDHOffsetMin_expl" : "Signal Erkennungs-Bereich horizontal minimum (0.0-1.0)",
|
||||
"edt_conf_v4l2_sDVOffsetMax_title" : "Signal Erkennung VMax",
|
||||
"edt_conf_v4l2_sDVOffsetMax_expl" : "Signal Erkennungs-Bereich vertikal maximum (0.0-1.0)",
|
||||
"edt_conf_v4l2_sDHOffsetMax_title" : "Signal Erkennung HMax",
|
||||
"edt_conf_v4l2_sDHOffsetMax_expl" : "Signal Erkennungs-Bereich horizontal maximum (0.0-1.0)",
|
||||
"edt_conf_fg_heading_title" : "Plattform Aufnahme",
|
||||
"edt_conf_fg_type_title" : "Typ",
|
||||
"edt_conf_fg_type_expl" : "Art der Plattform Aufnahme, standard ist 'auto'",
|
||||
@ -594,80 +603,92 @@
|
||||
"edt_conf_log_heading_title" : "Protokoll",
|
||||
"edt_conf_log_level_title" : "Protokollstufe",
|
||||
"edt_conf_log_level_expl" : "Abhängig der Stufe sind weniger oder mehr Meldungen sichtbar.",
|
||||
"edt_eff_candle_header_title" : "Kerze",
|
||||
"edt_eff_police_header_title" : "Polizei",
|
||||
"edt_eff_fade_header_title" : "Farbübergang",
|
||||
"edt_eff_rainbowmood_header_title" : "Regenbogen",
|
||||
"edt_eff_knightrider_header_title" : "Knight Rider",
|
||||
"edt_eff_lightclock_header_title" : "Uhr 1",
|
||||
"edt_eff_clock_header_title" : "Uhr 2",
|
||||
"edt_eff_pacman_header_title" : "Pac-Man",
|
||||
"edt_eff_moodblobs_header_title" : "Stimmungskugeln",
|
||||
"edt_eff_rainbowswirl_header_title" : "Regenbogenwirbel",
|
||||
"edt_eff_random_header_title" : "Zufällig",
|
||||
"edt_eff_runningdots_header_title" : "Rennende Punkte",
|
||||
"edt_eff_systemshutdown_header_title" : "Herunterfahren",
|
||||
"edt_eff_snake_header_title" : "Schlange",
|
||||
"edt_eff_sparks_header_title" : "Funken",
|
||||
"edt_eff_traces_header_title" : "Farbspuren",
|
||||
"edt_eff_x-mas_header_title" : "Weihnachten",
|
||||
"edt_eff_trails_header_title" : "Spuren",
|
||||
"edt_eff_candle_header" : "Kerze",
|
||||
"edt_eff_police_header" : "Polizei",
|
||||
"edt_eff_fade_header" : "Farbübergang",
|
||||
"edt_eff_rainbowmood_header" : "Regenbogen",
|
||||
"edt_eff_rainbowmood_header_desc" : "Alle LEDs Regenbogen Farbübergang",
|
||||
"edt_eff_knightrider_header" : "Knight Rider",
|
||||
"edt_eff_knightrider_header_desc" : "K.I.T.T ist zurück! Der Front-Scanner des bekannten Autos, diesmal nicht nur in rot.",
|
||||
"edt_eff_lightclock_header" : "Lichtuhr",
|
||||
"edt_eff_lightclock_header_desc" : "Eine echte Uhr als Licht! Passe die Farben von Stunden, Minuten, Sekunden deinen Vorstellungen an. Optional können 3/6/9/12 Uhr Markierungen aktiviert werden. Sollte die Uhr eine falsche Zeit anzeigen, überprüfe die Uhrzeit deines Systems.",
|
||||
"edt_eff_pacman_header" : "Pac-Man",
|
||||
"edt_eff_moodblobs_header" : "Stimmungskugeln",
|
||||
"edt_eff_swirl_header" : "Farbwirbel",
|
||||
"edt_eff_swirl_header_desc" : "Ein Wirbel mit frei wählbaren Farben. Die Farben werden gleichmäßig auf 360° aufgeteilt, dazwischen werden Farbübergänge berechnet. Zusätzlich kann ein zweiter Wirbel über den Ersten gelegt werden (Transparenz beachten!). Tipp: Eine Widerholung der selben Farbe erhöht deren \"größe\" und verringert den Bereich des Farbübergangs zu benachbarten Farben.",
|
||||
"edt_eff_random_header" : "Zufällig",
|
||||
"edt_eff_runningdots_header" : "Rennende Punkte",
|
||||
"edt_eff_systemshutdown_header" : "Herunterfahren",
|
||||
"edt_eff_snake_header" : "Schlange",
|
||||
"edt_eff_sparks_header" : "Funken",
|
||||
"edt_eff_sparks_header_desc" : "Ein Sternenfunkeln, wahlweise in festgelegter Farbe oder zufällig. Passe Helligkeit, Sättigung und Geschwindigkeit an.",
|
||||
"edt_eff_traces_header" : "Farbspuren",
|
||||
"edt_eff_x-mas_header" : "Weihnachten",
|
||||
"edt_eff_trails_header" : "Spuren",
|
||||
"edt_eff_flag_header" : "Flaggen",
|
||||
"edt_eff_flag_header_desc" : "Verpasse deinen LEDs die Farben deines Landes. Du kannst mehr als eine Flagge auswählen, je nach Intervall werden diese dann abwechselnd angezeigt.",
|
||||
"edt_eff_enum_all" : "Alle",
|
||||
"edt_eff_enum_all-together" : "Alle zusammen",
|
||||
"edt_eff_enum_list" : "LED Liste",
|
||||
"edt_eff_count_title" : "Anzahl",
|
||||
"edt_eff_color_title" : "Farbe",
|
||||
"edt_eff_colorrandom_title" : "Zufällige Farbe",
|
||||
"edt_eff_colorone_title" : "Farbe eins",
|
||||
"edt_eff_colortwo_title" : "Farbe zwei",
|
||||
"edt_eff_colorcount_title" : "Farblänge",
|
||||
"edt_eff_rotationtime_title" : "Rotationszeit",
|
||||
"edt_eff_sleeptime_title" : "Schlafzeit",
|
||||
"edt_eff_reversedirection_title" : "Richtung umkehren",
|
||||
"edt_eff_fadeintime_title" : "Zeit für Einblendung",
|
||||
"edt_eff_fadeouttime_title" : "Zeit für Ausblendung",
|
||||
"edt_eff_repeat_title" : "Wiederholung",
|
||||
"edt_eff_colorendtime_title" : "Zeit für Start-Farbe",
|
||||
"edt_eff_colorstarttime_title" : "Zeit für End-Farbe",
|
||||
"edt_eff_colorstart_title" : "Farbe Start",
|
||||
"edt_eff_colorend_title" : "Farbe Ende",
|
||||
"edt_eff_repeatcount_title" : "Anzahl Wiederholung",
|
||||
"edt_eff_maintain_end_color_title" : "Behalte Endfarbe",
|
||||
"edt_eff_colorshift_title" : "Farbverschiebung",
|
||||
"edt_eff_whichleds_title" : "Welche LEDs",
|
||||
"edt_eff_ledlist_title" : "LED Liste",
|
||||
"edt_eff_speed_title" : "Geschwindigkeit",
|
||||
"edt_eff_fadefactor_title" : "Verblass Faktor",
|
||||
"edt_eff_showseconds_title" : "Zeige Sekunden",
|
||||
"edt_eff_blobcount_title" : "Kugelanzahl",
|
||||
"edt_eff_huechange_title" : "Farbänderung",
|
||||
"edt_eff_basecolorchange_title" : "Basisfarben verändern",
|
||||
"edt_eff_basecolorchangerate_title" : "BF Geschwindigkeit",
|
||||
"edt_eff_basecolorrangeleft_title" : "BF Bereich links",
|
||||
"edt_eff_basecolorrangeright_title" : "BF Bereich rechts",
|
||||
"edt_eff_brightness_title" : "Helligkeit",
|
||||
"edt_eff_centerx_title" : "Mittelpunkt X-Achse",
|
||||
"edt_eff_centery_title" : "Mittelpunkt Y-Achse",
|
||||
"edt_eff_saturation_title" : "Sättigung",
|
||||
"edt_eff_colorevel_title" : "Farbstufe",
|
||||
"edt_eff_whitelevel_title" : "Weißstufe",
|
||||
"edt_eff_alarmcolor_title" : "Alarm Farbe",
|
||||
"edt_eff_postcolor_title" : "Startfarbe",
|
||||
"edt_eff_enableshutdown_title" : "Echtes herunterfahren",
|
||||
"edt_eff_length_title" : "Länge",
|
||||
"edt_eff_frequency_title" : "Frequenz",
|
||||
"edt_eff_min_len_title" : "Minimale Länge",
|
||||
"edt_eff_max_len_title" : "Maximale Länge",
|
||||
"edt_eff_height_title" : "Höhe",
|
||||
"edt_eff_offset_title" : "Verschiebung",
|
||||
"edt_eff_colorHour_title" : "Farbe Stunde",
|
||||
"edt_eff_colorMinute_title" : "Farbe Minute",
|
||||
"edt_eff_colorSecond_title" : "Farbe Sekunde",
|
||||
"edt_eff_hourMargin_title" : "Länge Stunde",
|
||||
"edt_eff_minuteMargin_title" : "Länge Minute",
|
||||
"edt_eff_secondMargin_title" : "Länge Sekunde",
|
||||
"edt_eff_margin_title" : "Abstand",
|
||||
"edt_eff_colorMarker_title" : "Farbe Markierung",
|
||||
"edt_eff_count" : "Anzahl",
|
||||
"edt_eff_color" : "Farbe",
|
||||
"edt_eff_colorrandom" : "Zufällige Farbe",
|
||||
"edt_eff_colorone" : "Farbe eins",
|
||||
"edt_eff_colortwo" : "Farbe zwei",
|
||||
"edt_eff_colorcount" : "Farblänge",
|
||||
"edt_eff_rotationtime" : "Rotationszeit",
|
||||
"edt_eff_sleeptime" : "Schlafzeit",
|
||||
"edt_eff_reversedirection" : "Richtung umkehren",
|
||||
"edt_eff_fadeintime" : "Zeit für Einblendung",
|
||||
"edt_eff_fadeouttime" : "Zeit für Ausblendung",
|
||||
"edt_eff_repeat" : "Wiederholung",
|
||||
"edt_eff_colorendtime" : "Zeit für Start-Farbe",
|
||||
"edt_eff_colorstarttime" : "Zeit für End-Farbe",
|
||||
"edt_eff_colorstart" : "Farbe Start",
|
||||
"edt_eff_colorend" : "Farbe Ende",
|
||||
"edt_eff_repeatcount" : "Anzahl Wiederholung",
|
||||
"edt_eff_maintain_end_color" : "Behalte Endfarbe",
|
||||
"edt_eff_colorshift" : "Farbverschiebung",
|
||||
"edt_eff_whichleds" : "Welche LEDs",
|
||||
"edt_eff_ledlist" : "LED Liste",
|
||||
"edt_eff_speed" : "Geschwindigkeit",
|
||||
"edt_eff_fadefactor" : "Verblass Faktor",
|
||||
"edt_eff_showseconds" : "Zeige Sekunden",
|
||||
"edt_eff_blobcount" : "Kugelanzahl",
|
||||
"edt_eff_huechange" : "Farbänderung",
|
||||
"edt_eff_basecolorchange" : "Basisfarben verändern",
|
||||
"edt_eff_basecolorchangerate" : "BF Geschwindigkeit",
|
||||
"edt_eff_basecolorrangeleft" : "BF Bereich links",
|
||||
"edt_eff_basecolorrangeright" : "BF Bereich rechts",
|
||||
"edt_eff_brightness" : "Helligkeit",
|
||||
"edt_eff_centerx" : "Mittelpunkt X-Achse",
|
||||
"edt_eff_centery" : "Mittelpunkt Y-Achse",
|
||||
"edt_eff_saturation" : "Sättigung",
|
||||
"edt_eff_colorevel" : "Farbstufe",
|
||||
"edt_eff_whitelevel" : "Weißstufe",
|
||||
"edt_eff_alarmcolor" : "Alarm Farbe",
|
||||
"edt_eff_postcolor" : "Startfarbe",
|
||||
"edt_eff_enableshutdown" : "Echtes herunterfahren",
|
||||
"edt_eff_length" : "Länge",
|
||||
"edt_eff_frequency" : "Frequenz",
|
||||
"edt_eff_min_len" : "Minimale Länge",
|
||||
"edt_eff_max_len" : "Maximale Länge",
|
||||
"edt_eff_height" : "Höhe",
|
||||
"edt_eff_offset" : "Verschiebung",
|
||||
"edt_eff_colorHour" : "Farbe Stunde",
|
||||
"edt_eff_colorMinute" : "Farbe Minute",
|
||||
"edt_eff_colorSecond" : "Farbe Sekunde",
|
||||
"edt_eff_colorMarker" : "Marker Farbe",
|
||||
"edt_eff_markerDepth" : "Marker Tiefe",
|
||||
"edt_eff_markerWidth" : "Marker Breite",
|
||||
"edt_eff_markerEnable" : "Zeige Marker",
|
||||
"edt_eff_backgroundColor" : "Hintergrundfarbe",
|
||||
"edt_eff_countries" : "Länder",
|
||||
"edt_eff_interval" : "Intervall",
|
||||
"edt_eff_margin" : "Abstand",
|
||||
"edt_eff_customColor" : "Benutzerdefinierte Farbe",
|
||||
"edt_eff_randomCenter" : "Zufälliger Mittelpunkt",
|
||||
"edt_eff_enableSecondSwirl":"Zweiter Wirbel",
|
||||
"edt_append_ns" : "ns",
|
||||
"edt_append_ms" : "ms",
|
||||
"edt_append_s" : "s",
|
||||
|
@ -209,14 +209,15 @@
|
||||
"remote_maptype_label_multicolor_mean" : "Multicolor",
|
||||
"remote_maptype_label_unicolor_mean" : "Unicolor",
|
||||
"effectsconfigurator_label_intro" : "Create out of the base effects new effects that are tuned to your liking. Depending on Effect there are options like color, speed, direction and more available.",
|
||||
"effectsconfigurator_label_chooseeff" : "Choose Base-Effect:",
|
||||
"effectsconfigurator_label_chooseeff" : "Choose Template",
|
||||
"effectsconfigurator_editdeleff" : "Delete/Load Effect",
|
||||
"effectsconfigurator_button_saveeffect" : "Save Effect",
|
||||
"effectsconfigurator_label_effectname" : "Effect name",
|
||||
"effectsconfigurator_button_starttest" : "Start test",
|
||||
"effectsconfigurator_button_stoptest" : "Stop test",
|
||||
"effectsconfigurator_button_conttest" : "Continuous test",
|
||||
"effectsconfigurator_label_deleffect" : "Delete Effect:",
|
||||
"effectsconfigurator_button_deleffect" : "Delete Effect",
|
||||
"effectsconfigurator_button_editeffect" : "Load Effect",
|
||||
"support_label_title" : "Support Hyperion",
|
||||
"support_label_intro" : "Hyperion is a free non-profit software. A small team is working on it and this is why we need your steady support.",
|
||||
"support_label_spreadtheword" : "Spread the word",
|
||||
@ -306,7 +307,7 @@
|
||||
"wiz_hue_username" : "User ID:",
|
||||
"wiz_hue_create_user" : "Create new User",
|
||||
"wiz_hue_failure_ip" : "No Bridge found, please type in a valid ip",
|
||||
"wiz_hue_failure_connection" : "Timeout: Please press the bridge button within the period 30 seconds",
|
||||
"wiz_hue_failure_connection" : "Timeout: Please press the bridge button within the period of 30 seconds",
|
||||
"wiz_hue_failure_user" : "User not found, create a new one below or input a valid user id",
|
||||
"wiz_hue_press_link" : "Please press link button on the Hue Bridge.",
|
||||
"wiz_hue_ids_disabled" : "Deactivated",
|
||||
@ -502,7 +503,7 @@
|
||||
"edt_conf_v4l2_cropTop_expl" : "Count of pixels on the top side that are removed from the picture.",
|
||||
"edt_conf_v4l2_cropBottom_title" : "Crop bottom",
|
||||
"edt_conf_v4l2_cropBottom_expl" : "Count of pixels on the bottom side that are removed from the picture.",
|
||||
"edt_conf_v4l2_signalDetection_title" : "Enable signal detection",
|
||||
"edt_conf_v4l2_signalDetection_title" : "Signal detection",
|
||||
"edt_conf_v4l2_signalDetection_expl" : "If enabled, usb capture will be temporarily disabled when no signal was found.",
|
||||
"edt_conf_v4l2_redSignalThreshold_title" : "Red signal threshold",
|
||||
"edt_conf_v4l2_redSignalThreshold_expl" : "Darkens low red values (recognized as black)",
|
||||
@ -510,6 +511,14 @@
|
||||
"edt_conf_v4l2_greenSignalThreshold_expl" : "Darkens low green values (recognized as black)",
|
||||
"edt_conf_v4l2_blueSignalThreshold_title" : "Blue signal threshold",
|
||||
"edt_conf_v4l2_blueSignalThreshold_expl" : "Darkens low blue values (recognized as black)",
|
||||
"edt_conf_v4l2_sDVOffsetMin_title" : "Signal Detection VMin",
|
||||
"edt_conf_v4l2_sDVOffsetMin_expl" : "Signal detection area vertical minimum (0.0-1.0)",
|
||||
"edt_conf_v4l2_sDHOffsetMin_title" : "Signal Detection HMin",
|
||||
"edt_conf_v4l2_sDHOffsetMin_expl" : "Signal detection area horizontal minimum (0.0-1.0)",
|
||||
"edt_conf_v4l2_sDVOffsetMax_title" : "Signal Detection VMax",
|
||||
"edt_conf_v4l2_sDVOffsetMax_expl" : "Signal detection area vertical maximum (0.0-1.0)",
|
||||
"edt_conf_v4l2_sDHOffsetMax_title" : "Signal Detection HMax",
|
||||
"edt_conf_v4l2_sDHOffsetMax_expl" : "Signal detection area horizontal maximum (0.0-1.0)",
|
||||
"edt_conf_fg_heading_title" : "Platform Capture",
|
||||
"edt_conf_fg_type_title" : "Type",
|
||||
"edt_conf_fg_type_expl" : "Type of platform capture, default is 'auto'",
|
||||
@ -595,80 +604,92 @@
|
||||
"edt_conf_log_heading_title" : "Logging",
|
||||
"edt_conf_log_level_title" : "Log-Level",
|
||||
"edt_conf_log_level_expl" : "Depending on loglevel you see less or more messages in your log.",
|
||||
"edt_eff_candle_header_title" : "Candle",
|
||||
"edt_eff_police_header_title" : "Police",
|
||||
"edt_eff_fade_header_title" : "Fade",
|
||||
"edt_eff_rainbowmood_header_title" : "Rainbow Mood",
|
||||
"edt_eff_knightrider_header_title" : "Knight Rider",
|
||||
"edt_eff_lightclock_header_title" : "Clock 1",
|
||||
"edt_eff_clock_header_title" : "Clock 2",
|
||||
"edt_eff_pacman_header_title" : "Pac-Man",
|
||||
"edt_eff_moodblobs_header_title" : "Mood Blobs",
|
||||
"edt_eff_rainbowswirl_header_title" : "Rainbow Swirl",
|
||||
"edt_eff_random_header_title" : "Random",
|
||||
"edt_eff_runningdots_header_title" : "Running Dots",
|
||||
"edt_eff_systemshutdown_header_title" : "System Shutdown",
|
||||
"edt_eff_snake_header_title" : "Snake",
|
||||
"edt_eff_sparks_header_title" : "Sparks",
|
||||
"edt_eff_traces_header_title" : "Color Traces",
|
||||
"edt_eff_x-mas_header_title" : "X-Mas",
|
||||
"edt_eff_trails_header_title" : "Trails",
|
||||
"edt_eff_candle_header" : "Candle",
|
||||
"edt_eff_police_header" : "Police",
|
||||
"edt_eff_fade_header" : "Fade",
|
||||
"edt_eff_rainbowmood_header" : "Rainbow Mood",
|
||||
"edt_eff_rainbowmood_header_desc" : "All leds rainbow mood",
|
||||
"edt_eff_knightrider_header" : "Knight Rider",
|
||||
"edt_eff_knightrider_header_desc" : "K.I.T.T is back! The front-scanner of the well known car, this time not just in red.",
|
||||
"edt_eff_lightclock_header" : "Light Clock",
|
||||
"edt_eff_lightclock_header_desc" : "A real clock as light! Adjsut the colors of hours, minute, seconds. A optional 3/6/9/12 o'clock marker is also available. In case the clock is wrong, you need to check your system clock.",
|
||||
"edt_eff_pacman_header" : "Pac-Man",
|
||||
"edt_eff_moodblobs_header" : "Mood Blobs",
|
||||
"edt_eff_swirl_header" : "Color Swirl",
|
||||
"edt_eff_swirl_header_desc" : "A swirl with custom colors. Colors are even spread to 360°, in between colors shifts will be calcualted. Additional you can add a second swirl on top, be aware that you need partly transparency! Hint: A reapeat of the same color results in a \"hugher\" color area and a reduced color shift area.",
|
||||
"edt_eff_random_header" : "Random",
|
||||
"edt_eff_runningdots_header" : "Running Dots",
|
||||
"edt_eff_systemshutdown_header" : "System Shutdown",
|
||||
"edt_eff_snake_header" : "Snake",
|
||||
"edt_eff_sparks_header" : "Sparks",
|
||||
"edt_eff_sparks_header_desc" : "Star-Sparking, choose between a static color or random. You could also adjust brightness, staturation and speed.",
|
||||
"edt_eff_traces_header" : "Color Traces",
|
||||
"edt_eff_x-mas_header" : "X-Mas",
|
||||
"edt_eff_trails_header" : "Trails",
|
||||
"edt_eff_flag_header" : "Flags",
|
||||
"edt_eff_flag_header_desc" : "Let your leds shine bright in the colors of your country. You could select more then one flag, they will change based on interval time.",
|
||||
"edt_eff_enum_all" : "All",
|
||||
"edt_eff_enum_all-together" : "All together",
|
||||
"edt_eff_enum_list" : "LED List",
|
||||
"edt_eff_count_title" : "Count",
|
||||
"edt_eff_color_title" : "Color",
|
||||
"edt_eff_colorrandom_title" : "Random color",
|
||||
"edt_eff_colorone_title" : "Color one",
|
||||
"edt_eff_colortwo_title" : "Color two",
|
||||
"edt_eff_colorcount_title" : "Color length",
|
||||
"edt_eff_rotationtime_title" : "Rotation time",
|
||||
"edt_eff_sleeptime_title" : "Sleep time",
|
||||
"edt_eff_reversedirection_title" : "Reverse direction",
|
||||
"edt_eff_fadeintime_title" : "Fade in time",
|
||||
"edt_eff_fadeouttime_title" : "Fade out time",
|
||||
"edt_eff_repeat_title" : "Repeat",
|
||||
"edt_eff_repeatcount_title" : "Repeat count",
|
||||
"edt_eff_colorendtime_title" : "Time to hold start color",
|
||||
"edt_eff_colorstarttime_title" : "Time to hold end color",
|
||||
"edt_eff_colorstart_title" : "Color start",
|
||||
"edt_eff_colorend_title" : "Color end",
|
||||
"edt_eff_maintain_end_color_title" : "Keep endcolor",
|
||||
"edt_eff_colorshift_title" : "Color Shift",
|
||||
"edt_eff_whichleds_title" : "Which Leds",
|
||||
"edt_eff_ledlist_title" : "Led List",
|
||||
"edt_eff_speed_title" : "Speed",
|
||||
"edt_eff_fadefactor_title" : "Fade factor",
|
||||
"edt_eff_showseconds_title" : "Show seconds",
|
||||
"edt_eff_blobcount_title" : "Blob count",
|
||||
"edt_eff_huechange_title" : "Color change",
|
||||
"edt_eff_basecolorchange_title" : "Base color change",
|
||||
"edt_eff_basecolorchangerate_title" : "BC change rate",
|
||||
"edt_eff_basecolorrangeleft_title" : "BC range left",
|
||||
"edt_eff_basecolorrangeright_title" : "BC range right",
|
||||
"edt_eff_brightness_title" : "Brightness",
|
||||
"edt_eff_centerx_title" : "Center X-Axis",
|
||||
"edt_eff_centery_title" : "Center Y-Axis",
|
||||
"edt_eff_saturation_title" : "Saturation",
|
||||
"edt_eff_colorevel_title" : "Color level",
|
||||
"edt_eff_whitelevel_title" : "White level",
|
||||
"edt_eff_alarmcolor_title" : "Alarm color",
|
||||
"edt_eff_postcolor_title" : "Post color",
|
||||
"edt_eff_enableshutdown_title" : "Real shutdown",
|
||||
"edt_eff_length_title" : "Length",
|
||||
"edt_eff_frequency_title" : "Frequency",
|
||||
"edt_eff_min_len_title" : "Minimal length",
|
||||
"edt_eff_max_len_title" : "Maximal length",
|
||||
"edt_eff_height_title" : "Height",
|
||||
"edt_eff_offset_title" : "Offset",
|
||||
"edt_eff_colorHour_title" : "Color hour",
|
||||
"edt_eff_colorMinute_title" : "Color minute",
|
||||
"edt_eff_colorSecond_title" : "Color second",
|
||||
"edt_eff_hourMargin_title" : "Margin hour",
|
||||
"edt_eff_minuteMargin_title" : "Margin minute",
|
||||
"edt_eff_secondMargin_title" : "Margin second",
|
||||
"edt_eff_margin_title" : "Margin",
|
||||
"edt_eff_colorMarker_title" : "Color marker",
|
||||
"edt_eff_count" : "Count",
|
||||
"edt_eff_color" : "Color",
|
||||
"edt_eff_colorrandom" : "Random color",
|
||||
"edt_eff_colorone" : "Color one",
|
||||
"edt_eff_colortwo" : "Color two",
|
||||
"edt_eff_colorcount" : "Color length",
|
||||
"edt_eff_rotationtime" : "Rotation time",
|
||||
"edt_eff_sleeptime" : "Sleep time",
|
||||
"edt_eff_reversedirection" : "Reverse direction",
|
||||
"edt_eff_fadeintime" : "Fade in time",
|
||||
"edt_eff_fadeouttime" : "Fade out time",
|
||||
"edt_eff_repeat" : "Repeat",
|
||||
"edt_eff_repeatcount" : "Repeat count",
|
||||
"edt_eff_colorendtime" : "Time to hold start color",
|
||||
"edt_eff_colorstarttime" : "Time to hold end color",
|
||||
"edt_eff_colorstart" : "Color start",
|
||||
"edt_eff_colorend" : "Color end",
|
||||
"edt_eff_maintain_end_color" : "Keep endcolor",
|
||||
"edt_eff_colorshift" : "Color Shift",
|
||||
"edt_eff_whichleds" : "Which Leds",
|
||||
"edt_eff_ledlist" : "Led List",
|
||||
"edt_eff_speed" : "Speed",
|
||||
"edt_eff_fadefactor" : "Fade factor",
|
||||
"edt_eff_showseconds" : "Show seconds",
|
||||
"edt_eff_blobcount" : "Blob count",
|
||||
"edt_eff_huechange" : "Color change",
|
||||
"edt_eff_basecolorchange" : "Base color change",
|
||||
"edt_eff_basecolorchangerate" : "BC change rate",
|
||||
"edt_eff_basecolorrangeleft" : "BC range left",
|
||||
"edt_eff_basecolorrangeright" : "BC range right",
|
||||
"edt_eff_brightness" : "Brightness",
|
||||
"edt_eff_centerx" : "Center X-Axis",
|
||||
"edt_eff_centery" : "Center Y-Axis",
|
||||
"edt_eff_saturation" : "Saturation",
|
||||
"edt_eff_colorevel" : "Color level",
|
||||
"edt_eff_whitelevel" : "White level",
|
||||
"edt_eff_alarmcolor" : "Alarm color",
|
||||
"edt_eff_postcolor" : "Post color",
|
||||
"edt_eff_enableshutdown" : "Real shutdown",
|
||||
"edt_eff_length" : "Length",
|
||||
"edt_eff_frequency" : "Frequency",
|
||||
"edt_eff_min_len" : "Minimal length",
|
||||
"edt_eff_max_len" : "Maximal length",
|
||||
"edt_eff_height" : "Height",
|
||||
"edt_eff_offset" : "Offset",
|
||||
"edt_eff_colorHour" : "Color hour",
|
||||
"edt_eff_colorMinute" : "Color minute",
|
||||
"edt_eff_colorSecond" : "Color second",
|
||||
"edt_eff_colorMarker" : "Marker color",
|
||||
"edt_eff_markerWidth" : "Marker width",
|
||||
"edt_eff_markerDepth" : "Marker depth",
|
||||
"edt_eff_markerEnable" : "Show Marker",
|
||||
"edt_eff_backgroundColor" : "Background Color",
|
||||
"edt_eff_countries" : "Countries",
|
||||
"edt_eff_interval" : "Interval",
|
||||
"edt_eff_margin" : "Margin",
|
||||
"edt_eff_customColor" : "Custom Color",
|
||||
"edt_eff_randomCenter" : "Random Center",
|
||||
"edt_eff_enableSecondSwirl":"Second Swirl",
|
||||
"edt_append_ns" : "ns",
|
||||
"edt_append_ms" : "ms",
|
||||
"edt_append_s" : "s",
|
||||
|
@ -539,73 +539,72 @@
|
||||
"edt_conf_log_heading_title": "Registrando",
|
||||
"edt_conf_log_level_title": "Nivel de registro",
|
||||
"edt_conf_log_level_expl": "Dependiendo del nivel de registro verás menos o más mensajes en tu registro.",
|
||||
"edt_eff_candle_header_title": "Vela",
|
||||
"edt_eff_police_header_title": "Policía",
|
||||
"edt_eff_fade_header_title": "Fundido",
|
||||
"edt_eff_rainbowmood_header_title": "Ánimo Arcoiris",
|
||||
"edt_eff_knightrider_header_title": "Coche Fantástico",
|
||||
"edt_eff_lightclock_header_title": "Reloj 1",
|
||||
"edt_eff_clock_header_title": "Reloj 2",
|
||||
"edt_eff_pacman_header_title": "Come-Cocos",
|
||||
"edt_eff_moodblobs_header_title": "Ánimo Gotas",
|
||||
"edt_eff_rainbowswirl_header_title": "Remolino Arcoiris",
|
||||
"edt_eff_random_header_title": "Aleatorio",
|
||||
"edt_eff_runningdots_header_title": "Puntos Corriendo",
|
||||
"edt_eff_systemshutdown_header_title": "Apagado del Sistema",
|
||||
"edt_eff_snake_header_title": "Serpiente",
|
||||
"edt_eff_sparks_header_title": "Chispas",
|
||||
"edt_eff_traces_header_title": "Rastros de Color",
|
||||
"edt_eff_x-mas_header_title": "Navidad",
|
||||
"edt_eff_trails_header_title": "Caminos",
|
||||
"edt_eff_candle_header": "Vela",
|
||||
"edt_eff_police_header": "Policía",
|
||||
"edt_eff_fade_header": "Fundido",
|
||||
"edt_eff_rainbowmood_header": "Ánimo Arcoiris",
|
||||
"edt_eff_knightrider_header": "Coche Fantástico",
|
||||
"edt_eff_lightclock_header": "Reloj",
|
||||
"edt_eff_pacman_header": "Come-Cocos",
|
||||
"edt_eff_moodblobs_header": "Ánimo Gotas",
|
||||
"edt_eff_rainbowswirl_header": "Remolino Arcoiris",
|
||||
"edt_eff_random_header": "Aleatorio",
|
||||
"edt_eff_runningdots_header": "Puntos Corriendo",
|
||||
"edt_eff_systemshutdown_header": "Apagado del Sistema",
|
||||
"edt_eff_snake_header": "Serpiente",
|
||||
"edt_eff_sparks_header": "Chispas",
|
||||
"edt_eff_traces_header": "Rastros de Color",
|
||||
"edt_eff_x-mas_header": "Navidad",
|
||||
"edt_eff_trails_header": "Caminos",
|
||||
"edt_eff_enum_all": "Todo",
|
||||
"edt_eff_enum_all-together": "Todo junto",
|
||||
"edt_eff_enum_list": "Lista LED",
|
||||
"edt_eff_count_title": "Cuenta",
|
||||
"edt_eff_color_title": "Color",
|
||||
"edt_eff_colorrandom_title": "Color aleatório",
|
||||
"edt_eff_colorone_title": "Color uno",
|
||||
"edt_eff_colortwo_title": "Color dos",
|
||||
"edt_eff_colorcount_title": "Longitud de color",
|
||||
"edt_eff_rotationtime_title": "Tiempo de rotación",
|
||||
"edt_eff_sleeptime_title": "Hora de dormir",
|
||||
"edt_eff_reversedirection_title": "Dirección inversa",
|
||||
"edt_eff_colorstart_title": "Color de inicio",
|
||||
"edt_eff_colorend_title": "Color final",
|
||||
"edt_eff_colorshift_title": "Cambio de Color",
|
||||
"edt_eff_whichleds_title": "Qué Leds",
|
||||
"edt_eff_ledlist_title": "Lista Led",
|
||||
"edt_eff_speed_title": "Velocidad",
|
||||
"edt_eff_fadefactor_title": "Factor de fundido",
|
||||
"edt_eff_showseconds_title": "Mostrar segundos",
|
||||
"edt_eff_blobcount_title": "Contador de gotas",
|
||||
"edt_eff_huechange_title": "Cambio de color",
|
||||
"edt_eff_basecolorchange_title": "Cambio de color base",
|
||||
"edt_eff_basecolorchangerate_title": "Proporción de cambio de BC",
|
||||
"edt_eff_basecolorrangeleft_title": "Gama BC izquierda",
|
||||
"edt_eff_basecolorrangeright_title": "Gama BC derecha",
|
||||
"edt_eff_brightness_title": "Brillo",
|
||||
"edt_eff_centerx_title": "Centrar Eje-X",
|
||||
"edt_eff_centery_title": "Centrar Eje-Y",
|
||||
"edt_eff_saturation_title": "Saturación",
|
||||
"edt_eff_colorevel_title": "Nivel de color",
|
||||
"edt_eff_whitelevel_title": "Nivel de blanco",
|
||||
"edt_eff_alarmcolor_title": "Color de alarma",
|
||||
"edt_eff_postcolor_title": "Post color",
|
||||
"edt_eff_enableshutdown_title": "Apagado real",
|
||||
"edt_eff_length_title": "Longitud",
|
||||
"edt_eff_frequency_title": "Frecuencia",
|
||||
"edt_eff_min_len_title": "Longitud mínima",
|
||||
"edt_eff_max_len_title": "Longitud máxima",
|
||||
"edt_eff_height_title": "Altura",
|
||||
"edt_eff_offset_title": "Compensación",
|
||||
"edt_eff_colorHour_title": "Color de hora",
|
||||
"edt_eff_colorMinute_title": "Color de minuto",
|
||||
"edt_eff_colorSecond_title": "Color de segundo",
|
||||
"edt_eff_hourMargin_title": "Hora de margen",
|
||||
"edt_eff_minuteMargin_title": "Minuto de margen",
|
||||
"edt_eff_secondMargin_title": "Segundo de margen",
|
||||
"edt_eff_margin_title": "Margen",
|
||||
"edt_eff_colorMarker_title": "Marcador de color",
|
||||
"edt_eff_count": "Cuenta",
|
||||
"edt_eff_color": "Color",
|
||||
"edt_eff_colorrandom": "Color aleatório",
|
||||
"edt_eff_colorone": "Color uno",
|
||||
"edt_eff_colortwo": "Color dos",
|
||||
"edt_eff_colorcount": "Longitud de color",
|
||||
"edt_eff_rotationtime": "Tiempo de rotación",
|
||||
"edt_eff_sleeptime": "Hora de dormir",
|
||||
"edt_eff_reversedirection": "Dirección inversa",
|
||||
"edt_eff_colorstart": "Color de inicio",
|
||||
"edt_eff_colorend": "Color final",
|
||||
"edt_eff_colorshift": "Cambio de Color",
|
||||
"edt_eff_whichleds": "Qué Leds",
|
||||
"edt_eff_ledlist": "Lista Led",
|
||||
"edt_eff_speed": "Velocidad",
|
||||
"edt_eff_fadefactor": "Factor de fundido",
|
||||
"edt_eff_showseconds": "Mostrar segundos",
|
||||
"edt_eff_blobcount": "Contador de gotas",
|
||||
"edt_eff_huechange": "Cambio de color",
|
||||
"edt_eff_basecolorchange": "Cambio de color base",
|
||||
"edt_eff_basecolorchangerate": "Proporción de cambio de BC",
|
||||
"edt_eff_basecolorrangeleft": "Gama BC izquierda",
|
||||
"edt_eff_basecolorrangeright": "Gama BC derecha",
|
||||
"edt_eff_brightness": "Brillo",
|
||||
"edt_eff_centerx": "Centrar Eje-X",
|
||||
"edt_eff_centery": "Centrar Eje-Y",
|
||||
"edt_eff_saturation": "Saturación",
|
||||
"edt_eff_colorevel": "Nivel de color",
|
||||
"edt_eff_whitelevel": "Nivel de blanco",
|
||||
"edt_eff_alarmcolor": "Color de alarma",
|
||||
"edt_eff_postcolor": "Post color",
|
||||
"edt_eff_enableshutdown": "Apagado real",
|
||||
"edt_eff_length": "Longitud",
|
||||
"edt_eff_frequency": "Frecuencia",
|
||||
"edt_eff_min_len": "Longitud mínima",
|
||||
"edt_eff_max_len": "Longitud máxima",
|
||||
"edt_eff_height": "Altura",
|
||||
"edt_eff_offset": "Compensación",
|
||||
"edt_eff_colorHour": "Color de hora",
|
||||
"edt_eff_colorMinute": "Color de minuto",
|
||||
"edt_eff_colorSecond": "Color de segundo",
|
||||
"edt_eff_hourMargin": "Hora de margen",
|
||||
"edt_eff_minuteMargin": "Minuto de margen",
|
||||
"edt_eff_secondMargin": "Segundo de margen",
|
||||
"edt_eff_margin": "Margen",
|
||||
"edt_eff_colorMarker": "Marcador de color",
|
||||
"edt_append_ns": "ns",
|
||||
"edt_append_ms": "ms",
|
||||
"edt_append_s": "s",
|
||||
@ -712,8 +711,8 @@
|
||||
"wiz_hue_searchb": "Buscando el puente...",
|
||||
"wiz_hue_blinkblue": "Permite a ID $1 encender el azul",
|
||||
"wiz_hue_ident": "Identificar",
|
||||
"edt_eff_repeatcount_title": "Repetir cuenta",
|
||||
"edt_eff_maintain_end_color_title": "Mantener color de fin",
|
||||
"edt_dev_spec_ledType_title": "Tipo de LED",
|
||||
"edt_dev_spec_dmaNumber_title": "Canal DMA"
|
||||
"edt_eff_repeatcount": "Repetir cuenta",
|
||||
"edt_eff_maintain_end_color": "Mantener color de fin",
|
||||
"edt_dev_spec_ledType": "Tipo de LED",
|
||||
"edt_dev_spec_dmaNumber": "Canal DMA"
|
||||
}
|
Before Width: | Height: | Size: 557 B |
Before Width: | Height: | Size: 488 B |
Before Width: | Height: | Size: 478 B |
Before Width: | Height: | Size: 504 B |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 12 KiB |
@ -1 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><svg width='120px' height='120px' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-ring-alt"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><circle cx="50" cy="50" r="40" stroke="#afafb7" fill="none" stroke-width="10" stroke-linecap="round"></circle><circle cx="50" cy="50" r="40" stroke="#5cffd6" fill="none" stroke-width="6" stroke-linecap="round"><animate attributeName="stroke-dashoffset" dur="2s" repeatCount="indefinite" from="0" to="502"></animate><animate attributeName="stroke-dasharray" dur="2s" repeatCount="indefinite" values="150.6 100.4;1 250;150.6 100.4"></animate></circle></svg>
|
Before Width: | Height: | Size: 709 B |
@ -85,7 +85,6 @@
|
||||
<span class="icon-bar bottom-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="https://www.hyperion-project.org?pk_campaign=WebUI&pk_kwd=mainlogo" target="_blank"><img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" height="55"></a>
|
||||
<a class="navbar-brand" href="/"><img src="img/hyperion/hyperionlostconnection.png" alt="Redefine ambient light!" style="display:none;"></a>
|
||||
|
||||
</div>
|
||||
<!-- /.navbar-header -->
|
||||
|
@ -10,14 +10,6 @@ $(document).ready( function() {
|
||||
|
||||
if(showOptHelp)
|
||||
{
|
||||
//effect path
|
||||
if(storedAccess != 'default')
|
||||
{
|
||||
$('#conf_cont').append(createRow('conf_cont_ef'))
|
||||
$('#conf_cont_ef').append(createOptPanel('fa-spinner', $.i18n("edt_conf_effp_heading_title"), 'editor_container_effects', 'btn_submit_effects'));
|
||||
$('#conf_cont_ef').append(createHelpTable(schema.effects.properties, $.i18n("edt_conf_effp_heading_title")));
|
||||
}
|
||||
|
||||
//foreground effect
|
||||
$('#conf_cont').append(createRow('conf_cont_fge'))
|
||||
$('#conf_cont_fge').append(createOptPanel('fa-spinner', $.i18n("edt_conf_fge_heading_title"), 'editor_container_foregroundEffect', 'btn_submit_foregroundEffect'));
|
||||
@ -27,15 +19,22 @@ $(document).ready( function() {
|
||||
$('#conf_cont').append(createRow('conf_cont_bge'))
|
||||
$('#conf_cont_bge').append(createOptPanel('fa-spinner', $.i18n("edt_conf_bge_heading_title"), 'editor_container_backgroundEffect', 'btn_submit_backgroundEffect'));
|
||||
$('#conf_cont_bge').append(createHelpTable(schema.backgroundEffect.properties, $.i18n("edt_conf_bge_heading_title")));
|
||||
|
||||
//effect path
|
||||
if(storedAccess != 'default')
|
||||
{
|
||||
$('#conf_cont').append(createRow('conf_cont_ef'))
|
||||
$('#conf_cont_ef').append(createOptPanel('fa-spinner', $.i18n("edt_conf_effp_heading_title"), 'editor_container_effects', 'btn_submit_effects'));
|
||||
$('#conf_cont_ef').append(createHelpTable(schema.effects.properties, $.i18n("edt_conf_effp_heading_title")));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(storedAccess != 'default')
|
||||
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_effp_heading_title"), 'editor_container_effects', 'btn_submit_effects'));
|
||||
|
||||
$('#conf_cont').addClass('row');
|
||||
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_fge_heading_title"), 'editor_container_foregroundEffect', 'btn_submit_foregroundEffect'));
|
||||
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_bge_heading_title"), 'editor_container_backgroundEffect', 'btn_submit_backgroundEffect'));
|
||||
if(storedAccess != 'default')
|
||||
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_effp_heading_title"), 'editor_container_effects', 'btn_submit_effects'));
|
||||
}
|
||||
|
||||
if(storedAccess != 'default')
|
||||
@ -68,34 +67,10 @@ $(document).ready( function() {
|
||||
|
||||
foregroundEffect_editor.on('change',function() {
|
||||
foregroundEffect_editor.validate().length ? $('#btn_submit_foregroundEffect').attr('disabled', true) : $('#btn_submit_foregroundEffect').attr('disabled', false);
|
||||
|
||||
var type = foregroundEffect_editor.getEditor('root.foregroundEffect.type');
|
||||
if(type.value == "color")
|
||||
{
|
||||
foregroundEffect_editor.getEditor('root.foregroundEffect.effect').disable();
|
||||
foregroundEffect_editor.getEditor('root.foregroundEffect.color').enable();
|
||||
}
|
||||
else
|
||||
{
|
||||
foregroundEffect_editor.getEditor('root.foregroundEffect.effect').enable();
|
||||
foregroundEffect_editor.getEditor('root.foregroundEffect.color').disable();
|
||||
}
|
||||
});
|
||||
|
||||
backgroundEffect_editor.on('change',function() {
|
||||
backgroundEffect_editor.validate().length ? $('#btn_submit_backgroundEffect').attr('disabled', true) : $('#btn_submit_backgroundEffect').attr('disabled', false);
|
||||
|
||||
var type = backgroundEffect_editor.getEditor('root.backgroundEffect.type');
|
||||
if(type.value == "color")
|
||||
{
|
||||
backgroundEffect_editor.getEditor('root.backgroundEffect.effect').disable();
|
||||
backgroundEffect_editor.getEditor('root.backgroundEffect.color').enable();
|
||||
}
|
||||
else
|
||||
{
|
||||
backgroundEffect_editor.getEditor('root.backgroundEffect.effect').enable();
|
||||
backgroundEffect_editor.getEditor('root.backgroundEffect.color').disable();
|
||||
}
|
||||
});
|
||||
|
||||
$('#btn_submit_foregroundEffect').off().on('click',function() {
|
||||
@ -143,12 +118,8 @@ $(document).ready( function() {
|
||||
$('#root_backgroundEffect_effect').html($('#root_foregroundEffect_effect').html());
|
||||
oldEffects = newEffects;
|
||||
|
||||
$('#root_foregroundEffect_effect').val(confFgEff).change();
|
||||
//$('select').trigger('change');
|
||||
//var fgeff = foregroundEffect_editor.getEditor('root.foregroundEffect.effect').setValue(confFgEff);
|
||||
//console.log(fgeff);
|
||||
|
||||
$('#root_backgroundEffect_effect').val(confBgEff).change();
|
||||
$('#root_foregroundEffect_effect').val(confFgEff);
|
||||
$('#root_backgroundEffect_effect').val(confBgEff);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13,17 +13,18 @@ $(document).ready( function() {
|
||||
var newDelList = serverInfo.effects;
|
||||
if(newDelList.length != oldDelList.length)
|
||||
{
|
||||
var EffectHtml = null;
|
||||
$('#effectsdellist').html("");
|
||||
var usrEffArr = [];
|
||||
var sysEffArr = [];
|
||||
for(var idx=0; idx<newDelList.length; idx++)
|
||||
{
|
||||
if(!/^\:/.test(newDelList[idx].file))
|
||||
{
|
||||
EffectHtml += '<option value="'+newDelList[idx].name+'">'+newDelList[idx].name+'</option>';
|
||||
}
|
||||
usrEffArr.push('ext_'+newDelList[idx].name+':'+newDelList[idx].name);
|
||||
else
|
||||
sysEffArr.push('int_'+newDelList[idx].name+':'+newDelList[idx].name);
|
||||
}
|
||||
$("#effectsdellist").html(EffectHtml);
|
||||
$('#effectsdellist').append(createSel(usrEffArr, $.i18n('remote_optgroup_usreffets'), true)).append(createSel(sysEffArr, $.i18n('remote_optgroup_syseffets'), true)).trigger('change');
|
||||
oldDelList = newDelList;
|
||||
$('#effectsdellist').trigger('change');
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,15 +36,23 @@ $(document).ready( function() {
|
||||
|
||||
|
||||
$("#effectslist").off().on("change", function(event) {
|
||||
if(effects_editor != null)
|
||||
effects_editor.destroy();
|
||||
|
||||
for(var idx=0; idx<effects.length; idx++){
|
||||
if (effects[idx].schemaContent.script == this.value){
|
||||
if (effects[idx].schemaContent.script == this.value)
|
||||
{
|
||||
effects_editor = createJsonEditor('editor_container', {
|
||||
args : effects[idx].schemaContent,
|
||||
},false, true);
|
||||
effectPy = ':';
|
||||
effectPy += effects[idx].schemaContent.script;
|
||||
},false, true, false);
|
||||
|
||||
effectPy = ':';
|
||||
effectPy += effects[idx].schemaContent.script;
|
||||
$("#name-input").trigger("change");
|
||||
|
||||
$("#eff_desc").html(createEffHint($.i18n(effects[idx].schemaContent.title),$.i18n(effects[idx].schemaContent.title+'_desc')));
|
||||
break;
|
||||
}
|
||||
$("#name-input").trigger("change");
|
||||
}
|
||||
effects_editor.on('change',function() {
|
||||
if ($("#btn_cont_test").hasClass("btn-success") && effects_editor.validate().length == 0 && effectName != "")
|
||||
@ -52,13 +61,11 @@ $(document).ready( function() {
|
||||
}
|
||||
if( effects_editor.validate().length == 0 && effectName != "")
|
||||
{
|
||||
$('#btn_start_test').attr('disabled', false);
|
||||
$('#btn_write').attr('disabled', false);
|
||||
$('#btn_start_test, #btn_write').attr('disabled', false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#btn_start_test').attr('disabled', true);
|
||||
$('#btn_write').attr('disabled', true);
|
||||
$('#btn_start_test, #btn_write').attr('disabled', true);
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -109,11 +116,40 @@ $(document).ready( function() {
|
||||
});
|
||||
|
||||
$('#effectsdellist').off().on('change', function(){
|
||||
if ($(this).val() == null) {
|
||||
$('#btn_delete').prop('disabled',true);
|
||||
} else {
|
||||
$('#btn_delete').prop('disabled',false);
|
||||
}
|
||||
$(this).val() == null ? $('#btn_edit, #btn_delete').prop('disabled',true) : "";
|
||||
$(this).val().startsWith("int_") ? $('#btn_delete').prop('disabled',true) : $('#btn_delete').prop('disabled',false);
|
||||
});
|
||||
|
||||
$('#btn_edit').off().on('click', function(){
|
||||
var name = $("#effectsdellist").val();
|
||||
|
||||
if(name.startsWith("int_"))
|
||||
{ name = name.split("_").pop();
|
||||
$("#name-input").val("My Modded Effect");
|
||||
}
|
||||
else
|
||||
{
|
||||
name = name.split("_").pop();
|
||||
$("#name-input").val(name);
|
||||
}
|
||||
|
||||
var efx = serverInfo.effects;
|
||||
for(var i = 0; i<efx.length; i++)
|
||||
{
|
||||
if(efx[i].name == name)
|
||||
{
|
||||
var py = efx[i].script.split("/").pop()
|
||||
$("#effectslist").val(py).trigger("change");
|
||||
|
||||
for(key in efx[i].args)
|
||||
{
|
||||
var ed = effects_editor.getEditor('root.args.'+[key]);
|
||||
if(ed)
|
||||
ed.setValue(efx[i].args[key]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//create basic effect list
|
||||
|
@ -6,6 +6,7 @@
|
||||
$(document).ready(function() {
|
||||
|
||||
var messages;
|
||||
var loguplmess = "";
|
||||
var reportUrl = 'https://report.hyperion-project.org/#';
|
||||
|
||||
$('#conf_cont').append(createOptPanel('fa-reorder', $.i18n("edt_conf_log_heading_title"), 'editor_container', 'btn_submit'));
|
||||
@ -68,28 +69,7 @@ $(document).ready(function() {
|
||||
var info;
|
||||
|
||||
//create log
|
||||
if(messages)
|
||||
{
|
||||
for(var i = 0; i<messages.length; i++)
|
||||
{
|
||||
app_name = messages[i].appName;
|
||||
logger_name = messages[i].loggerName;
|
||||
function_ = messages[i].function;
|
||||
line = messages[i].line;
|
||||
file_name = messages[i].fileName;
|
||||
msg = messages[i].message;
|
||||
level_string = messages[i].levelString;
|
||||
debug = "";
|
||||
|
||||
if(level_string == "DEBUG") {
|
||||
debug = "<"+file_name+":"+line+":"+function_+"()> ";
|
||||
}
|
||||
|
||||
log += "["+app_name+" "+logger_name+"] <"+level_string+"> "+debug+msg+"\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
log = "Log was empty!";
|
||||
log = (messages ? loguplmess : "Log was empty!");
|
||||
|
||||
//create general info
|
||||
info = "### GENERAL ### \n";
|
||||
@ -187,10 +167,11 @@ $(document).ready(function() {
|
||||
var debug = "";
|
||||
|
||||
if(level_string == "DEBUG") {
|
||||
debug = "<"+file_name+":"+line+":"+function_+"()> ";
|
||||
debug = "("+file_name+":"+line+":"+function_+"()) ";
|
||||
}
|
||||
|
||||
$("#logmessages").html($("#logmessages").html()+"\n <code>"+"["+app_name+" "+logger_name+"] <"+level_string+"> "+debug+msg+"</code>");
|
||||
$("#logmessages").append("\n <code>"+"["+app_name+" "+logger_name+"] ("+level_string+") "+debug+msg+"</code>");
|
||||
loguplmess += "["+app_name+" "+logger_name+"] ("+level_string+") "+debug+msg+"\n";
|
||||
}
|
||||
if($("#btn_autoscroll").hasClass('btn-success')){
|
||||
$('#logmessages').stop().animate({
|
||||
|
@ -277,7 +277,6 @@ $(document).ready(function() {
|
||||
createCP('cp2', cpcolor, function(rgbT,hex){
|
||||
rgb = rgbT;
|
||||
sendColor()
|
||||
$("#effect_select").val("__none__");
|
||||
setStorage('rmcpcolor', hex);
|
||||
});
|
||||
|
||||
|
@ -13,7 +13,7 @@ $(document).ready(function() {
|
||||
{
|
||||
createHint('intro', $.i18n('main_ledsim_text'), 'ledsim_text');
|
||||
$('#ledsim_text').css({'margin':'10px 15px 0px 15px'});
|
||||
$('#ledsim_text .intro-hint').css("margin","0px")
|
||||
$('#ledsim_text .bs-callout').css("margin","0px")
|
||||
}
|
||||
|
||||
if(getStorage('ledsim_width') != null)
|
||||
|
2
assets/webconfig/js/lib/dialog.min.js
vendored
2
assets/webconfig/js/lib/draggable.min.js
vendored
@ -1439,6 +1439,81 @@ JSONEditor.AbstractEditor = Class.extend({
|
||||
this.link_watchers = [];
|
||||
|
||||
if(options.container) this.setContainer(options.container);
|
||||
this.registerDependencies();
|
||||
},
|
||||
registerDependencies: function() {
|
||||
this.dependenciesFulfilled = true;
|
||||
var deps = this.options.dependencies;
|
||||
if (!deps) {
|
||||
return;
|
||||
}
|
||||
|
||||
var self = this;
|
||||
Object.keys(deps).forEach(function(dependency) {
|
||||
var path = self.path.split('.');
|
||||
path[path.length - 1] = dependency;
|
||||
path = path.join('.');
|
||||
var choices = deps[dependency];
|
||||
self.jsoneditor.watch(path, function() {
|
||||
self.checkDependency(path, choices);
|
||||
});
|
||||
});
|
||||
},
|
||||
checkDependency: function(path, choices) {
|
||||
var wrapper = this.control || this.container;
|
||||
if (this.path === path || !wrapper) {
|
||||
return;
|
||||
}
|
||||
|
||||
var self = this;
|
||||
var editor = this.jsoneditor.getEditor(path);
|
||||
var value = editor ? editor.getValue() : undefined;
|
||||
var previousStatus = this.dependenciesFulfilled;
|
||||
this.dependenciesFulfilled = false;
|
||||
|
||||
if (!editor || !editor.dependenciesFulfilled) {
|
||||
this.dependenciesFulfilled = false;
|
||||
} else if (Array.isArray(choices)) {
|
||||
choices.some(function(choice) {
|
||||
if (value === choice) {
|
||||
self.dependenciesFulfilled = true;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
} else if (typeof choices === 'object') {
|
||||
if (typeof value !== 'object') {
|
||||
this.dependenciesFulfilled = choices === value;
|
||||
} else {
|
||||
Object.keys(choices).some(function(key) {
|
||||
if (!choices.hasOwnProperty(key)) {
|
||||
return false;
|
||||
}
|
||||
if (!value.hasOwnProperty(key) || choices[key] !== value[key]) {
|
||||
self.dependenciesFulfilled = false;
|
||||
return true;
|
||||
}
|
||||
self.dependenciesFulfilled = true;
|
||||
});
|
||||
}
|
||||
} else if (typeof choices === 'string' || typeof choices === 'number') {
|
||||
this.dependenciesFulfilled = value === choices;
|
||||
} else if (typeof choices === 'boolean') {
|
||||
if (choices) {
|
||||
this.dependenciesFulfilled = value;
|
||||
} else {
|
||||
this.dependenciesFulfilled = !value;
|
||||
}
|
||||
}
|
||||
|
||||
if (this.dependenciesFulfilled !== previousStatus) {
|
||||
this.notify();
|
||||
}
|
||||
|
||||
if (this.dependenciesFulfilled) {
|
||||
wrapper.style.display = 'block';
|
||||
} else {
|
||||
wrapper.style.display = 'none';
|
||||
}
|
||||
},
|
||||
setContainer: function(container) {
|
||||
this.container = container;
|
||||
@ -6205,7 +6280,67 @@ JSONEditor.defaults.editors.colorPicker = JSONEditor.defaults.editors.string.ext
|
||||
$(this.input).colorpicker().on('changeColor', function(e) {
|
||||
$(myinput).val(e.color.toRGB()).change();
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
$(this.input).colorpicker('destroy');
|
||||
}
|
||||
});
|
||||
|
||||
// colorpickerRGBA creation and handling, build on top of strings editor
|
||||
JSONEditor.defaults.editors.colorPickerRGBA = JSONEditor.defaults.editors.string.extend({
|
||||
getValue: function() {
|
||||
if ($(this.input).data("colorpicker") !== undefined) {
|
||||
var color = $(this.input).data('colorpicker').color.toRGB();
|
||||
return [color.r,color.g, color.b, color.a];
|
||||
}
|
||||
else {
|
||||
return [0,0,0,1];
|
||||
}
|
||||
},
|
||||
|
||||
setValue: function(val) {
|
||||
$(this.input).colorpicker('updateInput', 'rgba('+val+')');
|
||||
$(this.input).colorpicker('updateData', val);
|
||||
// $(this.input).colorpicker('updatePicker', rgb2hex(val));
|
||||
$(this.input).colorpicker('updateComponent', 'rgba('+val+')');
|
||||
},
|
||||
|
||||
|
||||
|
||||
build: function() {
|
||||
this._super();
|
||||
var myinput = this;
|
||||
$(myinput.input).parent().attr("class", $(myinput.input).parent().attr('class') + " colorpicker-element input-group");
|
||||
$(myinput.input).append("<span class='input-group-addon' id='event_catcher'><i></i></span>");
|
||||
$(myinput.input).colorpicker({
|
||||
format: 'rgba',
|
||||
customClass: 'colorpicker-2x',
|
||||
sliders: {
|
||||
saturation: {
|
||||
maxLeft: 200,
|
||||
maxTop: 200
|
||||
},
|
||||
hue: {
|
||||
maxTop: 200
|
||||
},
|
||||
alpha: {
|
||||
maxTop: 200
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
$("#event_catcher").detach().insertAfter(myinput.input);
|
||||
$("#event_catcher").attr("id", "selector");
|
||||
|
||||
$(this.input).colorpicker().on('changeColor', function(e) {
|
||||
$(myinput).val(e.color.toRGB()).change();
|
||||
});
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
$(this.input).colorpicker('destroy');
|
||||
}
|
||||
});
|
||||
|
||||
var matchKey = (function () {
|
||||
@ -7083,6 +7218,12 @@ JSONEditor.defaults.resolvers.unshift(function(schema) {
|
||||
return "colorPicker";
|
||||
}
|
||||
});
|
||||
// colorpickerRGBA extend for strings
|
||||
JSONEditor.defaults.resolvers.unshift(function(schema) {
|
||||
if(schema.type === "array" && schema.format === "colorpickerRGBA") {
|
||||
return "colorPickerRGBA";
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* This is a small wrapper for using JSON Editor like a typical jQuery plugin.
|
||||
|
@ -238,6 +238,11 @@ function createHint(type, text, container, buttonid, buttontxt)
|
||||
}
|
||||
}
|
||||
|
||||
function createEffHint(title, text)
|
||||
{
|
||||
return '<div class="bs-callout bs-callout-primary" style="margin-top:0px"><h4>'+title+'</h4>'+text+'</div>';
|
||||
}
|
||||
|
||||
function valValue(id,value,min,max)
|
||||
{
|
||||
if(typeof max === 'undefined' || max == "")
|
||||
@ -285,23 +290,28 @@ function isJsonString(str)
|
||||
return "";
|
||||
}
|
||||
|
||||
function createJsonEditor(container,schema,setconfig,usePanel)
|
||||
function createJsonEditor(container,schema,setconfig,usePanel,arrayre)
|
||||
{
|
||||
$('#'+container).off();
|
||||
$('#'+container).html("");
|
||||
|
||||
//JSONEditor.plugins.selectize.enable = true;
|
||||
|
||||
if (typeof arrayre === 'undefined')
|
||||
arrayre = true;
|
||||
|
||||
var editor = new JSONEditor(document.getElementById(container),
|
||||
{
|
||||
theme: 'bootstrap3',
|
||||
iconlib: "fontawesome4",
|
||||
disable_collapse: 'true',
|
||||
form_name_root: 'sa',
|
||||
disable_edit_json: 'true',
|
||||
disable_properties: 'true',
|
||||
disable_array_reorder: 'true',
|
||||
no_additional_properties: 'true',
|
||||
disable_array_delete_all_rows: 'true',
|
||||
disable_array_delete_last_row: 'true',
|
||||
disable_edit_json: true,
|
||||
disable_properties: true,
|
||||
disable_array_reorder: arrayre,
|
||||
no_additional_properties: true,
|
||||
disable_array_delete_all_rows: true,
|
||||
disable_array_delete_last_row: true,
|
||||
access: storedAccess,
|
||||
schema: {
|
||||
title:'',
|
||||
@ -312,7 +322,7 @@ function createJsonEditor(container,schema,setconfig,usePanel)
|
||||
if(usePanel)
|
||||
{
|
||||
$('#'+container+' .well').first().removeClass('well well-sm');
|
||||
$('#'+container+' h4').remove();
|
||||
$('#'+container+' h4').first().remove();
|
||||
$('#'+container+' .well').first().removeClass('well well-sm');
|
||||
}
|
||||
|
||||
@ -591,14 +601,21 @@ function createSelOpt(opt, title)
|
||||
return el;
|
||||
}
|
||||
|
||||
function createSel(array, group)
|
||||
function createSel(array, group, split)
|
||||
{
|
||||
if (array.length != "0")
|
||||
if (array.length != 0)
|
||||
{
|
||||
var el = createSelGroup(group);
|
||||
for(var i=0; i<array.length; i++)
|
||||
{
|
||||
var opt = createSelOpt(array[i])
|
||||
var opt;
|
||||
if(split)
|
||||
{
|
||||
opt = array[i].split(":")
|
||||
opt = createSelOpt(opt[0],opt[1])
|
||||
}
|
||||
else
|
||||
opt = createSelOpt(array[i])
|
||||
el.appendChild(opt);
|
||||
}
|
||||
return el;
|
||||
|
@ -119,13 +119,13 @@
|
||||
/// * cropTop : Cropping from the top [default=0]
|
||||
/// * cropBottom : Cropping from the bottom [default=0]
|
||||
/// * signalDetection : enable/disable signal detection [default=true]
|
||||
/// * redSignalThreshold : Signal threshold for the red channel between 0.0 and 1.0 [default=0.0]
|
||||
/// * greenSignalThreshold : Signal threshold for the green channel between 0.0 and 1.0 [default=0.0]
|
||||
/// * blueSignalThreshold : Signal threshold for the blue channel between 0.0 and 1.0 [default=0.0]
|
||||
/// * signalDetectionVerticalOffsetMin : area for signal detection - horizontal minimum offset value. Values between 0.0 and 1.0
|
||||
/// * signalDetectionHorizontalOffsetMin : area for signal detection - vertical minimum offset value. Values between 0.0 and 1.0
|
||||
/// * signalDetectionVerticalOffsetMax : area for signal detection - horizontal maximum offset value. Values between 0.0 and 1.0
|
||||
/// * signalDetectionHorizontalOffsetMax : area for signal detection - vertical maximum offset value. Values between 0.0 and 1.0
|
||||
/// * redSignalThreshold : Signal threshold for the red channel between 0 and 100 [default=5]
|
||||
/// * greenSignalThreshold : Signal threshold for the green channel between 0 and 100 [default=5]
|
||||
/// * blueSignalThreshold : Signal threshold for the blue channel between 0 and 100 [default=5]
|
||||
/// * sDHOffsetMin : area for signal detection - horizontal minimum offset value. Values between 0.0 and 1.0
|
||||
/// * sDVOffsetMin : area for signal detection - vertical minimum offset value. Values between 0.0 and 1.0
|
||||
/// * sDHOffsetMax : area for signal detection - horizontal maximum offset value. Values between 0.0 and 1.0
|
||||
/// * sDVOffsetMax : area for signal detection - vertical maximum offset value. Values between 0.0 and 1.0
|
||||
"grabberV4L2" :
|
||||
[
|
||||
{
|
||||
@ -144,14 +144,14 @@
|
||||
"cropRight" : 0,
|
||||
"cropTop" : 0,
|
||||
"cropBottom" : 0,
|
||||
"redSignalThreshold" : 0.0,
|
||||
"greenSignalThreshold" : 0.0,
|
||||
"blueSignalThreshold" : 0.0,
|
||||
"signalDetection" : true,
|
||||
"signalDetectionVerticalOffsetMin" : 0.25,
|
||||
"signalDetectionHorizontalOffsetMin" : 0.25,
|
||||
"signalDetectionVerticalOffsetMax" : 0.75,
|
||||
"signalDetectionHorizontalOffsetMax" : 0.75
|
||||
"redSignalThreshold" : 5,
|
||||
"greenSignalThreshold" : 5,
|
||||
"blueSignalThreshold" : 5,
|
||||
"signalDetection" : false,
|
||||
"sDVOffsetMin" : 0.25,
|
||||
"sDHOffsetMin" : 0.25,
|
||||
"sDVOffsetMax" : 0.75,
|
||||
"sDHOffsetMax" : 0.75
|
||||
}
|
||||
],
|
||||
|
||||
|
@ -75,14 +75,14 @@
|
||||
"cropRight" : 0,
|
||||
"cropTop" : 0,
|
||||
"cropBottom" : 0,
|
||||
"redSignalThreshold" : 0.0,
|
||||
"greenSignalThreshold" : 0.0,
|
||||
"blueSignalThreshold" : 0.0,
|
||||
"signalDetection" : true,
|
||||
"signalDetectionVerticalOffsetMin" : 0.25,
|
||||
"signalDetectionHorizontalOffsetMin" : 0.25,
|
||||
"signalDetectionVerticalOffsetMax" : 0.75,
|
||||
"signalDetectionHorizontalOffsetMax" : 0.75
|
||||
"redSignalThreshold" : 5,
|
||||
"greenSignalThreshold" : 5,
|
||||
"blueSignalThreshold" : 5,
|
||||
"signalDetection" : false,
|
||||
"sDVOffsetMin" : 0.25,
|
||||
"sDHOffsetMin" : 0.25,
|
||||
"sDVOffsetMax" : 0.75,
|
||||
"sDHOffsetMax" : 0.75
|
||||
}
|
||||
],
|
||||
|
||||
|
15
effects/atomic.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name" : "Atomic swirl",
|
||||
"script" : "swirl.py",
|
||||
"args" :
|
||||
{
|
||||
"rotation-time" : 25.0,
|
||||
"center_x" : 0.5,
|
||||
"center_y" : 0.5,
|
||||
"reverse" : false,
|
||||
"custom-colors":[[0,0,0],[0,0,0],[255,255,0],[0,0,0],[0,0,0],[255,255,0],[0,0,0],[0,0,0],[255,255,0]],
|
||||
"random-center":false,
|
||||
"custom-colors2":[],
|
||||
"enable-second":false
|
||||
}
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
import hyperion
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
def myRange(index, margin):
|
||||
return [i % hyperion.ledCount for i in range(index-margin, index+margin+1)]
|
||||
|
||||
""" Define some variables """
|
||||
sleepTime = 1
|
||||
ledCount = hyperion.ledCount
|
||||
|
||||
offset = hyperion.args.get('offset', 0)
|
||||
direction = bool(hyperion.args.get('direction', False))
|
||||
|
||||
hourMargin = hyperion.args.get('hour-margin', 2)
|
||||
minuteMargin = hyperion.args.get('minute-margin', 1)
|
||||
secondMargin = hyperion.args.get('second-margin', 0)
|
||||
|
||||
hourColor = hyperion.args.get('hour-color', (255,0,0))
|
||||
minuteColor = hyperion.args.get('minute-color', (0,255,0))
|
||||
secondColor = hyperion.args.get('second-color', (0,0,255))
|
||||
|
||||
markerColor = hyperion.args.get('marker-color', (255,255,255))
|
||||
|
||||
marker = ledCount/4
|
||||
markers = (0+offset, int(marker + offset) % ledCount, int(2*marker + offset) % ledCount, int(3*marker + offset) % ledCount)
|
||||
|
||||
""" The effect loop """
|
||||
while not hyperion.abort():
|
||||
|
||||
""" The algorithm to calculate the change in color """
|
||||
led_data = bytearray()
|
||||
|
||||
now = datetime.now()
|
||||
h = now.hour
|
||||
m = now.minute
|
||||
s = now.second
|
||||
|
||||
hmin = float(h+(1/60*m))
|
||||
|
||||
if hmin > 12:
|
||||
hmin -= 12
|
||||
|
||||
hour = float(hmin/12 * ledCount)
|
||||
led_hour = int(hour + offset) % ledCount
|
||||
|
||||
minute = m/60. * ledCount
|
||||
led_minute = int(minute + offset) % ledCount
|
||||
|
||||
second = s/60. * ledCount
|
||||
led_second = int(second + offset) % ledCount
|
||||
|
||||
hourRange = myRange(led_hour, hourMargin)
|
||||
minuteRange = myRange(led_minute, minuteMargin)
|
||||
secondRange = myRange(led_second, secondMargin)
|
||||
|
||||
for i in range(ledCount):
|
||||
blend = [0, 0, 0]
|
||||
|
||||
if i in markers:
|
||||
blend = markerColor
|
||||
|
||||
if i in hourRange:
|
||||
blend = hourColor
|
||||
|
||||
if i in minuteRange:
|
||||
blend = minuteColor
|
||||
|
||||
if i in secondRange:
|
||||
blend = secondColor
|
||||
|
||||
led_data += bytearray((int(blend[0]), int(blend[1]), int(blend[2])))
|
||||
|
||||
""" send the data to hyperion """
|
||||
hyperion.setColor(led_data)
|
||||
|
||||
""" sleep for a while """
|
||||
timediff = (datetime.now()-now).microseconds/1000000.
|
||||
time.sleep(sleepTime-timediff)
|
||||
|
78
effects/double-swirl.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"args": {
|
||||
"center_x": 0.5,
|
||||
"center_x2": 0.5,
|
||||
"center_y": 0.5,
|
||||
"center_y2": 0.5,
|
||||
"custom-colors": [
|
||||
[
|
||||
255,
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
0,
|
||||
255
|
||||
]
|
||||
],
|
||||
"custom-colors2": [
|
||||
[
|
||||
255,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
255,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
255,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
255,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
255,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
],
|
||||
"enable-second": true,
|
||||
"random-center": false,
|
||||
"random-center2": false,
|
||||
"reverse": false,
|
||||
"reverse2": true,
|
||||
"rotation-time": 25
|
||||
},
|
||||
"name": "Double swirl",
|
||||
"script": "swirl.py"
|
||||
}
|
8
effects/flag.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "Flags Germany/Sweden",
|
||||
"script": "flag.py",
|
||||
"args": {
|
||||
"countries":["de","se"],
|
||||
"switch-time": 2
|
||||
}
|
||||
}
|
183
effects/flag.py
Normal file
@ -0,0 +1,183 @@
|
||||
import hyperion, time
|
||||
hyperion.imageMinSize(10,10)
|
||||
|
||||
iW = hyperion.imageWidth()
|
||||
iH = hyperion.imageHeight()
|
||||
countries = hyperion.args.get('countries', ("de","at"))
|
||||
duration = int(hyperion.args.get('switch-time', 5))
|
||||
imgIds = []
|
||||
nr = 0
|
||||
|
||||
def switchImage():
|
||||
global nr
|
||||
if nr >= len(imgIds):
|
||||
nr = 0
|
||||
hyperion.imageShow(imgIds[nr])
|
||||
nr += 1
|
||||
|
||||
def printFlag(country):
|
||||
# official country codes
|
||||
#############
|
||||
# EU flags -> missing: cyprus, UK
|
||||
#############
|
||||
# de flag (Germany)
|
||||
if country == "de":
|
||||
hyperion.imageSolidFill(0, 0, iW, int(iH*0.33), 0, 0, 0)
|
||||
hyperion.imageSolidFill(0, int(iH*0.33), iW, int(iH*0.33), 221, 0, 0)
|
||||
hyperion.imageSolidFill(0, int(iH*0.66), iW, iH, 255, 206, 0)
|
||||
|
||||
# at flag (Austria)
|
||||
if country == "at":
|
||||
hyperion.imageSolidFill(237, 41, 57)
|
||||
hyperion.imageSolidFill(0, int(iH*0.33), iW, int(iH*0.33), 255, 255, 255)
|
||||
|
||||
# fr flag (France)
|
||||
if country == "fr":
|
||||
hyperion.imageSolidFill(0, 0, int(iW*0.33), iH, 0, 35, 149)
|
||||
hyperion.imageSolidFill(int(iW*0.33), 0, int(iW*0.33), iH, 255, 255, 255)
|
||||
hyperion.imageSolidFill(int(iW*0.66), 0, iW, iH, 237, 41, 57)
|
||||
|
||||
# be flag (Belgium)
|
||||
if country == "be":
|
||||
hyperion.imageSolidFill(0, 0, int(iW*0.33), iH, 0, 0, 0)
|
||||
hyperion.imageSolidFill(int(iW*0.33), 0, int(iW*0.33), iH, 255, 224, 66)
|
||||
hyperion.imageSolidFill(int(iW*0.66), 0, iW, iH, 237, 41, 57)
|
||||
|
||||
# it flag (Italy)
|
||||
if country == "it":
|
||||
hyperion.imageSolidFill(0, 0, int(iW*0.33), iH, 0, 146, 70)
|
||||
hyperion.imageSolidFill(int(iW*0.33), 0, int(iW*0.33), iH, 255, 255, 255)
|
||||
hyperion.imageSolidFill(int(iW*0.66), 0, iW, iH, 206, 43, 55)
|
||||
|
||||
# es flag (Spain)
|
||||
if country == "es":
|
||||
hyperion.imageSolidFill(198, 11, 30)
|
||||
hyperion.imageSolidFill(0, int(iH*0.25), iW, int(iH*0.55), 255, 196, 0)
|
||||
|
||||
# bg flag (Bulgaria)
|
||||
if country == "bg":
|
||||
hyperion.imageSolidFill(0, 0, iW, int(iH*0.33), 255, 255, 255)
|
||||
hyperion.imageSolidFill(0, int(iH*0.33), iW, int(iH*0.33), 0, 150, 110)
|
||||
hyperion.imageSolidFill(0, int(iH*0.66), iW, iH, 214, 38, 18)
|
||||
|
||||
# ee flag (Estonia)
|
||||
if country == "ee":
|
||||
hyperion.imageSolidFill(0, 0, iW, int(iH*0.33), 72, 145, 217)
|
||||
hyperion.imageSolidFill(0, int(iH*0.33), iW, int(iH*0.33), 0, 0, 0)
|
||||
hyperion.imageSolidFill(0, int(iH*0.66), iW, iH, 255, 255, 255)
|
||||
|
||||
# dk flag (Denmark)
|
||||
if country == "dk":
|
||||
hyperion.imageSolidFill(198, 12, 48)
|
||||
hyperion.imageDrawLine(int(iW*0.35), 0, int(iW*0.35), iH, int(iW*0.13), 255, 255, 255)
|
||||
hyperion.imageDrawLine(0, int(iH*0.5), iW, int(iH*0.5), int(iW*0.13), 255, 255, 255)
|
||||
|
||||
# fi flag (Finland)
|
||||
if country == "fi":
|
||||
hyperion.imageSolidFill(255, 255, 255)
|
||||
hyperion.imageDrawLine(int(iW*0.35), 0, int(iW*0.35), iH, int(iW*0.18), 0, 53, 128)
|
||||
hyperion.imageDrawLine(0, int(iH*0.5), iW, int(iH*0.5), int(iW*0.18), 0, 53, 128)
|
||||
|
||||
# hu flag (Hungary)
|
||||
if country == "hu":
|
||||
hyperion.imageSolidFill(0, 0, iW, int(iH*0.33), 205, 42, 62)
|
||||
hyperion.imageSolidFill(0, int(iH*0.33), iW, int(iH*0.33), 255, 255, 255)
|
||||
hyperion.imageSolidFill(0, int(iH*0.66), iW, iH, 67, 111, 77)
|
||||
|
||||
# ie flag (Ireland)
|
||||
if country == "ie":
|
||||
hyperion.imageSolidFill(0, 0, int(iW*0.33), iH, 0, 155, 72)
|
||||
hyperion.imageSolidFill(int(iW*0.33), 0, int(iW*0.33), iH, 255, 255, 255)
|
||||
hyperion.imageSolidFill(int(iW*0.66), 0, iW, iH, 255, 121, 0)
|
||||
|
||||
# lv flag (Latvia)
|
||||
if country == "lv":
|
||||
hyperion.imageSolidFill(158, 48, 57)
|
||||
hyperion.imageDrawLine(0, int(iH*0.5), iW, int(iH*0.5), int(iH*0.2), 255, 255, 255)
|
||||
|
||||
# lt flag (Lithuanian)
|
||||
if country == "lt":
|
||||
hyperion.imageSolidFill(0, 0, iW, int(iH*0.33), 253, 185, 19)
|
||||
hyperion.imageSolidFill(0, int(iH*0.33), iW, int(iH*0.33), 0, 106, 68)
|
||||
hyperion.imageSolidFill(0, int(iH*0.66), iW, iH, 193, 39, 45)
|
||||
|
||||
# lu flag (Luxembourg)
|
||||
if country == "lu":
|
||||
hyperion.imageSolidFill(0, 0, iW, int(iH*0.33), 237, 41, 57)
|
||||
hyperion.imageSolidFill(0, int(iH*0.33), iW, int(iH*0.33), 255, 255, 255)
|
||||
hyperion.imageSolidFill(0, int(iH*0.66), iW, iH, 0, 161, 222)
|
||||
|
||||
# mt flag (Malta)
|
||||
if country == "mt":
|
||||
hyperion.imageSolidFill(0, 0, int(iW*0.5), iH, 255, 255, 255)
|
||||
hyperion.imageSolidFill(int(iW*0.5), 0, int(iW*0.5), iH, 207, 20, 43)
|
||||
|
||||
# nl flag (Netherlands)
|
||||
if country == "nl":
|
||||
hyperion.imageSolidFill(0, 0, iW, int(iH*0.33), 174, 28, 40)
|
||||
hyperion.imageSolidFill(0, int(iH*0.33), iW, int(iH*0.33), 255, 255, 255)
|
||||
hyperion.imageSolidFill(0, int(iH*0.66), iW, iH, 33, 70, 139)
|
||||
|
||||
# pl flag (Poland)
|
||||
if country == "pl":
|
||||
hyperion.imageSolidFill(255, 255, 255)
|
||||
hyperion.imageSolidFill(0, int(iH*0.5), iW, iH, 220, 20, 60)
|
||||
|
||||
# pt flag (Portugal)
|
||||
if country == "pt":
|
||||
hyperion.imageSolidFill(0, 102, 0)
|
||||
hyperion.imageSolidFill(int(iW*0.4), 0, iW, iH, 255, 0, 0)
|
||||
|
||||
# ro flag (Romania)
|
||||
if country == "ro":
|
||||
hyperion.imageSolidFill(0, 0, int(iW*0.33), iH, 0, 43, 127)
|
||||
hyperion.imageSolidFill(int(iW*0.33), 0, int(iW*0.33), iH, 252, 209, 22)
|
||||
hyperion.imageSolidFill(int(iW*0.66), 0, iW, iH, 206, 17, 38)
|
||||
|
||||
# sl flag (Slovakia/Slovenia)
|
||||
if country == "sl":
|
||||
hyperion.imageSolidFill(0, 0, iW, int(iH*0.33), 255, 255, 255)
|
||||
hyperion.imageSolidFill(0, int(iH*0.33), iW, int(iH*0.33), 11, 78, 162)
|
||||
hyperion.imageSolidFill(0, int(iH*0.66), iW, iH, 238, 28, 37)
|
||||
|
||||
# se flag (Sweden)
|
||||
if country == "se":
|
||||
hyperion.imageSolidFill(0, 106, 167)
|
||||
hyperion.imageDrawLine(int(iW*0.35), 0, int(iW*0.35), iH, int(iW*0.14), 254, 204, 0)
|
||||
hyperion.imageDrawLine(0, int(iH*0.5), iW, int(iH*0.5), int(iW*0.14), 254, 204, 0)
|
||||
|
||||
# cz flag (Czech Republic)
|
||||
if country == "cz":
|
||||
hyperion.imageSolidFill(255, 255, 255)
|
||||
hyperion.imageSolidFill(0, int(iH*0.5), iW, iH, 215, 20, 26)
|
||||
hyperion.imageDrawPolygon(bytearray([0,0,int(iH*0.5),int(iH*0.5),0,iH]),17, 69, 126)
|
||||
|
||||
# gr flag (Greece)
|
||||
if country == "gr":
|
||||
hyperion.imageSolidFill(13, 94, 175)
|
||||
hyperion.imageDrawLine(int(iW*0.35), int(iH*0.15), iW, int(iH*0.15),int(0.1*iH), 255, 255, 255)
|
||||
hyperion.imageDrawLine(int(iW*0.35), int(iH*0.35), iW, int(iH*0.35),int(0.1*iH), 255, 255, 255)
|
||||
hyperion.imageDrawLine(0, int(iH*0.55), iW, int(iH*0.55),int(0.1*iH), 255, 255, 255)
|
||||
hyperion.imageDrawLine(0, int(iH*0.75), iW, int(iH*0.75),int(0.1*iH), 255, 255, 255)
|
||||
hyperion.imageDrawLine(int(0.175*iW), 0, int(0.175*iW), int(iH*0.35),int(0.1*iH), 255, 255, 255)
|
||||
hyperion.imageDrawLine(0, int(0.175*iW), int(iH*0.35), int(0.175*iW),int(0.1*iH), 255, 255, 255)
|
||||
|
||||
#############
|
||||
# other flags
|
||||
#############
|
||||
|
||||
# ch flag (Swiss)
|
||||
if country == "ch":
|
||||
hyperion.imageSolidFill(255, 0, 0)
|
||||
hyperion.imageDrawLine(int(iW*0.5), int(iH*0.25), int(iW*0.5), int(iH*0.75), int(iH*0.15), 255, 255, 255)
|
||||
hyperion.imageDrawLine(int(iW*0.26), int(iH*0.5), int(iW*0.75), int(iH*0.5), int(iH*0.15), 255, 255, 255)
|
||||
|
||||
#prepare wanted flags
|
||||
for cf in countries:
|
||||
printFlag(cf)
|
||||
imgIds.append(hyperion.imageSave())
|
||||
hyperion.imageSolidFill(0, 0, 0)
|
||||
|
||||
while not hyperion.abort():
|
||||
switchImage()
|
||||
time.sleep(duration)
|
@ -3,6 +3,14 @@
|
||||
"script" : "light-clock.py",
|
||||
"args" :
|
||||
{
|
||||
"show_seconds" : true
|
||||
"show_seconds" : true,
|
||||
"marker-enabled" : false,
|
||||
"hour-color" : [0,0,255],
|
||||
"minute-color" : [0,255,0],
|
||||
"second-color" : [255,0,0],
|
||||
"background-color" : [0,0,0],
|
||||
"marker-depth" : 0,
|
||||
"marker-width" : 5,
|
||||
"marker-color" : [255,255,255]
|
||||
}
|
||||
}
|
||||
|
@ -1,35 +1,46 @@
|
||||
import hyperion, time, datetime
|
||||
|
||||
hyperion.imageMinSize(32,32)
|
||||
|
||||
# Get the parameters
|
||||
showSeconds = bool(hyperion.args.get('show_seconds', True))
|
||||
centerX = int(round(hyperion.imageWidth())/2)
|
||||
centerY = int(round(float(hyperion.imageHeight())/2))
|
||||
showSec = bool(hyperion.args.get('show_seconds', True))
|
||||
hC = hyperion.args.get('hour-color', (0,0,255))
|
||||
mC = hyperion.args.get('minute-color', (0,255,0))
|
||||
sC = hyperion.args.get('second-color', (255,0,0))
|
||||
bgC = hyperion.args.get('background-color', (0,0,0))
|
||||
markEnable = hyperion.args.get('marker-enabled', False)
|
||||
markD = int(hyperion.args.get('marker-depth', 5))/100.0
|
||||
markW = int(hyperion.args.get('marker-width', 5))/100.0
|
||||
markC = hyperion.args.get('marker-color', (255,255,255))
|
||||
|
||||
|
||||
#calculate some stuff
|
||||
centerX = int(round(hyperion.imageWidth())/2)
|
||||
centerY = int(round(float(hyperion.imageHeight())/2))
|
||||
markDepthX = int(round(hyperion.imageWidth()*markD))
|
||||
markDepthY = int(round(hyperion.imageHeight()*markD))
|
||||
markThick = int(round(hyperion.imageHeight()*markW))
|
||||
|
||||
colorsSecond = bytearray([
|
||||
0, 255,255,0,255,
|
||||
5, 255,255,0,255,
|
||||
30, 0,0,0,0,
|
||||
0, sC[0],sC[1],sC[2],255,
|
||||
8, sC[0],sC[1],sC[2],255,
|
||||
10, 0,0,0,0,
|
||||
])
|
||||
|
||||
colorsMinute = bytearray([
|
||||
0, 0,255,0,255,
|
||||
5, 0,255,0,250,
|
||||
0, mC[0],mC[1],mC[2],255,
|
||||
35, mC[0],mC[1],mC[2],255,
|
||||
50, mC[0],mC[1],mC[2],127,
|
||||
90, 0,0,0,0,
|
||||
|
||||
])
|
||||
|
||||
colorsHour = bytearray([
|
||||
0, 0,0,255,255,
|
||||
10, 0,0,255,255,
|
||||
127, 0,0,196,127,
|
||||
255, 0,0,196,5,
|
||||
0, hC[0],hC[1],hC[2],255,
|
||||
90, hC[0],hC[1],hC[2],255,
|
||||
150, hC[0],hC[1],hC[2],127,
|
||||
191, 0,0,0,0,
|
||||
])
|
||||
|
||||
colorsHourTop = bytearray([
|
||||
0, 0,0,255,250,
|
||||
10, 0,0,255,128,
|
||||
20, 0,0,0,0,
|
||||
])
|
||||
|
||||
# effect loop
|
||||
while not hyperion.abort():
|
||||
@ -43,12 +54,25 @@ while not hyperion.abort():
|
||||
angleM -= 0 if angleM<360 else 360
|
||||
angleS -= 0 if angleS<360 else 360
|
||||
|
||||
hyperion.imageSolidFill(127,127,127);
|
||||
hyperion.imageCanonicalGradient(centerX, centerY, angleH, colorsHour)
|
||||
hyperion.imageCanonicalGradient(centerX, centerY, angleM, colorsMinute)
|
||||
hyperion.imageCanonicalGradient(centerX, centerY, angleH, colorsHourTop)
|
||||
if showSeconds:
|
||||
hyperion.imageCanonicalGradient(centerX, centerY, angleS, colorsSecond)
|
||||
#reset image
|
||||
hyperion.imageSolidFill(bgC[0],bgC[1],bgC[2])
|
||||
|
||||
#paint clock
|
||||
if angleH-angleM < 90 and angleH-angleM > 0:
|
||||
hyperion.imageConicalGradient(centerX, centerY, angleM, colorsMinute)
|
||||
hyperion.imageConicalGradient(centerX, centerY, angleH, colorsHour)
|
||||
else:
|
||||
hyperion.imageConicalGradient(centerX, centerY, angleH, colorsHour)
|
||||
hyperion.imageConicalGradient(centerX, centerY, angleM, colorsMinute)
|
||||
|
||||
if showSec:
|
||||
hyperion.imageConicalGradient(centerX, centerY, angleS, colorsSecond)
|
||||
if markEnable:
|
||||
#marker left, right, top, bottom
|
||||
hyperion.imageDrawLine(0, centerY, 0+markDepthX, centerY, markThick, markC[0], markC[1], markC[2])
|
||||
hyperion.imageDrawLine(int(hyperion.imageWidth()), centerY, int(hyperion.imageWidth())-markDepthX, centerY, markThick, markC[0], markC[1], markC[2])
|
||||
hyperion.imageDrawLine(centerX, 0, centerX, 0+markDepthY, markThick, markC[0], markC[1], markC[2])
|
||||
hyperion.imageDrawLine(centerX, int(hyperion.imageHeight()), centerX, int(hyperion.imageHeight())-markDepthY, markThick, markC[0], markC[1], markC[2])
|
||||
|
||||
hyperion.imageShow()
|
||||
time.sleep(0.5 )
|
||||
time.sleep(0.5)
|
@ -1,11 +1,15 @@
|
||||
{
|
||||
"name" : "Rainbow swirl fast",
|
||||
"script" : "rainbow-swirl.py",
|
||||
"script" : "swirl.py",
|
||||
"args" :
|
||||
{
|
||||
"rotation-time" : 4.0,
|
||||
"rotation-time" : 7.0,
|
||||
"center_x" : 0.5,
|
||||
"center_y" : 0.5,
|
||||
"reverse" : false
|
||||
"reverse" : false,
|
||||
"custom-colors":[],
|
||||
"random-center":false,
|
||||
"custom-colors2":[],
|
||||
"enable-second":false
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,15 @@
|
||||
{
|
||||
"name" : "Rainbow swirl",
|
||||
"script" : "rainbow-swirl.py",
|
||||
"script" : "swirl.py",
|
||||
"args" :
|
||||
{
|
||||
"rotation-time" : 20.0,
|
||||
"center_x" : 0.5,
|
||||
"center_y" : 0.5,
|
||||
"reverse" : false
|
||||
"reverse" : false,
|
||||
"custom-colors":[],
|
||||
"random-center":false,
|
||||
"custom-colors2":[],
|
||||
"enable-second":false
|
||||
}
|
||||
}
|
||||
|
@ -1,53 +0,0 @@
|
||||
import hyperion, time, math
|
||||
|
||||
# set minimum image size - must be done asap
|
||||
hyperion.imageMinSize(32,32)
|
||||
|
||||
# Get the parameters
|
||||
rotationTime = float(hyperion.args.get('rotation-time', 3.0))
|
||||
reverse = bool(hyperion.args.get('reverse', False))
|
||||
centerX = float(hyperion.args.get('center_x', 0.5))
|
||||
centerY = float(hyperion.args.get('center_y', 0.5))
|
||||
|
||||
minStepTime = float(hyperion.latchTime)/1000.0
|
||||
sleepTime = max(0.1, rotationTime) / 360
|
||||
angle = 0
|
||||
centerX = int(round(float(hyperion.imageWidth())*centerX))
|
||||
centerY = int(round(float(hyperion.imageHeight())*centerY))
|
||||
increment = -1 if reverse else 1
|
||||
|
||||
# adapt sleeptime to hardware
|
||||
if minStepTime > sleepTime:
|
||||
increment *= int(math.ceil(minStepTime / sleepTime))
|
||||
sleepTime = minStepTime
|
||||
|
||||
# table of stop colors for rainbow gradient, first is the position, next rgb, all values 0-255
|
||||
rainbowColors = bytearray([
|
||||
0 ,255,0 ,0, 255,
|
||||
25 ,255,230,0, 255,
|
||||
63 ,255,255,0, 255,
|
||||
100,0 ,255,0, 255,
|
||||
127,0 ,255,200, 255,
|
||||
159,0 ,255,255, 255,
|
||||
191,0 ,0 ,255, 255,
|
||||
224,255,0 ,255, 255,
|
||||
255,255,0 ,127, 255,
|
||||
#0, 255, 0, 0, 255,
|
||||
#42, 255, 255, 0, 255,
|
||||
#85, 0, 255, 0, 255,
|
||||
#128, 0, 255, 255, 255,
|
||||
#170, 0, 0, 255, 255,
|
||||
#212, 255, 0, 255, 255,
|
||||
#255, 255, 0, 0, 255,
|
||||
])
|
||||
|
||||
# effect loop
|
||||
while not hyperion.abort():
|
||||
angle += increment
|
||||
if angle > 360: angle=0
|
||||
if angle < 0: angle=360
|
||||
|
||||
hyperion.imageCanonicalGradient(centerX, centerY, angle, rainbowColors)
|
||||
|
||||
hyperion.imageShow()
|
||||
time.sleep(sleepTime)
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "candle.py",
|
||||
"title":"edt_eff_candle_header_title",
|
||||
"title":"edt_eff_candle_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"candles": {
|
||||
"type": "string",
|
||||
"title":"edt_eff_whichleds_title",
|
||||
"title":"edt_eff_whichleds",
|
||||
"enum" : ["all","all-together","list"],
|
||||
"default" : "all",
|
||||
"options" : {
|
||||
@ -16,13 +16,18 @@
|
||||
},
|
||||
"ledlist": {
|
||||
"type": "string",
|
||||
"title":"edt_eff_ledlist_title",
|
||||
"title":"edt_eff_ledlist",
|
||||
"default" : "1,11,21",
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"candles": "list"
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 2
|
||||
},
|
||||
"color": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_color_title",
|
||||
"title":"edt_eff_color",
|
||||
"format":"colorpicker",
|
||||
"default": [255,138,0],
|
||||
"items" : {
|
||||
@ -35,8 +40,8 @@
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"colorShift": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_colorshift_title",
|
||||
"type": "integer",
|
||||
"title":"edt_eff_colorshift",
|
||||
"default": 1,
|
||||
"minimum" : 0,
|
||||
"maximum": 30,
|
||||
@ -44,8 +49,8 @@
|
||||
"propertyOrder" : 4
|
||||
},
|
||||
"brightness": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_brightness_title",
|
||||
"type": "integer",
|
||||
"title":"edt_eff_brightness",
|
||||
"default": 100,
|
||||
"minimum" : 1,
|
||||
"maximum": 100,
|
||||
@ -55,7 +60,7 @@
|
||||
},
|
||||
"sleepTime": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_sleeptime_title",
|
||||
"title":"edt_eff_sleeptime",
|
||||
"default": 0.15,
|
||||
"minimum" : 0.01,
|
||||
"maximum": 1,
|
||||
|
@ -1,90 +0,0 @@
|
||||
{
|
||||
"type": "object",
|
||||
"script": "clock.py",
|
||||
"title": "edt_eff_clock_header_title",
|
||||
"required": true,
|
||||
"properties": {
|
||||
"offset": {
|
||||
"type": "integer",
|
||||
"title": "edt_eff_offset_title",
|
||||
"default": 0,
|
||||
"append": "edt_append_leds",
|
||||
"propertyOrder": 1
|
||||
},
|
||||
"hour-color": {
|
||||
"type": "array",
|
||||
"title": "edt_eff_colorHour_title",
|
||||
"format": "colorpicker",
|
||||
"default": [255, 0, 0],
|
||||
"items": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3,
|
||||
"propertyOrder": 2
|
||||
},
|
||||
"minute-color": {
|
||||
"type": "array",
|
||||
"title": "edt_eff_colorMinute_title",
|
||||
"format": "colorpicker",
|
||||
"default": [0, 255, 0],
|
||||
"items": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3,
|
||||
"propertyOrder": 3
|
||||
},
|
||||
"second-color": {
|
||||
"type": "array",
|
||||
"title": "edt_eff_colorSecond_title",
|
||||
"format": "colorpicker",
|
||||
"default": [0, 0, 255],
|
||||
"items": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3,
|
||||
"propertyOrder": 4
|
||||
},
|
||||
"hour-margin": {
|
||||
"type": "integer",
|
||||
"title": "edt_eff_hourMargin_title",
|
||||
"default": 2,
|
||||
"propertyOrder" : 5
|
||||
},
|
||||
"minute-margin": {
|
||||
"type": "integer",
|
||||
"title": "edt_eff_minuteMargin_title",
|
||||
"default": 1,
|
||||
"propertyOrder" : 6
|
||||
},
|
||||
"second-margin": {
|
||||
"type": "integer",
|
||||
"title": "edt_eff_secondMargin_title",
|
||||
"default": 0,
|
||||
"propertyOrder" : 7
|
||||
},
|
||||
"marker-color": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_colorMarker_title",
|
||||
"format":"colorpicker",
|
||||
"default": [255,255,255],
|
||||
"items" : {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3,
|
||||
"propertyOrder" : 8
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "fade.py",
|
||||
"title":"edt_eff_fade_header_title",
|
||||
"title":"edt_eff_fade_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"color-start": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_colorstart_title",
|
||||
"title":"edt_eff_colorstart",
|
||||
"format":"colorpicker",
|
||||
"default": [255,174,11],
|
||||
"items" : {
|
||||
@ -21,7 +21,7 @@
|
||||
},
|
||||
"color-start-time": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_colorstarttime_title",
|
||||
"title":"edt_eff_colorstarttime",
|
||||
"default": 1000,
|
||||
"minimum" : 0,
|
||||
"append" : "edt_append_ms",
|
||||
@ -29,7 +29,7 @@
|
||||
},
|
||||
"fade-in-time": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_fadeintime_title",
|
||||
"title":"edt_eff_fadeintime",
|
||||
"default": 2000,
|
||||
"minimum" : 0,
|
||||
"append" : "edt_append_ms",
|
||||
@ -37,7 +37,7 @@
|
||||
},
|
||||
"color-end": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_colorend_title",
|
||||
"title":"edt_eff_colorend",
|
||||
"format":"colorpicker",
|
||||
"default": [100,100,100],
|
||||
"items" : {
|
||||
@ -51,7 +51,7 @@
|
||||
},
|
||||
"color-end-time": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_colorendtime_title",
|
||||
"title":"edt_eff_colorendtime",
|
||||
"default": 1000,
|
||||
"minimum" : 0,
|
||||
"append" : "edt_append_ms",
|
||||
@ -59,7 +59,7 @@
|
||||
},
|
||||
"fade-out-time": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_fadeouttime_title",
|
||||
"title":"edt_eff_fadeouttime",
|
||||
"default": 2000,
|
||||
"minimum" : 0,
|
||||
"append" : "edt_append_ms",
|
||||
@ -67,13 +67,13 @@
|
||||
},
|
||||
"repeat-count": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_repeatcount_title",
|
||||
"title":"edt_eff_repeatcount",
|
||||
"default": 0,
|
||||
"propertyOrder" : 7
|
||||
},
|
||||
"maintain-end-color": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_maintain_end_color_title",
|
||||
"title":"edt_eff_maintain_end_color",
|
||||
"default": true,
|
||||
"propertyOrder" : 8
|
||||
}
|
||||
|
27
effects/schema/flag.schema.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "flag.py",
|
||||
"title":"edt_eff_flag_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"countries": {
|
||||
"type": "array",
|
||||
"title" : "edt_eff_countries",
|
||||
"uniqueItems": true,
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": ["de","at","fr","be","it","es","bg","ee","dk","fi","hu","ie","lv","lt","lu","mt","nl","pl","pt","ro","sl","se","ch"]
|
||||
},
|
||||
"propertyOrder" : 1
|
||||
},
|
||||
"switch-time": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_interval",
|
||||
"default": 5,
|
||||
"minimum" : 1,
|
||||
"append" : "edt_append_s",
|
||||
"propertyOrder" : 2
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "knight-rider.py",
|
||||
"title":"edt_eff_knightrider_header_title",
|
||||
"title":"edt_eff_knightrider_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"color": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_color_title",
|
||||
"title":"edt_eff_color",
|
||||
"format":"colorpicker",
|
||||
"default": [255,0,0],
|
||||
"items" : {
|
||||
@ -20,7 +20,7 @@
|
||||
},
|
||||
"speed": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_speed_title",
|
||||
"title":"edt_eff_speed",
|
||||
"default": 1.0,
|
||||
"minimum": 0.1,
|
||||
"step" : 0.1,
|
||||
@ -28,7 +28,7 @@
|
||||
},
|
||||
"fadeFactor": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_fadefactor_title",
|
||||
"title":"edt_eff_fadefactor",
|
||||
"default": 0.7,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 0.9,
|
||||
|
@ -1,14 +1,123 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "light-clock.py",
|
||||
"title":"edt_eff_lightclock_header_title",
|
||||
"title":"edt_eff_lightclock_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"hour-color": {
|
||||
"type": "array",
|
||||
"title": "edt_eff_colorHour",
|
||||
"format": "colorpicker",
|
||||
"default": [0, 0, 255],
|
||||
"items": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3,
|
||||
"propertyOrder": 1
|
||||
},
|
||||
"minute-color": {
|
||||
"type": "array",
|
||||
"title": "edt_eff_colorMinute",
|
||||
"format": "colorpicker",
|
||||
"default": [0, 255, 0],
|
||||
"items": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3,
|
||||
"propertyOrder": 2
|
||||
},
|
||||
"second-color": {
|
||||
"type": "array",
|
||||
"title": "edt_eff_colorSecond",
|
||||
"format": "colorpicker",
|
||||
"default": [255, 0, 0],
|
||||
"items": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3,
|
||||
"propertyOrder": 3
|
||||
},
|
||||
"background-color": {
|
||||
"type": "array",
|
||||
"title": "edt_eff_backgroundColor",
|
||||
"format": "colorpicker",
|
||||
"default": [0, 0, 0],
|
||||
"items": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3,
|
||||
"propertyOrder": 4
|
||||
},
|
||||
"show_seconds": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_showseconds_title",
|
||||
"title":"edt_eff_showseconds",
|
||||
"default": true,
|
||||
"propertyOrder" : 1
|
||||
"propertyOrder" : 5
|
||||
},
|
||||
"marker-enabled": {
|
||||
"type": "boolean",
|
||||
"title": "edt_eff_markerEnable",
|
||||
"default": false,
|
||||
"propertyOrder" : 6
|
||||
},
|
||||
"marker-depth": {
|
||||
"type": "integer",
|
||||
"title": "edt_eff_markerDepth",
|
||||
"default": 5,
|
||||
"minimum" : 1,
|
||||
"maximum" : 50,
|
||||
"append" : "edt_append_percent",
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"marker-enabled": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 7
|
||||
},
|
||||
"marker-width": {
|
||||
"type": "integer",
|
||||
"title": "edt_eff_markerWidth",
|
||||
"default": 5,
|
||||
"minimum" : 1,
|
||||
"maximum" : 25,
|
||||
"append" : "edt_append_percent",
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"marker-enabled": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 8
|
||||
},
|
||||
"marker-color": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_colorMarker",
|
||||
"format":"colorpicker",
|
||||
"default": [255,255,255],
|
||||
"items" : {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"marker-enabled": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 9
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "mood-blobs.py",
|
||||
"title":"edt_eff_moodblobs_header_title",
|
||||
"title":"edt_eff_moodblobs_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"color": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_color_title",
|
||||
"title":"edt_eff_color",
|
||||
"format":"colorpicker",
|
||||
"default": [255,0,0],
|
||||
"items" : {
|
||||
@ -20,14 +20,14 @@
|
||||
},
|
||||
"blobs": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_blobcount_title",
|
||||
"title":"edt_eff_blobcount",
|
||||
"default": 5,
|
||||
"minimum" : 1,
|
||||
"propertyOrder" : 2
|
||||
},
|
||||
"rotationTime": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_rotationtime_title",
|
||||
"title":"edt_eff_rotationtime",
|
||||
"default": 20.0,
|
||||
"minimum" : 1.0,
|
||||
"append" : "edt_append_s",
|
||||
@ -35,53 +35,68 @@
|
||||
},
|
||||
"hueChange": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_huechange_title",
|
||||
"title":"edt_eff_huechange",
|
||||
"default": 60.0,
|
||||
"minimum" : 1.0,
|
||||
"propertyOrder" : 4
|
||||
},
|
||||
"reverse": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_reversedirection_title",
|
||||
"title":"edt_eff_reversedirection",
|
||||
"default": false,
|
||||
"propertyOrder" : 5
|
||||
},
|
||||
"colorRandom": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_colorrandom_title",
|
||||
"title":"edt_eff_colorrandom",
|
||||
"default": false,
|
||||
"propertyOrder" : 6
|
||||
},
|
||||
"baseChange": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_basecolorchange_title",
|
||||
"title":"edt_eff_basecolorchange",
|
||||
"default": false,
|
||||
"propertyOrder" : 7
|
||||
},
|
||||
"baseColorRangeLeft": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_basecolorrangeleft_title",
|
||||
"title":"edt_eff_basecolorrangeleft",
|
||||
"default": 0.0,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 360.0,
|
||||
"append" : "edt_append_degree",
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"baseChange": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 9
|
||||
},
|
||||
"baseColorRangeRight": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_basecolorrangeright_title",
|
||||
"title":"edt_eff_basecolorrangeright",
|
||||
"default": 360.0,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 360.0,
|
||||
"append" : "edt_append_degree",
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"baseChange": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 10
|
||||
},
|
||||
"baseColorChangeRate": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_basecolorchangerate_title",
|
||||
"title":"edt_eff_basecolorchangerate",
|
||||
"default": 2.0,
|
||||
"minimum" : 0.0,
|
||||
"append" : "edt_append_sdegree",
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"baseChange": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 8
|
||||
}
|
||||
},
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "pacman.py",
|
||||
"title":"edt_eff_pacman_header_title",
|
||||
"title":"edt_eff_pacman_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"rotationTime": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_rotationtime_title",
|
||||
"title":"edt_eff_rotationtime",
|
||||
"default": 5,
|
||||
"step" : 0.1,
|
||||
"minimum": 1,
|
||||
@ -15,7 +15,7 @@
|
||||
},
|
||||
"margin-pos": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_margin_title",
|
||||
"title":"edt_eff_margin",
|
||||
"default": 1.0,
|
||||
"step" : 0.1,
|
||||
"minimum": 1.0,
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "police.py",
|
||||
"title":"edt_eff_police_header_title",
|
||||
"title":"edt_eff_police_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"color_one": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_colorone_title",
|
||||
"title":"edt_eff_colorone",
|
||||
"format":"colorpicker",
|
||||
"default": [255,0,0],
|
||||
"items" : {
|
||||
@ -20,7 +20,7 @@
|
||||
},
|
||||
"color_two": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_colortwo_title",
|
||||
"title":"edt_eff_colortwo",
|
||||
"format":"colorpicker",
|
||||
"default": [0,0,255],
|
||||
"items" : {
|
||||
@ -34,14 +34,14 @@
|
||||
},
|
||||
"colors_count": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_colorcount_title",
|
||||
"title":"edt_eff_colorcount",
|
||||
"default": 10,
|
||||
"minimum" : 0,
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"rotation-time": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_rotationtime_title",
|
||||
"title":"edt_eff_rotationtime",
|
||||
"default": 2.0,
|
||||
"minimum" : 0.1,
|
||||
"append" : "edt_append_s",
|
||||
@ -49,7 +49,7 @@
|
||||
},
|
||||
"reverse": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_reversedirection_title",
|
||||
"title":"edt_eff_reversedirection",
|
||||
"default": false,
|
||||
"propertyOrder" : 5
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "rainbow-mood.py",
|
||||
"title":"edt_eff_rainbowmood_header_title",
|
||||
"title":"edt_eff_rainbowmood_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"rotation-time": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_rotationtime_title",
|
||||
"title":"edt_eff_rotationtime",
|
||||
"default": 60.0,
|
||||
"minimum" : 1.0,
|
||||
"append" : "edt_append_s",
|
||||
@ -14,7 +14,7 @@
|
||||
},
|
||||
"brightness": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_brightness_title",
|
||||
"title":"edt_eff_brightness",
|
||||
"default": 100,
|
||||
"minimum" : 1,
|
||||
"maximum" : 100,
|
||||
@ -24,7 +24,7 @@
|
||||
},
|
||||
"saturation": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_saturation_title",
|
||||
"title":"edt_eff_saturation",
|
||||
"default": 100,
|
||||
"minimum" : 1,
|
||||
"maximum" : 100,
|
||||
@ -34,7 +34,7 @@
|
||||
},
|
||||
"reverse": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_reversedirection_title",
|
||||
"title":"edt_eff_reversedirection",
|
||||
"default": false,
|
||||
"propertyOrder" : 4
|
||||
}
|
||||
|
@ -1,41 +0,0 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "rainbow-swirl.py",
|
||||
"title":"edt_eff_rainbowswirl_header_title",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"rotation-time": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_rotationtime_title",
|
||||
"default": 10.0,
|
||||
"minimum" : 0.1,
|
||||
"append" : "edt_append_s",
|
||||
"propertyOrder" : 1
|
||||
},
|
||||
"center_x": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_centerx_title",
|
||||
"default": 0.5,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 2.0,
|
||||
"step" : 0.1,
|
||||
"propertyOrder" : 2
|
||||
},
|
||||
"center_y": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_centery_title",
|
||||
"default": 0.5,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 2.0,
|
||||
"step" : 0.1,
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"reverse": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_reversedirection_title",
|
||||
"default": false,
|
||||
"propertyOrder" : 4
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "random.py",
|
||||
"title":"edt_eff_random_header_title",
|
||||
"title":"edt_eff_random_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"speed": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_speed_title",
|
||||
"title":"edt_eff_speed",
|
||||
"default": 1000,
|
||||
"minimum" : 10,
|
||||
"append" : "edt_append_ms",
|
||||
@ -14,7 +14,7 @@
|
||||
},
|
||||
"saturation": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_saturation_title",
|
||||
"title":"edt_eff_saturation",
|
||||
"default": 1.0,
|
||||
"minimum" : 0.1,
|
||||
"maximum" : 1.0,
|
||||
|
@ -1,19 +1,19 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "running_dots.py",
|
||||
"title":"edt_eff_runningdots_header_title",
|
||||
"title":"edt_eff_runningdots_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"speed": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_speed_title",
|
||||
"title":"edt_eff_speed",
|
||||
"default": 1.5,
|
||||
"minimum" : 0.1,
|
||||
"propertyOrder" : 1
|
||||
},
|
||||
"colorLevel": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_colorevel_title",
|
||||
"title":"edt_eff_colorevel",
|
||||
"default": 220,
|
||||
"minimium" : 0,
|
||||
"maximum" : 255,
|
||||
@ -21,7 +21,7 @@
|
||||
},
|
||||
"whiteLevel": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_whitelevel_title",
|
||||
"title":"edt_eff_whitelevel",
|
||||
"default": 0,
|
||||
"minimium" : 0,
|
||||
"maximum" : 254,
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "shutdown.py",
|
||||
"title":"edt_eff_systemshutdown_header_title",
|
||||
"title":"edt_eff_systemshutdown_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"speed": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_speed_title",
|
||||
"title":"edt_eff_speed",
|
||||
"default": 1.0,
|
||||
"minimum" : 0.3,
|
||||
"step" : 0.1,
|
||||
@ -14,7 +14,7 @@
|
||||
},
|
||||
"alarm-color": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_alarmcolor_title",
|
||||
"title":"edt_eff_alarmcolor",
|
||||
"format":"colorpicker",
|
||||
"default": [255,0,0],
|
||||
"items" : {
|
||||
@ -28,7 +28,7 @@
|
||||
},
|
||||
"post-color": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_postcolor_title",
|
||||
"title":"edt_eff_postcolor",
|
||||
"format" : "colorpicker",
|
||||
"default": [255,174,11],
|
||||
"items" : {
|
||||
@ -42,19 +42,19 @@
|
||||
},
|
||||
"initial-blink": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_initial_blink_title",
|
||||
"title":"edt_eff_initial_blink",
|
||||
"default": true,
|
||||
"propertyOrder" : 4
|
||||
},
|
||||
"set-post-color": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_set_post_color_title",
|
||||
"title":"edt_eff_set_post_color",
|
||||
"default": true,
|
||||
"propertyOrder" : 5
|
||||
},
|
||||
"shutdown-enabled": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_enableshutdown_title",
|
||||
"title":"edt_eff_enableshutdown",
|
||||
"default": false,
|
||||
"propertyOrder" : 6
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "snake.py",
|
||||
"title":"edt_eff_snake_header_title",
|
||||
"title":"edt_eff_snake_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"color": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_color_title",
|
||||
"title":"edt_eff_color",
|
||||
"format":"colorpicker",
|
||||
"default": [255,0,0],
|
||||
"items" : {
|
||||
@ -20,7 +20,7 @@
|
||||
},
|
||||
"rotation-time": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_rotationtime_title",
|
||||
"title":"edt_eff_rotationtime",
|
||||
"default": 12.0,
|
||||
"minimum" : 0.1,
|
||||
"append" : "edt_append_s",
|
||||
@ -28,7 +28,7 @@
|
||||
},
|
||||
"percentage": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_length_title",
|
||||
"title":"edt_eff_length",
|
||||
"default": 10,
|
||||
"append" : "edt_append_percent",
|
||||
"propertyOrder" : 3
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "sparks.py",
|
||||
"title":"edt_eff_sparks_header_title",
|
||||
"title":"edt_eff_sparks_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"color": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_color_title",
|
||||
"title":"edt_eff_color",
|
||||
"format":"colorpicker",
|
||||
"default": [255,0,0],
|
||||
"items" : {
|
||||
@ -16,11 +16,16 @@
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"random-color": false
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 1
|
||||
},
|
||||
"rotation-time": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_rotationtime_title",
|
||||
"title":"edt_eff_rotationtime",
|
||||
"default": 2.0,
|
||||
"minimum" : 0.1,
|
||||
"append" : "edt_append_s",
|
||||
@ -28,40 +33,36 @@
|
||||
},
|
||||
"sleep-time": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_sleeptime_title",
|
||||
"title":"edt_eff_sleeptime",
|
||||
"default": 0.05,
|
||||
"minimum" : 0.01,
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"brightness": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_brightness_title",
|
||||
"type": "integer",
|
||||
"title":"edt_eff_brightness",
|
||||
"default": 100,
|
||||
"minimum" : 1,
|
||||
"minimum" : 0,
|
||||
"maximum" : 100,
|
||||
"step" : 10,
|
||||
"append" : "edt_append_percent",
|
||||
"propertyOrder" : 4
|
||||
},
|
||||
"saturation": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_saturation_title",
|
||||
"type": "integer",
|
||||
"title":"edt_eff_saturation",
|
||||
"default": 100,
|
||||
"minimum" : 1,
|
||||
"minimum" : 0,
|
||||
"maximum" : 100,
|
||||
"step" : 10,
|
||||
"append" : "edt_append_percent",
|
||||
"propertyOrder" : 5
|
||||
},
|
||||
"reverse": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_reversedirection_title",
|
||||
"default": false,
|
||||
"propertyOrder" : 6
|
||||
},
|
||||
"random-color": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_colorrandom_title",
|
||||
"title":"edt_eff_colorrandom",
|
||||
"default": false,
|
||||
"propertyOrder" : 7
|
||||
"propertyOrder" : 6
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
151
effects/schema/swirl.schema.json
Normal file
@ -0,0 +1,151 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "swirl.py",
|
||||
"title":"edt_eff_swirl_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"rotation-time": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_rotationtime",
|
||||
"default": 10.0,
|
||||
"minimum" : 0.1,
|
||||
"append" : "edt_append_s",
|
||||
"propertyOrder" : 1
|
||||
},
|
||||
"random-center": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_randomCenter",
|
||||
"default": false,
|
||||
"propertyOrder" : 2
|
||||
},
|
||||
"center_x": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_centerx",
|
||||
"default": 0.5,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 2.0,
|
||||
"step" : 0.1,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"random-center": false
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"center_y": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_centery",
|
||||
"default": 0.5,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 2.0,
|
||||
"step" : 0.1,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"random-center": false
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 4
|
||||
},
|
||||
"reverse": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_reversedirection",
|
||||
"default": false,
|
||||
"propertyOrder" : 5
|
||||
},
|
||||
"custom-colors": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_customColor",
|
||||
"items" : {
|
||||
"type": "array",
|
||||
"title" : "edt_eff_color",
|
||||
"format":"colorpicker",
|
||||
"default" : [255,0,0],
|
||||
"items":{
|
||||
"type":"integer",
|
||||
"minimum": 0,
|
||||
"maximum": 255
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3
|
||||
},
|
||||
"propertyOrder" : 6
|
||||
},
|
||||
"enable-second": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_enableSecondSwirl",
|
||||
"default": false,
|
||||
"propertyOrder" : 7
|
||||
},
|
||||
"random-center2": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_randomCenter",
|
||||
"default": false,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"enable-second": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 8
|
||||
},
|
||||
"center_x2": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_centerx",
|
||||
"default": 0.5,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 2.0,
|
||||
"step" : 0.1,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"enable-second": true,
|
||||
"random-center2": false
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 9
|
||||
},
|
||||
"center_y2": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_centery",
|
||||
"default": 0.5,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 2.0,
|
||||
"step" : 0.1,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"enable-second": true,
|
||||
"random-center2": false
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 10
|
||||
},
|
||||
"reverse2": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_reversedirection",
|
||||
"default": true,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"enable-second": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 11
|
||||
},
|
||||
"custom-colors2": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_customColor",
|
||||
"items" : {
|
||||
"type": "array",
|
||||
"title" : "edt_eff_color",
|
||||
"format":"colorpickerRGBA",
|
||||
"default" : [255,0,0,0.5],
|
||||
"minItems": 4,
|
||||
"maxItems": 4
|
||||
},
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"enable-second": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 12
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "traces.py",
|
||||
"title":"edt_eff_traces_header_title",
|
||||
"title":"edt_eff_traces_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"speed": {
|
||||
"type": "number",
|
||||
"title":"edt_eff_speed_title",
|
||||
"title":"edt_eff_speed",
|
||||
"default": 1.0,
|
||||
"minimum" : 0.1,
|
||||
"propertyOrder" : 1
|
||||
|
@ -1,40 +1,40 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "trails.py",
|
||||
"title":"edt_eff_trails_header_title",
|
||||
"title":"edt_eff_trails_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"min_len": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_min_len_title",
|
||||
"title":"edt_eff_min_len",
|
||||
"default": 2,
|
||||
"minimum" : 1,
|
||||
"propertyOrder" : 1
|
||||
},
|
||||
"max_len": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_max_len_title",
|
||||
"title":"edt_eff_max_len",
|
||||
"default": 7,
|
||||
"minimum" : 1,
|
||||
"propertyOrder" : 2
|
||||
},
|
||||
"height": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_height_title",
|
||||
"title":"edt_eff_height",
|
||||
"default": 8,
|
||||
"minimum" : 1,
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"trails": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_count_title",
|
||||
"title":"edt_eff_count",
|
||||
"default": 3,
|
||||
"minimum" : 1,
|
||||
"propertyOrder" : 4
|
||||
},
|
||||
"speed": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_speed_title",
|
||||
"title":"edt_eff_speed",
|
||||
"default": 100,
|
||||
"minimum" : 10,
|
||||
"append" : "edt_append_ms",
|
||||
@ -42,13 +42,13 @@
|
||||
},
|
||||
"random": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_colorrandom_title",
|
||||
"title":"edt_eff_colorrandom",
|
||||
"default": false,
|
||||
"propertyOrder" : 6
|
||||
},
|
||||
"color": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_color_title",
|
||||
"title":"edt_eff_color",
|
||||
"format":"colorpicker",
|
||||
"default": [255,0,0],
|
||||
"items" : {
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"type":"object",
|
||||
"script" : "x-mas.py",
|
||||
"title":"edt_eff_x-mas_header_title",
|
||||
"title":"edt_eff_x-mas_header",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"sleepTime": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_sleeptime_title",
|
||||
"title":"edt_eff_sleeptime",
|
||||
"default": 1000,
|
||||
"minimum" : 100,
|
||||
"append" : "edt_append_ms",
|
||||
@ -14,14 +14,14 @@
|
||||
},
|
||||
"length": {
|
||||
"type": "integer",
|
||||
"title":"edt_eff_length_title",
|
||||
"title":"edt_eff_length",
|
||||
"default": 1,
|
||||
"minimum" : 1,
|
||||
"propertyOrder" : 2
|
||||
},
|
||||
"color1": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_color_title",
|
||||
"title":"edt_eff_color",
|
||||
"format":"colorpicker",
|
||||
"default": [255,255,255],
|
||||
"items" : {
|
||||
@ -35,7 +35,7 @@
|
||||
},
|
||||
"color2": {
|
||||
"type": "array",
|
||||
"title":"edt_eff_color_title",
|
||||
"title":"edt_eff_color",
|
||||
"format":"colorpicker",
|
||||
"default": [255,0,0],
|
||||
"items" : {
|
||||
|
@ -1,14 +0,0 @@
|
||||
{
|
||||
"name" : "Sparks Color",
|
||||
"script" : "sparks.py",
|
||||
"args" :
|
||||
{
|
||||
"rotation-time" : 3.0,
|
||||
"sleep-time" : 0.05,
|
||||
"brightness" : 1.0,
|
||||
"saturation" : 1.0,
|
||||
"reverse" : false,
|
||||
"color" : [255,255,255],
|
||||
"random-color" : true
|
||||
}
|
||||
}
|
@ -7,7 +7,6 @@
|
||||
"sleep-time" : 0.05,
|
||||
"brightness" : 100,
|
||||
"saturation" : 100,
|
||||
"reverse" : false,
|
||||
"color" : [255,255,255],
|
||||
"random-color" : false
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ rotationTime = float(hyperion.args.get('rotation-time', 3.0))
|
||||
sleepTime = float(hyperion.args.get('sleep-time', 0.05))
|
||||
brightness = float(hyperion.args.get('brightness', 100))/100.0
|
||||
saturation = float(hyperion.args.get('saturation', 100))/100.0
|
||||
reverse = bool(hyperion.args.get('reverse', False))
|
||||
color = list(hyperion.args.get('color', (255,255,255)))
|
||||
randomColor = bool(hyperion.args.get('random-color', False))
|
||||
|
||||
@ -24,7 +23,7 @@ while not hyperion.abort():
|
||||
if random.random() < 0.005:
|
||||
|
||||
if randomColor:
|
||||
rgb = colorsys.hsv_to_rgb(random.random(), 1, 1)
|
||||
rgb = colorsys.hsv_to_rgb(random.random(), saturation, brightness)
|
||||
for n in range(3):
|
||||
color[n] = int(rgb[n]*255)
|
||||
|
||||
|
148
effects/swirl.py
Normal file
@ -0,0 +1,148 @@
|
||||
import hyperion, time, math, random
|
||||
|
||||
# Convert x/y (0.0 - 1.0) point to proper int values based on Hyperion image width/height
|
||||
# Or get a random value
|
||||
# @param bool rand Randomize point if true
|
||||
# @param float x Point at the x axis between 0.0-1.0
|
||||
# @param float y Point at the y axis between 0.0-1.0
|
||||
# @return Tuple with (x,y) as Integer
|
||||
def getPoint(rand = True ,x = 0.5, y = 0.5):
|
||||
if rand:
|
||||
x = random.uniform(0.0, 1.0)
|
||||
y = random.uniform(0.0, 1.0)
|
||||
x = int(round(x*hyperion.imageWidth()))
|
||||
y = int(round(y*hyperion.imageHeight()))
|
||||
return (x,y)
|
||||
|
||||
# Returns the required sleep time for a interval function based on rotationtime and steps
|
||||
# Adapts also to led device latchTime if required
|
||||
# @param float rt RotationTime in seconds (time for one ration, based on steps)
|
||||
# @param int steps The steps it should calc the rotation time
|
||||
# @return Tuple with (x,y) as Integer
|
||||
def getSTime(rt, steps = 360):
|
||||
rt = float(rt)
|
||||
sleepTime = max(0.1, rt) / steps
|
||||
|
||||
# adapt sleeptime to hardware
|
||||
minStepTime= float(hyperion.latchTime)/1000.0
|
||||
if minStepTime > sleepTime:
|
||||
sleepTime = minStepTime
|
||||
return sleepTime
|
||||
|
||||
# Creates a PRGBA bytearray gradient based on provided colors (RGB or RGBA (0-255, 0-1 for alpha)), the color stop positions are calculated based on color count. Requires at least 2 colors!
|
||||
# @param tuple cc Colors in a tuple of RGB or RGBA
|
||||
# @param bool closeCircle If True use last color as first color
|
||||
# @return bytearray A bytearray of RGBA for hyperion.image*Gradient functions
|
||||
def buildGradient(cc, closeCircle = True):
|
||||
if len(cc) > 1:
|
||||
withAlpha = False
|
||||
posfac = int(255/len(cc))
|
||||
ba = bytearray()
|
||||
pos = 0
|
||||
if len(cc[0]) == 4:
|
||||
withAlpha = True
|
||||
|
||||
for c in cc:
|
||||
if withAlpha:
|
||||
alpha = int(c[3]*255)
|
||||
else:
|
||||
alpha = 255
|
||||
pos += posfac
|
||||
ba += bytearray([pos,c[0],c[1],c[2],alpha])
|
||||
|
||||
if closeCircle:
|
||||
# last color as first color
|
||||
lC = cc[-1]
|
||||
if withAlpha:
|
||||
alpha = int(lC[3]*255)
|
||||
else:
|
||||
alpha = 255
|
||||
ba += bytearray([0,lC[0],lC[1],lC[2],alpha])
|
||||
|
||||
return ba
|
||||
|
||||
def rotateAngle( increment = 1):
|
||||
global angle
|
||||
angle += increment
|
||||
if angle > 360: angle=0
|
||||
if angle < 0: angle=360
|
||||
return angle
|
||||
|
||||
def rotateAngle2( increment = 1):
|
||||
global angle2
|
||||
angle2 += increment
|
||||
if angle2 > 360: angle2=0
|
||||
if angle2 < 0: angle2=360
|
||||
return angle2
|
||||
|
||||
# set minimum image size - must be done asap
|
||||
hyperion.imageMinSize(64,64)
|
||||
iW = hyperion.imageWidth()
|
||||
iH = hyperion.imageHeight()
|
||||
|
||||
# Get the parameters
|
||||
rotationTime = float(hyperion.args.get('rotation-time', 10.0))
|
||||
reverse = bool(hyperion.args.get('reverse', False))
|
||||
centerX = float(hyperion.args.get('center_x', 0.5))
|
||||
centerY = float(hyperion.args.get('center_y', 0.5))
|
||||
randomCenter = bool(hyperion.args.get('random-center', False))
|
||||
custColors = hyperion.args.get('custom-colors', ((255,0,0),(0,255,0),(0,0,255)))
|
||||
|
||||
enableSecond = bool(hyperion.args.get('enable-second', False))
|
||||
#rotationTime2 = float(hyperion.args.get('rotation-time2', 5.0))
|
||||
reverse2 = bool(hyperion.args.get('reverse2', True))
|
||||
centerX2 = float(hyperion.args.get('center_x2', 0.5))
|
||||
centerY2 = float(hyperion.args.get('center_y2', 0.5))
|
||||
randomCenter2 = bool(hyperion.args.get('random-center2', False))
|
||||
custColors2 = hyperion.args.get('custom-colors2', ((255,255,255,0),(0,255,255,0),(255,255,255,1),(0,255,255,0),(0,255,255,0),(0,255,255,0),(255,255,255,1),(0,255,255,0),(0,255,255,0),(0,255,255,0),(255,255,255,1),(0,255,255,0)))
|
||||
|
||||
# process parameters
|
||||
pointS1 = getPoint(randomCenter ,centerX, centerY)
|
||||
pointS2 = getPoint(randomCenter2 ,centerX2, centerY2)
|
||||
sleepTime = getSTime(rotationTime)
|
||||
#sleepTime2 = getSTime(rotationTime2)
|
||||
angle = 0
|
||||
angle2 = 0
|
||||
S2 = False
|
||||
|
||||
increment = -1 if reverse else 1
|
||||
increment2 = -1 if reverse2 else 1
|
||||
|
||||
if len(custColors) > 1:
|
||||
baS1 = buildGradient(custColors)
|
||||
else:
|
||||
baS1 = bytearray([
|
||||
0 ,255,0 ,0, 255,
|
||||
25 ,255,230,0, 255,
|
||||
63 ,255,255,0, 255,
|
||||
100,0 ,255,0, 255,
|
||||
127,0 ,255,200, 255,
|
||||
159,0 ,255,255, 255,
|
||||
191,0 ,0 ,255, 255,
|
||||
224,255,0 ,255, 255,
|
||||
255,255,0 ,127, 255,
|
||||
])
|
||||
|
||||
# check if the second swirl should be build
|
||||
if enableSecond and len(custColors2) > 1:
|
||||
S2 = True
|
||||
baS2 = buildGradient(custColors2)
|
||||
|
||||
# effect loop
|
||||
while not hyperion.abort():
|
||||
angle += increment
|
||||
if angle > 360: angle=0
|
||||
if angle < 0: angle=360
|
||||
|
||||
angle2 += increment2
|
||||
if angle2 > 360: angle2=0
|
||||
if angle2 < 0: angle2=360
|
||||
|
||||
hyperion.imageConicalGradient(pointS1[0], pointS1[1], angle, baS1)
|
||||
if S2:
|
||||
hyperion.imageConicalGradient(pointS2[0], pointS2[1], angle2, baS2)
|
||||
|
||||
hyperion.imageShow()
|
||||
time.sleep(sleepTime)
|
||||
|
||||
|
@ -5,12 +5,13 @@ import random
|
||||
|
||||
min_len = int(hyperion.args.get('min_len', 3))
|
||||
max_len = int(hyperion.args.get('max_len', 3))
|
||||
height = int(hyperion.args.get('height', 8))
|
||||
#iHeight = int(hyperion.args.get('iHeight', 8))
|
||||
trails = int(hyperion.args.get('int', 8))
|
||||
sleepTime = float(hyperion.args.get('speed', 1)) / 1000.0
|
||||
color = list(hyperion.args.get('color', (255,255,255)))
|
||||
randomise = bool(hyperion.args.get('random', False))
|
||||
whidth = hyperion.ledCount / height
|
||||
iWidth = hyperion.imageWidth()
|
||||
iHeight = hyperion.imageHeight()
|
||||
|
||||
class trail:
|
||||
def __init__(self):
|
||||
@ -48,17 +49,17 @@ for i in range(trails):
|
||||
r = {'exec': trail()}
|
||||
|
||||
if randomise:
|
||||
col = (random.uniform(0.1, 1.0), random.uniform(0.1, 1.0), random.uniform(0.1, 1.0))
|
||||
col = (random.uniform(0.0, 1.0),1,1)
|
||||
else:
|
||||
col = colorsys.rgb_to_hsv(color[0]/255.0, color[1]/255.0, color[2]/255.0)
|
||||
|
||||
r['exec'].start(
|
||||
random.randint(0, whidth),
|
||||
random.randint(0, height),
|
||||
random.randint(0, iWidth),
|
||||
random.randint(0, iHeight),
|
||||
random.uniform(0.2, 0.8),
|
||||
col,
|
||||
random.randint(min_len, max_len),
|
||||
height
|
||||
iHeight
|
||||
)
|
||||
tr.append(r)
|
||||
|
||||
@ -70,21 +71,21 @@ while not hyperion.abort():
|
||||
r['x'], r['data'], c = r['exec'].getdata()
|
||||
if c:
|
||||
if randomise:
|
||||
col = (random.uniform(0.1, 1.0), random.uniform(0.1, 1.0), random.uniform(0.1, 1.0))
|
||||
col = (random.uniform(0.0, 1.0),1,1)
|
||||
else:
|
||||
col = colorsys.rgb_to_hsv(color[0]/255.0, color[1]/255.0, color[2]/255.0)
|
||||
|
||||
r['exec'].start(
|
||||
random.randint(0, whidth),
|
||||
random.randint(0, height),
|
||||
random.randint(0, iWidth),
|
||||
random.randint(0, iHeight),
|
||||
random.uniform(0.2, 0.8),
|
||||
col,
|
||||
random.randint(min_len, max_len),
|
||||
height
|
||||
iHeight
|
||||
)
|
||||
|
||||
for y in range(0, height):
|
||||
for x in range(0, whidth):
|
||||
for y in range(0, iHeight):
|
||||
for x in range(0, iWidth):
|
||||
for r in tr:
|
||||
if x == r['x']:
|
||||
led = bytearray(r['data'][y])
|
||||
@ -92,6 +93,6 @@ while not hyperion.abort():
|
||||
led = bytearray((0,0,0))
|
||||
ledData += led
|
||||
|
||||
hyperion.setImage(whidth,height,ledData)
|
||||
hyperion.setImage(iWidth,iHeight,ledData)
|
||||
time.sleep(sleepTime)
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include <QJsonValue>
|
||||
#include <QJsonArray>
|
||||
#include <QTimer>
|
||||
#include <QFileSystemWatcher>
|
||||
|
||||
// hyperion-utils includes
|
||||
#include <utils/Image.h>
|
||||
@ -329,8 +330,8 @@ private slots:
|
||||
void bonjourRecordResolved(const QHostInfo &hostInfo, int port);
|
||||
void bonjourResolve();
|
||||
|
||||
/// check for configWriteable and modified changes, called by _cTimer timeout()
|
||||
void checkConfigState();
|
||||
/// check for configWriteable and modified changes, called by _fsWatcher or fallback _cTimer
|
||||
void checkConfigState(QString cfile = NULL);
|
||||
|
||||
private:
|
||||
|
||||
@ -411,7 +412,8 @@ private:
|
||||
BonjourRegister _hyperionSessions;
|
||||
QString _bonjourCurrentServiceToResolve;
|
||||
|
||||
/// Interval timer to check config write and mod
|
||||
/// Observe filesystem changes (_configFile), if failed use Timer
|
||||
QFileSystemWatcher _fsWatcher;
|
||||
QTimer _cTimer;
|
||||
|
||||
/// holds the prev states of configWriteable and modified
|
||||
|
@ -26,17 +26,25 @@ PyMethodDef Effect::effectMethods[] = {
|
||||
{"setImage" , Effect::wrapSetImage , METH_VARARGS, "Set a new image to process and determine new led colors."},
|
||||
{"abort" , Effect::wrapAbort , METH_NOARGS, "Check if the effect should abort execution."},
|
||||
{"imageShow" , Effect::wrapImageShow , METH_VARARGS, "set current effect image to hyperion core."},
|
||||
{"imageCanonicalGradient", Effect::wrapImageCanonicalGradient, METH_VARARGS, ""},
|
||||
{"imageLinearGradient" , Effect::wrapImageLinearGradient , METH_VARARGS, ""},
|
||||
{"imageConicalGradient" , Effect::wrapImageConicalGradient , METH_VARARGS, ""},
|
||||
{"imageRadialGradient" , Effect::wrapImageRadialGradient , METH_VARARGS, ""},
|
||||
{"imageSolidFill" , Effect::wrapImageSolidFill , METH_VARARGS, ""},
|
||||
{"imageDrawLine" , Effect::wrapImageDrawLine , METH_VARARGS, ""},
|
||||
{"imageDrawPoint" , Effect::wrapImageDrawPoint , METH_VARARGS, ""},
|
||||
{"imageDrawRect" , Effect::wrapImageDrawRect , METH_VARARGS, ""},
|
||||
{"imageDrawPolygon" , Effect::wrapImageDrawPolygon , METH_VARARGS, ""},
|
||||
{"imageDrawPie" , Effect::wrapImageDrawPie , METH_VARARGS, ""},
|
||||
{"imageSetPixel" , Effect::wrapImageSetPixel , METH_VARARGS, "set pixel color of image"},
|
||||
{"imageGetPixel" , Effect::wrapImageGetPixel , METH_VARARGS, "get pixel color of image"},
|
||||
{"imageSave" , Effect::wrapImageSave , METH_NOARGS, "adds a new background image"},
|
||||
{"imageMinSize" , Effect::wrapImageMinSize , METH_VARARGS, "sets minimal dimension of background image"},
|
||||
{"imageMinSize" , Effect::wrapImageMinSize , METH_VARARGS, "sets minimal dimension of background image"},
|
||||
{"imageWidth" , Effect::wrapImageWidth , METH_NOARGS, "gets image width"},
|
||||
{"imageHeight" , Effect::wrapImageHeight , METH_NOARGS, "gets image height"},
|
||||
{"imageCRotate" , Effect::wrapImageCRotate , METH_VARARGS, "rotate the coordinate system by given angle"},
|
||||
{"imageCOffset" , Effect::wrapImageCOffset , METH_VARARGS, "Add offset to the coordinate system"},
|
||||
{"imageCShear" , Effect::wrapImageCShear , METH_VARARGS, "Shear of coordinate system by the given horizontal/vertical axis"},
|
||||
{"imageResetT" , Effect::wrapImageResetT , METH_NOARGS, "Resets all coords modifications (rotate,offset,shear)"},
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
@ -224,6 +232,7 @@ PyObject *Effect::json2python(const QJsonValue &jsonData) const
|
||||
for (QJsonArray::iterator i = arrayData.begin(); i != arrayData.end(); ++i, ++index)
|
||||
{
|
||||
PyObject * obj = json2python(*i);
|
||||
Py_INCREF(obj);
|
||||
PyList_SetItem(list, index, obj);
|
||||
Py_XDECREF(obj);
|
||||
}
|
||||
@ -452,8 +461,76 @@ PyObject* Effect::wrapImageShow(PyObject *self, PyObject *args)
|
||||
return Py_BuildValue("");
|
||||
}
|
||||
|
||||
PyObject* Effect::wrapImageLinearGradient(PyObject *self, PyObject *args)
|
||||
{
|
||||
Effect * effect = getEffect();
|
||||
|
||||
PyObject* Effect::wrapImageCanonicalGradient(PyObject *self, PyObject *args)
|
||||
int argCount = PyTuple_Size(args);
|
||||
PyObject * bytearray = nullptr;
|
||||
int startRX = 0;
|
||||
int startRY = 0;
|
||||
int startX = 0;
|
||||
int startY = 0;
|
||||
int endX, width = effect->_imageSize.width();
|
||||
int endY, height = effect->_imageSize.height();
|
||||
int spread = 0;
|
||||
|
||||
bool argsOK = false;
|
||||
|
||||
if ( argCount == 10 && PyArg_ParseTuple(args, "iiiiiiiiOi", &startRX, &startRY, &width, &height, &startX, &startY, &endX, &endY, &bytearray, &spread) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
if ( argCount == 6 && PyArg_ParseTuple(args, "iiiiOi", &startX, &startY, &endX, &endY, &bytearray, &spread) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
|
||||
if (argsOK)
|
||||
{
|
||||
if (PyByteArray_Check(bytearray))
|
||||
{
|
||||
const int length = PyByteArray_Size(bytearray);
|
||||
const unsigned arrayItemLength = 5;
|
||||
if (length % arrayItemLength == 0)
|
||||
{
|
||||
QRect myQRect(startRX,startRY,width,height);
|
||||
QLinearGradient gradient(QPoint(startX,startY), QPoint(endX,endY));
|
||||
char * data = PyByteArray_AS_STRING(bytearray);
|
||||
|
||||
for (int idx=0; idx<length; idx+=arrayItemLength)
|
||||
{
|
||||
gradient.setColorAt(
|
||||
((uint8_t)data[idx])/255.0,
|
||||
QColor(
|
||||
(uint8_t)(data[idx+1]),
|
||||
(uint8_t)(data[idx+2]),
|
||||
(uint8_t)(data[idx+3]),
|
||||
(uint8_t)(data[idx+4])
|
||||
));
|
||||
}
|
||||
|
||||
gradient.setSpread(static_cast<QGradient::Spread>(spread));
|
||||
effect->_painter->fillRect(myQRect, gradient);
|
||||
|
||||
return Py_BuildValue("");
|
||||
}
|
||||
else
|
||||
{
|
||||
PyErr_SetString(PyExc_RuntimeError, "Length of bytearray argument should multiple of 5");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
PyErr_SetString(PyExc_RuntimeError, "No bytearray properly defined");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PyObject* Effect::wrapImageConicalGradient(PyObject *self, PyObject *args)
|
||||
{
|
||||
Effect * effect = getEffect();
|
||||
|
||||
@ -527,7 +604,7 @@ PyObject* Effect::wrapImageRadialGradient(PyObject *self, PyObject *args)
|
||||
|
||||
int argCount = PyTuple_Size(args);
|
||||
PyObject * bytearray = nullptr;
|
||||
int centerX, centerY, radius, focalX, focalY, focalRadius;
|
||||
int centerX, centerY, radius, focalX, focalY, focalRadius, spread;
|
||||
int startX = 0;
|
||||
int startY = 0;
|
||||
int width = effect->_imageSize.width();
|
||||
@ -535,22 +612,22 @@ PyObject* Effect::wrapImageRadialGradient(PyObject *self, PyObject *args)
|
||||
|
||||
bool argsOK = false;
|
||||
|
||||
if ( argCount == 11 && PyArg_ParseTuple(args, "iiiiiiiiiiO", &startX, &startY, &width, &height, ¢erX, ¢erY, &radius, &focalX, &focalY, &focalRadius, &bytearray) )
|
||||
if ( argCount == 12 && PyArg_ParseTuple(args, "iiiiiiiiiiOi", &startX, &startY, &width, &height, ¢erX, ¢erY, &radius, &focalX, &focalY, &focalRadius, &bytearray, &spread) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
if ( argCount == 8 && PyArg_ParseTuple(args, "iiiiiiiO", &startX, &startY, &width, &height, ¢erX, ¢erY, &radius, &bytearray) )
|
||||
if ( argCount == 9 && PyArg_ParseTuple(args, "iiiiiiiOi", &startX, &startY, &width, &height, ¢erX, ¢erY, &radius, &bytearray, &spread) )
|
||||
{
|
||||
argsOK = true;
|
||||
focalX = centerX;
|
||||
focalY = centerY;
|
||||
focalRadius = radius;
|
||||
}
|
||||
if ( argCount == 7 && PyArg_ParseTuple(args, "iiiiiiO", ¢erX, ¢erY, &radius, &focalX, &focalY, &focalRadius, &bytearray) )
|
||||
if ( argCount == 8 && PyArg_ParseTuple(args, "iiiiiiOi", ¢erX, ¢erY, &radius, &focalX, &focalY, &focalRadius, &bytearray, &spread) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
if ( argCount == 4 && PyArg_ParseTuple(args, "iiiO", ¢erX, ¢erY, &radius, &bytearray) )
|
||||
if ( argCount == 5 && PyArg_ParseTuple(args, "iiiOi", ¢erX, ¢erY, &radius, &bytearray, &spread) )
|
||||
{
|
||||
argsOK = true;
|
||||
focalX = centerX;
|
||||
@ -581,7 +658,7 @@ PyObject* Effect::wrapImageRadialGradient(PyObject *self, PyObject *args)
|
||||
));
|
||||
}
|
||||
|
||||
//gradient.setSpread(QGradient::ReflectSpread);
|
||||
gradient.setSpread(static_cast<QGradient::Spread>(spread));
|
||||
effect->_painter->fillRect(myQRect, gradient);
|
||||
|
||||
return Py_BuildValue("");
|
||||
@ -601,6 +678,160 @@ PyObject* Effect::wrapImageRadialGradient(PyObject *self, PyObject *args)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PyObject* Effect::wrapImageDrawPolygon(PyObject *self, PyObject *args)
|
||||
{
|
||||
Effect * effect = getEffect();
|
||||
PyObject * bytearray = nullptr;
|
||||
|
||||
int argCount = PyTuple_Size(args);
|
||||
int r, g, b;
|
||||
int a = 255;
|
||||
|
||||
bool argsOK = false;
|
||||
|
||||
if ( argCount == 5 && PyArg_ParseTuple(args, "Oiiii", &bytearray, &r, &g, &b, &a) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
if ( argCount == 4 && PyArg_ParseTuple(args, "Oiii", &bytearray, &r, &g, &b) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
|
||||
if (argsOK)
|
||||
{
|
||||
if (PyByteArray_Check(bytearray))
|
||||
{
|
||||
int length = PyByteArray_Size(bytearray);
|
||||
if (length % 2 == 0)
|
||||
{
|
||||
QVector <QPoint> points;
|
||||
char * data = PyByteArray_AS_STRING(bytearray);
|
||||
|
||||
for (int idx=0; idx<length; idx+=2)
|
||||
{
|
||||
points.append(QPoint((int)(data[idx]),(int)(data[idx+1])));
|
||||
}
|
||||
|
||||
QPainter * painter = effect->_painter;
|
||||
QPen oldPen = painter->pen();
|
||||
QPen newPen(QColor(r,g,b,a));
|
||||
painter->setPen(newPen);
|
||||
painter->setBrush(QBrush(QColor(r,g,b,a), Qt::SolidPattern));
|
||||
painter->drawPolygon(points);
|
||||
painter->setPen(oldPen);
|
||||
return Py_BuildValue("");
|
||||
}
|
||||
else
|
||||
{
|
||||
PyErr_SetString(PyExc_RuntimeError, "Length of bytearray argument should multiple of 2");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
PyErr_SetString(PyExc_RuntimeError, "Argument 1 is not a bytearray");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PyObject* Effect::wrapImageDrawPie(PyObject *self, PyObject *args)
|
||||
{
|
||||
Effect * effect = getEffect();
|
||||
PyObject * bytearray = nullptr;
|
||||
|
||||
QString brush;
|
||||
int argCount = PyTuple_Size(args);
|
||||
int radius, centerX, centerY;
|
||||
int startAngle = 0;
|
||||
int spanAngle = 360;
|
||||
int r = 0;
|
||||
int g = 0;
|
||||
int b = 0;
|
||||
int a = 255;
|
||||
|
||||
bool argsOK = false;
|
||||
|
||||
if ( argCount == 9 && PyArg_ParseTuple(args, "iiiiiiiii", ¢erX, ¢erY, &radius, &startAngle, &spanAngle, &r, &g, &b, &a) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
if ( argCount == 8 && PyArg_ParseTuple(args, "iiiiiiii", ¢erX, ¢erY, &radius, &startAngle, &spanAngle, &r, &g, &b) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
if ( argCount == 7 && PyArg_ParseTuple(args, "iiiiisO", ¢erX, ¢erY, &radius, &startAngle, &spanAngle, &brush, &bytearray) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
if ( argCount == 5 && PyArg_ParseTuple(args, "iiisO", ¢erX, ¢erY, &radius, &brush, &bytearray) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
|
||||
if (argsOK)
|
||||
{
|
||||
QPainter * painter = effect->_painter;
|
||||
startAngle = std::max(std::min(startAngle,360),0);
|
||||
spanAngle = std::max(std::min(spanAngle,360),-360);
|
||||
|
||||
if( argCount == 7 || argCount == 5 )
|
||||
{
|
||||
a = 0;
|
||||
if (PyByteArray_Check(bytearray))
|
||||
{
|
||||
int length = PyByteArray_Size(bytearray);
|
||||
if (length % 5 == 0)
|
||||
{
|
||||
|
||||
QConicalGradient gradient(QPoint(centerX,centerY), startAngle);
|
||||
|
||||
|
||||
char * data = PyByteArray_AS_STRING(bytearray);
|
||||
|
||||
for (int idx=0; idx<length; idx+=5)
|
||||
{
|
||||
gradient.setColorAt(
|
||||
((uint8_t)data[idx])/255.0,
|
||||
QColor(
|
||||
(uint8_t)(data[idx+1]),
|
||||
(uint8_t)(data[idx+2]),
|
||||
(uint8_t)(data[idx+3]),
|
||||
(uint8_t)(data[idx+4])
|
||||
));
|
||||
}
|
||||
painter->setBrush(gradient);
|
||||
|
||||
return Py_BuildValue("");
|
||||
}
|
||||
else
|
||||
{
|
||||
PyErr_SetString(PyExc_RuntimeError, "Length of bytearray argument should multiple of 5");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
PyErr_SetString(PyExc_RuntimeError, "Last argument is not a bytearray");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
painter->setBrush(QBrush(QColor(r,g,b,a), Qt::SolidPattern));
|
||||
}
|
||||
QPen oldPen = painter->pen();
|
||||
QPen newPen(QColor(r,g,b,a));
|
||||
painter->setPen(newPen);
|
||||
painter->drawPie(centerX - radius, centerY - radius, centerX + radius, centerY + radius, startAngle * 16, spanAngle * 16);
|
||||
painter->setPen(oldPen);
|
||||
return Py_BuildValue("");
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PyObject* Effect::wrapImageSolidFill(PyObject *self, PyObject *args)
|
||||
{
|
||||
Effect * effect = getEffect();
|
||||
@ -682,6 +913,40 @@ PyObject* Effect::wrapImageDrawLine(PyObject *self, PyObject *args)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PyObject* Effect::wrapImageDrawPoint(PyObject *self, PyObject *args)
|
||||
{
|
||||
Effect * effect = getEffect();
|
||||
|
||||
int argCount = PyTuple_Size(args);
|
||||
int r, g, b, x, y;
|
||||
int a = 255;
|
||||
int thick = 1;
|
||||
|
||||
bool argsOK = false;
|
||||
|
||||
if ( argCount == 7 && PyArg_ParseTuple(args, "iiiiiii", &x, &y, &thick, &r, &g, &b, &a) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
if ( argCount == 6 && PyArg_ParseTuple(args, "iiiiii", &x, &y, &thick, &r, &g, &b) )
|
||||
{
|
||||
argsOK = true;
|
||||
}
|
||||
|
||||
if (argsOK)
|
||||
{
|
||||
QPainter * painter = effect->_painter;
|
||||
QPen oldPen = painter->pen();
|
||||
QPen newPen(QColor(r,g,b,a));
|
||||
newPen.setWidth(thick);
|
||||
painter->setPen(newPen);
|
||||
painter->drawPoint(x, y);
|
||||
painter->setPen(oldPen);
|
||||
|
||||
return Py_BuildValue("");
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PyObject* Effect::wrapImageDrawRect(PyObject *self, PyObject *args)
|
||||
{
|
||||
@ -801,6 +1066,62 @@ PyObject* Effect::wrapImageHeight(PyObject *self, PyObject *args)
|
||||
return Py_BuildValue("i", effect->_imageSize.height());
|
||||
}
|
||||
|
||||
PyObject* Effect::wrapImageCRotate(PyObject *self, PyObject *args)
|
||||
{
|
||||
Effect * effect = getEffect();
|
||||
|
||||
int argCount = PyTuple_Size(args);
|
||||
int angle;
|
||||
|
||||
if ( argCount == 1 && PyArg_ParseTuple(args, "i", &angle ) )
|
||||
{
|
||||
angle = std::max(std::min(angle,360),0);
|
||||
effect->_painter->rotate(angle);
|
||||
return Py_BuildValue("");
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PyObject* Effect::wrapImageCOffset(PyObject *self, PyObject *args)
|
||||
{
|
||||
Effect * effect = getEffect();
|
||||
|
||||
int offsetX = 0;
|
||||
int offsetY = 0;
|
||||
int argCount = PyTuple_Size(args);
|
||||
|
||||
if ( argCount == 2 )
|
||||
{
|
||||
PyArg_ParseTuple(args, "ii", &offsetX, &offsetY );
|
||||
}
|
||||
|
||||
effect->_painter->translate(QPoint(offsetX,offsetY));
|
||||
return Py_BuildValue("");
|
||||
}
|
||||
|
||||
PyObject* Effect::wrapImageCShear(PyObject *self, PyObject *args)
|
||||
{
|
||||
Effect * effect = getEffect();
|
||||
|
||||
int sh,sv;
|
||||
int argCount = PyTuple_Size(args);
|
||||
|
||||
if ( argCount == 2 && PyArg_ParseTuple(args, "ii", &sh, &sv ))
|
||||
{
|
||||
effect->_painter->shear(sh,sv);
|
||||
return Py_BuildValue("");
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PyObject* Effect::wrapImageResetT(PyObject *self, PyObject *args)
|
||||
{
|
||||
Effect * effect = getEffect();
|
||||
|
||||
effect->_painter->resetTransform();
|
||||
return Py_BuildValue("");
|
||||
}
|
||||
|
||||
Effect * Effect::getEffect()
|
||||
{
|
||||
// extract the module from the runtime
|
||||
|
@ -58,18 +58,25 @@ private:
|
||||
static PyObject* wrapSetImage (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapAbort (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageShow (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageCanonicalGradient(PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageLinearGradient (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageConicalGradient (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageRadialGradient (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageSolidFill (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageDrawLine (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageDrawPoint (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageDrawRect (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageDrawPolygon (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageDrawPie (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageSetPixel (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageGetPixel (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageSave (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageMinSize (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageWidth (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageHeight (PyObject *self, PyObject *args);
|
||||
|
||||
static PyObject* wrapImageCRotate (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageCOffset (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageCShear (PyObject *self, PyObject *args);
|
||||
static PyObject* wrapImageResetT (PyObject *self, PyObject *args);
|
||||
static Effect * getEffect();
|
||||
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
|
@ -445,10 +445,18 @@ Hyperion::Hyperion(const QJsonObject &qjsonConfig, const QString configFile)
|
||||
Debug(_log,"configured leds: %d hw leds: %d", getLedCount(), _hwLedCount);
|
||||
WarningIf(hwLedCount < getLedCount(), _log, "more leds configured than available. check 'ledCount' in 'device' section");
|
||||
|
||||
// setup interval timer for config state checks and initial shot
|
||||
// setup config state checks and initial shot
|
||||
checkConfigState();
|
||||
QObject::connect(&_cTimer, SIGNAL(timeout()), this, SLOT(checkConfigState()));
|
||||
_cTimer.start(2000);
|
||||
if(_fsWatcher.addPath(_configFile))
|
||||
{
|
||||
QObject::connect(&_fsWatcher, &QFileSystemWatcher::fileChanged, this, &Hyperion::checkConfigState);
|
||||
}
|
||||
else
|
||||
{
|
||||
Warning(_log,"Filesystem Observer failed for file: %s, use fallback timer", _configFile.toStdString().c_str());
|
||||
QObject::connect(&_cTimer, SIGNAL(timeout()), this, SLOT(checkConfigState()));
|
||||
_cTimer.start(2000);
|
||||
}
|
||||
|
||||
// pipe muxer signal for effect/color timerunner to hyperionStateChanged slot
|
||||
QObject::connect(&_muxer, &PriorityMuxer::timerunner, this, &Hyperion::hyperionStateChanged);
|
||||
@ -545,7 +553,7 @@ Hyperion::BonjourRegister Hyperion::getHyperionSessions()
|
||||
return _hyperionSessions;
|
||||
}
|
||||
|
||||
void Hyperion::checkConfigState()
|
||||
void Hyperion::checkConfigState(QString cfile)
|
||||
{
|
||||
// Check config modifications
|
||||
QFile f(_configFile);
|
||||
|
@ -34,14 +34,24 @@
|
||||
},
|
||||
"minItems" : 3,
|
||||
"maxItems" : 3,
|
||||
"propertyOrder" : 3
|
||||
"propertyOrder" : 3,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"type": "color"
|
||||
}
|
||||
}
|
||||
},
|
||||
"effect" :
|
||||
{
|
||||
"type" : "string",
|
||||
"format" : "select",
|
||||
"title" : "edt_conf_fge_effect_title",
|
||||
"propertyOrder" : 4
|
||||
"propertyOrder" : 4,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"type": "effect"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
|
@ -20,6 +20,7 @@
|
||||
{
|
||||
"type" : "array",
|
||||
"title" : "edt_conf_color_channelAdjustment_header_title",
|
||||
"minItems": 1,
|
||||
"required" : true,
|
||||
"propertyOrder" : 3,
|
||||
"items" :
|
||||
|
@ -34,14 +34,24 @@
|
||||
},
|
||||
"minItems" : 3,
|
||||
"maxItems" : 3,
|
||||
"propertyOrder" : 3
|
||||
"propertyOrder" : 3,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"type": "color"
|
||||
}
|
||||
}
|
||||
},
|
||||
"effect" :
|
||||
{
|
||||
"type" : "string",
|
||||
"format" : "select",
|
||||
"title" : "edt_conf_fge_effect_title",
|
||||
"propertyOrder" : 4
|
||||
"propertyOrder" : 4,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"type": "effect"
|
||||
}
|
||||
}
|
||||
},
|
||||
"duration_ms" :
|
||||
{
|
||||
|
@ -140,84 +140,112 @@
|
||||
{
|
||||
"type" : "boolean",
|
||||
"title" : "edt_conf_v4l2_signalDetection_title",
|
||||
"default" : true,
|
||||
"default" : false,
|
||||
"propertyOrder" : 16
|
||||
},
|
||||
"redSignalThreshold" :
|
||||
{
|
||||
"type" : "number",
|
||||
"title" : "edt_conf_v4l2_redSignalThreshold_title",
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0,
|
||||
"default" : 0.1,
|
||||
"step" : 0.005,
|
||||
"minimum" : 0,
|
||||
"maximum" : 100,
|
||||
"default" : 5,
|
||||
"append" : "edt_append_percent",
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"signalDetection": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 17
|
||||
},
|
||||
"greenSignalThreshold" :
|
||||
{
|
||||
"type" : "number",
|
||||
"title" : "edt_conf_v4l2_greenSignalThreshold_title",
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0,
|
||||
"default" : 0.1,
|
||||
"step" : 0.025,
|
||||
"minimum" : 0,
|
||||
"maximum" : 100,
|
||||
"default" : 5,
|
||||
"append" : "edt_append_percent",
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"signalDetection": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 18
|
||||
},
|
||||
"blueSignalThreshold" :
|
||||
{
|
||||
"type" : "number",
|
||||
"title" : "edt_conf_v4l2_blueSignalThreshold_title",
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0,
|
||||
"default" : 0.1,
|
||||
"step" : 0.005,
|
||||
"minimum" : 0,
|
||||
"maximum" : 100,
|
||||
"default" : 5,
|
||||
"append" : "edt_append_percent",
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"signalDetection": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 19
|
||||
},
|
||||
"signalDetectionVerticalOffsetMin" :
|
||||
"sDVOffsetMin" :
|
||||
{
|
||||
"type" : "number",
|
||||
"title" : "edt_conf_v4l2_signalDetectionVerticalOffsetMin_title",
|
||||
"title" : "edt_conf_v4l2_sDVOffsetMin_title",
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0,
|
||||
"default" : 0.1,
|
||||
"step" : 0.005,
|
||||
"append" : "edt_append_percent",
|
||||
"default" : 0.25,
|
||||
"step" : 0.01,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"signalDetection": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 20
|
||||
},
|
||||
"signalDetectionVerticalOffsetMax" :
|
||||
"sDVOffsetMax" :
|
||||
{
|
||||
"type" : "number",
|
||||
"title" : "edt_conf_v4l2_signalDetectionVerticalOffsetMax_title",
|
||||
"title" : "edt_conf_v4l2_sDVOffsetMax_title",
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0,
|
||||
"default" : 0.1,
|
||||
"step" : 0.005,
|
||||
"append" : "edt_append_percent",
|
||||
"default" : 0.75,
|
||||
"step" : 0.01,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"signalDetection": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 21
|
||||
},
|
||||
"signalDetectionHorizontalOffsetMin" :
|
||||
"sDHOffsetMin" :
|
||||
{
|
||||
"type" : "number",
|
||||
"title" : "edt_conf_v4l2_signalDetectionHorizontalOffsetMin_title",
|
||||
"title" : "edt_conf_v4l2_sDHOffsetMin_title",
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0,
|
||||
"default" : 0.1,
|
||||
"step" : 0.005,
|
||||
"append" : "edt_append_percent",
|
||||
"default" : 0.25,
|
||||
"step" : 0.01,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"signalDetection": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 22
|
||||
},
|
||||
"signalDetectionHorizontalOffsetMax" :
|
||||
"sDHOffsetMax" :
|
||||
{
|
||||
"type" : "number",
|
||||
"title" : "edt_conf_v4l2_signalDetectionHorizontalOffsetMax_title",
|
||||
"title" : "edt_conf_v4l2_sDHOffsetMax_title",
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0,
|
||||
"default" : 0.1,
|
||||
"step" : 0.005,
|
||||
"append" : "edt_append_percent",
|
||||
"default" : 0.75,
|
||||
"step" : 0.01,
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"signalDetection": true
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 23
|
||||
}
|
||||
},
|
||||
|
1476
libsrc/hyperion/schemas/hyperion.schema-2.json
Normal file
@ -584,9 +584,9 @@ void HyperionDaemon::createGrabberV4L2()
|
||||
grabberConfig["height"].toInt(-1),
|
||||
grabberConfig["frameDecimation"].toInt(2),
|
||||
grabberConfig["sizeDecimation"].toInt(8),
|
||||
grabberConfig["redSignalThreshold"].toDouble(0.0),
|
||||
grabberConfig["greenSignalThreshold"].toDouble(0.0),
|
||||
grabberConfig["blueSignalThreshold"].toDouble(0.0),
|
||||
grabberConfig["redSignalThreshold"].toDouble(0.0)/100.0,
|
||||
grabberConfig["greenSignalThreshold"].toDouble(0.0)/100.0,
|
||||
grabberConfig["blueSignalThreshold"].toDouble(0.0)/100.0,
|
||||
grabberConfig["priority"].toInt(890));
|
||||
grabber->set3D(parse3DMode(grabberConfig["mode"].toString("2D")));
|
||||
grabber->setCropping(
|
||||
@ -596,10 +596,10 @@ void HyperionDaemon::createGrabberV4L2()
|
||||
grabberConfig["cropBottom"].toInt(0));
|
||||
grabber->setSignalDetectionEnable(grabberConfig["signalDetection"].toBool(true));
|
||||
grabber->setSignalDetectionOffset(
|
||||
grabberConfig["signalDetectionHorizontalOffsetMin"].toDouble(0.25),
|
||||
grabberConfig["signalDetectionVerticalOffsetMin"].toDouble(0.25),
|
||||
grabberConfig["signalDetectionHorizontalOffsetMax"].toDouble(0.75),
|
||||
grabberConfig["signalDetectionVerticalOffsetMax"].toDouble(0.75));
|
||||
grabberConfig["sDHOffsetMin"].toDouble(0.25),
|
||||
grabberConfig["sDVOffsetMin"].toDouble(0.25),
|
||||
grabberConfig["sDHOffsetMax"].toDouble(0.75),
|
||||
grabberConfig["sDVOffsetMax"].toDouble(0.75));
|
||||
Debug(_log, "V4L2 grabber created");
|
||||
|
||||
QObject::connect(grabber, SIGNAL(emitImage(int, const Image<ColorRgb>&, const int)), _protoServer, SLOT(sendImageToProtoSlaves(int, const Image<ColorRgb>&, const int)));
|
||||
|