ImageEffectorをwatermarkに隠蔽
This commit is contained in:
parent
f63ba04198
commit
8587deab74
|
|
@ -108,9 +108,9 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
</template>
|
||||
|
||||
<MkImageEffectorFxForm
|
||||
v-else-if="fx != null"
|
||||
v-else-if="layerParamDefs != null"
|
||||
v-model="layer"
|
||||
:paramDefs="fx.params"
|
||||
:paramDefs="layerParamDefs"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -118,7 +118,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
<script setup lang="ts">
|
||||
import { ref, computed, onMounted } from 'vue';
|
||||
import * as Misskey from 'misskey-js';
|
||||
import { WATERMARK_FXS } from '@/utility/watermark.js';
|
||||
import { WatermarkRenderer } from '@/utility/watermark.js';
|
||||
import type { WatermarkPreset } from '@/utility/watermark.js';
|
||||
import type { ImageEffectorFx } from '@/utility/image-effector/ImageEffector.js';
|
||||
import { i18n } from '@/i18n.js';
|
||||
|
|
@ -134,7 +134,11 @@ import { selectFile } from '@/utility/drive.js';
|
|||
import { misskeyApi } from '@/utility/misskey-api.js';
|
||||
|
||||
const layer = defineModel<WatermarkPreset['layers'][number]>('layer', { required: true });
|
||||
const fx = computed(() => WATERMARK_FXS.find((fx) => fx.id !== 'watermarkPlacement' && fx.id === layer.value.type) as Exclude<typeof WATERMARK_FXS[number], ImageEffectorFx<"watermarkPlacement", any, any>> ?? null);
|
||||
const layerParamDefs = computed(() => {
|
||||
const def = WatermarkRenderer.getLayerDef(layer.value.type);
|
||||
if (def == null || def.id === 'watermarkPlacement') return null;
|
||||
return def.params;
|
||||
});
|
||||
|
||||
const driveFile = ref<Misskey.entities.DriveFile | null>(null);
|
||||
const driveFileError = ref(false);
|
||||
|
|
|
|||
|
|
@ -89,6 +89,29 @@ export class WatermarkRenderer {
|
|||
});
|
||||
}
|
||||
|
||||
public static getLayerDef(type: WatermarkPreset['layers'][number]['type']): ImageEffectorFx | null {
|
||||
let fxId: typeof WATERMARK_FXS[number]['id'];
|
||||
switch (type) {
|
||||
case 'text':
|
||||
case 'image':
|
||||
fxId = 'watermarkPlacement';
|
||||
break;
|
||||
case 'stripe':
|
||||
fxId = 'stripe';
|
||||
break;
|
||||
case 'polkadot':
|
||||
fxId = 'polkadot';
|
||||
break;
|
||||
case 'checker':
|
||||
fxId = 'checker';
|
||||
break;
|
||||
default:
|
||||
throw new Error(`Unknown layer type: ${type}`);
|
||||
}
|
||||
|
||||
return WATERMARK_FXS.find(fx => fx.id === fxId) ?? null;
|
||||
}
|
||||
|
||||
private makeImageEffectorLayers(): ImageEffectorLayer[] {
|
||||
return this.layers.map(layer => {
|
||||
if (layer.type === 'text') {
|
||||
|
|
|
|||
Loading…
Reference in New Issue