get drawing api started
parent
198e314953
commit
4c2fa6ab15
|
@ -31,4 +31,29 @@ open_buffer_window :: proc "c" (plugin: Plugin) {
|
|||
context = runtime.default_context();
|
||||
|
||||
fmt.println("Look you tried opening a window from a plugin!");
|
||||
|
||||
window := plugin.create_window(proc "c" (plugin: Plugin, input_map: rawptr) {
|
||||
plugin.register_input(input_map, .K, proc "c" (plugin: Plugin) {
|
||||
context = runtime.default_context();
|
||||
|
||||
fmt.println("haha, moving up does nothing");
|
||||
}, "move selection up");
|
||||
plugin.register_input(input_map, .J, proc "c" (plugin: Plugin) {
|
||||
context = runtime.default_context();
|
||||
|
||||
fmt.println("haha, moving down does nothing");
|
||||
}, "move selection down");
|
||||
}, draw_buffer_window);
|
||||
}
|
||||
|
||||
draw_buffer_window :: proc "c" (plugin: Plugin, window: rawptr) {
|
||||
context = runtime.default_context();
|
||||
|
||||
plugin.draw_rect(
|
||||
0,
|
||||
0,
|
||||
64,
|
||||
64,
|
||||
0x000000ff,
|
||||
);
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ Mode :: enum {
|
|||
Insert,
|
||||
}
|
||||
|
||||
WindowDrawProc :: proc(win: ^Window, state: ^State);
|
||||
WindowDrawProc :: proc "c" (plugin: plugin.Plugin, win: rawptr);
|
||||
WindowFreeProc :: proc(win: ^Window, state: ^State);
|
||||
WindowGetBufferProc :: proc(win: ^Window) -> ^FileBuffer;
|
||||
Window :: struct {
|
||||
|
|
|
@ -290,6 +290,22 @@ main :: proc() {
|
|||
core.register_key_action(to_be_edited_map, key, input_action, description);
|
||||
}
|
||||
},
|
||||
create_window = proc "c" (register_group: plugin.InputGroupProc, draw_proc: plugin.WindowDrawProc) -> rawptr {
|
||||
context = state.ctx;
|
||||
window := new(core.Window);
|
||||
window^ = core.Window {
|
||||
input_map = core.new_input_map(),
|
||||
draw = draw_proc,
|
||||
};
|
||||
|
||||
register_group(state.plugin_vtable, transmute(rawptr)&window.input_map);
|
||||
|
||||
state.window = window;
|
||||
state.current_input_map = &window.input_map;
|
||||
|
||||
return window;
|
||||
},
|
||||
draw_rect = raylib.DrawRectangle,
|
||||
iter = plugin.Iterator {
|
||||
get_current_buffer_iterator = proc "c" () -> plugin.BufferIter {
|
||||
context = state.ctx;
|
||||
|
@ -676,7 +692,7 @@ main :: proc() {
|
|||
theme.get_palette_raylib_color(.Background1));
|
||||
|
||||
if state.window != nil && state.window.draw != nil {
|
||||
state.window->draw(&state);
|
||||
state.window.draw(state.plugin_vtable, state.window);
|
||||
}
|
||||
|
||||
if state.current_input_map != &state.input_map {
|
||||
|
|
|
@ -3,6 +3,7 @@ package plugin;
|
|||
import "core:intrinsics"
|
||||
import "core:dynlib"
|
||||
import "core:fmt"
|
||||
import "vendor:raylib"
|
||||
|
||||
OnInitializeProc :: proc "c" (plugin: Plugin);
|
||||
OnExitProc :: proc "c" (/* probably needs some state eventually */);
|
||||
|
@ -185,6 +186,7 @@ OnColorBufferProc :: proc "c" (plugin: Plugin, buffer: rawptr);
|
|||
InputGroupProc :: proc "c" (plugin: Plugin, input_map: rawptr);
|
||||
InputActionProc :: proc "c" (plugin: Plugin);
|
||||
WindowInputProc :: proc "c" (plugin: Plugin, window: rawptr);
|
||||
WindowDrawProc :: proc "c" (plugin: Plugin, window: rawptr);
|
||||
Plugin :: struct {
|
||||
state: rawptr,
|
||||
iter: Iterator,
|
||||
|
@ -195,7 +197,9 @@ Plugin :: struct {
|
|||
register_input_group: proc "c" (input_map: rawptr, key: Key, register_group: InputGroupProc),
|
||||
register_input: proc "c" (input_map: rawptr, key: Key, input_action: InputActionProc, description: cstring),
|
||||
|
||||
create_window: proc "c" (register_group: InputGroupProc) -> rawptr,
|
||||
create_window: proc "c" (register_group: InputGroupProc, draw_proc: WindowDrawProc) -> rawptr,
|
||||
|
||||
draw_rect: type_of(raylib.DrawRectangle),
|
||||
}
|
||||
|
||||
load_proc_address :: proc(lib_path: string, library: dynlib.Library, symbol: string, $ProcType: typeid) -> ProcType
|
||||
|
|
|
@ -51,7 +51,7 @@ create_buffer_list_window :: proc() -> ^BufferListWindow {
|
|||
list_window^ = BufferListWindow {
|
||||
window = core.Window {
|
||||
input_map = input_map,
|
||||
draw = draw_buffer_list_window,
|
||||
//draw = draw_buffer_list_window,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -160,7 +160,7 @@ create_grep_window :: proc() -> ^GrepWindow {
|
|||
grep_window^ = GrepWindow {
|
||||
window = core.Window {
|
||||
input_map = input_map,
|
||||
draw = draw_grep_window,
|
||||
//draw = draw_grep_window,
|
||||
get_buffer = grep_window_get_buffer,
|
||||
free = free_grep_window,
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue