From 2cac3ed03be690caae90eff482d4547f86512dfc Mon Sep 17 00:00:00 2001 From: Matt Mascarenhas Date: Fri, 23 Feb 2018 23:36:42 +0000 Subject: [PATCH] cinera.c: Add tags Also compress the template code cinera_player_pre.js: Fix bug in which onRefChanged() tried to call player.jumpToNextMarker(); before the player was ready. This could happen if its first marker's timecode is 0:00 and medium is :afk Enable Theatre mode to work in containers styled with max-width or max-height --- cinera/cinera.c | 293 +++++++++++++++++++++++++---------- cinera/cinera.css | 3 +- cinera/cinera_player_post.js | 2 + cinera/cinera_player_pre.js | 13 +- 4 files changed, 222 insertions(+), 89 deletions(-) diff --git a/cinera/cinera.c b/cinera/cinera.c index da5974b..7e36795 100644 --- a/cinera/cinera.c +++ b/cinera/cinera.c @@ -14,7 +14,7 @@ typedef struct version CINERA_APP_VERSION = { .Major = 0, .Minor = 5, - .Patch = 34 + .Patch = 35 }; // TODO(matt): Copy in the DB 3 stuff from cinera_working.c @@ -56,6 +56,9 @@ typedef unsigned int bool; #define MAX_BASE_FILENAME_LENGTH 31 #define MAX_TITLE_LENGTH 128 - (MAX_BASE_FILENAME_LENGTH + 1) - (int)sizeof(link_insertion_offsets) - (int)sizeof(unsigned short int) - 1 // NOTE(matt): We size this such that index_metadata is 128 bytes total +#define MAX_CUSTOM_SNIPPET_SHORT_LENGTH 255 +#define MAX_CUSTOM_SNIPPET_LONG_LENGTH 1023 + enum { EDITION_SINGLE, @@ -180,6 +183,24 @@ typedef struct buffer Menus; buffer Player; buffer ScriptPlayer; + + char Custom0[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom1[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom2[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom3[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom4[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom5[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom6[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom7[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom8[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom9[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom10[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom11[MAX_CUSTOM_SNIPPET_SHORT_LENGTH + 1]; + char Custom12[MAX_CUSTOM_SNIPPET_LONG_LENGTH + 1]; + char Custom13[MAX_CUSTOM_SNIPPET_LONG_LENGTH + 1]; + char Custom14[MAX_CUSTOM_SNIPPET_LONG_LENGTH + 1]; + char Custom15[MAX_CUSTOM_SNIPPET_LONG_LENGTH + 1]; + char ProjectName[MAX_PROJECT_NAME_LENGTH + 1]; char Title[MAX_TITLE_LENGTH + 1]; char URLIndex[MAX_BASE_URL_LENGTH + 1 + MAX_RELATIVE_PAGE_LOCATION_LENGTH + 1]; @@ -189,20 +210,42 @@ typedef struct enum { - // Contents Page + // Contents and Player Pages Mandatory + TAG_INCLUDES, + + // Contents Page Mandatory TAG_INDEX, - // Player Page - TAG_INCLUDES, + // Player Page Mandatory TAG_MENUS, TAG_PLAYER, TAG_SCRIPT, - // Anywhere - TAG_PROJECT, + // Player Page Optional + TAG_CUSTOM0, + TAG_CUSTOM1, + TAG_CUSTOM2, + TAG_CUSTOM3, + TAG_CUSTOM4, + TAG_CUSTOM5, + TAG_CUSTOM6, + TAG_CUSTOM7, + TAG_CUSTOM8, + TAG_CUSTOM9, + TAG_CUSTOM10, + TAG_CUSTOM11, + + TAG_CUSTOM12, + TAG_CUSTOM13, + TAG_CUSTOM14, + TAG_CUSTOM15, + TAG_TITLE, - TAG_URL, TAG_VIDEO_ID, + + // Anywhere Optional + TAG_PROJECT, + TAG_URL, } template_tags; typedef struct @@ -212,15 +255,37 @@ typedef struct } tag; tag Tags[] = { - { TAG_INDEX, "__CINERA_INDEX__" }, { TAG_INCLUDES, "__CINERA_INCLUDES__" }, + + { TAG_INDEX, "__CINERA_INDEX__" }, + { TAG_MENUS, "__CINERA_MENUS__" }, { TAG_PLAYER, "__CINERA_PLAYER__" }, { TAG_SCRIPT, "__CINERA_SCRIPT__" }, - { TAG_PROJECT, "__CINERA_PROJECT__" }, + + { TAG_CUSTOM0, "__CINERA_CUSTOM0__" }, + { TAG_CUSTOM1, "__CINERA_CUSTOM1__" }, + { TAG_CUSTOM2, "__CINERA_CUSTOM2__" }, + { TAG_CUSTOM3, "__CINERA_CUSTOM3__" }, + { TAG_CUSTOM4, "__CINERA_CUSTOM4__" }, + { TAG_CUSTOM5, "__CINERA_CUSTOM5__" }, + { TAG_CUSTOM6, "__CINERA_CUSTOM6__" }, + { TAG_CUSTOM7, "__CINERA_CUSTOM7__" }, + { TAG_CUSTOM8, "__CINERA_CUSTOM8__" }, + { TAG_CUSTOM9, "__CINERA_CUSTOM9__" }, + { TAG_CUSTOM10, "__CINERA_CUSTOM10__" }, + { TAG_CUSTOM11, "__CINERA_CUSTOM11__" }, + + { TAG_CUSTOM12, "__CINERA_CUSTOM12__" }, + { TAG_CUSTOM13, "__CINERA_CUSTOM13__" }, + { TAG_CUSTOM14, "__CINERA_CUSTOM14__" }, + { TAG_CUSTOM15, "__CINERA_CUSTOM15__" }, + { TAG_TITLE, "__CINERA_TITLE__" }, - { TAG_URL, "__CINERA_URL__" }, { TAG_VIDEO_ID, "__CINERA_VIDEO_ID__" }, + + { TAG_PROJECT, "__CINERA_PROJECT__" }, + { TAG_URL, "__CINERA_URL__" }, }; typedef struct @@ -438,7 +503,10 @@ project_info ProjectInfo[] = { "misc", "Handmade Miscellany", "", NS_LINEAR, "admin", "" }, { "ray", "Handmade Ray", "Day", NS_LINEAR, "programming", "" }, - { "hmdshow", "HandmadeDev Show", "", NS_SEASONAL, "speech", "" }, + { "hmdshow", "HandmadeDev Show", "", NS_SEASONAL, "speech", "ep" }, + { "lecture", "Abner Talks", "", NS_SEASONAL, "speech", "" }, + { "stream", "Abner Programs", "", NS_SEASONAL, "programming", "" }, + { "special", "Abner Show Special", "", NS_SEASONAL, "programming", "" }, { "obbg", "Open Block Building Game", "Episode", NS_LINEAR, "programming", "" }, @@ -553,6 +621,16 @@ CopyStringToBuffer(buffer *Dest, char *Format, ...) Dest->Ptr += Length; } +void +CopyStringToBufferNoFormat(buffer *Dest, char *String) +{ + while(*String) + { + *Dest->Ptr++ = *String++; + } + *Dest->Ptr = '\0'; +} + void CopyStringToBufferHTMLSafe(buffer *Dest, char *String) { @@ -1878,9 +1956,9 @@ GenerateTopicColours(char *Topic) #if DEBUG_MEM FILE *MemLog = fopen("/home/matt/cinera_mem", "a+"); - fprintf(MemLog, " Allocated Topics (%d)\n", Topics.Size); + fprintf(MemLog, " Allocated Topics (%d)\n", Topics.Buffer.Size); fclose(MemLog); - printf(" Allocated Topics (%d)\n", Topics.Size); + printf(" Allocated Topics (%d)\n", Topics.Buffer.Size); #endif Topics.Buffer.Ptr = Topics.Buffer.Location; @@ -2058,6 +2136,17 @@ PrintUsage(char *BinaryLocation, config *DefaultConfig) " \n" " \n" " Only really usable if BaseURL is set \e[1;30m(-B)\e[0m\n" + " \n" + " \n" + " \n" + " ⋮\n" + " \n" + " Freeform buffers for small snippets of localised information, e.g. a\n" + " single element or perhaps a \n" + " They correspond to the custom0 to custom15 attributes in the [video]\n" + " node in your .hmml files\n" + " 0 to 11 may hold up to 255 characters\n" + " 12 to 15 may hold up to 1023 characters\n" "\n" "HMML Specification:\n" " https://git.handmade.network/Annotation-Pushers/Annotation-System/wikis/hmmlspec\n", @@ -2119,7 +2208,7 @@ ValidateTemplate(template **Template, char *Location, int TemplateType) while((*Template)->Buffer.Ptr - (*Template)->Buffer.Location < (*Template)->Buffer.Size) { -Here: +NextTagSearch: if(*(*Template)->Buffer.Ptr == '!' && ((*Template)->Buffer.Ptr > (*Template)->Buffer.Location && !StringsDifferT(" tag\n", Tags[i].Tag); + CopyStringToBuffer(&Errors, "Template contains more than one tag\n", ThisTagName); HaveErrors = TRUE; } - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].Offset = CommentStart - Previous; - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].TagCode = TAG_INCLUDES; - (*Template)->Metadata.TagCount++; - DepartComment(&(*Template)->Buffer); - Previous = (*Template)->Buffer.Ptr; FoundIncludes = TRUE; - goto Here; + goto RecordTag; case TAG_MENUS: if(!Config.ForceIntegration && FoundMenus == TRUE) { CopyStringToBuffer(&Errors, "Template contains more than one tag\n", Tags[i].Tag); HaveErrors = TRUE; } - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].Offset = CommentStart - Previous; - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].TagCode = TAG_MENUS; - (*Template)->Metadata.TagCount++; - DepartComment(&(*Template)->Buffer); - Previous = (*Template)->Buffer.Ptr; FoundMenus = TRUE; - goto Here; + goto RecordTag; case TAG_PLAYER: if(!Config.ForceIntegration && FoundPlayer == TRUE) { CopyStringToBuffer(&Errors, "Template contains more than one tag\n", Tags[i].Tag); HaveErrors = TRUE; } - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].Offset = CommentStart - Previous; - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].TagCode = TAG_PLAYER; - (*Template)->Metadata.TagCount++; - DepartComment(&(*Template)->Buffer); - Previous = (*Template)->Buffer.Ptr; FoundPlayer = TRUE; - goto Here; + goto RecordTag; case TAG_SCRIPT: if(!Config.ForceIntegration && FoundPlayer == FALSE) { @@ -2201,41 +2272,16 @@ Here: CopyStringToBuffer(&Errors, "Template contains more than one tag\n", Tags[i].Tag); HaveErrors = TRUE; } - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].Offset = CommentStart - Previous; - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].TagCode = TAG_SCRIPT; - (*Template)->Metadata.TagCount++; - DepartComment(&(*Template)->Buffer); - Previous = (*Template)->Buffer.Ptr; FoundScript = TRUE; - goto Here; - case TAG_PROJECT: + goto RecordTag; + default: // NOTE(matt): All freely usable tags should hit this case +RecordTag: (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].Offset = CommentStart - Previous; - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].TagCode = TAG_PROJECT; + (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].TagCode = ThisTagCode; (*Template)->Metadata.TagCount++; DepartComment(&(*Template)->Buffer); Previous = (*Template)->Buffer.Ptr; - goto Here; - case TAG_TITLE: - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].Offset = CommentStart - Previous; - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].TagCode = TAG_TITLE; - (*Template)->Metadata.TagCount++; - DepartComment(&(*Template)->Buffer); - Previous = (*Template)->Buffer.Ptr; - goto Here; - case TAG_URL: - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].Offset = CommentStart - Previous; - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].TagCode = TAG_URL; - (*Template)->Metadata.TagCount++; - DepartComment(&(*Template)->Buffer); - Previous = (*Template)->Buffer.Ptr; - goto Here; - case TAG_VIDEO_ID: - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].Offset = CommentStart - Previous; - (*Template)->Metadata.Tag[(*Template)->Metadata.TagCount].TagCode = TAG_VIDEO_ID; - (*Template)->Metadata.TagCount++; - DepartComment(&(*Template)->Buffer); - Previous = (*Template)->Buffer.Ptr; - goto Here; + goto NextTagSearch; }; } } @@ -2495,6 +2541,22 @@ HMMLToBuffers(buffers *CollationBuffers, template **BespokeTemplate, char *Filen RewindBuffer(&CollationBuffers->Player); RewindBuffer(&CollationBuffers->ScriptPlayer); RewindBuffer(&CollationBuffers->IncludesIndex); + *CollationBuffers->Custom0 = '\0'; + *CollationBuffers->Custom1 = '\0'; + *CollationBuffers->Custom2 = '\0'; + *CollationBuffers->Custom3 = '\0'; + *CollationBuffers->Custom4 = '\0'; + *CollationBuffers->Custom5 = '\0'; + *CollationBuffers->Custom6 = '\0'; + *CollationBuffers->Custom7 = '\0'; + *CollationBuffers->Custom8 = '\0'; + *CollationBuffers->Custom9 = '\0'; + *CollationBuffers->Custom10 = '\0'; + *CollationBuffers->Custom11 = '\0'; + *CollationBuffers->Custom12 = '\0'; + *CollationBuffers->Custom13 = '\0'; + *CollationBuffers->Custom14 = '\0'; + *CollationBuffers->Custom15 = '\0'; *CollationBuffers->Title = '\0'; *CollationBuffers->ProjectName = '\0'; @@ -2597,6 +2659,52 @@ HMMLToBuffers(buffers *CollationBuffers, template **BespokeTemplate, char *Filen else { HaveErrors = TRUE; } } + // TODO(matt): Consider simply making these as buffers and claiming the necessary amount for them + // The nice thing about doing it this way, though, is that it encourages bespoke template use, which should + // usually be the more convenient way for people to write greater amounts of localised information + for(int CustomIndex = 0; CustomIndex < HMML_CUSTOM_ATTR_COUNT; ++CustomIndex) + { + if(HMML.metadata.custom[CustomIndex]) + { + int LengthOfString = StringLength(HMML.metadata.custom[CustomIndex]); + if(LengthOfString > (CustomIndex < 12 ? MAX_CUSTOM_SNIPPET_SHORT_LENGTH : MAX_CUSTOM_SNIPPET_LONG_LENGTH)) + { + fprintf(stderr, "\e[1;31mCustom string %d \"\e[0m%s\e[1;31m\" is too long (%d/%d characters)\e[0m\n", CustomIndex, HMML.metadata.custom[CustomIndex], LengthOfString, CustomIndex < 12 ? MAX_CUSTOM_SNIPPET_SHORT_LENGTH : MAX_CUSTOM_SNIPPET_LONG_LENGTH); + if(LengthOfString < MAX_CUSTOM_SNIPPET_LONG_LENGTH) + { + fprintf(stderr, "Consider using custom12 to custom15, which can hold %d characters\n", MAX_CUSTOM_SNIPPET_LONG_LENGTH); + } + else + { + fprintf(stderr, "Consider using a bespoke template for longer amounts of localised information\n"); + } + HaveErrors = TRUE; + } + else + { + switch(CustomIndex) + { + case 0: CopyStringNoFormat(CollationBuffers->Custom0, HMML.metadata.custom[CustomIndex]); break; + case 1: CopyStringNoFormat(CollationBuffers->Custom1, HMML.metadata.custom[CustomIndex]); break; + case 2: CopyStringNoFormat(CollationBuffers->Custom2, HMML.metadata.custom[CustomIndex]); break; + case 3: CopyStringNoFormat(CollationBuffers->Custom3, HMML.metadata.custom[CustomIndex]); break; + case 4: CopyStringNoFormat(CollationBuffers->Custom4, HMML.metadata.custom[CustomIndex]); break; + case 5: CopyStringNoFormat(CollationBuffers->Custom5, HMML.metadata.custom[CustomIndex]); break; + case 6: CopyStringNoFormat(CollationBuffers->Custom6, HMML.metadata.custom[CustomIndex]); break; + case 7: CopyStringNoFormat(CollationBuffers->Custom7, HMML.metadata.custom[CustomIndex]); break; + case 8: CopyStringNoFormat(CollationBuffers->Custom8, HMML.metadata.custom[CustomIndex]); break; + case 9: CopyStringNoFormat(CollationBuffers->Custom9, HMML.metadata.custom[CustomIndex]); break; + case 10: CopyStringNoFormat(CollationBuffers->Custom10, HMML.metadata.custom[CustomIndex]); break; + case 11: CopyStringNoFormat(CollationBuffers->Custom11, HMML.metadata.custom[CustomIndex]); break; + case 12: CopyStringNoFormat(CollationBuffers->Custom12, HMML.metadata.custom[CustomIndex]); break; + case 13: CopyStringNoFormat(CollationBuffers->Custom13, HMML.metadata.custom[CustomIndex]); break; + case 14: CopyStringNoFormat(CollationBuffers->Custom14, HMML.metadata.custom[CustomIndex]); break; + case 15: CopyStringNoFormat(CollationBuffers->Custom15, HMML.metadata.custom[CustomIndex]); break; + } + } + } + } + if(!HaveErrors) { if(HMML.metadata.template) @@ -3360,7 +3468,7 @@ AppendedIdentifier: if(HasFilterMenu) { // NOTE(matt): Two loops, one for each JS "object" - CopyStringToBuffer(&FilterState, "\n"); + "\n"); buffer URLPrefix; ClaimBuffer(&URLPrefix, "URLPrefix", 1024); @@ -3905,16 +4013,16 @@ AppendedIdentifier: " ", URLPrefix.Location); - CopyStringToBuffer(&CollationBuffers->ScriptPlayer, - "", - URLPrefix.Location); - DeclaimBuffer(&URLPrefix); - if(HasFilterMenu) { CopyBuffer(&CollationBuffers->ScriptPlayer, &FilterState); } + CopyStringToBuffer(&CollationBuffers->ScriptPlayer, + " ", + URLPrefix.Location); + DeclaimBuffer(&URLPrefix); + // NOTE(matt): Tree structure of "global" buffer dependencies // FilterState // CreditsMenu @@ -3954,7 +4062,7 @@ BuffersToHTML(buffers *CollationBuffers, template *Template, char *OutputPath, i #if DEBUG_MEM FILE *MemLog = fopen("/home/matt/cinera_mem", "a+"); - fprintf(MemLog, "\nEntered BuffersToHTML(%s)\n", OutputPath ? OutputPath : Config->OutLocation); + fprintf(MemLog, "\nEntered BuffersToHTML(%s)\n", OutputPath ? OutputPath : Config.OutLocation); fclose(MemLog); #endif @@ -4003,24 +4111,24 @@ BuffersToHTML(buffers *CollationBuffers, template *Template, char *OutputPath, i } else { - CopyStringToBuffer(&Output, CollationBuffers->ProjectName); + CopyStringToBufferNoFormat(&Output, CollationBuffers->ProjectName); } break; case TAG_TITLE: - CopyStringToBuffer(&Output, CollationBuffers->Title); + CopyStringToBufferNoFormat(&Output, CollationBuffers->Title); break; case TAG_URL: if(PageType == PAGE_PLAYER) { - CopyStringToBuffer(&Output, CollationBuffers->URLPlayer); + CopyStringToBufferNoFormat(&Output, CollationBuffers->URLPlayer); } else { - CopyStringToBuffer(&Output, CollationBuffers->URLIndex); + CopyStringToBufferNoFormat(&Output, CollationBuffers->URLIndex); } break; case TAG_VIDEO_ID: - CopyStringToBuffer(&Output, CollationBuffers->VideoID); + CopyStringToBufferNoFormat(&Output, CollationBuffers->VideoID); break; case TAG_INDEX: if(Config.Edition == EDITION_SINGLE) @@ -4054,6 +4162,22 @@ BuffersToHTML(buffers *CollationBuffers, template *Template, char *OutputPath, i case TAG_SCRIPT: CopyBuffer(&Output, &CollationBuffers->ScriptPlayer); break; + case TAG_CUSTOM0: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom0); break; + case TAG_CUSTOM1: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom1); break; + case TAG_CUSTOM2: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom2); break; + case TAG_CUSTOM3: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom3); break; + case TAG_CUSTOM4: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom4); break; + case TAG_CUSTOM5: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom5); break; + case TAG_CUSTOM6: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom6); break; + case TAG_CUSTOM7: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom7); break; + case TAG_CUSTOM8: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom8); break; + case TAG_CUSTOM9: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom9); break; + case TAG_CUSTOM10: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom10); break; + case TAG_CUSTOM11: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom11); break; + case TAG_CUSTOM12: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom12); break; + case TAG_CUSTOM13: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom13); break; + case TAG_CUSTOM14: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom14); break; + case TAG_CUSTOM15: CopyStringToBufferNoFormat(&Output, CollationBuffers->Custom15); break; } DepartComment(&Template->Buffer); @@ -5967,7 +6091,6 @@ main(int ArgC, char **Args) if(ClaimBuffer(&CollationBuffers.IncludesIndex, "IncludesIndex", Kilobytes(1)) == RC_ARENA_FULL) { goto RIP; }; if(ClaimBuffer(&CollationBuffers.Search, "Search", Kilobytes(32)) == RC_ARENA_FULL) { goto RIP; }; - // NOTE(matt): Templating // // Config will contain paths of multiple templates diff --git a/cinera/cinera.css b/cinera/cinera.css index bfeccd3..a43f09b 100644 --- a/cinera/cinera.css +++ b/cinera/cinera.css @@ -417,7 +417,7 @@ .cineraMenus > .menu > .filter_container .filter_content, .cineraPlayerContainer .markers_container > .markers .marker .cineraContent .cineraCategories { cursor: pointer; - display: flex; + display: inline-flex; align-items: center; } @@ -575,7 +575,6 @@ } .cineraPlayerContainer .markers_container > .markers .marker .cineraContent .cineraCategories { - display: inline-flex; margin: 4px; } diff --git a/cinera/cinera_player_post.js b/cinera/cinera_player_post.js index 20863b7..08e3d56 100644 --- a/cinera/cinera_player_post.js +++ b/cinera/cinera_player_post.js @@ -107,7 +107,9 @@ var cineraProps = { X: null, Y: null, W: null, + mW: null, H: null, + mH: null, P: null }; diff --git a/cinera/cinera_player_pre.js b/cinera/cinera_player_pre.js index 3bf0c25..b9be0f7 100644 --- a/cinera/cinera_player_pre.js +++ b/cinera/cinera_player_pre.js @@ -465,7 +465,9 @@ function toggleTheatreMode() { cineraProps.X = cinera.style.left; cineraProps.Y = cinera.style.top; cineraProps.W = cinera.style.width; + cineraProps.mW = cinera.style.maxWidth; cineraProps.H = cinera.style.height; + cineraProps.mH = cinera.style.maxHeight; cineraProps.P = cinera.style.position; cinera.style.backgroundColor = "#000"; @@ -473,7 +475,9 @@ function toggleTheatreMode() { cinera.style.left = 0; cinera.style.top = 0; cinera.style.width = "100%"; + cinera.style.maxWidth = "100%"; cinera.style.height = "100%"; + cinera.style.maxHeight = "100%"; cinera.style.position = "fixed"; viewItems[0].setAttribute("data-id", "regular"); @@ -491,7 +495,9 @@ function toggleTheatreMode() { cinera.style.left = cineraProps.X; cinera.style.top = cineraProps.Y; cinera.style.width = cineraProps.W; + cinera.style.maxWidth = cineraProps.mW; cinera.style.height = cineraProps.H; + cinera.style.maxHeight = cineraProps.mH; cinera.style.position = cineraProps.P; viewItems[0].setAttribute("data-id", "theatre"); @@ -1173,7 +1179,7 @@ function onRefChanged(ref, element) { filter.querySelector(".filter_content." + element.classList[selector].replace(/^off_/, "")).classList.add("responsible"); } } - if((element.classList[selector].startsWith("cat_") || element.classList[selector] in filterState)) + if(element.classList[selector].startsWith("cat_") || element.classList[selector] in filterState) { if(!filter.querySelector(".filter_mode").classList.add("responsible")) { @@ -1182,7 +1188,10 @@ function onRefChanged(ref, element) { } setTimeout(resetFade, 8000); } - player.jumpToNextMarker(); + if(player && player.playing) + { + player.jumpToNextMarker(); + } return; }