File size: 2,186 Bytes
3ed48fd 92a523d 3ed48fd 92a523d 3ed48fd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
import { SimpleEffect } from './effects/simple.js';
import { NeonEffect } from './effects/neon.js';
import { GoldEffect } from './effects/gold.js';
import { MultilineNeonEffect } from './effects/multiline-neon.js';
import { GradientEffect } from './effects/gradient.js';
import { MetallicEffect } from './effects/metallic.js';
// エフェクトのインスタンスを作成
const effects = {
simple: new SimpleEffect(),
neon: new NeonEffect(),
gold: new GoldEffect(),
multilineNeon: new MultilineNeonEffect(),
gradient: new GradientEffect(),
metallic: new MetallicEffect(),
};
/**
* 利用可能なエフェクトのリストを返す
* @returns {Array<{name: string, description: string}>}
*/
export function getAvailableEffects() {
return [
{
name: 'simple',
description: 'シンプルなテキストレンダリング'
},
{
name: 'neon',
description: 'ネオングローエフェクト'
},
{
name: 'gold',
description: 'ゴールドエフェクト'
},
{
name: 'multilineNeon',
description: 'マルチラインネオンエフェクト'
},
{
name: 'gradient',
description: 'グラデーションエフェクト'
},
{
name: 'metallic',
description: 'メタリック調エフェクト'
}
];
}
/**
* テキストにエフェクトを適用
* @param {string} effectType - エフェクトの種類
* @param {string} text - レンダリングするテキスト
* @param {Object} options - オプション
* @param {string} options.font - フォントファミリー
* @param {number} options.fontSize - フォントサイズ
* @returns {Promise<HTMLCanvasElement>} - 生成されたcanvas要素
*/
export async function applyEffect(effectType, text, options) {
const effect = effects[effectType];
if (!effect) {
throw new Error(`Unknown effect type: ${effectType}`);
}
return effect.apply(text, options);
}
|