diff --git a/.clang-format b/.clang-format index 811de74..194dd1c 100644 --- a/.clang-format +++ b/.clang-format @@ -1,5 +1,5 @@ BasedOnStyle: LLVM ColumnLimit: 80 BreakBeforeBraces: Attach -IndentWidth: 2 +IndentWidth: 4 ContinuationIndentWidth: 4 \ No newline at end of file diff --git a/src/application/applicationstate.c b/src/application/applicationstate.c new file mode 100644 index 0000000..e69de29 diff --git a/src/application/applicationstate.h b/src/application/applicationstate.h new file mode 100644 index 0000000..dc88a1a --- /dev/null +++ b/src/application/applicationstate.h @@ -0,0 +1,7 @@ +typedef enum VektorAppTool { + CircleTool +} VektorAppTool; + +typedef struct VektorAppState { + VektorAppTool selectedTool; +} VektorAppState; \ No newline at end of file diff --git a/src/main.c b/src/main.c index c90a17f..a7eb5a4 100644 --- a/src/main.c +++ b/src/main.c @@ -13,7 +13,7 @@ static void on_map(GtkWidget *window, gpointer user_data) { void write_ppm(const char *path, const VektorFramebuffer *fb) { FILE *f = fopen(path, "wb"); if (!f) - abort(); + abort(); fprintf(f, "P6\n%d %d\n255\n", fb->width, fb->height); fwrite(fb->pixels, 1, fb->width * fb->height * 4, f); @@ -32,27 +32,26 @@ static void activate(GtkApplication *app, gpointer user_data) { vektor_edgebuffer_flatten_polygon(&edges, &pg); for (size_t i = 0; i < edges.count; i++) { - vektor_framebuffer_drawline(&fb, edges.edges[i].p1, edges.edges[i].p2, 0, 0, 0); + vektor_framebuffer_drawline(&fb, edges.edges[i].p1, edges.edges[i].p2, 0, 0, 0); } VektorWidgetState *widget_state = - (VektorWidgetState *)malloc(sizeof(VektorWidgetState)); + (VektorWidgetState *)malloc(sizeof(VektorWidgetState)); vektor_uictrl_init(app, widget_state); VektorCanvas *canvas = (VektorCanvas *)malloc(sizeof(VektorCanvas)); vektor_canvas_init(widget_state, canvas); - vektor_canvas_fill(canvas, vektor_color_new(255,0,0,255)); + vektor_canvas_fill(canvas, vektor_color_new(0,0,0,255)); vektor_framebuffer_drawto(&fb, canvas); vektor_canvas_update(canvas); g_signal_connect(widget_state->window, "map", G_CALLBACK(on_map), - widget_state); + widget_state); gtk_window_present(widget_state->window); } int main(int argc, char **argv) { - //write_ppm("out.ppm", &fb); GtkApplication *app; int status; diff --git a/src/ui/uicontroller.c b/src/ui/uicontroller.c index 6dcbd96..3300251 100644 --- a/src/ui/uicontroller.c +++ b/src/ui/uicontroller.c @@ -1,17 +1,24 @@ #include "uicontroller.h" +#include "gdk/gdk.h" #include "gtk/gtk.h" +#include "gtk/gtkcssprovider.h" void vektor_uictrl_init(GtkApplication *app, VektorWidgetState *stateOut) { GtkBuilder *builder = gtk_builder_new(); GError *error = NULL; - g_print("%s\n", g_get_current_dir()); - // TODO: .ui files as resources instead of sketchy relative paths if (!gtk_builder_add_from_file(builder, "./ui/main.ui", &error)) { g_error("Fatal: %s", error->message); } + GtkCssProvider* provider = gtk_css_provider_new(); + gtk_css_provider_load_from_path(provider, "./ui/main.css"); + gtk_style_context_add_provider_for_display(gdk_display_get_default(), + GTK_STYLE_PROVIDER(provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION + ); + stateOut->window = GTK_WINDOW(gtk_builder_get_object(builder, "main_window")); stateOut->workspacePaned = GTK_PANED(gtk_builder_get_object(builder, "workspace_paned")); diff --git a/ui/main.css b/ui/main.css new file mode 100755 index 0000000..35b16f7 --- /dev/null +++ b/ui/main.css @@ -0,0 +1,9 @@ +#toolstrip { + background: rgba(0,0,0,.6); + padding: 6px; + border-radius: 8px; +} + +button { + background: none; +} \ No newline at end of file diff --git a/ui/main.ui b/ui/main.ui index a1bd344..60827bd 100644 --- a/ui/main.ui +++ b/ui/main.ui @@ -38,12 +38,48 @@ true true - + - - cover - true - true + + + + + + + contain + true + true + + + + + + + + vertical + 6 + start + center + + 12 + 12 + 12 + + + + + insert-object-symbolic + + + + + + edit-copy-symbolic + + + + +