aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/examples/hot_reload/graph.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/examples/hot_reload/graph.v')
-rw-r--r--v_windows/v/examples/hot_reload/graph.v86
1 files changed, 86 insertions, 0 deletions
diff --git a/v_windows/v/examples/hot_reload/graph.v b/v_windows/v/examples/hot_reload/graph.v
new file mode 100644
index 0000000..53228f1
--- /dev/null
+++ b/v_windows/v/examples/hot_reload/graph.v
@@ -0,0 +1,86 @@
+module main
+
+import gx
+import gg
+import time
+import math
+
+const (
+ size = 700
+ scale = 50.0
+)
+
+struct Context {
+mut:
+ gg &gg.Context
+}
+
+fn main() {
+ mut context := &Context{
+ gg: 0
+ }
+ context.gg = gg.new_context(
+ width: size
+ height: size
+ font_size: 20
+ user_data: context
+ window_title: 'Graph builder'
+ create_window: true
+ frame_fn: frame
+ resizable: true
+ bg_color: gx.white
+ font_path: gg.system_font_path()
+ )
+ context.gg.run()
+}
+
+fn frame(mut ctx Context) {
+ ctx.gg.begin()
+ ctx.draw()
+ ctx.gg.end()
+}
+
+[live]
+fn (ctx &Context) draw() {
+ s := gg.window_size()
+ mut w := s.width
+ mut h := s.height
+ if gg.high_dpi() {
+ w /= 2
+ h /= 2
+ }
+ ctx.gg.draw_line(0, h / 2, w, h / 2, gx.gray) // x axis
+ ctx.gg.draw_line(w / 2, 0, w / 2, h, gx.gray) // y axis
+ atime := f64(time.ticks() / 10)
+ stime := math.sin(2.0 * math.pi * f64(time.ticks() % 6000) / 6000)
+ mut y := 0.0
+ blue := gx.Color{
+ r: 100
+ g: 100
+ b: 200
+ }
+ red := gx.Color{
+ r: 200
+ g: 100
+ b: 100
+ }
+ y = 1.0
+ max := f32(w) / (2 * scale)
+ min := -max
+ for x := min; x <= max; x += 0.01 {
+ // y = x*x + 2
+ // y = x * x + stime * stime
+ // y = stime
+ // y = stime * h
+ y = stime * 1.0 * math.sin(x + stime + atime / 32) * ((h / 256) + x)
+ // y = (stime * x) * x + stime
+ // y = (x + 3) * (x + 3) / stime + stime*2.5
+ // y = math.sqrt(30.0 - x * x) * stime
+ // y -= (stime-0.5) + stime
+ // ctx.gg.draw_rect(f32((w/2) + x * scale), f32((h/2) - y * scale), 2, 2, blue)
+ ctx.gg.draw_rect(f32((w / 2) + x * scale), f32((h / 2) - y * scale), 2, (f32(y) * scale),
+ blue)
+ ctx.gg.draw_rect(f32((w / 2) + x * scale), f32((h / 2) + y * scale), 2, (f32(y) * scale) +
+ 32, red)
+ }
+}