From: Brendan Hansen Date: Wed, 17 Feb 2021 19:25:03 +0000 (-0600) Subject: added advancing through the slideshow X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=520246b85133fd65e795fe1147cb7afa9632b55b;p=onyx-prez.git added advancing through the slideshow --- diff --git a/dist/index.js b/dist/index.js index 1877084..db3df5b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -62,6 +62,11 @@ let event_import_obj = { }); push_event_to_buffer(esp, event_size, 0x06, [ window.innerWidth, window.innerHeight ]); + + document.oncontextmenu = (e) => { + e.preventDefault = true; + return false; + }; } } diff --git a/src/prez.onyx b/src/prez.onyx index 6f810aa..eb3da2c 100644 --- a/src/prez.onyx +++ b/src/prez.onyx @@ -36,6 +36,14 @@ poll_events :: () { case MouseDown { printf("Mouse down: %i, %i\n", ev.mouse.pos_x, ev.mouse.pos_y); + + use event.MouseButton + switch ev.mouse.button { + case Right do slideshow_advance_slide(^the_slideshow, -1); + case #default do slideshow_advance_slide(^the_slideshow, 1); + } + + redraw = 2; } } } @@ -72,6 +80,29 @@ create_dummy_show :: () { slide.items[1].text.y_pos = .6; slide.items[1].text.font_name = "italic 36px Arail"; } + + { // Slide 2 + slide := slideshow_insert_slide(^the_slideshow); + slide_init(slide, background_color = Color.{ 0.2, 0.1, 0.1 }, item_count = 3); + + slide.items[0] = slideshow_make_item(^the_slideshow); + slide.items[0].kind = Slide_Item.Kind.Text; + slide.items[0].text.text = "The Second Slide! Duh duh duhhhh"; + slide.items[0].text.y_pos = .2; + slide.items[0].text.font_name = "bold 72px Arail"; + + slide.items[1] = slideshow_make_item(^the_slideshow); + slide.items[1].kind = Slide_Item.Kind.Text; + slide.items[1].text.text = "Here is some monospace text."; + slide.items[1].text.y_pos = .4; + slide.items[1].text.font_name = "36px monospace"; + + slide.items[2] = slideshow_make_item(^the_slideshow); + slide.items[2].kind = Slide_Item.Kind.Text; + slide.items[2].text.text = "Here is a block of much longer text that will not wrap correctly, which is annoying but I think the best thing to do is... I don't know yet."; + slide.items[2].text.y_pos = .7; + slide.items[2].text.font_name = "36px Calibri"; + } } main :: (args: [] cstr) { diff --git a/src/slides.onyx b/src/slides.onyx index 52a3c4f..30a6334 100644 --- a/src/slides.onyx +++ b/src/slides.onyx @@ -58,13 +58,23 @@ Slide_Item_Text :: struct { slideshow_make :: (allocator := context.allocator) -> Slideshow { slideshow: Slideshow; - slideshow.title = "Untitled Slideshow"; + slideshow_init(^slideshow, allocator); + return slideshow; +} - slideshow.arena = alloc.arena.make(allocator, arena_size = 16 * 1024); +slideshow_init :: (use s: ^Slideshow, allocator := context.allocator) { + title = "Untitled Slideshow"; + current_slide = 0; - array.init(^slideshow.slides, 4); + arena = alloc.arena.make(allocator, arena_size = 16 * 1024); + array.init(^slides, 4); +} - return slideshow; +slideshow_reset :: (use s: ^Slideshow) { + alloc.arena.free(^arena); + array.free(^slides); + + slideshow_init(s); } slideshow_get_current_slide :: (use s: ^Slideshow) -> ^Slide { @@ -73,6 +83,11 @@ slideshow_get_current_slide :: (use s: ^Slideshow) -> ^Slide { return ^slides[current_slide]; } +slideshow_advance_slide :: (use s: ^Slideshow, count := 1) { + current_slide += count; + current_slide = math.clamp(current_slide, 0, slides.count - 1); +} + slideshow_insert_slide :: (use s: ^Slideshow, at := -1) -> ^Slide { // @Robustness: not checking the return values on these calls @@ -82,7 +97,8 @@ slideshow_insert_slide :: (use s: ^Slideshow, at := -1) -> ^Slide { } array.ensure_capacity(^slides, slides.count + 1); - return ^slides[at]; + defer slides.count += 1; + return ^slides[slides.count]; } slideshow_make_item :: (use s: ^Slideshow) -> ^Slide_Item {