diff --git a/locales/index.d.ts b/locales/index.d.ts index c0781594f8..a4e9bf41e8 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -5605,7 +5605,7 @@ export interface Locale extends ILocale { * 技術的なお問い合わせの際に、以下の情報を併記すると問題の解決に役立つことがあります。 */ "deviceInfoDescription": string; - "_imageLabelEditor": { + "_imageFrameEditor": { /** * ラベルの編集 */ @@ -5613,7 +5613,7 @@ export interface Locale extends ILocale { /** * フレームの幅 */ - "frameThickness": string; + "borderThickness": string; /** * ラベルの幅 */ diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index d5b18b7afe..977b7d459e 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1396,10 +1396,11 @@ scheduled: "予約" widgets: "ウィジェット" deviceInfo: "デバイス情報" deviceInfoDescription: "技術的なお問い合わせの際に、以下の情報を併記すると問題の解決に役立つことがあります。" +frame: "フレーム" -_imageLabelEditor: - title: "ラベルの編集" - frameThickness: "フレームの幅" +_imageFrameEditor: + title: "フレームの編集" + borderThickness: "フチの幅" labelThickness: "ラベルの幅" labelScale: "ラベルのスケール" centered: "中央揃え" diff --git a/packages/frontend/src/components/MkImageLabelEditorDialog.vue b/packages/frontend/src/components/MkImageFrameEditorDialog.vue similarity index 88% rename from packages/frontend/src/components/MkImageLabelEditorDialog.vue rename to packages/frontend/src/components/MkImageFrameEditorDialog.vue index 04bc84c23c..fb587e7479 100644 --- a/packages/frontend/src/components/MkImageLabelEditorDialog.vue +++ b/packages/frontend/src/components/MkImageFrameEditorDialog.vue @@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only @ok="save()" @closed="emit('closed')" > - +
@@ -31,36 +31,36 @@ SPDX-License-Identifier: AGPL-3.0-only
- - + + - + - + - + - + - + - + -
{{ i18n.ts._imageLabelEditor.availableVariables }}:
+
{{ i18n.ts._imageFrameEditor.availableVariables }}:
{date} - 撮影日時
{model} - カメラモデル
{lensModel} - レンズモデル
@@ -80,8 +80,8 @@ SPDX-License-Identifier: AGPL-3.0-only import { ref, useTemplateRef, watch, onMounted, onUnmounted, reactive, nextTick } from 'vue'; import ExifReader from 'exifreader'; import { throttle } from 'throttle-debounce'; -import type { ImageLabelParams } from '@/utility/image-label-renderer.js'; -import { ImageLabelRenderer } from '@/utility/image-label-renderer.js'; +import type { ImageFrameParams } from '@/utility/image-frame-renderer.js'; +import { ImageFrameRenderer } from '@/utility/image-frame-renderer.js'; import { i18n } from '@/i18n.js'; import MkModalWindow from '@/components/MkModalWindow.vue'; import MkSelect from '@/components/MkSelect.vue'; @@ -112,13 +112,12 @@ const EXIF_MOCK = { } satisfies ExifReader.Tags; const props = defineProps<{ - frame?: ImageLabelParams | null; + frame?: ImageFrameParams | null; image?: File | null; }>(); -const frame = reactive(deepClone(props.frame) ?? { - style: 'frame', - frameThickness: 0.05, +const frame = reactive(deepClone(props.frame) ?? { + borderThickness: 0.05, labelThickness: 0.2, labelScale: 1.0, title: 'Untitled by @syuilo', @@ -128,7 +127,7 @@ const frame = reactive(deepClone(props.frame) ?? { }); const emit = defineEmits<{ - (ev: 'ok', frame: ImageLabelParams): void; + (ev: 'ok', frame: ImageFrameParams): void; (ev: 'cancel'): void; (ev: 'closed'): void; }>(); @@ -187,21 +186,21 @@ async function choiceImage() { } } -let renderer: ImageLabelRenderer | null = null; +let renderer: ImageFrameRenderer | null = null; let imageBitmap: ImageBitmap | null = null; async function initRenderer() { if (canvasEl.value == null) return; if (sampleImageType.value === '3_2') { - renderer = new ImageLabelRenderer({ + renderer = new ImageFrameRenderer({ canvas: canvasEl.value, image: sampleImage_3_2, exif: EXIF_MOCK, renderAsPreview: true, }); } else if (sampleImageType.value === '2_3') { - renderer = new ImageLabelRenderer({ + renderer = new ImageFrameRenderer({ canvas: canvasEl.value, image: sampleImage_2_3, exif: EXIF_MOCK, @@ -212,7 +211,7 @@ async function initRenderer() { const exif = ExifReader.load(await imageFile.arrayBuffer()); - renderer = new ImageLabelRenderer({ + renderer = new ImageFrameRenderer({ canvas: canvasEl.value, image: imageBitmap, exif: exif, diff --git a/packages/frontend/src/composables/use-uploader.ts b/packages/frontend/src/composables/use-uploader.ts index 5519f8a6f5..8e7a8f7ad9 100644 --- a/packages/frontend/src/composables/use-uploader.ts +++ b/packages/frontend/src/composables/use-uploader.ts @@ -18,7 +18,7 @@ import { uploadFile, UploadAbortedError } from '@/utility/drive.js'; import * as os from '@/os.js'; import { ensureSignin } from '@/i.js'; import { WatermarkRenderer } from '@/utility/watermark.js'; -import { ImageLabelRenderer } from '@/utility/image-label-renderer.js'; +import { ImageFrameRenderer } from '@/utility/image-frame-renderer.js'; export type UploaderFeatures = { imageEditing?: boolean; @@ -575,7 +575,7 @@ export function useUploader(options: { const exif = await ExifReader.load(await item.file.arrayBuffer()); - const labelRenderer = new ImageLabelRenderer({ + const labelRenderer = new ImageFrameRenderer({ canvas: canvas, image: await window.createImageBitmap(preprocessedFile), exif, diff --git a/packages/frontend/src/pages/settings/drive.vue b/packages/frontend/src/pages/settings/drive.vue index cf561b8164..9609c86555 100644 --- a/packages/frontend/src/pages/settings/drive.vue +++ b/packages/frontend/src/pages/settings/drive.vue @@ -127,7 +127,7 @@ SPDX-License-Identifier: AGPL-3.0-only - +
@@ -141,7 +141,7 @@ SPDX-License-Identifier: AGPL-3.0-only /> --> - +