diff --git a/hmml_to_html/cinera__hdmshow.css b/hmml_to_html/cinera__hmdshow.css similarity index 100% rename from hmml_to_html/cinera__hdmshow.css rename to hmml_to_html/cinera__hmdshow.css diff --git a/hmml_to_html/cinera_topics.css b/hmml_to_html/cinera_topics.css index 14dc270..a4a9c5b 100644 --- a/hmml_to_html/cinera_topics.css +++ b/hmml_to_html/cinera_topics.css @@ -20,3 +20,6 @@ .category.inventory { border: 1px solid hsl(111, 79%, 26%); background: hsl(111, 79%, 26%); } .category.hardware { border: 1px solid hsl(284, 94%, 26%); background: hsl(284, 94%, 26%); } .category.math { border: 1px solid hsl(185, 74%, 26%); background: hsl(185, 74%, 26%); } +.category.platform-layer { border: 1px solid hsl(160, 81%, 26%); background: hsl(160, 81%, 26%); } +.category.font { border: 1px solid hsl(13, 87%, 26%); background: hsl(13, 87%, 26%); } +.category.input-handling { border: 1px solid hsl(335, 94%, 26%); background: hsl(335, 94%, 26%); } diff --git a/hmml_to_html/hmml_to_html.c b/hmml_to_html/hmml_to_html.c index e602a79..9edad8d 100644 --- a/hmml_to_html/hmml_to_html.c +++ b/hmml_to_html/hmml_to_html.c @@ -1196,8 +1196,8 @@ main(int ArgC, char **Args) // NOTE(matt): Tree structure of buffer dependencies // Master - // Header - // Title + // Includes + // Menus // QuoteMenu // ReferenceMenu // FilterMenu @@ -1215,9 +1215,9 @@ main(int ArgC, char **Args) // FilterState buffer Master; - buffer Header; + buffer Includes; - buffer Title; + buffer Menus; buffer QuoteMenu; buffer ReferenceMenu; buffer FilterMenu; @@ -1260,8 +1260,8 @@ main(int ArgC, char **Args) { // NOTE(matt): Tree structure of "global" buffer dependencies // Master - // Header - // Title + // Includes + // Menus // QuoteMenu // ReferenceMenu // FilterMenu @@ -1275,9 +1275,9 @@ main(int ArgC, char **Args) // FilterState ClaimBuffer(MemoryArena, &ClaimedMemory, &Master, "Master", Kilobytes(512)); - ClaimBuffer(MemoryArena, &ClaimedMemory, &Header, "Header", Kilobytes(1)); + ClaimBuffer(MemoryArena, &ClaimedMemory, &Includes, "Includes", Kilobytes(1)); - ClaimBuffer(MemoryArena, &ClaimedMemory, &Title, "Title", Kilobytes(16)); + ClaimBuffer(MemoryArena, &ClaimedMemory, &Menus, "Menus", Kilobytes(16)); ClaimBuffer(MemoryArena, &ClaimedMemory, &QuoteMenu, "QuoteMenu", Kilobytes(16)); ClaimBuffer(MemoryArena, &ClaimedMemory, &ReferenceMenu, "ReferenceMenu", Kilobytes(16)); ClaimBuffer(MemoryArena, &ClaimedMemory, &FilterMenu, "FilterMenu", Kilobytes(16)); @@ -1309,11 +1309,11 @@ main(int ArgC, char **Args) int UniqueTopics = 0; int UniqueMedia = 0; - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "
\n" " ", HMML.metadata.project); - CopyStringToBufferHTMLSafe(&Title, HMML.metadata.title); - CopyStringToBuffer(&Title, "\n" + CopyStringToBufferHTMLSafe(&Menus, HMML.metadata.title); + CopyStringToBuffer(&Menus, "\n" " ⚠ Click here to regain focus ⚠\n"); CopyStringToBuffer(&Player, @@ -1785,7 +1785,7 @@ Anno->time); CopyStringToBuffer(&QuoteMenu, "
\n" " \n"); - CopyBuffer(&Title, &QuoteMenu); + CopyBuffer(&Menus, &QuoteMenu); } if(HasReferenceMenu) @@ -1841,7 +1841,7 @@ ReferencesArray[i].Identifier[j].Timecode); CopyStringToBuffer(&ReferenceMenu, " \n" " \n"); - CopyBuffer(&Title, &ReferenceMenu); + CopyBuffer(&Menus, &ReferenceMenu); } if(HasFilterMenu) @@ -1942,18 +1942,18 @@ CategoryMedium[j][2] " \n"); } - CopyBuffer(&Title, &FilterMenu); + CopyBuffer(&Menus, &FilterMenu); if(HasCreditsMenu) { - CopyBuffer(&Title, &CreditsMenu); + CopyBuffer(&Menus, &CreditsMenu); } #if CONFIG // TODO(matt): Here is where I test ParseConfig ParseConfig(&Config, HMML.metadata.annotator); #endif - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "
\n" " ?\n" "
\n" @@ -1964,64 +1964,64 @@ CategoryMedium[j][2] if(HasFilterMenu) { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " z Toggle filter mode V Revert filter to original state\n"); } else { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " z Toggle filter mode V Revert filter to original state\n"); } - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "\n" "

