research in ideation.md

This commit is contained in:
Harrison DiAmbrosio 2025-10-16 17:19:03 -04:00
parent 6b76de1e77
commit 7838d09275
4 changed files with 109 additions and 1 deletions

View file

@ -15,3 +15,56 @@
# Style Guide # Style Guide
Perhaps we do what river does for organization? Checkout river/Server.zig:17's use of @This(); Perhaps we do what river does for organization? Checkout river/Server.zig:17's use of @This();
# information
server owns
- compositor
wlr_compositor owms
- a list of wlr_surfaces
wlr_surfaces owns
- wl_resources which should (be/have?) buffers
## Scene Structure
wlr_scene owns
- list of outputs
- wlr_scene_tree
wlr_scene_tree owns
- its own wlr_scene_node
- list of its children wlr_scene_node
wlr_scene_node can be TREE, RECT or BUFFER and owns
- its own type
- a pointer to its parent wlr_scene_tree
- a list of children as wlr_scene_trees
- boolean if enabled
- x, y position relative to parent
- wl signal for destroy
- *void arbitrary data
```zig
struct wl_resource *_surface;
wl_resource_for_each(_surface, &server->compositor->surfaces) {
struct wlr_surface *surface = wlr_surface_from_resource(_surface);
if (!wlr_surface_has_buffer(surface)) {
continue;
}
struct wlr_box render_box = {
.x = 20, .y = 20,
.width = surface->current->width,
.height = surface->current->height
};
float matrix[16];
wlr_matrix_project_box(&matrix, &render_box,
surface->current->transform,
0, &wlr_output->transform_matrix);
wlr_render_with_matrix(renderer, surface->texture, &matrix, 1.0f);
wlr_surface_send_frame_done(surface, &now);
}
```

View file

@ -3,6 +3,5 @@ const std = @import("std");
const Server = @import("server.zig").Server; const Server = @import("server.zig").Server;
pub fn main() !void { pub fn main() !void {
std.debug.print("Starting mezzaluna", .{});
_ = try Server.init(); _ = try Server.init();
} }

6
src/output.zig Normal file
View file

@ -0,0 +1,6 @@
const std = @import("std");
const wl = @import("wayland").server.wl;
const wlr = @import("wlroots");
pub const Ouput = struct {
}

50
src/scene.zig Normal file
View file

@ -0,0 +1,50 @@
const wl = @import("wayland").server.wl;
const wlr = @import("wlroots");
// server owns
// - compositor
//
// wlr_compositor owms
// - a list of wlr_surfaces
//
// wlr_surfaces own_buffers
//
// struct wl_resource *_surface;
// wl_resource_for_each(_surface, &server->compositor->surfaces) {
// struct wlr_surface *surface = wlr_surface_from_resource(_surface);
// if (!wlr_surface_has_buffer(surface)) {
// continue;
// }
// struct wlr_box render_box = {
// .x = 20, .y = 20,
// .width = surface->current->width,
// .height = surface->current->height
// };
// float matrix[16];
// wlr_matrix_project_box(&matrix, &render_box,
// surface->current->transform,
// 0, &wlr_output->transform_matrix);
// wlr_render_with_matrix(renderer, surface->texture, &matrix, 1.0f);
// wlr_surface_send_frame_done(surface, &now);
// }
//
//
//
// wlr_scene owns
// - list of outputs
// - wlr_scene_tree
//
// wlr_scene_tree owns
// - its own wlr_scene_node
// - list of its children wlr_scene_node
//
// wlr_scene_node can be TREE, RECT or BUFFER and owns
// - its own type
// - a pointer to its parent wlr_scene_tree
// - a list of children as wlr_scene_trees
// - boolean if enabled
// - x, y position relative to parent
// - wl signal for destroy
// - *void arbitrary data