diff --git a/cmd/bustest/main.go b/cmd/bustest/main.go deleted file mode 100644 index 66ed9aa..0000000 --- a/cmd/bustest/main.go +++ /dev/null @@ -1,29 +0,0 @@ -package main - -import ( - lucifer3 "git.aiterp.net/lucifer3/server" - "git.aiterp.net/lucifer3/server/services" - "git.aiterp.net/lucifer3/server/services/effectenforcer" - "git.aiterp.net/lucifer3/server/services/hue" - "git.aiterp.net/lucifer3/server/services/mill" - "git.aiterp.net/lucifer3/server/services/nanoleaf" - "git.aiterp.net/lucifer3/server/services/tradfri" - "time" -) - -func main() { - bus := lucifer3.EventBus{} - - resolver := services.NewResolver() - sceneMap := services.NewSceneMap(resolver) - - bus.JoinPrivileged(resolver) - bus.JoinPrivileged(sceneMap) - bus.Join(effectenforcer.NewService(resolver, sceneMap)) - bus.Join(nanoleaf.NewService()) - bus.Join(hue.NewService()) - bus.Join(tradfri.NewService()) - bus.Join(mill.NewService()) - - time.Sleep(time.Hour) -} diff --git a/cmd/generate-k-image/main.go b/cmd/generate-k-image/main.go new file mode 100644 index 0000000..eb5453a --- /dev/null +++ b/cmd/generate-k-image/main.go @@ -0,0 +1,47 @@ +package main + +import ( + "git.aiterp.net/lucifer3/server/internal/color" + "image" + color2 "image/color" + "image/png" + "math" + "os" +) + +func main() { + img := image.NewRGBA(image.Rect(0, 0, 1000, 1000)) + for y := 0; y < 1000; y += 1 { + for x := 0; x < 1000; x += 1 { + vecX := float64(x-500) / 500.0 + vecY := float64(y-500) / 500.0 + dist := math.Sqrt(vecX*vecX + vecY*vecY) + angle := math.Mod((math.Atan2(vecY/dist, vecX/dist)*(180/math.Pi))+360+90, 360) + + if dist >= 0.9 && dist < 1 && angle > 2.5 && angle < 357.5 { + k := 1000 + int(11000*((angle-2.5)/355)) + c := color.Color{K: &k} + rgb, _ := c.ToRGB() + img.Set(x, y, color2.RGBA{ + R: uint8(rgb.RGB.Red * 255.0), + G: uint8(rgb.RGB.Green * 255.0), + B: uint8(rgb.RGB.Blue * 255.0), + A: 255, + }) + } else if dist < 0.85 { + rgb := (color.HueSat{Hue: math.Mod(angle+180, 360), Sat: dist / 0.85}).ToRGB() + + img.Set(x, y, color2.RGBA{ + R: uint8(rgb.Red * 255.0), + G: uint8(rgb.Green * 255.0), + B: uint8(rgb.Blue * 255.0), + A: 255, + }) + } else { + img.Set(x, y, color2.RGBA{R: 0, G: 0, B: 0, A: 0}) + } + } + } + + _ = png.Encode(os.Stdout, img) +} diff --git a/cmd/generate-xy-image/main.go b/cmd/generate-xy-image/main.go new file mode 100644 index 0000000..46f9483 --- /dev/null +++ b/cmd/generate-xy-image/main.go @@ -0,0 +1,32 @@ +package main + +import ( + "git.aiterp.net/lucifer3/server/internal/color" + "image" + color2 "image/color" + "image/png" + "log" + "os" +) + +func main() { + img := image.NewRGBA(image.Rect(0, 0, 500, 500)) + for y := 0; y < 500; y += 1 { + for x := 0; x < 500; x += 1 { + rgb := (color.XY{X: float64(x) / 499, Y: float64(y) / 499}).ToRGB() + + if y == 300 { + log.Println(rgb.Red, rgb.Green, rgb.Blue) + } + + img.Set(x, y, color2.RGBA{ + R: uint8(rgb.Red * 255.0), + G: uint8(rgb.Green * 255.0), + B: uint8(rgb.Blue * 255.0), + A: 255, + }) + } + } + + _ = png.Encode(os.Stdout, img) +} diff --git a/effects/manual.go b/effects/manual.go index 45e09a8..dad1ea8 100644 --- a/effects/manual.go +++ b/effects/manual.go @@ -8,10 +8,10 @@ import ( ) type Manual struct { - Power *bool `json:"power,omitempty"` - Color *color.Color `json:"color,omitempty"` - Intensity *float64 `json:"intensity,omitempty"` - Temperature *float64 `json:"temperature,omitempty"` + Power *bool `json:"power"` + Color *color.Color `json:"color"` + Intensity *float64 `json:"intensity"` + Temperature *float64 `json:"temperature"` } func (e Manual) EffectDescription() string { diff --git a/frontend/src/app.html b/frontend/src/app.html index 638d1cc..0d1e6e0 100644 --- a/frontend/src/app.html +++ b/frontend/src/app.html @@ -4,6 +4,7 @@ + \ No newline at end of file diff --git a/frontend/src/lib/components/ColorPicker.svelte b/frontend/src/lib/components/ColorPicker.svelte new file mode 100644 index 0000000..411b2ba --- /dev/null +++ b/frontend/src/lib/components/ColorPicker.svelte @@ -0,0 +1,108 @@ + + + + +{#if $selectedColorPicker == id} + +
+ {#if xy} + color wheel +
+
+
+ {:else} + color wheel +
+
+
+ {/if} +
+{/if} + + \ No newline at end of file diff --git a/frontend/src/lib/components/Icon.svelte b/frontend/src/lib/components/Icon.svelte index a8340c7..df2337f 100644 --- a/frontend/src/lib/components/Icon.svelte +++ b/frontend/src/lib/components/Icon.svelte @@ -54,6 +54,7 @@ import { faCircleDot } from "@fortawesome/free-solid-svg-icons/faCircleDot"; import { faMasksTheater } from "@fortawesome/free-solid-svg-icons/faMasksTheater"; import { faTag } from "@fortawesome/free-solid-svg-icons/faTag"; + import { faFilter } from "@fortawesome/free-solid-svg-icons/faFilter"; const icons = { "clock": faClock, @@ -88,6 +89,7 @@ "circle_dot": faCircleDot, "masks_theater": faMasksTheater, "tag": faTag, + "filter": faFilter, }; export type IconName = keyof typeof icons; diff --git a/frontend/src/lib/components/bforms/BFormColorOption.svelte b/frontend/src/lib/components/bforms/BFormColorOption.svelte new file mode 100644 index 0000000..b5cb558 --- /dev/null +++ b/frontend/src/lib/components/bforms/BFormColorOption.svelte @@ -0,0 +1,98 @@ + + + + + + {#if color != null} +
+ +
+ {/if} + {#if color?.xy != null} + + + {/if} + {#if color?.hs != null} + + + {/if} + {#if color?.rgb != null} + + + + {/if} + {#if color?.k != null} + + {/if} +
+ + \ No newline at end of file diff --git a/frontend/src/lib/components/bforms/BFormDeleteOption.svelte b/frontend/src/lib/components/bforms/BFormDeleteOption.svelte new file mode 100644 index 0000000..d50b0ab --- /dev/null +++ b/frontend/src/lib/components/bforms/BFormDeleteOption.svelte @@ -0,0 +1,8 @@ + + + dispatch("delete")} red state icon=trash> diff --git a/frontend/src/lib/components/bforms/BFormIntensityOption.svelte b/frontend/src/lib/components/bforms/BFormIntensityOption.svelte new file mode 100644 index 0000000..e3b4954 --- /dev/null +++ b/frontend/src/lib/components/bforms/BFormIntensityOption.svelte @@ -0,0 +1,28 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/lib/components/bforms/BFormLine.svelte b/frontend/src/lib/components/bforms/BFormLine.svelte new file mode 100644 index 0000000..0b7cb8a --- /dev/null +++ b/frontend/src/lib/components/bforms/BFormLine.svelte @@ -0,0 +1,12 @@ +
+ +
+ + \ No newline at end of file diff --git a/frontend/src/lib/components/bforms/BFormOption.svelte b/frontend/src/lib/components/bforms/BFormOption.svelte new file mode 100644 index 0000000..e4e3aa5 --- /dev/null +++ b/frontend/src/lib/components/bforms/BFormOption.svelte @@ -0,0 +1,72 @@ + + + + +
+ +
+ +
+
+ + \ No newline at end of file diff --git a/frontend/src/lib/components/bforms/BFormParameter.svelte b/frontend/src/lib/components/bforms/BFormParameter.svelte new file mode 100644 index 0000000..7f5f82d --- /dev/null +++ b/frontend/src/lib/components/bforms/BFormParameter.svelte @@ -0,0 +1,103 @@ + + +{#if $enabled} +
+ + {#if type === "number"} + + {:else if type === "text"} + + {:else if type === "select"} + + {/if} +
+{/if} + + diff --git a/frontend/src/lib/components/bforms/BFormPowerOption.svelte b/frontend/src/lib/components/bforms/BFormPowerOption.svelte new file mode 100644 index 0000000..f1d14bd --- /dev/null +++ b/frontend/src/lib/components/bforms/BFormPowerOption.svelte @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/frontend/src/lib/components/bforms/BFormTemperatureOption.svelte b/frontend/src/lib/components/bforms/BFormTemperatureOption.svelte new file mode 100644 index 0000000..3910fba --- /dev/null +++ b/frontend/src/lib/components/bforms/BFormTemperatureOption.svelte @@ -0,0 +1,20 @@ + + + + {#if value != null} + + {/if} + \ No newline at end of file diff --git a/frontend/src/lib/components/scripting/ScriptAssignmentState.svelte b/frontend/src/lib/components/scripting/ScriptAssignmentState.svelte new file mode 100644 index 0000000..34445f5 --- /dev/null +++ b/frontend/src/lib/components/scripting/ScriptAssignmentState.svelte @@ -0,0 +1,25 @@ + + + + + + + + {#if deletable} + + {/if} + diff --git a/frontend/src/lib/contexts/StateContext.svelte b/frontend/src/lib/contexts/StateContext.svelte index 68ce036..2e3c41e 100644 --- a/frontend/src/lib/contexts/StateContext.svelte +++ b/frontend/src/lib/contexts/StateContext.svelte @@ -1,9 +1,10 @@