diff --git a/fr-plugin-CharCartnoon-1.0/fr-plugin-CharCartnoon-1.0.jar b/fr-plugin-CharCartnoon-1.0/fr-plugin-CharCartnoon-1.0.jar index 7ed7d95..cbba630 100644 Binary files a/fr-plugin-CharCartnoon-1.0/fr-plugin-CharCartnoon-1.0.jar and b/fr-plugin-CharCartnoon-1.0/fr-plugin-CharCartnoon-1.0.jar differ diff --git a/fr-plugin-CharCartnoon-1.0/plugin.xml b/fr-plugin-CharCartnoon-1.0/plugin.xml index fd35f71..b9fa95f 100644 --- a/fr-plugin-CharCartnoon-1.0/plugin.xml +++ b/fr-plugin-CharCartnoon-1.0/plugin.xml @@ -6,9 +6,10 @@ 10.0 2018-07-31 all100 - + + [2021-10-24]完成第一版。
]]>
diff --git a/install/fr-plugin-CharCartnoon-1.0.zip b/install/fr-plugin-CharCartnoon-1.0.zip index 7033607..e320281 100644 Binary files a/install/fr-plugin-CharCartnoon-1.0.zip and b/install/fr-plugin-CharCartnoon-1.0.zip differ diff --git a/plugin.xml b/plugin.xml index fd35f71..b9fa95f 100644 --- a/plugin.xml +++ b/plugin.xml @@ -6,9 +6,10 @@ 10.0 2018-07-31 all100 - + + [2021-10-24]完成第一版。
]]>
diff --git a/src/com/fr/plugin/cool/cartnoon/CartUtils.java b/src/com/fr/plugin/cool/cartnoon/CartUtils.java index 5d4716a..182f729 100644 --- a/src/com/fr/plugin/cool/cartnoon/CartUtils.java +++ b/src/com/fr/plugin/cool/cartnoon/CartUtils.java @@ -2,18 +2,15 @@ package com.fr.plugin.cool.cartnoon; import com.fr.base.BaseUtils; import com.fr.base.io.BaseBook; -import com.fr.base.operator.common.CommonOperator; import com.fr.design.mainframe.JTemplate; import com.fr.general.FArray; import com.fr.general.GeneralUtils; import com.fr.locale.InterProviderFactory; import com.fr.log.FineLoggerFactory; import com.fr.plugin.cool.cartnoon.utils.AnimatedGifEncoder; -import com.fr.plugin.cool.cartnoon.web.ImageViewer; import com.fr.script.AbstractFunction; import com.fr.stable.ColumnRow; import com.fr.stable.fun.Authorize; -import com.fr.workspace.WorkContext; import sun.font.FontDesignMetrics; import javax.imageio.ImageIO; @@ -23,15 +20,28 @@ import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; -import java.util.Iterator; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; @Authorize(callSignKey = CartUtils.PLUGIN_ID) public class CartUtils { - static final String PLUGIN_ID = "com.fr.plugin.cool.cartnoon"; + private static Map gifData =new ConcurrentHashMap<>(); + + public static void setGifData(String k,byte[] v){ + gifData.put(k, v); + } + public static byte[] getGifData(String k){ + return gifData.get(k); + } + + + static boolean CheckArgs(Object[] args,int num) { return args.length==num; } @@ -119,7 +129,7 @@ public class CartUtils { e.finish(); byte[] data = out.toByteArray(); - ImageViewer.gifData.put(id,data); + CartUtils.setGifData(id,data); } static String GetCellId(AbstractFunction calculator){ final ColumnRow currentColumnRow = calculator.getCalculator().getCurrentColumnRow(); diff --git a/src/com/fr/plugin/cool/cartnoon/FRAnimateArraow.java b/src/com/fr/plugin/cool/cartnoon/FRAnimateArraow.java index e99647d..9f1cfcc 100644 --- a/src/com/fr/plugin/cool/cartnoon/FRAnimateArraow.java +++ b/src/com/fr/plugin/cool/cartnoon/FRAnimateArraow.java @@ -8,7 +8,6 @@ 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.utils.DrawValueLine; -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; @@ -76,7 +75,7 @@ public class FRAnimateArraow extends AbstractFunction { e.finish(); byte[] data = out.toByteArray(); - ImageViewer.gifData.put(id,data); + CartUtils.setGifData(id,data); } //生成箭头 private BufferedImage setFilter(BufferedImage src,int arraLen, float stroke, double alh,Color color) { diff --git a/src/com/fr/plugin/cool/cartnoon/FRBlurText.java b/src/com/fr/plugin/cool/cartnoon/FRBlurText.java index 7018743..99cc28a 100644 --- a/src/com/fr/plugin/cool/cartnoon/FRBlurText.java +++ b/src/com/fr/plugin/cool/cartnoon/FRBlurText.java @@ -7,7 +7,6 @@ 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; @@ -80,7 +79,7 @@ public class FRBlurText extends AbstractFunction { e.finish(); byte[] data = out.toByteArray(); - ImageViewer.gifData.put(id,data); + CartUtils.setGifData(id,data); } //图像上执行高斯模糊 private BufferedImage setFilter(BufferedImage src,float radius) { diff --git a/src/com/fr/plugin/cool/cartnoon/FRCartnoonFunctions.java b/src/com/fr/plugin/cool/cartnoon/FRCartnoonFunctions.java index f3ee2f9..80d21b3 100644 --- a/src/com/fr/plugin/cool/cartnoon/FRCartnoonFunctions.java +++ b/src/com/fr/plugin/cool/cartnoon/FRCartnoonFunctions.java @@ -17,7 +17,7 @@ public class FRCartnoonFunctions extends AbstractFunctionDefContainer { new FunctionDef("FRDissolveText", "生成溶解文本动画效果。\n参数说明:\n参数1:字符型,要溶解的文本。\n参数2:整型,文本宽度。\n参数3:整型,文本高度。\n参数4:整型,文本字号。\n参数5:整型,动画刷新频率(毫秒)。\n示例:FRDissolveText(\"88888888888\",180,50,25,300,\"ff0000\")", FRDissolveText.class.getName()), new FunctionDef("FRRotateText", "生成旋转文本动画效果。\n参数说明:\n参数1:字符型,要旋转的文本。\n参数2:整型,文本宽度。\n参数3:整型,文本高度。\n参数4:整型,文本字号。\n参数5:整型,动画刷新频率(毫秒)。\n示例:FRRotateText(\"你好,世界\",180,180,25,300,\"ff0000\")", FRRotateText.class.getName()), new FunctionDef("FRAnimateArraow", "生成箭头动画效果。\n参数说明:\n参数1:整型,页面占用宽度。\n参数2:整型,页面占用高度。\n参数3:文本,箭头颜色,如FF0000。\n参数4:整型,箭头粗细。\n示例:FRAnimateArraow(300,200,\"ff0000\",10)", FRAnimateArraow.class.getName()), - new FunctionDef("FRCountUp", "生成数字计数动画效果。\n参数说明:\n参数1:整型,要计数的数字。\n参数2:整型,显示宽度。\n参数3:整型,显示高度。\n参数4:整型,文本字号。\n参数5:整型,动画刷新频率(毫秒)。\n示例:FRCountUp(\"123456790\",500,100,20,100,\"ffff00\")", FRCountUp.class.getName()), + new FunctionDef("FRCountUp", "生成数字计数动画效果。\n参数说明:\n参数1:整型,要计数的数字。\n参数2:整型,显示宽度。\n参数3:整型,显示高度。\n参数4:整型,文本字号。\n参数5:整型,动画刷新频率(毫秒)。\n示例:FRCountUp(123456,500,100,20,100,\"ffff00\")", FRCountUp.class.getName()), new FunctionDef("FRClockTime", "生成时钟动画效果。\n参数说明:\n参数1:文本,时间,用HH:MM表示。\n参数2:整型,显示宽度。\n参数3:整型,显示高度。\n参数4:整型,动画刷新频率(毫秒)。\n示例:FRClockTime(\"6:30\",100,100,20)", FRClockTime.class.getName()), new FunctionDef("FRMasaicText", "生成马塞克动画效果。\n参数说明:\n参数1:显示的文本。\n参数2:整型,显示宽度。\n参数3:整型,显示高度。\n参数4:整型,动画刷新频率(毫秒)。\n示例:FRMasaicText(\"你好,世界\", 180, 180, 25, 100, \"ff0000\")", FRMasaicText.class.getName()), new FunctionDef("FRBlurText", "生成高斯模糊动画效果。\n参数说明:\n参数1:显示的文本。\n参数2:整型,显示宽度。\n参数3:整型,显示高度。\n参数4:整型,动画刷新频率(毫秒)。\n示例:FRBlurText(\"你好,世界\", 180, 180, 25, 60, \"ff0000\")", FRBlurText.class.getName()), diff --git a/src/com/fr/plugin/cool/cartnoon/FRClockTime.java b/src/com/fr/plugin/cool/cartnoon/FRClockTime.java index ca19f46..45d35bb 100644 --- a/src/com/fr/plugin/cool/cartnoon/FRClockTime.java +++ b/src/com/fr/plugin/cool/cartnoon/FRClockTime.java @@ -106,7 +106,7 @@ public class FRClockTime extends AbstractFunction { g2d.dispose(); encoder.finish(); byte[] data = out.toByteArray(); - ImageViewer.gifData.put(id,data); + CartUtils.setGifData(id,data); } //设置图像旋转缩放 private static BufferedImage setFilter(BufferedImage src, float scale, float rotate) throws IOException { diff --git a/src/com/fr/plugin/cool/cartnoon/FRCountUp.java b/src/com/fr/plugin/cool/cartnoon/FRCountUp.java index 05d1aeb..c3937ab 100644 --- a/src/com/fr/plugin/cool/cartnoon/FRCountUp.java +++ b/src/com/fr/plugin/cool/cartnoon/FRCountUp.java @@ -11,7 +11,6 @@ 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.*; @EnableMetrics diff --git a/src/com/fr/plugin/cool/cartnoon/FRCustomAnimation.java b/src/com/fr/plugin/cool/cartnoon/FRCustomAnimation.java index aef9ad6..b9ab3f6 100644 --- a/src/com/fr/plugin/cool/cartnoon/FRCustomAnimation.java +++ b/src/com/fr/plugin/cool/cartnoon/FRCustomAnimation.java @@ -74,7 +74,7 @@ public class FRCustomAnimation extends AbstractFunction { e.finish(); byte[] data = out.toByteArray(); - ImageViewer.gifData.put(id,data); + CartUtils.setGifData(id,data); } private BufferedImage setSize(BufferedImage src, int width, int height) throws IOException { diff --git a/src/com/fr/plugin/cool/cartnoon/FRDissolveText.java b/src/com/fr/plugin/cool/cartnoon/FRDissolveText.java index 061845c..fa3173c 100644 --- a/src/com/fr/plugin/cool/cartnoon/FRDissolveText.java +++ b/src/com/fr/plugin/cool/cartnoon/FRDissolveText.java @@ -72,7 +72,7 @@ public class FRDissolveText extends AbstractFunction { e.finish(); byte[] data = out.toByteArray(); - ImageViewer.gifData.put(id,data); + CartUtils.setGifData(id,data); } //设置图像溶解效果 private BufferedImage setFilter(BufferedImage src, float density, float softness) { diff --git a/src/com/fr/plugin/cool/cartnoon/FRMasaicText.java b/src/com/fr/plugin/cool/cartnoon/FRMasaicText.java index 8973a43..9cf4fae 100644 --- a/src/com/fr/plugin/cool/cartnoon/FRMasaicText.java +++ b/src/com/fr/plugin/cool/cartnoon/FRMasaicText.java @@ -81,7 +81,7 @@ public class FRMasaicText extends AbstractFunction { e.finish(); byte[] data = out.toByteArray(); - ImageViewer.gifData.put(id,data); + CartUtils.setGifData(id,data); } //设置图像马赛克 private BufferedImage setFilter(BufferedImage src, int blockSize) { diff --git a/src/com/fr/plugin/cool/cartnoon/FRPrintText.java b/src/com/fr/plugin/cool/cartnoon/FRPrintText.java index dc5ffa6..1211824 100644 --- a/src/com/fr/plugin/cool/cartnoon/FRPrintText.java +++ b/src/com/fr/plugin/cool/cartnoon/FRPrintText.java @@ -3,12 +3,10 @@ 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; @@ -76,8 +74,7 @@ public class FRPrintText extends AbstractFunction { e.finish(); byte[] data = out.toByteArray(); - - ImageViewer.gifData.put(id,data); + CartUtils.setGifData(id,data); } diff --git a/src/com/fr/plugin/cool/cartnoon/FRRotateText.java b/src/com/fr/plugin/cool/cartnoon/FRRotateText.java index ee33903..6a844b9 100644 --- a/src/com/fr/plugin/cool/cartnoon/FRRotateText.java +++ b/src/com/fr/plugin/cool/cartnoon/FRRotateText.java @@ -79,7 +79,7 @@ public class FRRotateText extends AbstractFunction { e.finish(); byte[] data = out.toByteArray(); - ImageViewer.gifData.put(id,data); + CartUtils.setGifData(id,data); } //设置图像旋转缩放 private BufferedImage setFilter(BufferedImage src, float scale, float rotate) throws IOException { diff --git a/src/com/fr/plugin/cool/cartnoon/web/ImageViewer.java b/src/com/fr/plugin/cool/cartnoon/web/ImageViewer.java index 6de1e6c..ccf2cb5 100644 --- a/src/com/fr/plugin/cool/cartnoon/web/ImageViewer.java +++ b/src/com/fr/plugin/cool/cartnoon/web/ImageViewer.java @@ -1,15 +1,16 @@ package com.fr.plugin.cool.cartnoon.web; import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.cool.cartnoon.CartUtils; import com.fr.third.springframework.web.bind.annotation.RequestMethod; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; -import java.util.HashMap; public class ImageViewer extends BaseHttpHandler { - public static HashMap gifData =new HashMap<>(); + @Override public RequestMethod getMethod() { return RequestMethod.GET; @@ -34,8 +35,8 @@ public class ImageViewer extends BaseHttpHandler { // 回写 response.setContentType("image/gif"); - - output.write(gifData.get(id)); + FineLoggerFactory.getLogger().info("web-id:{}",id.hashCode()+":"+id); + output.write(CartUtils.getGifData(id)); output.flush(); output.close();