summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-11-03 22:30:20 -0500
committerGitHub <noreply@github.com>2020-11-03 22:30:20 -0500
commit255c8b724e036d9d38e1dab4540974d11fc00bfa (patch)
treef2dd58cf25f82e2db6d640023c7650455ca83018
parent838175f06baca9503dca4180b01853a0a2afd734 (diff)
Pitch accents preview (#987)
* Add public preparePitchAccents function to DisplayGenerator * Add pitch accents preview HTML, CSS, and JS
-rw-r--r--ext/bg/css/pitch-accents-preview.css56
-rw-r--r--ext/bg/js/settings/pitch-accents-preview-main.js30
-rw-r--r--ext/bg/pitch-accents-preview.html63
-rw-r--r--ext/mixed/js/display-generator.js13
4 files changed, 157 insertions, 5 deletions
diff --git a/ext/bg/css/pitch-accents-preview.css b/ext/bg/css/pitch-accents-preview.css
new file mode 100644
index 00000000..75a3a08b
--- /dev/null
+++ b/ext/bg/css/pitch-accents-preview.css
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2020 Yomichan Authors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+html {
+ background-color: transparent;
+ color: #333333;
+}
+html,
+body {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ overflow: hidden;
+ width: 100%;
+ height: 100%;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: calc(20 / 14);
+}
+ul {
+ margin: 0;
+ padding: 0 0 0 1.5em;
+}
+li {
+ margin: 0.425em 0;
+}
+
+.content {
+ display: flex;
+ min-width: 100%;
+ min-height: 100%;
+ box-sizing: border-box;
+ padding: 0;
+ flex-flow: column nowrap;
+ align-items: center;
+ justify-content: center;
+}
+.content-body {
+ max-width: 100%;
+ width: 700px;
+ flex: 0 0 auto;
+}
diff --git a/ext/bg/js/settings/pitch-accents-preview-main.js b/ext/bg/js/settings/pitch-accents-preview-main.js
new file mode 100644
index 00000000..59e5b194
--- /dev/null
+++ b/ext/bg/js/settings/pitch-accents-preview-main.js
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2019-2020 Yomichan Authors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/* global
+ * DisplayGenerator
+ */
+
+(async () => {
+ try {
+ const displayGenerator = new DisplayGenerator({mediaLoader: null});
+ await displayGenerator.prepare();
+ displayGenerator.preparePitchAccents();
+ } catch (e) {
+ yomichan.logError(e);
+ }
+})();
diff --git a/ext/bg/pitch-accents-preview.html b/ext/bg/pitch-accents-preview.html
new file mode 100644
index 00000000..bc6d44ae
--- /dev/null
+++ b/ext/bg/pitch-accents-preview.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ <title>Yomichan Pitch Accents Preview</title>
+ <link rel="icon" type="image/png" href="/mixed/img/icon16.png" sizes="16x16">
+ <link rel="icon" type="image/png" href="/mixed/img/icon19.png" sizes="19x19">
+ <link rel="icon" type="image/png" href="/mixed/img/icon32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/mixed/img/icon38.png" sizes="38x38">
+ <link rel="icon" type="image/png" href="/mixed/img/icon48.png" sizes="48x48">
+ <link rel="icon" type="image/png" href="/mixed/img/icon64.png" sizes="64x64">
+ <link rel="icon" type="image/png" href="/mixed/img/icon128.png" sizes="128x128">
+ <link rel="stylesheet" type="text/css" href="/mixed/css/display.css">
+ <link rel="stylesheet" type="text/css" href="/bg/css/pitch-accents-preview.css">
+</head>
+<body>
+
+<div class="content"><div class="content-body">
+
+<ul>
+ <li>
+ <em>Downstep notation</em> -
+ <span class="format-preview">
+ <span class="term-pitch-accent-characters"><span class="term-pitch-accent-character" data-position="0" data-pitch="high" data-pitch-next="low"><span class="term-pitch-accent-character-inner">よ</span></span><span class="term-pitch-accent-character" data-position="1" data-pitch="low" data-pitch-next="low"><span class="term-pitch-accent-character-inner">む</span></span></span>
+ </span>
+ </li>
+ <li>
+ <em>Downstep position</em> -
+ <span class="format-preview">
+ <span class="term-pitch-accent-position">1</span>
+ </span>
+ </li>
+ <li>
+ <em>Graph</em> -
+ <span class="format-preview">
+ <span class="term-pitch-accent-details">
+ <svg class="term-pitch-accent-graph" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 100">
+ <path class="term-pitch-accent-graph-line" d="M25 25 L75 75"></path>
+ <path class="term-pitch-accent-graph-line-tail" d="M75 75 L125 75"></path>
+ <use href="#term-pitch-accent-graph-dot-downstep" x="25" y="25"></use>
+ <use href="#term-pitch-accent-graph-dot" x="75" y="75"></use>
+ <use href="#term-pitch-accent-graph-triangle" x="125" y="75"></use>
+ </svg>
+ </span>
+ </span>
+ </li>
+</ul>
+
+</div></div>
+
+<script src="/mixed/js/core.js"></script>
+<script src="/mixed/js/yomichan.js"></script>
+<script src="/mixed/js/comm.js"></script>
+<script src="/mixed/js/api.js"></script>
+
+<script src="/mixed/js/display-generator.js"></script>
+<script src="/mixed/js/html-template-collection.js"></script>
+
+<script src="/bg/js/settings/pitch-accents-preview-main.js"></script>
+
+</body>
+</html>
diff --git a/ext/mixed/js/display-generator.js b/ext/mixed/js/display-generator.js
index 926eb25d..910d45da 100644
--- a/ext/mixed/js/display-generator.js
+++ b/ext/mixed/js/display-generator.js
@@ -34,6 +34,13 @@ class DisplayGenerator {
this._templates = new HtmlTemplateCollection(html);
}
+ preparePitchAccents() {
+ if (this._termPitchAccentStaticTemplateIsSetup) { return; }
+ this._termPitchAccentStaticTemplateIsSetup = true;
+ const t = this._templates.instantiate('term-pitch-accent-static');
+ document.head.appendChild(t);
+ }
+
createTermEntry(details) {
const node = this._templates.instantiate('term-entry');
@@ -357,11 +364,7 @@ class DisplayGenerator {
}
_createPitches(details) {
- if (!this._termPitchAccentStaticTemplateIsSetup) {
- this._termPitchAccentStaticTemplateIsSetup = true;
- const t = this._templates.instantiate('term-pitch-accent-static');
- document.head.appendChild(t);
- }
+ this.preparePitchAccents();
const {dictionary, pitches} = details;