Menu toggling

\n"); if(HasQuoteMenu) { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " q Quotes\n"); } else { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " q Quotes\n"); } if(HasReferenceMenu) { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " r References\n"); } else { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " r References\n"); } if(HasFilterMenu) { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " f Filter\n"); } else { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " f Filter\n"); } if(HasCreditsMenu) { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " c Credits\n"); } else { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " c Credits\n"); } - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "\n" "

Movement

\n" "
\n" @@ -2060,86 +2060,86 @@ CategoryMedium[j][2] if(HasQuoteMenu) { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "

Quotes "); if(HasReferenceMenu) { - CopyStringToBuffer(&Title, "and References Menus

\n"); + CopyStringToBuffer(&Menus, "and References Menus\n"); } else { - CopyStringToBuffer(&Title, "and References Menus\n"); + CopyStringToBuffer(&Menus, "and References Menus\n"); } } else { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "

Quotes"); if(HasReferenceMenu) { - CopyStringToBuffer(&Title, " and References Menus

\n"); + CopyStringToBuffer(&Menus, " and References Menus\n"); } else { - CopyStringToBuffer(&Title, " and References Menus\n"); + CopyStringToBuffer(&Menus, " and References Menus\n"); } } if(HasQuoteMenu || HasReferenceMenu) { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " Enter Jump to timecode
\n"); } else { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " Enter Jump to timecode
\n"); } if(HasReferenceMenu) { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "

References "); if(HasCreditsMenu) { - CopyStringToBuffer(&Title, "and Credits Menus

\n"); + CopyStringToBuffer(&Menus, "and Credits Menus\n"); } else { - CopyStringToBuffer(&Title, "and Credits Menus\n"); + CopyStringToBuffer(&Menus, "and Credits Menus\n"); } } else { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "

References"); if(HasCreditsMenu) { - CopyStringToBuffer(&Title, " and Credits Menus

\n"); + CopyStringToBuffer(&Menus, " and Credits Menus\n"); } else { - CopyStringToBuffer(&Title, " and Credits Menus\n"); + CopyStringToBuffer(&Menus, " and Credits Menus\n"); } } if(HasReferenceMenu || HasCreditsMenu) { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " o Open URL (in new tab)\n"); } else { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, " o Open URL (in new tab)\n"); } - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "\n"); if(HasFilterMenu) { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "

Filter Menu

\n" " x, Space Toggle category and focus next
\n" " X, ShiftSpace Toggle category and focus previous
\n" @@ -2147,7 +2147,7 @@ CategoryMedium[j][2] } else { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "

