-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.go
68 lines (56 loc) 路 1.78 KB
/
app.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package app
import (
"image"
"path"
"runtime"
"github.com/eliseduverdier/cellular-automata-go/app/automata"
"github.com/eliseduverdier/cellular-automata-go/app/parameters"
"github.com/eliseduverdier/cellular-automata-go/app/renderer"
)
func Render(params parameters.Parameters) string {
automata := automata.CellularAutomata{
States: params.States,
Order: params.Order,
Columns: params.Columns,
Rows: params.Rows,
RuleNumber: params.Rule,
FirstLine: automata.FirstLine{params.Start},
}
switch params.Render {
case "image":
renderer.GenerateImage(automata.GetMatrix(), params.PixelSize, automata.GetMetadata(), GetImagePath())
return renderer.GetImageName(automata.GetMetadata())
case "text":
renderer.GenerateText(automata.GetMatrix(), automata.GetMetadata())
return ""
default:
return "" // TODO, panic() and return type with err
}
}
func RenderText(params parameters.Parameters) string {
automata := automata.CellularAutomata{
States: params.States,
Order: params.Order,
Columns: params.Columns,
Rows: params.Rows,
RuleNumber: params.Rule,
FirstLine: automata.FirstLine{params.Start},
}
return renderer.GenerateText(automata.GetMatrix(), automata.GetMetadata())
}
func RenderImage(params parameters.Parameters) (*image.RGBA, string) {
automata := automata.CellularAutomata{
States: params.States,
Order: params.Order,
Columns: params.Columns,
Rows: params.Rows,
RuleNumber: params.Rule,
FirstLine: automata.FirstLine{params.Start},
}
return renderer.GenerateImage(automata.GetMatrix(), params.PixelSize, automata.GetMetadata(), GetImagePath())
}
func GetImagePath() string {
_, currentFile, _, _ := runtime.Caller(0)
imageDir := path.Join(currentFile, "/../../images")
return imageDir
}