Added line swapping functionality
This commit is contained in:
		@@ -58,6 +58,23 @@ end
 | 
			
		||||
 | 
			
		||||
local data={}
 | 
			
		||||
 | 
			
		||||
-- @fn swapLine
 | 
			
		||||
-- @param lineOffset  offset (starting at 1) where the line is located to be swapped
 | 
			
		||||
-- works on the rgbBuffer, defined in data struct
 | 
			
		||||
-- @return <code>false</code> on errors, else <code>true</code>
 | 
			
		||||
local swapLine = function(lineOffset)
 | 
			
		||||
 if (data.rgbBuffer == nil) then
 | 
			
		||||
   return false
 | 
			
		||||
 end
 | 
			
		||||
 | 
			
		||||
 for i = 0,10 do
 | 
			
		||||
   local tmpColor=data.rgbBuffer:get(lineOffset+i)
 | 
			
		||||
   data.rgbBuffer:set(lineIdx+i, data.rgbBuffer:get(lineOffset+10-i))
 | 
			
		||||
   data.rgbBuffer:set(lineIdx+10-i, tmpColor)
 | 
			
		||||
 end
 | 
			
		||||
 return true
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- @fn generateLEDs
 | 
			
		||||
-- Module displaying of the words
 | 
			
		||||
-- @param rgbBuffer	 OutputBuffer with 114 LEDs
 | 
			
		||||
