package com.fr.plugin.cool.cartnoon; import com.fr.intelli.record.Focus; import com.fr.intelli.record.Original; import com.fr.locale.InterProviderFactory; import com.fr.log.FineLoggerFactory; import com.fr.plugin.PluginLicense; import com.fr.plugin.PluginLicenseManager; import com.fr.plugin.context.PluginContext; import com.fr.plugin.cool.cartnoon.utils.AnimatedGifEncoder; import com.fr.plugin.cool.cartnoon.web.ImageViewer; import com.fr.plugin.manage.PluginManager; import com.fr.record.analyzer.EnableMetrics; import com.fr.script.AbstractFunction; import com.fr.stable.Primitive; import com.fr.stable.fun.Authorize; import java.awt.*; import java.io.ByteArrayOutputStream; @EnableMetrics @Authorize(callSignKey = CartUtils.PLUGIN_ID) public class FRPrintText extends AbstractFunction { @Override @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Function_FRPrintText", source = Original.PLUGIN) public Object run(Object[] args) { PluginLicense pluginLicense = PluginLicenseManager.getInstance().getPluginLicenseByID(CartUtils.PLUGIN_ID); if (!pluginLicense.isAvailable()) { return InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR"); } PluginContext contexts = PluginManager.getContext(CartUtils.PLUGIN_ID); if(!contexts.isActive()){ return "插件已被禁用!"; } if(!CartUtils.CheckArgs(args,6)){ return Primitive.ERROR_VALUE; } final String text = args[0].toString(); int width= Integer.parseInt(args[1].toString()); int height= Integer.parseInt(args[2].toString()); int fontSize= Integer.parseInt(args[3].toString()); int rate= Integer.parseInt(args[4].toString()); final Color color = CartUtils.TextToColor(args[5].toString()); final String id= CartUtils.GetCellId(this); final String url="/webroot/decision/url/img?id="+id; CreatePrintAnimate(id,text,fontSize,rate,color,width); return ""; } final void CreatePrintAnimate(String id, String text, int fontSize, int rate, Color color, int width) { // 读数据 int len=text.length(); AnimatedGifEncoder e = new AnimatedGifEncoder(); ByteArrayOutputStream out=new ByteArrayOutputStream(); e.start(out); //图片之间间隔时间 e.setDelay(rate); // 1 frame per sec //重复次数 0表示无限重复 默认不重复 e.setRepeat(0); //添加图片 String subStr; for (int i = 0; i <= len; i++) { subStr=text.substring(0,i); e.addFrame(CartUtils.ImageFromText(subStr,fontSize,color,width)); } e.finish(); byte[] data = out.toByteArray(); ImageViewer.gifData.put(id,data); } }