Expand1D Corner Fix, Arc gPC fix.

Only matripix is not working correctly on arc. Effect starts at the end of the strip and use gPC to fill to beginning.
This commit is contained in:
Brandon502
2024-10-16 18:12:56 -04:00
parent c1e75ac127
commit e37afd0cb8

View File

@@ -869,6 +869,8 @@ uint16_t Segment::virtualLength() const {
vLen = vH; vLen = vH;
break; break;
case M12_pCorner: case M12_pCorner:
vLen = max(vW,vH); // get the longest dimension
break;
case M12_pArc: case M12_pArc:
vLen = sqrt16(vW * vW + vH * vH); vLen = sqrt16(vW * vW + vH * vH);
if (vW != vH) vLen++; // round up if (vW != vH) vLen++; // round up
@@ -1219,11 +1221,18 @@ uint32_t __attribute__((hot)) Segment::getPixelColor(int i) const
if (vStrip>0) return getPixelColorXY(vStrip - 1, vH - i -1); if (vStrip>0) return getPixelColorXY(vStrip - 1, vH - i -1);
else return getPixelColorXY(0, vH - i -1); else return getPixelColorXY(0, vH - i -1);
break; break;
case M12_pArc:
case M12_pCorner: case M12_pCorner:
// use longest dimension case M12_pArc: {
return vW>vH ? getPixelColorXY(i, 0) : getPixelColorXY(0, i); if (i < max(vW, vH)) {
return vW>vH ? getPixelColorXY(i, 0) : getPixelColorXY(0, i); // Corner and Arc
break;
}
int length = virtualLength();
int x = i * vW / length;
int y = i * vH / length;
return getPixelColorXY(x, y); // Not 100% accurate
break; break;
}
case M12_jMap: //WLEDMM jMap case M12_jMap: //WLEDMM jMap
if (jMap) if (jMap)
return ((JMapC *)jMap)->getPixelColor(i); return ((JMapC *)jMap)->getPixelColor(i);