From 6ec477a9b5469526786ff3c0fe73bed480f6fde2 Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Sat, 25 Apr 2026 22:14:52 +0900 Subject: [PATCH] add dark theme, wip --- objs.mk | 3 + src/action/markdown.c | 6 +- src/action/seed.c | 2 +- src/action/site.c | 6 ++ src/default.c | 6 +- src/process.c | 13 ++-- src/skin/classic.c | 6 ++ src/skin/dark.c | 139 ++++++++++++++++++++++++++++++++++++++++++ src/skin/simple.c | 26 +++++--- src/taiga.h | 13 ++++ 10 files changed, 203 insertions(+), 17 deletions(-) create mode 100644 src/skin/dark.c diff --git a/objs.mk b/objs.mk index 62724f1..db683f1 100644 --- a/objs.mk +++ b/objs.mk @@ -80,6 +80,9 @@ src/src_process.o: src/process.c OBJS += src/src_skin_classic.o src/src_skin_classic.o: src/skin/classic.c $(CC) $(CFLAGS) -c -o $@ src/skin/classic.c +OBJS += src/src_skin_dark.o +src/src_skin_dark.o: src/skin/dark.c + $(CC) $(CFLAGS) -c -o $@ src/skin/dark.c OBJS += src/src_skin_simple.o src/src_skin_simple.o: src/skin/simple.c $(CC) $(CFLAGS) -c -o $@ src/skin/simple.c diff --git a/src/action/markdown.c b/src/action/markdown.c index 83e6942..888ae89 100644 --- a/src/action/markdown.c +++ b/src/action/markdown.c @@ -7,7 +7,7 @@ static char* title = NULL; static int in_title = 0; static int in_section = 0; static int in_message = 0; -static int in_pre = 0; +static int in_pre = 0; static char** mapping; static int mapping_len; static char* argin = NULL; @@ -501,7 +501,7 @@ int action_markdown(int argc, char** argv) { in_title = 0; in_section = 0; in_message = 0; - in_pre = 0; + in_pre = 0; mode = 0; if(md_parse(buffer, size, &parser, NULL)) { free(buffer); @@ -523,7 +523,7 @@ int action_markdown(int argc, char** argv) { in_title = 0; in_section = 0; in_message = 0; - in_pre = 0; + in_pre = 0; mode = 1; if(md_parse(buffer, size, &parser, NULL)) { free(buffer); diff --git a/src/action/seed.c b/src/action/seed.c index c560396..3f887b1 100644 --- a/src/action/seed.c +++ b/src/action/seed.c @@ -94,7 +94,7 @@ int action_seed(int argc, char** argv) { fprintf(f, " \n"); fprintf(f, " \n"); fprintf(f, " \n"); - fprintf(f, " classic \n"); + fprintf(f, " classic \n"); fprintf(f, " \n"); fprintf(f, " Example Co, Ltd\n"); fprintf(f, " %d \n", 1900 + tm->tm_year); diff --git a/src/action/site.c b/src/action/site.c index 11b8c2a..cefce11 100644 --- a/src/action/site.c +++ b/src/action/site.c @@ -2,7 +2,9 @@ xemil_t* skinconf; void (*site_stylesheet)(FILE* out, const char* top); /* also create files here if you need one */ +void (*site_htmlattr)(FILE* out, const char* top); void (*site_head)(FILE* out, const char* top, xl_node_t* header, const char* input); +void (*site_bodyattr)(FILE* out, const char* top); void (*site_body)(FILE* out, const char* top, const char* title, xl_node_t* body, const char* input); static int scan(const char* top, int mode, const char* path) { @@ -80,7 +82,9 @@ static int scan(const char* top, int mode, const char* path) { #define USE_THEME(x) \ site_stylesheet = x##_stylesheet; \ + site_htmlattr = x##_htmlattr; \ site_head = x##_head; \ + site_bodyattr = x##_bodyattr; \ site_body = x##_body; int action_site(int argc, char** argv) { @@ -103,6 +107,8 @@ int action_site(int argc, char** argv) { USE_THEME(classic); } else if(strcmp(nodes[0]->text, "simple") == 0) { USE_THEME(simple); + } else if(strcmp(nodes[0]->text, "dark") == 0) { + USE_THEME(dark); } else { fprintf(stderr, "Unknown skin: %s\n", nodes[0]->text); st = 1; diff --git a/src/default.c b/src/default.c index d4adc5f..094e550 100644 --- a/src/default.c +++ b/src/default.c @@ -102,7 +102,11 @@ void default_body(FILE* out, const char* top, xl_node_t* element, const char* in char* title = xl_get_attribute(element, "title"); char* id = u_section_id(element); - if(id != NULL) sprintf(tag, "
%s
", id, title); + if(id != NULL) { + sprintf(tag, "
%s
", id, title); + + sprintf(tag + strlen(tag), "
"); + } } else if(strcmp(element->name, "fixme") == 0 || /**/ strcmp(element->name, "warning") == 0 || /**/ strcmp(element->name, "note") == 0) { diff --git a/src/process.c b/src/process.c index 67935aa..d39532c 100644 --- a/src/process.c +++ b/src/process.c @@ -48,8 +48,12 @@ static int parse_file(const char* top, const char* full) { if(title == NULL) title = u_strdup("Untitled"); - fprintf(f, "\n"); - fprintf(f, "\n"); + if(site_htmlattr != dark_htmlattr) { + fprintf(f, "\n"); + } + fprintf(f, "\n"); fprintf(f, " \n"); fprintf(f, " \n"); fprintf(f, " \n"); @@ -84,7 +88,9 @@ static int parse_file(const char* top, const char* full) { } fprintf(f, " \n"); - fprintf(f, " \n"); + fprintf(f, " \n"); site_body(f, top, title, body, full); fprintf(f, "