New defaults and return to queue
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			Signed-off-by: Martyn Ranyard <m@rtyn.berlin>
This commit is contained in:
		
							parent
							
								
									c346052895
								
							
						
					
					
						commit
						8edab5ba5e
					
				
					 4 changed files with 201 additions and 9 deletions
				
			
		|  | @ -18,8 +18,8 @@ import ( | ||||||
| 
 | 
 | ||||||
| type RGBcolor = [3]byte | type RGBcolor = [3]byte | ||||||
| 
 | 
 | ||||||
| var currentFrame [2][512]byte | var currentFrame [99][512]byte //TODO make dynamic | ||||||
| var channels [2]chan<- [512]byte | var channels [99]chan<- [512]byte | ||||||
| var sema = make(chan struct{}, 1) // a binary semaphore guarding currentFrame | var sema = make(chan struct{}, 1) // a binary semaphore guarding currentFrame | ||||||
| 
 | 
 | ||||||
| var currentEffect queue.QueueItem | var currentEffect queue.QueueItem | ||||||
|  | @ -69,11 +69,11 @@ func main() { | ||||||
| 
 | 
 | ||||||
| 	PanelWidth, err := strconv.Atoi(os.Getenv("PANEL_WIDTH")) | 	PanelWidth, err := strconv.Atoi(os.Getenv("PANEL_WIDTH")) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		PanelWidth = 68 | 		PanelWidth = 60 | ||||||
| 	} | 	} | ||||||
| 	PanelHeight, err := strconv.Atoi(os.Getenv("PANEL_HEIGHT")) | 	PanelHeight, err := strconv.Atoi(os.Getenv("PANEL_HEIGHT")) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		PanelHeight = 4 | 		PanelHeight = 15 | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	universeCount = int(math.Ceil(float64(PanelHeight*PanelWidth*3) / 510)) | 	universeCount = int(math.Ceil(float64(PanelHeight*PanelWidth*3) / 510)) | ||||||
|  | @ -119,17 +119,24 @@ func main() { | ||||||
| 	globalEffectChannel <- e | 	globalEffectChannel <- e | ||||||
| 	e.Effect = "queue" | 	e.Effect = "queue" | ||||||
| 	overrideEffect = e | 	overrideEffect = e | ||||||
|  | 	previousEffect.Effect = "queue" | ||||||
| 	go func() { | 	go func() { | ||||||
| 		for /*ever*/ { | 		for /*ever*/ { | ||||||
| 			if len(overrideFlag) > 0 { | 			if len(overrideFlag) > 0 { | ||||||
| 				e = <-overrideFlag | 				e = <-overrideFlag | ||||||
| 				if e.Effect == "queue" { | 				if e.Effect == "queue" { | ||||||
| 					fmt.Printf("Returning to queue : %s\n", currentEffect.Effect) | 					if previousEffect.Effect != "queue" { | ||||||
|  | 						fmt.Printf("Returning to queue : %s\n", previousEffect.Effect) | ||||||
| 						overrideEffect = e | 						overrideEffect = e | ||||||
| 						currentEffect = previousEffect | 						currentEffect = previousEffect | ||||||
|  | 						previousEffect.Effect = "queue" | ||||||
|  | 						currentEffect = <-globalEffectChannel | ||||||
|  | 					} | ||||||
| 				} else { | 				} else { | ||||||
| 					fmt.Printf("Overriding with : %s\n", e.Effect) | 					fmt.Printf("Overriding with : %s\n", e.Effect) | ||||||
|  | 					if previousEffect.Effect == "queue" { | ||||||
| 						previousEffect = currentEffect | 						previousEffect = currentEffect | ||||||
|  | 					} | ||||||
| 					overrideEffect = e | 					overrideEffect = e | ||||||
| 					currentEffect = e | 					currentEffect = e | ||||||
| 				} | 				} | ||||||
|  | @ -139,6 +146,7 @@ func main() { | ||||||
| 					currentEffect.Duration -= 40 | 					currentEffect.Duration -= 40 | ||||||
| 				} else { | 				} else { | ||||||
| 					if len(globalEffectChannel) > 0 { | 					if len(globalEffectChannel) > 0 { | ||||||
|  | 						previousEffect.Effect = "queue" | ||||||
| 						lastEffect := currentEffect | 						lastEffect := currentEffect | ||||||
| 						currentEffect = <-globalEffectChannel | 						currentEffect = <-globalEffectChannel | ||||||
| 						if lastEffect != currentEffect { | 						if lastEffect != currentEffect { | ||||||
|  |  | ||||||
							
								
								
									
										45
									
								
								internal/fynewidget/fynewidget.go
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										45
									
								
								internal/fynewidget/fynewidget.go
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,45 @@ | ||||||
|  | package fynewidget | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"image/color" | ||||||
|  | 
 | ||||||
|  | 	"fyne.io/fyne/widget" | ||||||
|  | 
 | ||||||
|  | 	"fyne.io/fyne" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // OutputWidget describes a coloured rectangle primitive in a Fyne canvas | ||||||
|  | type OutputWidget struct { | ||||||
|  | 	widget.BaseWidget | ||||||
|  | 
 | ||||||
|  | 	CreateRenderer() WidgetRenderer | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // NewOutputWidget returns a new OutputWidget instance | ||||||
|  | func NewOutputWidget(color color.Color) *OutputWidget { | ||||||
|  | 	return &OutputWidget{} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // MinSize of panel | ||||||
|  | func (l *OutputWidget) MinSize() fyne.Size { | ||||||
|  | 	return fyne.NewSize(320, 200) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // CreateRenderer gets the widget renderer | ||||||
|  | func (t *Table) CreateRenderer() fyne.WidgetRenderer { | ||||||
|  | 	return widget.new | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  | // NewOutputWidget Creates a new widget for outputting the patterns recieved over UDP | ||||||
|  | func NewOutputWidget() *fyne.Container { | ||||||
|  | 	theBox := NewOutputWidget(theme.PrimaryColor()) | ||||||
|  | 
 | ||||||
|  | 	theBox.Resize(fyne.NewSize(320, 200)) | ||||||
|  | 
 | ||||||
|  | 	c := fyne.NewContainer(theBox) | ||||||
|  | 	c.Resize(fyne.NewSize(320, 200)) | ||||||
|  | 
 | ||||||
|  | 	return c | ||||||
|  | } | ||||||
|  | */ | ||||||
							
								
								
									
										138
									
								
								internal/patterns/font.go
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										138
									
								
								internal/patterns/font.go
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,138 @@ | ||||||
|  | package patterns | ||||||
|  | 
 | ||||||
|  | var FontData = [126][]byte{{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00}, | ||||||
|  | 	{0x00, 0x00, 0x00},             // 32 ' ' | ||||||
|  | 	{0x5f},                         // 33 '!' | ||||||
|  | 	{0x07, 0x00, 0x07},             // 34 '"' | ||||||
|  | 	{0x14, 0x3e, 0x14, 0x3e, 0x14}, // 35 '#' | ||||||
|  | 	{0x24, 0x4a, 0xcb, 0x52, 0x24}, // 36 '$' | ||||||
|  | 	{0x22, 0x15, 0x2a, 0x54, 0x22}, // 37 '%' | ||||||
|  | 	{0x36, 0x49, 0x55, 0x22, 0x50}, // 38 '&' | ||||||
|  | 	{0x07},                         // 39 ''' | ||||||
|  | 	{0x1c, 0x22, 0x41},             // 40 '(' | ||||||
|  | 	{0x41, 0x22, 0x1c},             // 41 ')' | ||||||
|  | 	{0x14, 0x08, 0x3e, 0x08, 0x14}, // 42 '*' | ||||||
|  | 	{0x08, 0x08, 0x3e, 0x08, 0x08}, // 43 '+' | ||||||
|  | 	{0xc0, 0x60},                   // 44 ',' | ||||||
|  | 	{0x08, 0x08, 0x08},             // 45 '-' | ||||||
|  | 	{0x60, 0x60},                   // 46 '.' | ||||||
|  | 	{0x20, 0x10, 0x08, 0x04, 0x02}, // 47 '/' | ||||||
|  | 	{0x3e, 0x51, 0x49, 0x45, 0x3e}, // 48 '0' | ||||||
|  | 	{0x42, 0x42, 0x7f, 0x40, 0x40}, // 49 '1' | ||||||
|  | 	{0x42, 0x61, 0x51, 0x49, 0x46}, // 50 '2' | ||||||
|  | 	{0x22, 0x41, 0x49, 0x49, 0x36}, // 51 '3' | ||||||
|  | 	{0x18, 0x14, 0x52, 0x7f, 0x50}, // 52 '4' | ||||||
|  | 	{0x27, 0x45, 0x45, 0x45, 0x39}, // 53 '5' | ||||||
|  | 	{0x3e, 0x45, 0x45, 0x45, 0x38}, // 54 '6' | ||||||
|  | 	{0x01, 0x01, 0x71, 0x09, 0x07}, // 55 '7' | ||||||
|  | 	{0x36, 0x49, 0x49, 0x49, 0x36}, // 56 '8' | ||||||
|  | 	{0x0e, 0x51, 0x51, 0x51, 0x3e}, // 57 '9' | ||||||
|  | 	{0x66, 0x66},                   // 58 ':' | ||||||
|  | 	{0xc6, 0x66},                   // 59 ';' | ||||||
|  | 	{0x08, 0x14, 0x22, 0x41},       // 60 '<' | ||||||
|  | 	{0x14, 0x14, 0x14, 0x14, 0x14}, // 61 '=' | ||||||
|  | 	{0x41, 0x22, 0x14, 0x08},       // 62 '>' | ||||||
|  | 	{0x02, 0x01, 0x51, 0x09, 0x06}, // 63 '?' | ||||||
|  | 	{0x3e, 0x41, 0x5d, 0x55, 0x5e}, // 64 '@' | ||||||
|  | 	{0x7c, 0x12, 0x11, 0x12, 0x7c}, // 65 'A' | ||||||
|  | 	{0x7f, 0x49, 0x49, 0x49, 0x36}, // 66 'B' | ||||||
|  | 	{0x3e, 0x41, 0x41, 0x41, 0x22}, // 67 'C' | ||||||
|  | 	{0x7f, 0x41, 0x41, 0x41, 0x3e}, // 68 'D' | ||||||
|  | 	{0x7f, 0x49, 0x49, 0x49, 0x41}, // 69 'E' | ||||||
|  | 	{0x7f, 0x09, 0x09, 0x09, 0x01}, // 70 'F' | ||||||
|  | 	{0x3e, 0x41, 0x41, 0x49, 0x3a}, // 71 'G' | ||||||
|  | 	{0x7f, 0x08, 0x08, 0x08, 0x7f}, // 72 'H' | ||||||
|  | 	{0x41, 0x41, 0x7f, 0x41, 0x41}, // 73 'I' | ||||||
|  | 	{0x30, 0x40, 0x40, 0x40, 0x3f}, // 74 'J' | ||||||
|  | 	{0x7f, 0x08, 0x14, 0x22, 0x41}, // 75 'K' | ||||||
|  | 	{0x7f, 0x40, 0x40, 0x40, 0x40}, // 76 'L' | ||||||
|  | 	{0x7f, 0x02, 0x0c, 0x02, 0x7f}, // 77 'M' | ||||||
|  | 	{0x7f, 0x02, 0x04, 0x08, 0x7f}, // 78 'N' | ||||||
|  | 	{0x3e, 0x41, 0x41, 0x41, 0x3e}, // 79 'O' | ||||||
|  | 	{0x7f, 0x09, 0x09, 0x09, 0x06}, // 80 'P' | ||||||
|  | 	{0x3e, 0x41, 0x61, 0x41, 0xbe}, // 81 'Q' | ||||||
|  | 	{0x7f, 0x09, 0x09, 0x09, 0x76}, // 82 'R' | ||||||
|  | 	{0x26, 0x49, 0x49, 0x49, 0x32}, // 83 'S' | ||||||
|  | 	{0x01, 0x01, 0x7f, 0x01, 0x01}, // 84 'T' | ||||||
|  | 	{0x3f, 0x40, 0x40, 0x40, 0x3f}, // 85 'U' | ||||||
|  | 	{0x07, 0x18, 0x60, 0x18, 0x07}, // 86 'V' | ||||||
|  | 	{0x7f, 0x20, 0x18, 0x20, 0x7f}, // 87 'W' | ||||||
|  | 	{0x63, 0x14, 0x08, 0x14, 0x63}, // 88 'X' | ||||||
|  | 	{0x07, 0x08, 0x70, 0x08, 0x07}, // 89 'Y' | ||||||
|  | 	{0x61, 0x51, 0x49, 0x45, 0x43}, // 90 'Z' | ||||||
|  | 	{0x7f, 0x41},                   // 91 '[' | ||||||
|  | 	{0x02, 0x04, 0x08, 0x10, 0x20}, // 92 '\' | ||||||
|  | 	{0x41, 0x7f},                   // 93 ']' | ||||||
|  | 	{0x04, 0x02, 0x01, 0x02, 0x04}, // 94 '^' | ||||||
|  | 	{0x80, 0x80, 0x80, 0x80, 0x80}, // 95 '_' | ||||||
|  | 	{0x01, 0x02},                   // 96 '`' | ||||||
|  | 	{0x20, 0x54, 0x54, 0x78},       // 97 'a' | ||||||
|  | 	{0x7f, 0x44, 0x44, 0x38},       // 98 'b' | ||||||
|  | 	{0x38, 0x44, 0x44, 0x28},       // 99 'c' | ||||||
|  | 	{0x38, 0x44, 0x44, 0x7f},       // 100 'd' | ||||||
|  | 	{0x38, 0x54, 0x54, 0x58},       // 101 'e' | ||||||
|  | 	{0x08, 0x7e, 0x09, 0x02},       // 102 'f' | ||||||
|  | 	{0x18, 0xa4, 0xa4, 0x7c},       // 103 'g' | ||||||
|  | 	{0x7f, 0x04, 0x04, 0x78},       // 104 'h' | ||||||
|  | 	{0x44, 0x7d, 0x40},             // 105 'i' | ||||||
|  | 	{0x84, 0x7d},                   // 106 'j' | ||||||
|  | 	{0x7f, 0x10, 0x28, 0x44},       // 107 'k' | ||||||
|  | 	{0x41, 0x7f, 0x40},             // 108 'l' | ||||||
|  | 	{0x7c, 0x04, 0x7c, 0x04, 0x78}, // 109 'm' | ||||||
|  | 	{0x7c, 0x08, 0x04, 0x78},       // 110 'n' | ||||||
|  | 	{0x38, 0x44, 0x44, 0x38},       // 111 'o' | ||||||
|  | 	{0xfc, 0x24, 0x24, 0x18},       // 112 'p' | ||||||
|  | 	{0x18, 0x24, 0x24, 0xfc},       // 113 'q' | ||||||
|  | 	{0x7c, 0x08, 0x04, 0x08},       // 114 'r' | ||||||
|  | 	{0x48, 0x54, 0x54, 0x24},       // 115 's' | ||||||
|  | 	{0x04, 0x3f, 0x44},             // 116 't' | ||||||
|  | 	{0x3c, 0x40, 0x20, 0x7c},       // 117 'u' | ||||||
|  | 	{0x3c, 0x40, 0x3c},             // 118 'v' | ||||||
|  | 	{0x3c, 0x40, 0x3c, 0x40, 0x3c}, // 119 'w' | ||||||
|  | 	{0x6c, 0x10, 0x6c},             // 120 'x' | ||||||
|  | 	{0x1c, 0xa0, 0xa0, 0x7c},       // 121 'y' | ||||||
|  | 	{0x64, 0x54, 0x4c},             // 122 'z' | ||||||
|  | 	{0x08, 0x36, 0x41},             // 123 '{' | ||||||
|  | 	{0x7f},                         // 124 '|' | ||||||
|  | 	{0x41, 0x36, 0x08},             // 125 '}' | ||||||
|  | 	{0x08, 0x04, 0x08, 0x04}}       // 126 '~' | ||||||
|  | 
 | ||||||
|  | func Letter(whichLetter rune) [][]RGBcolor { | ||||||
|  | 	w := 8 | ||||||
|  | 	h := 8 | ||||||
|  | 	grid := make([][]RGBcolor, w) | ||||||
|  | 	for i := 0; i < w; i++ { | ||||||
|  | 		grid[i] = make([]RGBcolor, h) | ||||||
|  | 	} | ||||||
|  | 	//index := int(whichLetter) | ||||||
|  | 	return grid | ||||||
|  | } | ||||||
|  | @ -143,7 +143,8 @@ func HandleHTTP(queueChannel chan queue.QueueItem, Port int, overrideChannel cha | ||||||
| 	r.NotFoundHandler = http.HandlerFunc(NotFoundHandler) | 	r.NotFoundHandler = http.HandlerFunc(NotFoundHandler) | ||||||
| 	r.HandleFunc("/", RootHandler) | 	r.HandleFunc("/", RootHandler) | ||||||
| 	r.HandleFunc("/healthz", HealthHandler) | 	r.HandleFunc("/healthz", HealthHandler) | ||||||
| 	r.HandleFunc("/pattern/{pattern}", PatternHandler) | 	r.HandleFunc("/pattern/{pattern}/override={override}", PatternHandler) | ||||||
|  | 	r.HandleFunc("/pattern/{pattern}/", PatternHandler) | ||||||
| 	r.HandleFunc("/pattern/{pattern}/{duration}", PatternHandler) | 	r.HandleFunc("/pattern/{pattern}/{duration}", PatternHandler) | ||||||
| 	r.HandleFunc("/pattern/{pattern}/{duration}/{speed}", PatternHandler) | 	r.HandleFunc("/pattern/{pattern}/{duration}/{speed}", PatternHandler) | ||||||
| 	r.HandleFunc("/colour/{name}", ColourHandler) | 	r.HandleFunc("/colour/{name}", ColourHandler) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue