danoniplus 42.1.1 → 42.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/js/danoni_main.js +45 -20
- package/js/lib/danoni_constants.js +13 -5
- package/package.json +1 -1
package/js/danoni_main.js
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Source by tickle
|
|
6
6
|
* Created : 2018/10/08
|
|
7
|
-
* Revised : 2025/06/
|
|
7
|
+
* Revised : 2025/06/15
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 42.
|
|
12
|
-
const g_revisedDate = `2025/06/
|
|
11
|
+
const g_version = `Ver 42.2.0`;
|
|
12
|
+
const g_revisedDate = `2025/06/15`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -543,7 +543,7 @@ const formatObject = (_obj, _indent = 0, { colorFmt = true, rootKey = `` } = {})
|
|
|
543
543
|
_value = escapeHtml(_value).replaceAll(`\n`, `<br>`);
|
|
544
544
|
const colorCodePattern = /(#|0x)(?:[A-Fa-f0-9]{6}(?:[A-Fa-f0-9]{2})?|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{3})/g;
|
|
545
545
|
if (_value === C_FLG_ON) {
|
|
546
|
-
return `<span style="color:#66ff66"
|
|
546
|
+
return `<span style="color:#66ff66">${g_emojiObj.checkMark} ON</span>`;
|
|
547
547
|
} else if (colorCodePattern.test(_value)) {
|
|
548
548
|
return _value.replace(colorCodePattern, (match) =>
|
|
549
549
|
`<span style="color:${match.replace(`0x`, `#`)}">◆</span>${match.replace(`0x`, `#`)}`);
|
|
@@ -551,8 +551,8 @@ const formatObject = (_obj, _indent = 0, { colorFmt = true, rootKey = `` } = {})
|
|
|
551
551
|
} else if (typeof _value === C_TYP_BOOLEAN) {
|
|
552
552
|
|
|
553
553
|
// boolean値の色付け処理
|
|
554
|
-
return (_value ? `<span style="color:#66ff66"
|
|
555
|
-
`<span style="color:#ff9999"
|
|
554
|
+
return (_value ? `<span style="color:#66ff66">${g_emojiObj.checkMark} true</span>` :
|
|
555
|
+
`<span style="color:#ff9999">${g_emojiObj.crossMark} false</span>`);
|
|
556
556
|
|
|
557
557
|
} else if (typeof _value === C_TYP_NUMBER) {
|
|
558
558
|
|
|
@@ -1206,6 +1206,7 @@ const reviseCssText = _str => {
|
|
|
1206
1206
|
/*-----------------------------------------------------------*/
|
|
1207
1207
|
/* 色・グラデーション設定 */
|
|
1208
1208
|
/*-----------------------------------------------------------*/
|
|
1209
|
+
const g_ctx = document.createElement(`canvas`).getContext(`2d`);
|
|
1209
1210
|
|
|
1210
1211
|
/**
|
|
1211
1212
|
* 対象のカラーコードが明暗どちらかを判定 (true: 明色, false: 暗色)
|
|
@@ -1225,9 +1226,8 @@ const checkLightOrDark = _colorStr => {
|
|
|
1225
1226
|
* @returns {string}
|
|
1226
1227
|
*/
|
|
1227
1228
|
const colorNameToCode = _color => {
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
return cxt.fillStyle;
|
|
1229
|
+
g_ctx.fillStyle = _color;
|
|
1230
|
+
return g_ctx.fillStyle;
|
|
1231
1231
|
};
|
|
1232
1232
|
|
|
1233
1233
|
/**
|
|
@@ -1365,11 +1365,24 @@ const getBasicFont = (_priorityFont = ``) =>
|
|
|
1365
1365
|
* @returns {number}
|
|
1366
1366
|
*/
|
|
1367
1367
|
const getStrWidth = (_str, _fontsize, _font) => {
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
return ctx.measureText(unEscapeHtml(_str)).width;
|
|
1368
|
+
g_ctx.font = `${wUnit(_fontsize)} ${_font}`;
|
|
1369
|
+
return g_ctx.measureText(unEscapeHtml(_str)).width;
|
|
1371
1370
|
};
|
|
1372
1371
|
|
|
1372
|
+
/**
|
|
1373
|
+
* Canvas上で使用する絵文字を取得
|
|
1374
|
+
* - HTMLのdiv要素に絵文字を設定することで、Canvas上で使用できるようにする
|
|
1375
|
+
* @param {string} _str
|
|
1376
|
+
* @returns {string}
|
|
1377
|
+
*/
|
|
1378
|
+
const getEmojiForCanvas = _str => {
|
|
1379
|
+
const div = document.createElement(`div`);
|
|
1380
|
+
div.innerHTML = _str;
|
|
1381
|
+
const result = div.innerHTML;
|
|
1382
|
+
div.remove();
|
|
1383
|
+
return result;
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1373
1386
|
/**
|
|
1374
1387
|
* 指定した横幅に合ったフォントサイズを取得
|
|
1375
1388
|
* @param {string} _str
|
|
@@ -2560,10 +2573,21 @@ const initialControl = async () => {
|
|
|
2560
2573
|
|
|
2561
2574
|
// 自動横幅拡張設定
|
|
2562
2575
|
if (g_headerObj.autoSpread) {
|
|
2563
|
-
|
|
2564
|
-
g_headerObj.keyLists.forEach(key =>
|
|
2576
|
+
g_sWidth = Math.max(g_sWidth, g_presetObj.autoMinWidth ?? g_keyObj.minWidth);
|
|
2577
|
+
g_headerObj.keyLists.forEach(key => {
|
|
2578
|
+
g_sWidth = Math.max(g_sWidth, g_keyObj[`minWidth${key}`] ?? g_keyObj.minWidthDefault);
|
|
2579
|
+
|
|
2580
|
+
// 別キーモード有効時は、別キーモード毎の横幅を拡張対象へ追加
|
|
2581
|
+
if (g_headerObj.transKeyUse) {
|
|
2582
|
+
for (let k = 1; hasVal(g_keyObj[`keyCtrl${key}_${k}`]); k++) {
|
|
2583
|
+
const anotherKey = g_keyObj[`transKey${key}_${k}`] ?? ``;
|
|
2584
|
+
if (anotherKey !== ``) {
|
|
2585
|
+
g_sWidth = Math.max(g_sWidth, g_keyObj[`minWidth${anotherKey}`] ?? g_keyObj.minWidthDefault);
|
|
2586
|
+
}
|
|
2587
|
+
}
|
|
2588
|
+
}
|
|
2589
|
+
});
|
|
2565
2590
|
|
|
2566
|
-
g_sWidth = Math.max(...widthList);
|
|
2567
2591
|
$id(`canvas-frame`).width = wUnit(g_sWidth);
|
|
2568
2592
|
$id(`divRoot`).width = wUnit(g_sWidth);
|
|
2569
2593
|
}
|
|
@@ -5067,10 +5091,10 @@ const titleInit = (_initFlg = false) => {
|
|
|
5067
5091
|
createDivCss2Label(`lblComment`, ``, g_lblPosObj.lblComment_music),
|
|
5068
5092
|
|
|
5069
5093
|
createDivCss2Label(`lblBgmVolume`, `BGM Volume`, g_lblPosObj.lblBgmVolume),
|
|
5070
|
-
createCss2Button(`btnBgmMute`, g_stateObj.bgmMuteFlg ?
|
|
5094
|
+
createCss2Button(`btnBgmMute`, g_stateObj.bgmMuteFlg ? g_emojiObj.muted : g_emojiObj.speaker, evt => {
|
|
5071
5095
|
g_stateObj.bgmMuteFlg = !g_stateObj.bgmMuteFlg;
|
|
5072
5096
|
g_stateObj.bgmMuteFlg ? pauseBGM() : playBGM(0);
|
|
5073
|
-
evt.target.innerHTML = g_stateObj.bgmMuteFlg ?
|
|
5097
|
+
evt.target.innerHTML = g_stateObj.bgmMuteFlg ? g_emojiObj.muted : g_emojiObj.speaker;
|
|
5074
5098
|
}, g_lblPosObj.btnBgmMute, g_cssObj.button_Default),
|
|
5075
5099
|
createCss2Button(`btnBgmVolume`, `${g_stateObj.bgmVolume}${g_lblNameObj.percent}`, () => setBGMVolume(),
|
|
5076
5100
|
Object.assign({
|
|
@@ -5239,7 +5263,7 @@ const titleInit = (_initFlg = false) => {
|
|
|
5239
5263
|
}), g_cssObj.button_Tweet),
|
|
5240
5264
|
|
|
5241
5265
|
// セキュリティリンク
|
|
5242
|
-
createCss2Button(`lnkComparison`,
|
|
5266
|
+
createCss2Button(`lnkComparison`, g_emojiObj.shield, () => true,
|
|
5243
5267
|
Object.assign(g_lblPosObj.lnkComparison, {
|
|
5244
5268
|
resetFunc: () => openLink(g_lblNameObj.securityUrl),
|
|
5245
5269
|
}), g_cssObj.button_Tweet),
|
|
@@ -13994,7 +14018,8 @@ const resultInit = () => {
|
|
|
13994
14018
|
{ x: 280, dy: -15, hy: 0, siz: 20, color: `#999999`, align: C_ALIGN_CENTER });
|
|
13995
14019
|
drawText(unEscapeHtml(mTitleForView[0]), { hy: 1 });
|
|
13996
14020
|
drawText(unEscapeHtml(mTitleForView[1]), { hy: 2 });
|
|
13997
|
-
drawText(
|
|
14021
|
+
drawText(`${getEmojiForCanvas(g_emojiObj.memo)} ${unEscapeHtml(g_headerObj.tuning)} / ${getEmojiForCanvas(g_emojiObj.musical)} ${unEscapeHtml(artistName)}`,
|
|
14022
|
+
{ hy: mTitleForView[1] !== `` ? 3 : 2, siz: 12 });
|
|
13998
14023
|
drawText(unEscapeHtml(difDataForImage), { hy: 4 });
|
|
13999
14024
|
|
|
14000
14025
|
if (playStyleData.length > 60) {
|
|
@@ -14135,7 +14160,7 @@ const resultInit = () => {
|
|
|
14135
14160
|
// リトライ
|
|
14136
14161
|
resetCommonBtn(`btnRetry`, g_lblNameObj.b_retry, g_lblPosObj.btnRsRetry, loadMusic, g_cssObj.button_Reset),
|
|
14137
14162
|
|
|
14138
|
-
createCss2Button(`btnCopyImage`,
|
|
14163
|
+
createCss2Button(`btnCopyImage`, g_emojiObj.camera, () => true,
|
|
14139
14164
|
Object.assign(g_lblPosObj.btnRsCopyImage, {
|
|
14140
14165
|
resetFunc: () => copyResultImageData(g_msgInfoObj.I_0001),
|
|
14141
14166
|
}), g_cssObj.button_Default_NoColor),
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2025/
|
|
8
|
+
* Revised : 2025/06/15 (v42.2.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -875,6 +875,18 @@ const g_escapeStr = {
|
|
|
875
875
|
]
|
|
876
876
|
};
|
|
877
877
|
|
|
878
|
+
/** 絵文字管理用 */
|
|
879
|
+
const g_emojiObj = {
|
|
880
|
+
checkMark: `✔`, // チェックマーク (check mark)
|
|
881
|
+
crossMark: `❌`, // バツ (cross mark)
|
|
882
|
+
muted: `🔇`, // 無音のスピーカー (muted speaker)
|
|
883
|
+
speaker: `🔊`, // 音量大のスピーカー (speaker high volume)
|
|
884
|
+
shield: `🛡`, // 盾 (shield)
|
|
885
|
+
memo: `📝`, // メモ (memo)
|
|
886
|
+
musical: `🎵`, // 音符 (musical note)
|
|
887
|
+
camera: `📷`, // カメラ (camera)
|
|
888
|
+
};
|
|
889
|
+
|
|
878
890
|
/** 設定・オプション画面用共通 */
|
|
879
891
|
const g_graphColorObj = {
|
|
880
892
|
max: `#993333cc`,
|
|
@@ -3208,12 +3220,8 @@ const g_keyObj = {
|
|
|
3208
3220
|
minWidth9B: 650,
|
|
3209
3221
|
minWidth9i: 650,
|
|
3210
3222
|
minWidth9d: 650,
|
|
3211
|
-
minWidth9h: 650,
|
|
3212
|
-
minWidth11: 650,
|
|
3213
|
-
minWidth11L: 650,
|
|
3214
3223
|
minWidth11i: 650,
|
|
3215
3224
|
minWidth11j: 650,
|
|
3216
|
-
minWidth12: 675,
|
|
3217
3225
|
minWidth12i: 675,
|
|
3218
3226
|
minWidth13: 650,
|
|
3219
3227
|
minWidth16i: 650,
|