CustomEffects as usermod: step 4: modify wledv123.json, add drawLine/Arc

General (for CE, but also used by M12_pArc)
- add drawArc

Custom Effects
- add WLEDSR Custom Effects comment to places in WLED where it is hooked in
- move from wled.json to wledv123.json
- rename matrixWidth/Heigth to width/height and use virtualWidth/Height
- remove setPixels
- add drawLine / drawArc
This commit is contained in:
Ewowi
2022-08-31 13:14:51 +02:00
parent 717d755969
commit 06c0c0edfb
13 changed files with 97 additions and 70 deletions

View File

@@ -1,7 +1,6 @@
/*
@title Arduino Real Time Interpreter (ARTI)
@file arti.h
@version 0.3.1
@date 20220818
@author Ewoud Wijma
@repo https://github.com/ewoudwijma/ARTI
@@ -2474,7 +2473,7 @@ public:
if (!definitionFile)
{
ERROR_ARTI("Definition file %s not found. Press Download wled.json\n", definitionName);
ERROR_ARTI("Definition file %s not found. Press Download wled json\n", definitionName);
return false;
}
@@ -2504,9 +2503,9 @@ public:
JsonObject::iterator objectIterator = definitionJson.begin();
JsonObject metaData = objectIterator->value();
const char * version = metaData["version"];
if (strcmp(version, "0.3.1") != 0)
if (strcmp(version, "v032") != 0)
{
ERROR_ARTI("Version of definition.json file (%s) should be 0.3.1.\nPress Download wled.json\n", version);
ERROR_ARTI("Version of definition.json file (%s) should be v032.\nPress Download wled json\n", version);
return false;
}
const char * startNode = metaData["start"];

View File

@@ -1,7 +1,6 @@
/*
@title Arduino Real Time Interpreter (ARTI)
@file arti_wled_plugin.h
@version 0.3.1
@date 20220818
@author Ewoud Wijma
@repo https://github.com/ewoudwijma/ARTI
@@ -28,15 +27,14 @@
#include <stdio.h>
#endif
//make sure the numbers here correspond to the order in which these functions are defined in wled.json!!
//make sure the numbers here correspond to the order in which these functions are defined in wled000.json!!
enum Externals
{
F_ledCount,
F_matrixWidth,
F_matrixHeight,
F_width,
F_height,
F_setPixelColor,
F_leds,
F_setPixels,
F_hsv,
F_rgbw,
@@ -61,6 +59,8 @@ enum Externals
F_shift,
F_circle2D,
F_drawLine,
F_drawArc,
F_constrain,
F_map,
@@ -103,14 +103,11 @@ float ARTI::arti_external_function(uint8_t function, float par1, float par2, flo
SEGMENT.setPixelColorXY((uint16_t)par1, (uint16_t)par2, (uint32_t)par3);
return floatNull;
}
case F_setPixels:
// setPixels(leds); No action needed as allready stored via sPC
return floatNull;
case F_hsv:
{
{
CRGB color = CHSV((uint8_t)par1, (uint8_t)par2, (uint8_t)par3);
return RGBW32(color.r, color.g, color.b, 0);
}
}
case F_rgbw:
return RGBW32((uint8_t)par1, (uint8_t)par2, (uint8_t)par3, (uint8_t)par4);
@@ -174,7 +171,15 @@ float ARTI::arti_external_function(uint8_t function, float par1, float par2, flo
int y = round(round((halfLength - cos(radians(par1)) * halfLength) * 10)/10) + deltaHeight;
return SEGMENT.XY(x,y);
}
case F_drawLine:
SEGMENT.drawLine(par1, par2, par3, par4, par5);
return floatNull;
case F_drawArc:
if (par5 == floatNull)
SEGMENT.drawArc(par1, par2, par3, par4);
else
SEGMENT.drawArc(par1, par2, par3, par4, par5); //fillColor
return floatNull;
case F_constrain:
return constrain(par1, par2, par3);
case F_map:
@@ -196,9 +201,6 @@ float ARTI::arti_external_function(uint8_t function, float par1, float par2, flo
case F_setPixelColor:
PRINT_ARTI("%s(%f, %f, %f)\n", "setPixelColor", par1, par2, par3);
return floatNull;
case F_setPixels:
PRINT_ARTI("%s\n", "setPixels(leds)");
return floatNull;
case F_hsv:
PRINT_ARTI("%s(%f, %f, %f)\n", "hsv", par1, par2, par3);
return par1 + par2 + par3;
@@ -235,6 +237,10 @@ float ARTI::arti_external_function(uint8_t function, float par1, float par2, flo
case F_circle2D:
PRINT_ARTI("%s(%f)\n", "circle2D", par1);
return par1 / 2;
case F_drawLine:
return par1 + par2 + par3 + par4 + par5;
case F_drawArc:
return par1 + par2 + par3 + par4 + par5;
case F_constrain:
return par1 + par2 + par3;
@@ -317,10 +323,10 @@ float ARTI::arti_get_external_variable(uint8_t variable, float par1, float par2,
{
case F_ledCount:
return SEGLEN;
case F_matrixWidth:
return strip.matrixWidth;
case F_matrixHeight:
return strip.matrixHeight;
case F_width:
return SEGMENT.virtualWidth();
case F_height:
return SEGMENT.virtualHeight();
case F_leds:
if (par1 == floatNull) {
ERROR_ARTI("arti_get_external_variable leds without indices not supported yet (get leds)\n");
@@ -367,9 +373,9 @@ float ARTI::arti_get_external_variable(uint8_t variable, float par1, float par2,
{
case F_ledCount:
return 3; // used in testing e.g. for i = 1 to ledCount
case F_matrixWidth:
case F_width:
return 2;
case F_matrixHeight:
case F_height:
return 4;
case F_leds:
if (par1 == floatNull) {

View File

@@ -100,7 +100,7 @@ function populateCEEditor(name, segID)
<button class="btn infobtn" onclick="saveCE('${name}.wled', ${segID})">Save and Run</button><br>
<button class="btn infobtn" onclick="downloadCEFile('${name}.wled')">Download ${name}.wled</button>
<button class="btn infobtn" onclick="loadCETemplate('${name}')">Load template</button><br>
<button class="btn infobtn" onclick="downloadCEFile('wled.json')">Download wled.json</button>
<button class="btn infobtn" onclick="downloadCEFile('wledv032.json')">Download wled json</button>
<button class="btn infobtn" onclick="downloadCEFile('presets.json')">Download presets.json</button><br>
<a href="https://github.com/MoonModules/WLED-Effects/tree/master/CustomEffects/wled" target="_blank">Custom Effects Library</a><br>
<a href="https://github.com/atuline/WLED/wiki/WLED-Custom-effects" target="_blank">Custom Effects Help</a><br>
@@ -122,7 +122,7 @@ function downloadCEFile(name) {
fetchAndExecute(url, name, function(text) {
console.log(text);
if (name == "wled.json" || name == "presets.json") {
if (name == "wledv032.json" || name == "presets.json") {
if (!confirm('Are you sure to download/overwrite ' + name + '?'))
return;
uploadFileWithText("/" + name, text);
@@ -138,7 +138,7 @@ function downloadCEFile(name) {
var request = new XMLHttpRequest();
request.onload = function() {
if (name == "wled.json" || name == "presets.json") {
if (name == "wledv032.json" || name == "presets.json") {
if (!confirm('Are you sure to download ' + name + '?'))
return;
uploadFileWithText("/" + name, request.response);

View File

@@ -41,7 +41,7 @@ uint16_t mode_customEffect(void) {
strcat(programFileName, currentEffect);
strcat(programFileName, ".wled");
succesful = arti->setup("/wled.json", programFileName);
succesful = arti->setup("/wledv032.json", programFileName);
if (!succesful)
ERROR_ARTI("Setup not succesful\n");
@@ -89,7 +89,7 @@ uint16_t mode_customEffect(void) {
return FRAMETIME;
}
static const char _data_FX_MODE_CUSTOMEFFECT[] PROGMEM = " ⚙️ Custom Effect@Speed,Intensity,Custom 1, Custom 2, Custom 3;!;!";
static const char _data_FX_MODE_CUSTOMEFFECT[] PROGMEM = "⚙️ Custom Effect@Speed,Intensity,Custom 1, Custom 2, Custom 3;!;!;mp12=0,1d";
class CustomEffectsUserMod : public Usermod {
private: