mirror of
https://github.com/misskey-dev/misskey.git
synced 2025-01-11 01:00:07 +09:00
Compare commits
3 Commits
0527331f50
...
0b23bebb7e
Author | SHA1 | Date | |
---|---|---|---|
|
0b23bebb7e | ||
|
53b1b32b85 | ||
|
29f0bc4c7d |
2
locales/index.d.ts
vendored
2
locales/index.d.ts
vendored
@ -4549,7 +4549,7 @@ export interface Locale extends ILocale {
|
|||||||
/**
|
/**
|
||||||
* 透明度
|
* 透明度
|
||||||
*/
|
*/
|
||||||
"opacity": string;
|
"transparency": string;
|
||||||
/**
|
/**
|
||||||
* サーバールール
|
* サーバールール
|
||||||
*/
|
*/
|
||||||
|
@ -1132,7 +1132,7 @@ vertical: "縦"
|
|||||||
horizontal: "横"
|
horizontal: "横"
|
||||||
position: "位置"
|
position: "位置"
|
||||||
rotate: "回転"
|
rotate: "回転"
|
||||||
opacity: "透明度"
|
transparency: "透明度"
|
||||||
serverRules: "サーバールール"
|
serverRules: "サーバールール"
|
||||||
pleaseConfirmBelowBeforeSignup: "このサーバーに登録するには、以下の内容を確認し同意する必要があります。"
|
pleaseConfirmBelowBeforeSignup: "このサーバーに登録するには、以下の内容を確認し同意する必要があります。"
|
||||||
pleaseAgreeAllToContinue: "続けるには、全ての「同意する」にチェックが入っている必要があります。"
|
pleaseAgreeAllToContinue: "続けるには、全ての「同意する」にチェックが入っている必要があります。"
|
||||||
|
@ -106,7 +106,6 @@ import XFile from '@/components/MkDrive.file.vue';
|
|||||||
import * as os from '@/os.js';
|
import * as os from '@/os.js';
|
||||||
import { misskeyApi } from '@/scripts/misskey-api.js';
|
import { misskeyApi } from '@/scripts/misskey-api.js';
|
||||||
import { useStream } from '@/stream.js';
|
import { useStream } from '@/stream.js';
|
||||||
import { $i } from '@/account.js';
|
|
||||||
import { defaultStore } from '@/store.js';
|
import { defaultStore } from '@/store.js';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import { uploadFile, uploads } from '@/scripts/upload.js';
|
import { uploadFile, uploads } from '@/scripts/upload.js';
|
||||||
|
@ -41,8 +41,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
<template #label>{{ i18n.ts.size }}</template>
|
<template #label>{{ i18n.ts.size }}</template>
|
||||||
</MkRange>
|
</MkRange>
|
||||||
|
|
||||||
<MkRange v-model="opacity" :min="0" :max="1" :step="0.01" :textConverter="(v) => `${Math.floor(v * 100)}%`">
|
<MkRange v-model="transparency" :min="0" :max="1" :step="0.01" :textConverter="(v) => `${Math.floor(v * 100)}%`">
|
||||||
<template #label>{{ i18n.ts.opacity }}</template>
|
<template #label>{{ i18n.ts.transparency }}</template>
|
||||||
</MkRange>
|
</MkRange>
|
||||||
|
|
||||||
<MkRange v-model="rotate" :min="-45" :max="45" :textConverter="(v) => `${Math.floor(v)}°`">
|
<MkRange v-model="rotate" :min="-45" :max="45" :textConverter="(v) => `${Math.floor(v)}°`">
|
||||||
@ -158,16 +158,16 @@ const repeat = computed({
|
|||||||
get: () => watermarkConfig.value?.repeat ?? true,
|
get: () => watermarkConfig.value?.repeat ?? true,
|
||||||
set: (v) => watermarkConfig.value = { ...watermarkConfig.value, repeat: v },
|
set: (v) => watermarkConfig.value = { ...watermarkConfig.value, repeat: v },
|
||||||
});
|
});
|
||||||
const opacity = computed({
|
const transparency = computed({
|
||||||
get: () => watermarkConfig.value?.opacity ?? 0.2,
|
get: () => 1 - (watermarkConfig.value?.opacity ?? 0.2),
|
||||||
set: (v) => watermarkConfig.value = { ...watermarkConfig.value, opacity: v },
|
set: (v) => watermarkConfig.value = { ...watermarkConfig.value, opacity: (1 - v) },
|
||||||
});
|
});
|
||||||
const rotate = computed({
|
const rotate = computed({
|
||||||
get: () => watermarkConfig.value?.rotate ?? 15,
|
get: () => watermarkConfig.value?.rotate ?? 15,
|
||||||
set: (v) => watermarkConfig.value = { ...watermarkConfig.value, rotate: v },
|
set: (v) => watermarkConfig.value = { ...watermarkConfig.value, rotate: v },
|
||||||
});
|
});
|
||||||
const preserveBoundingRect = computed({
|
const preserveBoundingRect = computed({
|
||||||
get: () => watermarkConfig.value?.noBoundingBoxExpansion ?? false,
|
get: () => !(watermarkConfig.value?.noBoundingBoxExpansion ?? false),
|
||||||
set: (v) => watermarkConfig.value = { ...watermarkConfig.value, noBoundingBoxExpansion: !v },
|
set: (v) => watermarkConfig.value = { ...watermarkConfig.value, noBoundingBoxExpansion: !v },
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -294,19 +294,6 @@ const focusedForm = ref<'top' | 'left' | 'right' | 'bottom' | null>(null);
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style module>
|
<style module>
|
||||||
.transition_x_enterActive,
|
|
||||||
.transition_x_leaveActive {
|
|
||||||
transition: opacity 0.3s cubic-bezier(0,0,.35,1), transform 0.3s cubic-bezier(0,0,.35,1);
|
|
||||||
}
|
|
||||||
.transition_x_enterFrom {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(50px);
|
|
||||||
}
|
|
||||||
.transition_x_leaveTo {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(-50px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.watermarkEditorRoot {
|
.watermarkEditorRoot {
|
||||||
container-type: inline-size;
|
container-type: inline-size;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
@ -11,8 +11,8 @@ import { useStream } from '@/stream.js';
|
|||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import { defaultStore } from '@/store.js';
|
import { defaultStore } from '@/store.js';
|
||||||
import { uploadFile } from '@/scripts/upload.js';
|
import { uploadFile } from '@/scripts/upload.js';
|
||||||
|
import { canApplyWatermark } from '@/scripts/watermark.js';
|
||||||
import type { MenuItem } from '@/types/menu.js';
|
import type { MenuItem } from '@/types/menu.js';
|
||||||
import { canApplyWatermark } from './watermark.js';
|
|
||||||
|
|
||||||
export function chooseFileFromPc(opts?: {
|
export function chooseFileFromPc(opts?: {
|
||||||
multiple?: boolean;
|
multiple?: boolean;
|
||||||
|
@ -14,7 +14,7 @@ import { $i } from '@/account.js';
|
|||||||
import { alert } from '@/os.js';
|
import { alert } from '@/os.js';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import { instance } from '@/instance.js';
|
import { instance } from '@/instance.js';
|
||||||
import { canApplyWatermark, getWatermarkAppliedImage } from './watermark.js';
|
import { canApplyWatermark, getWatermarkAppliedImage } from '@/scripts/watermark.js';
|
||||||
|
|
||||||
type Uploading = {
|
type Uploading = {
|
||||||
id: string;
|
id: string;
|
||||||
|
@ -2,9 +2,10 @@
|
|||||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
import { getProxiedImageUrl } from "@/scripts/media-proxy.js";
|
|
||||||
import { misskeyApi } from "@/scripts/misskey-api.js";
|
import { getProxiedImageUrl } from '@/scripts/media-proxy.js';
|
||||||
import { defaultStore } from "@/store.js";
|
import { misskeyApi } from '@/scripts/misskey-api.js';
|
||||||
|
import { defaultStore } from '@/store.js';
|
||||||
|
|
||||||
export const watermarkAnchor = [
|
export const watermarkAnchor = [
|
||||||
'top-left',
|
'top-left',
|
||||||
@ -33,7 +34,7 @@ export type WatermarkUserConfig = {
|
|||||||
fileUrl?: string;
|
fileUrl?: string;
|
||||||
/** 親画像に対するウォーターマークの幅比率。ない場合は1。親画像が縦長の場合は幅の比率として、横長の場合は高さ比率として使用される */
|
/** 親画像に対するウォーターマークの幅比率。ない場合は1。親画像が縦長の場合は幅の比率として、横長の場合は高さ比率として使用される */
|
||||||
sizeRatio?: number;
|
sizeRatio?: number;
|
||||||
/** 透明度 */
|
/** 不透明度 */
|
||||||
opacity?: number;
|
opacity?: number;
|
||||||
/** 回転角度(度数) */
|
/** 回転角度(度数) */
|
||||||
rotate?: number;
|
rotate?: number;
|
||||||
@ -69,7 +70,7 @@ export type WatermarkConfig = {
|
|||||||
fileUrl?: string;
|
fileUrl?: string;
|
||||||
/** 親画像に対するウォーターマークの幅比率。ない場合は1。親画像が縦長の場合は幅の比率として、横長の場合は高さ比率として使用される */
|
/** 親画像に対するウォーターマークの幅比率。ない場合は1。親画像が縦長の場合は幅の比率として、横長の場合は高さ比率として使用される */
|
||||||
sizeRatio?: number;
|
sizeRatio?: number;
|
||||||
/** 透明度 */
|
/** 不透明度 */
|
||||||
opacity?: number;
|
opacity?: number;
|
||||||
/** 回転角度(度数) */
|
/** 回転角度(度数) */
|
||||||
rotate?: number;
|
rotate?: number;
|
||||||
|
Loading…
Reference in New Issue
Block a user