});
push_event_to_buffer(esp, event_size, 0x06, [ window.innerWidth, window.innerHeight ]);
+
+ document.oncontextmenu = (e) => {
+ e.preventDefault = true;
+ return false;
+ };
}
}
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;
}
}
}
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) {
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 {
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
}
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 {