1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

examples/hot_code_reloading: graph builder improvements

This commit is contained in:
Alexander Medvednikov 2019-07-20 17:38:00 +02:00
parent 5c12d13b19
commit 7f512eaf72
2 changed files with 22 additions and 25 deletions

View File

@ -4,11 +4,11 @@ import gx
import gg import gg
import time import time
import glfw import glfw
import math
const ( const (
WIDTH = 1000 Size = 1000
HEIGHT = 1000 Scale = 50.0
SCALE = 50
) )
struct Context { struct Context {
@ -19,12 +19,13 @@ fn main() {
glfw.init() glfw.init()
ctx:= &Context{ ctx:= &Context{
gg: gg.new_context(gg.Cfg { gg: gg.new_context(gg.Cfg {
width: WIDTH width: Size
height: HEIGHT height: Size
use_ortho: true use_ortho: true
create_window: true create_window: true
window_title: 'graph builder' window_title: 'Graph builder'
window_user_ptr: ctx window_user_ptr: ctx
always_on_top: true
}) })
} }
for { for {
@ -35,22 +36,13 @@ fn main() {
} }
[live] [live]
fn (ctx & Context) draw() { fn (ctx &Context) draw() {
// x axis ctx.gg.draw_line(0, Size / 2, Size, Size / 2) // x axis
ctx.gg.draw_line(0, HEIGHT / 2, WIDTH, HEIGHT / 2) ctx.gg.draw_line(Size / 2, 0, Size / 2, Size) // y axis
// y axis center := f64(Size / 2)
ctx.gg.draw_line(WIDTH / 2, 0, WIDTH / 2, HEIGHT) for x := -10.0; x <= 10.0; x += 0.002 {
mut prev_x := f64(0) y := (x - 1) * (x - 1) + 1
mut prev_y := f64(0) ctx.gg.draw_rect(center + x * Scale,
center := f64(WIDTH / 2) center - y * Scale, 1, 1, gx.Black)
for x := f64(- 10); x <= f64(10); x += 0.01 {
//y := (x * x - 2) * f64(SCALE)
y := (1.0 / x) * f64(SCALE)
//ctx.gg.draw_line(int(center + prev_x), int(center+prev_y),
//int(center + x*f64(10)), int(center+y))
ctx.gg.draw_rect(int(center) + int(x * f64(SCALE)), int(center - y), 2, 1, gx.Black)
// gx.draw_rect_f(center + (x * f64(SCALE)), center - y, 1, 1, gx.BLACK)
prev_x = x
prev_y = y
} }
} }

View File

@ -56,6 +56,7 @@ struct Cfg {
create_window bool create_window bool
window_user_ptr voidptr window_user_ptr voidptr
window_title string window_title string
always_on_top bool
} }
struct GG { struct GG {
@ -85,6 +86,7 @@ pub fn new_context(cfg Cfg) *GG {
width: cfg.width width: cfg.width
height: cfg.height height: cfg.height
ptr: cfg.window_user_ptr ptr: cfg.window_user_ptr
always_on_top: cfg.always_on_top
}) })
window.make_context_current() window.make_context_current()
init() init()
@ -401,7 +403,7 @@ pub fn create_image(file string) u32 {
return texture return texture
} }
pub fn (ctx &GG) draw_line_c(x, y, x2, y2 int, color gx.Color) { pub fn (ctx &GG) draw_line_c(x, y, x2, y2 f32, color gx.Color) {
C.glDeleteBuffers(1, &ctx.VAO) C.glDeleteBuffers(1, &ctx.VAO)
C.glDeleteBuffers(1, &ctx.VBO) C.glDeleteBuffers(1, &ctx.VBO)
ctx.shader.use() ctx.shader.use()
@ -415,7 +417,7 @@ pub fn (ctx &GG) draw_line_c(x, y, x2, y2 int, color gx.Color) {
gl.draw_arrays(GL_LINES, 0, 2) gl.draw_arrays(GL_LINES, 0, 2)
} }
pub fn (c &GG) draw_line(x, y, x2, y2 int) { pub fn (c &GG) draw_line(x, y, x2, y2 f32) {
c.draw_line_c(x, y, x2, y2, gx.Gray) c.draw_line_c(x, y, x2, y2, gx.Gray)
} }
@ -423,6 +425,9 @@ pub fn (c &GG) draw_vertical(x, y, height int) {
c.draw_line(x, y, x, y + height) c.draw_line(x, y, x, y + height)
} }
//ctx.gg.draw_line(center + prev_x, center+prev_y, center + x*10.0, center+y)
// fn (ctx &GG) draw_image(x, y, w, h f32, img stbi.Image) { // fn (ctx &GG) draw_image(x, y, w, h f32, img stbi.Image) {
pub fn (ctx &GG) draw_image(x, y, w, h f32, tex_id u32) { pub fn (ctx &GG) draw_image(x, y, w, h f32, tex_id u32) {
// println('DRAW IMAGE $x $y $w $h $tex_id') // println('DRAW IMAGE $x $y $w $h $tex_id')