TLIGHT_PRODUCTS / WS281X
Revision:
36:0fe7917a832a
Parent:
35:dffa06d09fdc
Child:
46:2374900f8845
--- a/PixelBuffer.cpp	Fri Nov 04 14:40:41 2016 +0000
+++ b/PixelBuffer.cpp	Fri Nov 04 17:40:25 2016 +0000
@@ -130,10 +130,16 @@
 // 指定色を指定位置のピクセルから指定サイズ分書き込む
 void RGBPixels::fillPixels(int index, const RGBColor color, int len)
 {
-    if (_pixels && len > 0 && (uint16_t)index < _numPixels)
+    int numPixels = static_cast<int>(_numPixels);
+    if (_pixels && len > 0 && index < numPixels && (index + len) >= 0)
     {
-        if (index + len > _numPixels)
-            len = _numPixels - index;
+        if (index < 0)
+		{
+			len   += index;
+			index  = 0;
+		}
+        if (index + len > numPixels)
+            len = numPixels - index;
         _pixels[index] = color;
         repeat_buffer<RGBColor>(_pixels + index, len, 1);
     }
@@ -348,10 +354,16 @@
 // 指定色を指定位置のピクセルから指定サイズ分書き込む
 void HSVPixels::fillPixels(int index, const HSVColor color, int len)
 {
-    if (_pixels && len > 0 && (uint16_t)index < _numPixels)
+    int numPixels = static_cast<int>(_numPixels);
+    if (_pixels && len > 0 && index < numPixels && (index + len) >= 0)
     {
-        if (index + len > _numPixels)
-            len = _numPixels - index;
+        if (index < 0)
+		{
+			len   += index;
+			index  = 0;
+		}
+        if (index + len > numPixels)
+            len = numPixels - index;
         _pixels[index] = color;
         repeat_buffer<HSVColor>(_pixels + index, len, 1);
     }