Filter Menu

\n" " x, Space Toggle category and focus next
\n" " X, ShiftSpace Toggle category and focus previous
\n" @@ -2156,18 +2156,18 @@ CategoryMedium[j][2] if(HasCreditsMenu) { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "

Credits Menu

\n" " Enter Open URL (in new tab)
\n"); } else { - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "

Credits Menu

\n" " Enter Open URL (in new tab)
\n"); } - CopyStringToBuffer(&Title, + CopyStringToBuffer(&Menus, "
\n" "
\n" @@ -2178,11 +2178,8 @@ CategoryMedium[j][2] "
"); // TODO(matt): Maybe do something about indentation levels - CopyStringToBuffer(&Header, + CopyStringToBuffer(&Includes, "\n" -" "); - CopyStringToBufferHTMLSafe(&Header, HMML.metadata.title); - CopyStringToBuffer(&Header, "\n" // TODO(matt): Add the full name of the project, parsed from a config "\n" " \n" " \n" @@ -2402,23 +2399,28 @@ HMML.metadata.project); { perror(Args[0]); hmml_free(&HMML); free(MemoryArena); return 1; } + Template.Ptr = Template.Location; fread(Template.Location, Template.Size, 1, TemplateFile); fclose(TemplateFile); buffer Output; + Output.Size = Template.Size + Master.Size; Output.ID = "Output"; - if(!(Output.Location = malloc(Template.Size + Master.Size))) + if(!(Output.Location = malloc(Output.Size))) { perror(Args[0]); free(Template.Location); hmml_free(&HMML); free(MemoryArena); return 1; } + Output.Ptr = Output.Location; - char *HeaderTag = "__CINERA_HEADER__"; - char *TitleTag = "__CINERA_TITLE__"; + char *IncludesTag = "__CINERA_INCLUDES__"; + char *TitleTag = "__CINERA_TITLE__"; + char *MenusTag = "__CINERA_MENUS__"; char *PlayerTag = "__CINERA_PLAYER__"; char *ScriptTag = "__CINERA_SCRIPT__"; - bool FoundHeader = FALSE; - bool FoundTitle = FALSE; + bool FoundIncludes = FALSE; + bool FoundTitle = FALSE; + bool FoundMenus = FALSE; bool FoundPlayer = FALSE; bool FoundScript = FALSE; @@ -2429,16 +2431,16 @@ HMML.metadata.project); char *CommentStart = &Output.Ptr[-1]; while(Template.Ptr - Template.Location < Template.Size) { - if(!(StringsDifferT(HeaderTag, Template.Ptr, 0))) + if(!(StringsDifferT(IncludesTag, Template.Ptr, 0))) { - if(FoundHeader == TRUE) + if(FoundIncludes == TRUE) { - fprintf(stderr, "Template contains more than one tag\n"); + fprintf(stderr, "Template contains more than one tag\n"); free(Template.Location); free(Output.Location); hmml_free(&HMML); free(MemoryArena); return 1; } - FoundHeader = TRUE; + FoundIncludes = TRUE; Output.Ptr = CommentStart; - CopyBuffer(&Output, &Header); + CopyBuffer(&Output, &Includes); while(Template.Ptr - Template.Location < Template.Size) { if(!StringsDifferT("-->", Template.Ptr, 0)) @@ -2450,6 +2452,7 @@ HMML.metadata.project); } break; } + else if(!(StringsDifferT(TitleTag, Template.Ptr, 0))) { if(FoundTitle == TRUE) @@ -2457,20 +2460,35 @@ HMML.metadata.project); fprintf(stderr, "Template contains more than one tag\n"); free(Template.Location); free(Output.Location); hmml_free(&HMML); free(MemoryArena); return 1; } - /* TODO(matt): Allow setting a Title format, e.g. - <-- __CINERA_TITLE__ "%s - HandmadeDev" --> - Where %s is replaced with the HMML.metadata.title - Perhaps it would be saner to do this in the config file - */ FoundTitle = TRUE; Output.Ptr = CommentStart; - CopyBuffer(&Output, &Title); + CopyStringToBuffer(&Output, HMML.metadata.title); + while(Template.Ptr - Template.Location < Template.Size) + { + if(!StringsDifferT("-->", Template.Ptr, 0)) + { + Template.Ptr += StringLength("-->"); + break; + } + ++Template.Ptr; + } + break; + } + else if(!(StringsDifferT(MenusTag, Template.Ptr, 0))) + { + if(FoundMenus == TRUE) + { + fprintf(stderr, "Template contains more than one tag\n"); + free(Template.Location); free(Output.Location); hmml_free(&HMML); free(MemoryArena); return 1; + } + FoundMenus = TRUE; + Output.Ptr = CommentStart; + CopyBuffer(&Output, &Menus); while(Template.Ptr - Template.Location < Template.Size) { if(!StringsDifferT("-->", Template.Ptr, 0)) { Template.Ptr += StringLength("-->"); - printf("%c%c%c\n", Template.Ptr[-1], Template.Ptr[0], Template.Ptr[1]); break; } ++Template.Ptr; @@ -2532,7 +2550,7 @@ HMML.metadata.project); } } - if(FoundHeader && FoundTitle && FoundPlayer && FoundScript) + if(FoundIncludes && FoundMenus && FoundPlayer && FoundScript) { FILE *OutFile; if(!(OutFile = fopen("out_integrated.html", "w"))) @@ -2545,8 +2563,8 @@ HMML.metadata.project); else { fprintf(stderr, "Template is missing necessary tags:\n"); - if(!FoundHeader) { fprintf(stderr, " \n"); } - if(!FoundTitle) { fprintf(stderr, " \n"); } + if(!FoundIncludes) { fprintf(stderr, " \n"); } + if(!FoundMenus) { fprintf(stderr, " \n"); } if(!FoundPlayer) { fprintf(stderr, " \n"); } if(!FoundScript) { fprintf(stderr, " \n"); } free(Template.Location); free(Output.Location); hmml_free(&HMML); free(MemoryArena); return 1; @@ -2563,12 +2581,12 @@ HMML.metadata.project); " \n"); //NOTE(matt): Here is where we do all our CopyBuffer() calls - CopyBuffer(&Master, &Header); + CopyBuffer(&Master, &Includes); CopyStringToBuffer(&Master, "\n" " \n" " \n"); - CopyBuffer(&Master, &Title); + CopyBuffer(&Master, &Menus); CopyStringToBuffer(&Master, "\n"); CopyBuffer(&Master, &Player); CopyStringToBuffer(&Master, "\n"); @@ -2603,8 +2621,8 @@ HMML.metadata.project); // FilterMenu // ReferenceMenu // QuoteMenu - // Title - // Header + // Menus + // Includes // Master DeclaimBuffer(&FilterState, &ClaimedMemory); @@ -2621,9 +2639,9 @@ HMML.metadata.project); DeclaimBuffer(&FilterMenu, &ClaimedMemory); DeclaimBuffer(&ReferenceMenu, &ClaimedMemory); DeclaimBuffer(&QuoteMenu, &ClaimedMemory); - DeclaimBuffer(&Title, &ClaimedMemory); + DeclaimBuffer(&Menus, &ClaimedMemory); - DeclaimBuffer(&Header, &ClaimedMemory); + DeclaimBuffer(&Includes, &ClaimedMemory); DeclaimBuffer(&Master, &ClaimedMemory); } else diff --git a/hmml_to_html/template.html b/hmml_to_html/template.html new file mode 100644 index 0000000..fa676c8 --- /dev/null +++ b/hmml_to_html/template.html @@ -0,0 +1,11 @@ + + + Preceding Text - <!-- __CINERA_TITLE__ --> - Following Text + + + + + + + +