Refactoring and removing old code
parent
c047cfda6d
commit
09dabad760
|
|
@ -102,7 +102,7 @@ function isChangedMultistate(element){
|
|||
return element.lastDrawnValue != getMultistate(element.Value);
|
||||
}
|
||||
|
||||
function drawNumber(graphics, resources, element, offset){
|
||||
function drawNumber(graphics, resources, element){
|
||||
startPerfLog("drawNumber");
|
||||
var number = getValue(element.Value);
|
||||
var spacing = element.Spacing ? element.Spacing : 0;
|
||||
|
|
@ -113,12 +113,9 @@ function drawNumber(graphics, resources, element, offset){
|
|||
var numberOfDigits = element.Digits;
|
||||
|
||||
|
||||
//print("drawNumber: ", number, element, offset);
|
||||
//print("drawNumber: ", number, element);
|
||||
if (number) number = number.toFixed(0);
|
||||
|
||||
//var numberOffset = updateOffset(element, offset);
|
||||
var numberOffset = offset;
|
||||
|
||||
var isNegative;
|
||||
var digits;
|
||||
if (number == undefined){
|
||||
|
|
@ -189,9 +186,9 @@ function drawNumber(graphics, resources, element, offset){
|
|||
if (isNegative && minusImage){
|
||||
//print("Draw minus at", currentX);
|
||||
if (imageIndexMinus){
|
||||
drawElement(graphics, resources, {X:currentX,Y:firstDigitY}, numberOffset, element, "" + (0 + imageIndexMinus));
|
||||
drawElement(graphics, resources, {X:currentX,Y:firstDigitY}, element, "" + (0 + imageIndexMinus));
|
||||
} else {
|
||||
drawElement(graphics, resources, {X:currentX,Y:firstDigitY}, numberOffset, element, "minus");
|
||||
drawElement(graphics, resources, {X:currentX,Y:firstDigitY}, element, "minus");
|
||||
}
|
||||
currentX += minusImage.width + spacing;
|
||||
}
|
||||
|
|
@ -204,26 +201,21 @@ function drawNumber(graphics, resources, element, offset){
|
|||
currentDigit = 0;
|
||||
}
|
||||
//print("Digit " + currentDigit + " " + currentX);
|
||||
drawElement(graphics, resources, {X:currentX,Y:firstDigitY}, numberOffset, element, currentDigit + imageIndex);
|
||||
drawElement(graphics, resources, {X:currentX,Y:firstDigitY}, element, currentDigit + imageIndex);
|
||||
currentX += firstImage.width + spacing;
|
||||
}
|
||||
if (imageIndexUnit){
|
||||
//print("Draw unit at", currentX);
|
||||
drawElement(graphics, resources, {X:currentX,Y:firstDigitY}, numberOffset, element, "" + (0 + imageIndexUnit));
|
||||
drawElement(graphics, resources, {X:currentX,Y:firstDigitY}, element, "" + (0 + imageIndexUnit));
|
||||
} else if (element.Unit){
|
||||
drawElement(graphics, resources, {X:currentX,Y:firstDigitY}, numberOffset, element, getMultistate(element.Unit,"unknown"));
|
||||
drawElement(graphics, resources, {X:currentX,Y:firstDigitY}, element, getMultistate(element.Unit,"unknown"));
|
||||
}
|
||||
element.lastDrawnValue = number;
|
||||
|
||||
endPerfLog("drawNumber");
|
||||
}
|
||||
|
||||
function setColors(graphics, properties){
|
||||
if (properties.fg) graphics.setColor(properties.fg);
|
||||
if (properties.bg) graphics.setBgColor(properties.bg);
|
||||
}
|
||||
|
||||
function drawElement(graphics, resources, pos, offset, element, lastElem){
|
||||
function drawElement(graphics, resources, pos, element, lastElem){
|
||||
startPerfLog("drawElement");
|
||||
var cacheKey = "_"+(lastElem?lastElem:"nole");
|
||||
if (!element.cachedImage) element.cachedImage={};
|
||||
|
|
@ -247,24 +239,21 @@ function drawElement(graphics, resources, pos, offset, element, lastElem){
|
|||
|
||||
//print("cache ",typeof element.cachedImage[cacheKey], element.ImagePath, lastElem);
|
||||
if(element.cachedImage[cacheKey]){
|
||||
//print("drawElement ",pos, offset, path, lastElem);
|
||||
//print("drawElement offset", offset, pos.X, pos.Y);
|
||||
//print("resource ", resource,pos, offset, path, lastElem);
|
||||
var imageOffset = updateColors(pos, offset);
|
||||
setColors(graphics, imageOffset);
|
||||
//print("drawImage from drawElement", image, pos, offset);
|
||||
//print("drawElement ",pos, path, lastElem);
|
||||
//print("resource ", resource,pos, path, lastElem);
|
||||
//print("drawImage from drawElement", image, pos);
|
||||
var options={};
|
||||
if (pos.RotationValue){
|
||||
options.rotate = radians(pos);
|
||||
if (element.RotationValue){
|
||||
options.rotate = radians(element);
|
||||
}
|
||||
if (pos.Scale){
|
||||
options.scale = pos.ScaleValue;
|
||||
if (element.Scale){
|
||||
options.scale = element.ScaleValue;
|
||||
}
|
||||
//print("options", options);
|
||||
//print("Memory before drawing", process.memory(false));
|
||||
startPerfLog("drawElement_g.drawImage");
|
||||
try{
|
||||
graphics.drawImage(element.cachedImage[cacheKey] ,(imageOffset.X ? imageOffset.X : 0) + (pos.X ? pos.X : 0),(imageOffset.Y ? imageOffset.Y :0) + (pos.Y ? pos.Y : 0), options);} catch (e) {
|
||||
graphics.drawImage(element.cachedImage[cacheKey] ,(pos.X ? pos.X : 0), (pos.Y ? pos.Y : 0), options);} catch (e) {
|
||||
//print("Error", e, element.cachedImage[cacheKey]);
|
||||
}
|
||||
endPerfLog("drawElement_g.drawImage");
|
||||
|
|
@ -289,53 +278,46 @@ function getMultistate(name, defaultValue){
|
|||
return undefined;
|
||||
}
|
||||
|
||||
function drawScale(graphics, resources, scale, offset){
|
||||
function drawScale(graphics, resources, scale){
|
||||
startPerfLog("drawScale");
|
||||
//print("drawScale", scale, offset);
|
||||
//print("drawScale", scale);
|
||||
var segments = scale.Segments;
|
||||
var imageIndex = scale.ImageIndex !== undefined ? scale.ImageIndex : 0;
|
||||
|
||||
var value = scaledown(scale.Value, scale.MinValue, scale.MaxValue);
|
||||
|
||||
//print("Value is ", value, "(", maxValue, ",", minValue, ")");
|
||||
|
||||
var scaleOffset = updateOffset(scale, offset);
|
||||
|
||||
|
||||
var segmentsToDraw = Math.ceil(value * segments.length);
|
||||
|
||||
for (var i = 0; i < segmentsToDraw; i++){
|
||||
drawElement(graphics, resources, segments[i], scaleOffset, scale, imageIndex + i);
|
||||
drawElement(graphics, resources, segments[i], scale, imageIndex + i);
|
||||
}
|
||||
scale.lastDrawnValue = segmentsToDraw;
|
||||
|
||||
endPerfLog("drawScale");
|
||||
}
|
||||
|
||||
function drawDigit(graphics, resources, element, offset, digit){
|
||||
drawElement(graphics, resources, element, offset, element, digit);
|
||||
}
|
||||
|
||||
function drawImage(graphics, resources, image, offset, name){
|
||||
function drawImage(graphics, resources, image, name){
|
||||
startPerfLog("drawImage");
|
||||
var imageOffset = updateColors(image, offset);
|
||||
//print("drawImage", image, offset, name);
|
||||
//print("drawImage", image.X, image.Y, name);
|
||||
if (image.Value && image.Steps){
|
||||
var steps = Math.floor(scaledown(image.Value, image.MinValue, image.MaxValue) * (image.Steps - 1));
|
||||
//print("Step", steps, "of", image.Steps);
|
||||
drawElement(graphics, resources, image, imageOffset, image, "" + steps);
|
||||
drawElement(graphics, resources, image, image, "" + steps);
|
||||
} else if (image.ImageIndex !== undefined) {
|
||||
drawElement(graphics, resources, image, imageOffset, image, image.ImageIndex);
|
||||
drawElement(graphics, resources, image, image, image.ImageIndex);
|
||||
} else {
|
||||
drawElement(graphics, resources, image, imageOffset, image, name ? "" + name: undefined);
|
||||
drawElement(graphics, resources, image, image, name ? "" + name: undefined);
|
||||
}
|
||||
|
||||
endPerfLog("drawImage");
|
||||
}
|
||||
|
||||
function drawCodedImage(graphics, resources, image, offset){
|
||||
function drawCodedImage(graphics, resources, image){
|
||||
startPerfLog("drawCodedImage");
|
||||
var code = getValue(image.Value);
|
||||
//print("drawCodedImage", image, offset, code);
|
||||
//print("drawCodedImage", image, code);
|
||||
|
||||
if (image.ImagePath) {
|
||||
var factor = 1;
|
||||
|
|
@ -350,10 +332,10 @@ function drawCodedImage(graphics, resources, image, offset){
|
|||
}
|
||||
if (code / factor > 1){
|
||||
//print("found match");
|
||||
drawImage(graphics, resources, image, offset, currentCode);
|
||||
drawImage(graphics, resources, image, currentCode);
|
||||
} else {
|
||||
//print("fallback");
|
||||
drawImage(graphics, resources, image, offset, "fallback");
|
||||
drawImage(graphics, resources, image, "fallback");
|
||||
}
|
||||
}
|
||||
image.lastDrawnValue = code;
|
||||
|
|
@ -390,27 +372,6 @@ function getWeatherTemperature(){
|
|||
return result;
|
||||
}
|
||||
|
||||
function updateOffset(element, offset){
|
||||
startPerfLog("updateOffset");
|
||||
var newOffset = { X: offset.X ? offset.X : 0, Y: offset.Y ? offset.Y : 0 };
|
||||
if (element && element.X) newOffset.X += element.X;
|
||||
if (element && element.Y) newOffset.Y += element.Y;
|
||||
newOffset = updateColors(element, newOffset);
|
||||
//print("Updated offset from ", offset, "to", newOffset);
|
||||
endPerfLog("updateOffset");
|
||||
return newOffset;
|
||||
}
|
||||
|
||||
function updateColors(element, offset){
|
||||
var newOffset = { X: offset.X ? offset.X : 0, Y: offset.Y ? offset.Y : 0 };
|
||||
if (element){
|
||||
newOffset.fg = element.ForegroundColor ? element.ForegroundColor: offset.fg;
|
||||
newOffset.bg = element.BackgroundColor ? element.BackgroundColor: offset.bg;
|
||||
}
|
||||
//print("Updated offset from ", offset, "to", newOffset);
|
||||
return newOffset;
|
||||
}
|
||||
|
||||
function scaledown(value, min, max){
|
||||
//print("scaledown", value, min, max);
|
||||
var scaled = E.clip(getValue(value),getValue(min,0),getValue(max,1));
|
||||
|
|
@ -427,20 +388,17 @@ function radians(rotation){
|
|||
return value;
|
||||
}
|
||||
|
||||
function drawPoly(graphics, resources, element, offset){
|
||||
function drawPoly(graphics, resources, element){
|
||||
startPerfLog("drawPoly");
|
||||
var vertices = [];
|
||||
var primitiveOffset = offset.clone();
|
||||
if (element.X) primitiveOffset.X += element.X;
|
||||
if (element.Y) primitiveOffset.Y += element.Y;
|
||||
|
||||
startPerfLog("drawPoly_transform");
|
||||
for (var c of element.Vertices){
|
||||
vertices.push(c.X);
|
||||
vertices.push(c.Y);
|
||||
}
|
||||
var transform = { x: primitiveOffset.X,
|
||||
y: primitiveOffset.Y
|
||||
var transform = { x: element.X ? element.X : 0,
|
||||
y: element.Y ? element.Y : 0
|
||||
};
|
||||
if (element.RotationValue){
|
||||
transform.rotate = radians(element);
|
||||
|
|
@ -461,26 +419,23 @@ function drawPoly(graphics, resources, element, offset){
|
|||
startPerfLog("drawPoly_g.drawPoly");
|
||||
graphics.drawPoly(vertices,true);
|
||||
endPerfLog("drawPoly_g.drawPoly");
|
||||
|
||||
|
||||
endPerfLog("drawPoly");
|
||||
}
|
||||
|
||||
function drawRect(graphics, resources, element, offset){
|
||||
function drawRect(graphics, resources, element){
|
||||
startPerfLog("drawRect");
|
||||
var vertices = [];
|
||||
var primitiveOffset = offset.clone();
|
||||
if (element.X) primitiveOffset.X += element.X;
|
||||
if (element.Y) primitiveOffset.Y += element.Y;
|
||||
|
||||
if (element.ForegroundColor) graphics.setColor(element.ForegroundColor);
|
||||
|
||||
if (element.Filled){
|
||||
startPerfLog("drawRect_g.fillRect");
|
||||
graphics.fillRect(primitiveOffset.X, primitiveOffset.Y, primitiveOffset.X + element.Width, primitiveOffset.Y + element.Height);
|
||||
graphics.fillRect(element.X, element.Y, element.X + element.Width, element.Y + element.Height);
|
||||
endPerfLog("drawRect_g.fillRect");
|
||||
} else {
|
||||
startPerfLog("drawRect_g.fillRect");
|
||||
graphics.drawRect(primitiveOffset.X, primitiveOffset.Y, primitiveOffset.X + element.Width, primitiveOffset.Y + element.Height);
|
||||
graphics.drawRect(element.X, element.Y, element.X + element.Width, element.Y + element.Height);
|
||||
endPerfLog("drawRect_g.fillRect");
|
||||
}
|
||||
endPerfLog("drawRect");
|
||||
|
|
@ -537,12 +492,12 @@ multistates.WeatherTemperatureNegative = () => { return getWeatherTemperature().
|
|||
multistates.WeatherTemperatureUnit = () => { return getWeatherTemperature().unit; };
|
||||
multistates.StepsGoal = () => { return (numbers.Steps() >= stepsgoal) ? "on": "off"; };
|
||||
|
||||
function drawMultiState(graphics, resources, element, offset){
|
||||
function drawMultiState(graphics, resources, element){
|
||||
startPerfLog("drawMultiState");
|
||||
//print("drawMultiState", element, offset);
|
||||
//print("drawMultiState", element);
|
||||
var value = multistates[element.Value]();
|
||||
//print("drawImage from drawMultiState", element, offset, value);
|
||||
drawImage(graphics, resources, element, offset, value);
|
||||
//print("drawImage from drawMultiState", element, value);
|
||||
drawImage(graphics, resources, element, value);
|
||||
element.lastDrawnValue = value;
|
||||
endPerfLog("drawMultiState");
|
||||
}
|
||||
|
|
@ -550,9 +505,6 @@ function drawMultiState(graphics, resources, element, offset){
|
|||
var pulse,alt,temp,press;
|
||||
|
||||
|
||||
var zeroOffset={X:0,Y:0};
|
||||
|
||||
|
||||
var requestedDraws = 0;
|
||||
var isDrawing = false;
|
||||
|
||||
|
|
@ -599,9 +551,9 @@ function initialDraw(resources, face){
|
|||
requestedDraws = 0;
|
||||
setTimeout(()=>{initialDraw(resources, face);}, 10);
|
||||
}
|
||||
} else {
|
||||
print("queued draw");
|
||||
}
|
||||
} //else {
|
||||
//print("queued draw");
|
||||
//}
|
||||
}
|
||||
|
||||
function handleHrm(e){
|
||||
|
|
|
|||
|
|
@ -595,7 +595,6 @@
|
|||
var c = elements[i].value;
|
||||
console.log("Check element", c);
|
||||
var name = c.Layer;
|
||||
if (c.type == "Standalone") name = "standalone" + counter++;
|
||||
var plane = wrapInTimeouts ? 1 : 0;
|
||||
if (typeof c.Plane == "number"){
|
||||
plane = c.Plane;
|
||||
|
|
@ -624,9 +623,6 @@
|
|||
|
||||
if (plane != 0) code += "if (!p" + plane + ") p" + plane + " = Graphics.createArrayBuffer(g.getWidth(),g.getHeight(),16,{msb:true});\n";
|
||||
|
||||
code += "p" + plane + ".setBgColor(g.theme.bg);\n";
|
||||
code += "p" + plane + ".setColor(g.theme.fg);\n";
|
||||
|
||||
if (properties.Redraw && properties.Redraw.Clear){
|
||||
if (wrapInTimeouts && plane != 0){
|
||||
code += "p = p.then(()=>delay(0)).then(()=>{\n";
|
||||
|
|
@ -728,10 +724,10 @@
|
|||
}
|
||||
|
||||
if (addDebug()) code += 'print("Element condition is ' + condition + '");' + "\n";
|
||||
code += (condition.length > 0 ? "if (" + condition + "){\n" : "");
|
||||
code += "" + colorsetting;
|
||||
code += (condition.length > 0 ? "if (" + condition + "){\n" : "");
|
||||
if (addDebug()) code += 'print("Drawing element ' + elementIndex + ' with type ' + c.type + ' on plane ' + planeName + '");' + "\n";
|
||||
code += "draw" + c.type + "(" + planeName + ", wr, wf.Collapsed[" + elementIndex + "].value, {X:0,Y:0});\n";
|
||||
code += "draw" + c.type + "(" + planeName + ", wr, wf.Collapsed[" + elementIndex + "].value);\n";
|
||||
|
||||
code += (condition.length > 0 ? "}\n" : "");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue