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
-
+
-