+
+
+ Pattern Hidden
+ {{ i18n.ts.clickToShow }}
+
@@ -74,6 +78,8 @@ const props = defineProps<{
const isSensitive = computed(() => { return props.module.isSensitive; });
const url = computed(() => { return props.module.url; });
let hide = ref((defaultStore.state.nsfw === 'force') ? true : isSensitive.value && (defaultStore.state.nsfw !== 'ignore'));
+let patternHide = ref(false);
+let firstFrame = ref(true);
let playing = ref(false);
let displayCanvas = ref();
let progress = ref();
@@ -156,15 +162,42 @@ function performSeek() {
function toggleVisible() {
hide.value = !hide.value;
- nextTick(() => { stop(hide.value); });
+ if (!hide.value && patternHide.value) {
+ firstFrame.value = true;
+ patternHide.value = false;
+ }
+ nextTick(() => {
+ stop(hide.value);
+ });
}
+function togglePattern() {
+ patternHide.value = !patternHide.value;
+ if (!patternHide.value) {
+ if (player.value.getRow() == 0) {
+ try {
+ player.value.play(buffer);
+ display();
+ } catch (e) {
+ console.warn(e);
+ }
+ player.value.stop();
+ }
+ }
+}
function display() {
if (!displayCanvas.value) {
stop();
return;
}
+ if (patternHide.value) { return; }
+
+ if (firstFrame.value) {
+ firstFrame.value = false;
+ patternHide.value = true;
+ }
+
const canvas = displayCanvas.value;
const pattern = player.value.getPattern();
@@ -211,7 +244,7 @@ function display() {
const instr = part.substring(4, 6);
ctx.fillStyle = colours.instr[active];
ctx.fillText(instr, baseOffset + CHAR_WIDTH * 5, baseRowOffset);
-
+
const volume = part.substring(6, 9);
ctx.fillStyle = colours.volume[active];
ctx.fillText(volume, baseOffset + CHAR_WIDTH * 7, baseRowOffset);
@@ -271,12 +304,32 @@ function display() {
background-color: black;
height: 100%;
}
+ .pattern-hide {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ background: rgba(64, 64, 64, 0.3);
+ backdrop-filter: blur(2em);
+ color: #fff;
+ font-size: 12px;
+
+ position: absolute;
+ z-index: 0;
+ width: 100%;
+ height: 100%;
+
+ > span {
+ display: block;
+ }
+ }
}
> .controls {
display: flex;
width: 100%;
background-color: var(--bg);
+ z-index: 1;
> * {
padding: 4px 8px;