summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2025-10-20 15:05:23 +0900
committerGitHub <noreply@github.com>2025-10-20 15:05:23 +0900
commit8714945ec9deb88e1af6164b9290c9cf7e633aab (patch)
treeacd0db676544c524e7b6ace0c36ae51c376bb20f /packages/frontend/src/components
parentMerge branch 'develop' of https://github.com/misskey-dev/misskey into develop (diff)
downloadmisskey-8714945ec9deb88e1af6164b9290c9cf7e633aab.tar.gz
misskey-8714945ec9deb88e1af6164b9290c9cf7e633aab.tar.bz2
misskey-8714945ec9deb88e1af6164b9290c9cf7e633aab.zip
fix(frontend): ウォーターマーク配置のエフェクトが壊れている問題を修正 (#16662)
* fix(frontend): ウォーターマーク配置のエフェクトが壊れている問題を修正 * enhance: add settings for noBoundingBoxExpansion * Update Changelog * fix * perf: ウォーターマークのrepeatをWRAP属性で制御するように * fix: ウォーターマークをrepeatした際に回転や拡大縮小の中心が「位置」設定を考慮しないのを修正 * fix: ウォーターマークをrepeatした際にマージンが各ウォーターマークごとのマージンとなっていない問題を修正 * fix: リピートモード時の拡大縮小の原点が、アライメントの設定にかかわらず左上になる問題を修正 * enhance: preserveBoundingRect の翻訳文字を変更 * fix: remove description * fix * fix: 回転の向きが逆になっているのを修正 * fix: マージンは元画像の大きさに対する割合で算出するように * Update watermarkPlacement.ts --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
Diffstat (limited to 'packages/frontend/src/components')
-rw-r--r--packages/frontend/src/components/MkWatermarkEditorDialog.Layer.vue24
-rw-r--r--packages/frontend/src/components/MkWatermarkEditorDialog.vue2
2 files changed, 25 insertions, 1 deletions
diff --git a/packages/frontend/src/components/MkWatermarkEditorDialog.Layer.vue b/packages/frontend/src/components/MkWatermarkEditorDialog.Layer.vue
index 288293db3f..b34181e5cc 100644
--- a/packages/frontend/src/components/MkWatermarkEditorDialog.Layer.vue
+++ b/packages/frontend/src/components/MkWatermarkEditorDialog.Layer.vue
@@ -65,6 +65,10 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSwitch v-model="layer.repeat">
<template #label>{{ i18n.ts._watermarkEditor.repeat }}</template>
</MkSwitch>
+
+ <MkSwitch v-model="layerPreserveBoundingRect">
+ <template #label>{{ i18n.ts._watermarkEditor.preserveBoundingRect }}</template>
+ </MkSwitch>
</template>
<template v-else-if="layer.type === 'image'">
@@ -129,6 +133,10 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSwitch v-model="layer.cover">
<template #label>{{ i18n.ts._watermarkEditor.cover }}</template>
</MkSwitch>
+
+ <MkSwitch v-model="layerPreserveBoundingRect">
+ <template #label>{{ i18n.ts._watermarkEditor.preserveBoundingRect }}</template>
+ </MkSwitch>
</template>
<template v-else-if="layer.type === 'qr'">
@@ -335,7 +343,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script setup lang="ts">
-import { ref, onMounted } from 'vue';
+import { ref, onMounted, computed } from 'vue';
import * as Misskey from 'misskey-js';
import type { WatermarkPreset } from '@/utility/watermark.js';
import { i18n } from '@/i18n.js';
@@ -351,6 +359,20 @@ import { misskeyApi } from '@/utility/misskey-api.js';
const layer = defineModel<WatermarkPreset['layers'][number]>('layer', { required: true });
+const layerPreserveBoundingRect = computed({
+ get: () => {
+ if (layer.value.type === 'text' || layer.value.type === 'image') {
+ return !layer.value.noBoundingBoxExpansion;
+ }
+ return false;
+ },
+ set: (v: boolean) => {
+ if (layer.value.type === 'text' || layer.value.type === 'image') {
+ layer.value.noBoundingBoxExpansion = !v;
+ }
+ },
+});
+
const driveFile = ref<Misskey.entities.DriveFile | null>(null);
const driveFileError = ref(false);
onMounted(async () => {
diff --git a/packages/frontend/src/components/MkWatermarkEditorDialog.vue b/packages/frontend/src/components/MkWatermarkEditorDialog.vue
index 0d0488d9bc..3b3f20d8d1 100644
--- a/packages/frontend/src/components/MkWatermarkEditorDialog.vue
+++ b/packages/frontend/src/components/MkWatermarkEditorDialog.vue
@@ -90,6 +90,7 @@ function createTextLayer(): WatermarkPreset['layers'][number] {
angle: 0,
opacity: 0.75,
repeat: false,
+ noBoundingBoxExpansion: false,
};
}
@@ -104,6 +105,7 @@ function createImageLayer(): WatermarkPreset['layers'][number] {
angle: 0,
opacity: 0.75,
repeat: false,
+ noBoundingBoxExpansion: false,
cover: false,
};
}