@@ -134,9 +151,11 @@ local generateLEDs = function(rgbBuffer, words, colorBg, colorFg, colorM1, color
 | 
			
		||||
 | 
			
		||||
 -- Set the foreground color as the default color
 | 
			
		||||
 local buf=data.colorFg
 | 
			
		||||
 local lineIdx=1
 | 
			
		||||
 -- line 1----------------------------------------------
 | 
			
		||||
 lineIdx=11
 | 
			
		||||
 if (rowbgColor[1] ~= nil) then
 | 
			
		||||
    for i=1,11, 1 do data.rgbBuffer:set(i, rowbgColor[1]) end
 | 
			
		||||
    for i=lineIdx,11, 1 do data.rgbBuffer:set(i, rowbgColor[1]) end
 | 
			
		||||
 end
 | 
			
		||||
 if (words.it==1) then
 | 
			
		||||
    drawLEDs(data,2) -- ES
 | 
			
		||||
@@ -158,8 +177,9 @@ if (words.m5== 1) then
 | 
			
		||||
    data.dC=data.dC+4
 | 
			
		||||
 end
 | 
			
		||||
 -- line 2-- even row (so inverted) --------------------
 | 
			
		||||
 lineIdx=12
 | 
			
		||||
  if (rowbgColor[2] ~= nil) then
 | 
			
		||||
     for i=12,23, 1 do data.rgbBuffer:set(i, rowbgColor[2]) end
 | 
			
		||||
     for i=lineIdx,(lineIdx+11), 1 do data.rgbBuffer:set(i, rowbgColor[2]) end
 | 
			
		||||
  end
 | 
			
		||||
 if (words.m10 == 1) then
 | 
			
		||||
    drawLEDs(data,4) -- ZEHN
 | 
			
		||||
@@ -171,10 +191,12 @@ if (words.m5== 1) then
 | 
			
		||||
  else
 | 
			
		||||
    data.dC=data.dC+7
 | 
			
		||||
 end
 | 
			
		||||
 | 
			
		||||
 -- swap line
 | 
			
		||||
 swapLine(lineIdx)
 | 
			
		||||
 -- line3----------------------------------------------
 | 
			
		||||
 lineIdx=23
 | 
			
		||||
  if (rowbgColor[3] ~= nil) then
 | 
			
		||||
     for i=23,34, 1 do data.rgbBuffer:set(i, rowbgColor[3]) end
 | 
			
		||||
     for i=lineIdx,lineIdx+11, 1 do data.rgbBuffer:set(i, rowbgColor[3]) end
 | 
			
		||||
  end
 | 
			
		||||
 if (words.h3q == 1) then
 | 
			
		||||
    line= drawLEDs(data,11) -- DREIVIERTEL
 | 
			
		||||
@@ -185,8 +207,9 @@ if (words.m5== 1) then
 | 
			
		||||
    data.dC=data.dC+11
 | 
			
		||||
 end
 | 
			
		||||
 --line 4-------- even row (so inverted) -------------
 | 
			
		||||
  if (rowbgColor[4] ~= nil) then
 | 
			
		||||
     for i=34,45, 1 do data.rgbBuffer:set(i, rowbgColor[4]) end
 | 
			
		||||
 lineIdx=34
 | 
			
		||||
 if (rowbgColor[4] ~= nil) then
 | 
			
		||||
     for i=lineIdx,lineIdx+11, 1 do data.rgbBuffer:set(i, rowbgColor[4]) end
 | 
			
		||||
  end
 | 
			
		||||
 if (words.ha == 1) then
 | 
			
		||||
    data.dC=data.dC+2 -- TG
 | 
			
		||||
@@ -201,14 +224,12 @@ if (words.m5== 1) then
 | 
			
		||||
    data.dC=data.dC+5
 | 
			
		||||
 end
 | 
			
		||||
 if (invertRows ~= true) then
 | 
			
		||||
     for i = 0,10 do
 | 
			
		||||
     	-- TODO swap line in buffer
 | 
			
		||||
          buf = buf .. line:sub((11-i)*3-2,(11-i)*3)
 | 
			
		||||
     end
 | 
			
		||||
   swapLine(lineIdx)
 | 
			
		||||
 end
 | 
			
		||||
 ------------------------------------------------
 | 
			
		||||
  if (rowbgColor[5] ~= nil) then
 | 
			
		||||
     for i=45,56, 1 do data.rgbBuffer:set(i, rowbgColor[5]) end
 | 
			
		||||
 lineIdx=45
 | 
			
		||||
 if (rowbgColor[5] ~= nil) then
 | 
			
		||||
     for i=lineIdx,lineIdx+11, 1 do data.rgbBuffer:set(i, rowbgColor[5]) end
 | 
			
		||||
  end
 | 
			
		||||
 if (words.half == 1) then
 | 
			
		||||
    drawLEDs(data,4) -- HALB
 | 
			
		||||
@@ -223,14 +244,12 @@ if (words.m5== 1) then
 | 
			
		||||
    data.dC=data.dC+6
 | 
			
		||||
 end
 | 
			
		||||
 if (invertRows == true) then
 | 
			
		||||
     for i = 0,10 do
 | 
			
		||||
          --TODO swap line in the buffer
 | 
			
		||||
          buf = buf .. line:sub((11-i)*3-2,(11-i)*3)
 | 
			
		||||
     end
 | 
			
		||||
   swapLine(lineIdx)
 | 
			
		||||
 end
 | 
			
		||||
 ------------even row (so inverted) ---------------------
 | 
			
		||||
  if (rowbgColor[6] ~= nil) then
 | 
			
		||||
    for i=56,67, 1 do data.rgbBuffer:set(i, rowbgColor[6]) end
 | 
			
		||||
 lineIdx=56
 | 
			
		||||
 if (rowbgColor[6] ~= nil) then
 | 
			
		||||
    for i=lineIdx,lineIdx+11, 1 do data.rgbBuffer:set(i, rowbgColor[6]) end
 | 
			
		||||
  end
 | 
			
		||||
 if (words.h7 == 1) then
 | 
			
		||||
    data.dC=data.dC+5
 | 
			
		||||
@@ -250,14 +269,12 @@ if (words.m5== 1) then
 | 
			
		||||
    data.dC=data.dC+7
 | 
			
		||||
 end
 | 
			
		||||
 if (invertRows ~= true) then
 | 
			
		||||
     --TODO invert buffer
 | 
			
		||||
     for i = 0,10 do
 | 
			
		||||
          buf = buf .. line:sub((11-i)*3-2,(11-i)*3)
 | 
			
		||||
     end
 | 
			
		||||
   swapLine(lineIdx)
 | 
			
		||||
 end
 | 
			
		||||
 ------------------------------------------------
 | 
			
		||||
  if (rowbgColor[7] ~= nil) then
 | 
			
		||||
    for i=67,78, 1 do data.rgbBuffer:set(i, rowbgColor[7]) end
 | 
			
		||||
 lineIdx=67
 | 
			
		||||
 if (rowbgColor[7] ~= nil) then
 | 
			
		||||
    for i=lineIdx,lineIdx+11, 1 do data.rgbBuffer:set(i, rowbgColor[7]) end
 | 
			
		||||
  end
 | 
			
		||||
 if (words.h3 == 1) then
 | 
			
		||||
    data.dC=data.dC+1
 | 
			
		||||
@@ -270,8 +287,9 @@ if (words.m5== 1) then
 | 
			
		||||
    data.dC=data.dC+11
 | 
			
		||||
 end
 | 
			
		||||
 ------------even row (so inverted) ---------------------
 | 
			
		||||
  if (rowbgColor[8] ~= nil) then
 | 
			
		||||
    for i=78,89, 1 do data.rgbBuffer:set(i, rowbgColor[8]) end
 | 
			
		||||
 lineIdx=78
 | 
			
		||||
 if (rowbgColor[8] ~= nil) then
 | 
			
		||||
    for i=lineIdx,lineIdx+11, 1 do data.rgbBuffer:set(i, rowbgColor[8]) end
 | 
			
		||||
  end
 | 
			
		||||
 if (words.h4 == 1) then
 | 
			
		||||
    data.dC=data.dC+7
 | 
			
		||||
@@ -286,11 +304,11 @@ if (words.m5== 1) then
 | 
			
		||||
 else
 | 
			
		||||
    data.dC=data.dC+11
 | 
			
		||||
 end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
 swapLine(lineIdx)
 | 
			
		||||
 ------------------------------------------------
 | 
			
		||||
  if (rowbgColor[9] ~= nil) then
 | 
			
		||||
    for i=89,99, 1 do data.rgbBuffer:set(i, rowbgColor[9]) end
 | 
			
		||||
 lineIdx=89
 | 
			
		||||
 if (rowbgColor[9] ~= nil) then
 | 
			
		||||
    for i=lineIdx,lineIdx+11, 1 do data.rgbBuffer:set(i, rowbgColor[9]) end
 | 
			
		||||
  end
 | 
			
		||||
 if (words.h8 == 1) then
 | 
			
		||||
    data.dC=data.dC+1
 | 
			
		||||
@@ -305,8 +323,9 @@ if (words.m5== 1) then
 | 
			
		||||
 end
 | 
			
		||||
 | 
			
		||||
 ------------even row (so inverted) ---------------------
 | 
			
		||||
  if (rowbgColor[10] ~= nil) then
 | 
			
		||||
    for i=100,110, 1 do data.rgbBuffer:set(i, rowbgColor[10]) end
 | 
			
		||||
 lineIdx=100
 | 
			
		||||
 if (rowbgColor[10] ~= nil) then
 | 
			
		||||
    for i=lineIdx,lineIdx+11, 1 do data.rgbBuffer:set(i, rowbgColor[10]) end
 | 
			
		||||
  end
 | 
			
		||||
 if (words.h6 == 1) then
 | 
			
		||||
    data.dC=data.dC+1
 | 
			
		||||
@@ -320,7 +339,7 @@ if (words.m5== 1) then
 | 
			
		||||
  else
 | 
			
		||||
    data.dC=data.dC+3
 | 
			
		||||
 end
 | 
			
		||||
 | 
			
		||||
 swapLine(lineIdx)
 | 
			
		||||
------ Minutes -----------
 | 
			
		||||
 if (words.m1 == 1) then
 | 
			
		||||
    data.rgbBuffer:set(111, colorFg)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user