LogoMaker / effects.js
SenY's picture
ダミーのポストプロセス実行完了
92a523d
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);
}