Browse Source

get disable/enable bug reason

master
独行之狼 3 years ago
parent
commit
fc43a8e743
  1. BIN
      fr-plugin-CharCartnoon-1.0/fr-plugin-CharCartnoon-1.0.jar
  2. 5
      fr-plugin-CharCartnoon-1.0/plugin.xml
  3. BIN
      install/fr-plugin-CharCartnoon-1.0.zip
  4. BIN
      install/fr-plugin-CoolChart-1.0.zip
  5. BIN
      install/install/fr-plugin-cool-chart-1.1.zip
  6. 5
      plugin.xml
  7. 47
      src/com/fr/plugin/cool/cartnoon/CartUtils.java
  8. 26
      src/com/fr/plugin/cool/cartnoon/FRAnimateArraow.java
  9. 27
      src/com/fr/plugin/cool/cartnoon/FRBlurText.java
  10. 9
      src/com/fr/plugin/cool/cartnoon/FRCartnoonFunctions.java
  11. 22
      src/com/fr/plugin/cool/cartnoon/FRClockTime.java
  12. 26
      src/com/fr/plugin/cool/cartnoon/FRCountUp.java
  13. 29
      src/com/fr/plugin/cool/cartnoon/FRCustomAnimation.java
  14. 27
      src/com/fr/plugin/cool/cartnoon/FRDissolveText.java
  15. 27
      src/com/fr/plugin/cool/cartnoon/FRMasaicText.java
  16. 58
      src/com/fr/plugin/cool/cartnoon/FRPrintText.java
  17. 20
      src/com/fr/plugin/cool/cartnoon/FRRollText.java
  18. 27
      src/com/fr/plugin/cool/cartnoon/FRRotateText.java
  19. 4
      src/com/fr/plugin/cool/cartnoon/FunLocaleFinder.java
  20. 3
      src/com/fr/plugin/cool/cartnoon/local/coolCartNoon.properties
  21. 2
      src/com/fr/plugin/cool/cartnoon/local/coolCartNoon_zh_CN.properties
  22. 3
      src/com/fr/plugin/cool/cartnoon/local/dataEncrypt.properties
  23. 0
      src/com/fr/plugin/cool/cartnoon/local/dataEncrypt_zh_CN.properties
  24. BIN
      src/com/fr/plugin/cool/cartnoon/resources/menuIcon.png
  25. 2
      src/com/fr/plugin/cool/cartnoon/web/CSSLoader.java
  26. 10
      src/com/fr/plugin/cool/cartnoon/web/ImageViewer.java

BIN
fr-plugin-CharCartnoon-1.0/fr-plugin-CharCartnoon-1.0.jar

Binary file not shown.

5
fr-plugin-CharCartnoon-1.0/plugin.xml

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin> <?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin>
<id>com.fr.plugin.char.cartnoon</id> <id>com.fr.plugin.cool.cartnoon</id>
<name><![CDATA[字符动画函数]]></name> <name><![CDATA[字符动画函数]]></name>
<active>yes</active> <active>yes</active>
<version>1.0</version> <version>1.0</version>
@ -10,6 +10,7 @@
<change-notes><![CDATA[ <change-notes><![CDATA[
[2021-8-19]初始化插件。<br/> [2021-8-19]初始化插件。<br/>
]]></change-notes> ]]></change-notes>
<extra-core> <extra-core>
<LocaleFinder class="com.fr.plugin.cool.cartnoon.FunLocaleFinder"/> <LocaleFinder class="com.fr.plugin.cool.cartnoon.FunLocaleFinder"/>
<FunctionGroup class="com.fr.plugin.cool.cartnoon.FRCartnoonFunctions"/> <FunctionGroup class="com.fr.plugin.cool.cartnoon.FRCartnoonFunctions"/>
@ -20,5 +21,5 @@
<URLAliasProvider class="com.fr.plugin.cool.cartnoon.web.ImageURLAliasBridge"/> <URLAliasProvider class="com.fr.plugin.cool.cartnoon.web.ImageURLAliasBridge"/>
<WebResourceProvider class="com.fr.plugin.cool.cartnoon.web.CSSLoader"/> <WebResourceProvider class="com.fr.plugin.cool.cartnoon.web.CSSLoader"/>
</extra-decision> </extra-decision>
<function-recorder class="com.fr.plugin.cool.cartnoon.FRPrintText"/> <function-recorder class="com.fr.plugin.cool.cartnoon.FRCartnoonFunctions"/>
</plugin> </plugin>

BIN
install/fr-plugin-CharCartnoon-1.0.zip

Binary file not shown.

BIN
install/fr-plugin-CoolChart-1.0.zip

Binary file not shown.

BIN
install/install/fr-plugin-cool-chart-1.1.zip

Binary file not shown.

5
plugin.xml

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin> <?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin>
<id>com.fr.plugin.char.cartnoon</id> <id>com.fr.plugin.cool.cartnoon</id>
<name><![CDATA[字符动画函数]]></name> <name><![CDATA[字符动画函数]]></name>
<active>yes</active> <active>yes</active>
<version>1.0</version> <version>1.0</version>
@ -10,6 +10,7 @@
<change-notes><![CDATA[ <change-notes><![CDATA[
[2021-8-19]初始化插件。<br/> [2021-8-19]初始化插件。<br/>
]]></change-notes> ]]></change-notes>
<extra-core> <extra-core>
<LocaleFinder class="com.fr.plugin.cool.cartnoon.FunLocaleFinder"/> <LocaleFinder class="com.fr.plugin.cool.cartnoon.FunLocaleFinder"/>
<FunctionGroup class="com.fr.plugin.cool.cartnoon.FRCartnoonFunctions"/> <FunctionGroup class="com.fr.plugin.cool.cartnoon.FRCartnoonFunctions"/>
@ -20,5 +21,5 @@
<URLAliasProvider class="com.fr.plugin.cool.cartnoon.web.ImageURLAliasBridge"/> <URLAliasProvider class="com.fr.plugin.cool.cartnoon.web.ImageURLAliasBridge"/>
<WebResourceProvider class="com.fr.plugin.cool.cartnoon.web.CSSLoader"/> <WebResourceProvider class="com.fr.plugin.cool.cartnoon.web.CSSLoader"/>
</extra-decision> </extra-decision>
<function-recorder class="com.fr.plugin.cool.cartnoon.FRPrintText"/> <function-recorder class="com.fr.plugin.cool.cartnoon.FRCartnoonFunctions"/>
</plugin> </plugin>

47
src/com/fr/plugin/cool/cartnoon/FunConstants.java → src/com/fr/plugin/cool/cartnoon/CartUtils.java

@ -4,12 +4,9 @@ import com.fr.base.BaseUtils;
import com.fr.general.FArray; import com.fr.general.FArray;
import com.fr.general.GeneralUtils; import com.fr.general.GeneralUtils;
import com.fr.locale.InterProviderFactory; import com.fr.locale.InterProviderFactory;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.context.PluginContexts;
import com.fr.plugin.cool.cartnoon.utils.AnimatedGifEncoder; import com.fr.plugin.cool.cartnoon.utils.AnimatedGifEncoder;
import com.fr.plugin.cool.cartnoon.web.ImageViewer; import com.fr.plugin.cool.cartnoon.web.ImageViewer;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.script.Calculator;
import com.fr.stable.ColumnRow; import com.fr.stable.ColumnRow;
import com.fr.stable.fun.Authorize; import com.fr.stable.fun.Authorize;
import sun.font.FontDesignMetrics; import sun.font.FontDesignMetrics;
@ -21,18 +18,13 @@ import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@Authorize(callSignKey = FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FunConstants { public class CartUtils {
static final String PLUGIN_ID = "com.fr.plugin.cool.cartnoon"; static final String PLUGIN_ID = "com.fr.plugin.cool.cartnoon";
static final String AUTHOR_ERROR = InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR");
static boolean Author() {
return PluginContexts.currentContext().isAvailable();
}
static boolean CheckArgs(Object[] args,int num) { static boolean CheckArgs(Object[] args,int num) {
return args.length==num; return args.length==num;
@ -67,7 +59,7 @@ public class FunConstants {
int textHeight=fm.getHeight(); int textHeight=fm.getHeight();
BufferedImage img = new BufferedImage(width, textHeight, BufferedImage.TYPE_4BYTE_ABGR); BufferedImage img = new BufferedImage(width, textHeight, BufferedImage.TYPE_4BYTE_ABGR);
Graphics2D g2 = img.createGraphics(); Graphics2D g2 = img.createGraphics();
FineLoggerFactory.getLogger().info("textWidth,textHeightY:{},{}",textWidth,textHeight);
AffineTransform affineTransform = new AffineTransform(); AffineTransform affineTransform = new AffineTransform();
Font rotatedFont = font.deriveFont(affineTransform); Font rotatedFont = font.deriveFont(affineTransform);
g2.setFont(rotatedFont); g2.setFont(rotatedFont);
@ -87,7 +79,7 @@ public class FunConstants {
BufferedImage img = new BufferedImage(textWidth, textWidth, BufferedImage.TYPE_4BYTE_ABGR); BufferedImage img = new BufferedImage(textWidth, textWidth, BufferedImage.TYPE_4BYTE_ABGR);
Graphics2D g2 = img.createGraphics(); Graphics2D g2 = img.createGraphics();
FineLoggerFactory.getLogger().info("textWidth,textHeightY:{},{}",textWidth,textHeight);
AffineTransform affineTransform = new AffineTransform(); AffineTransform affineTransform = new AffineTransform();
Font rotatedFont = font.deriveFont(affineTransform); Font rotatedFont = font.deriveFont(affineTransform);
g2.setFont(rotatedFont); g2.setFont(rotatedFont);
@ -97,31 +89,7 @@ public class FunConstants {
return img; return img;
} }
final static 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(ImageFromText(subStr,fontSize,color,width));
}
e.finish();
byte[] data = out.toByteArray();
ImageViewer.gifData.put(id,data);
}
final static void CreateCountUpAnimate(String id, Integer number, int fontSize, int rate, Color color, int width) { final static void CreateCountUpAnimate(String id, Integer number, int fontSize, int rate, Color color, int width) {
// 读数据 // 读数据
@ -129,7 +97,6 @@ public class FunConstants {
int step=number/len; int step=number/len;
AnimatedGifEncoder e = new AnimatedGifEncoder(); AnimatedGifEncoder e = new AnimatedGifEncoder();
ByteArrayOutputStream out=new ByteArrayOutputStream(); ByteArrayOutputStream out=new ByteArrayOutputStream();
e.start(out); e.start(out);
@ -149,7 +116,6 @@ public class FunConstants {
ImageViewer.gifData.put(id,data); ImageViewer.gifData.put(id,data);
} }
static String GetCellId(AbstractFunction calculator){ static String GetCellId(AbstractFunction calculator){
String[] result={};
final ColumnRow currentColumnRow = calculator.getCalculator().getCurrentColumnRow(); final ColumnRow currentColumnRow = calculator.getCalculator().getCurrentColumnRow();
int intRow=currentColumnRow.getRow(); int intRow=currentColumnRow.getRow();
int intCol=currentColumnRow.getColumn(); int intCol=currentColumnRow.getColumn();
@ -159,9 +125,6 @@ public class FunConstants {
} }
static BufferedImage readImage(Object file) { static BufferedImage readImage(Object file) {
BufferedImage res=null; BufferedImage res=null;
// if (file instanceof BufferedImage) {
// return (BufferedImage) file;
// }
String filename = file.toString(); String filename = file.toString();
if(isHttpUrl(filename)){ if(isHttpUrl(filename)){
res= BaseUtils.readImage(filename); res= BaseUtils.readImage(filename);

26
src/com/fr/plugin/cool/cartnoon/FRAnimateArraow.java

@ -2,15 +2,18 @@ package com.fr.plugin.cool.cartnoon;
import com.fr.intelli.record.Focus; import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original; import com.fr.intelli.record.Original;
import com.fr.locale.InterProviderFactory;
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.utils.AnimatedGifEncoder;
import com.fr.plugin.cool.cartnoon.utils.DrawValueLine; import com.fr.plugin.cool.cartnoon.utils.DrawValueLine;
import com.fr.plugin.cool.cartnoon.web.ImageViewer; import com.fr.plugin.cool.cartnoon.web.ImageViewer;
import com.fr.plugin.manage.PluginManager;
import com.fr.record.analyzer.EnableMetrics; import com.fr.record.analyzer.EnableMetrics;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.stable.ColumnRow;
import com.fr.stable.Primitive; import com.fr.stable.Primitive;
import com.fr.stable.fun.Authorize; import com.fr.stable.fun.Authorize;
import net.coobird.thumbnailator.Thumbnails;
import java.awt.*; import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
@ -18,24 +21,29 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@EnableMetrics @EnableMetrics
@Authorize(callSignKey = FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FRAnimateArraow extends AbstractFunction { public class FRAnimateArraow extends AbstractFunction {
@Override @Override
@Focus(id = FunConstants.PLUGIN_ID, text = "Plugin-Function_FRAnimateArraow", source = Original.PLUGIN) @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Function_FRAnimateArraow", source = Original.PLUGIN)
public Object run(Object[] args) { public Object run(Object[] args) {
if(!FunConstants.Author()){ PluginLicense pluginLicense = PluginLicenseManager.getInstance().getPluginLicenseByID(CartUtils.PLUGIN_ID);
return FunConstants.AUTHOR_ERROR; if (!pluginLicense.isAvailable()) {
return InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR");
} }
if(!FunConstants.CheckArgs(args,4)){ PluginContext contexts = PluginManager.getContext(CartUtils.PLUGIN_ID);
if(!contexts.isActive()){
return "插件已被禁用!";
}
if(!CartUtils.CheckArgs(args,4)){
return Primitive.ERROR_VALUE; return Primitive.ERROR_VALUE;
} }
final int width= Integer.parseInt(args[0].toString()); final int width= Integer.parseInt(args[0].toString());
final int height= Integer.parseInt(args[1].toString()); final int height= Integer.parseInt(args[1].toString());
final Color color = FunConstants.TextToColor(args[2].toString()); final Color color = CartUtils.TextToColor(args[2].toString());
final int stroke= Integer.parseInt(args[3].toString()); final int stroke= Integer.parseInt(args[3].toString());
final String id=FunConstants.GetCellId(this); final String id= CartUtils.GetCellId(this);
final String url="/webroot/decision/url/img?id="+id; final String url="/webroot/decision/url/img?id="+id;
try { try {

27
src/com/fr/plugin/cool/cartnoon/FRBlurText.java

@ -2,13 +2,17 @@ package com.fr.plugin.cool.cartnoon;
import com.fr.intelli.record.Focus; import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original; import com.fr.intelli.record.Original;
import com.fr.locale.InterProviderFactory;
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.utils.AnimatedGifEncoder;
import com.fr.plugin.cool.cartnoon.web.ImageViewer; import com.fr.plugin.cool.cartnoon.web.ImageViewer;
import com.fr.plugin.manage.PluginManager;
import com.fr.record.analyzer.EnableMetrics; import com.fr.record.analyzer.EnableMetrics;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive; import com.fr.stable.Primitive;
import com.fr.stable.fun.Authorize; import com.fr.stable.fun.Authorize;
import com.jhlabs.image.BlockFilter;
import com.jhlabs.image.GaussianFilter; import com.jhlabs.image.GaussianFilter;
import java.awt.*; import java.awt.*;
@ -17,15 +21,20 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@EnableMetrics @EnableMetrics
@Authorize(callSignKey = FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FRBlurText extends AbstractFunction { public class FRBlurText extends AbstractFunction {
@Override @Override
@Focus(id = FunConstants.PLUGIN_ID, text = "Plugin-Function_FRBlurText", source = Original.PLUGIN) @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Function_FRBlurText", source = Original.PLUGIN)
public Object run(Object[] args) { public Object run(Object[] args) {
if(!FunConstants.Author()){ PluginLicense pluginLicense = PluginLicenseManager.getInstance().getPluginLicenseByID(CartUtils.PLUGIN_ID);
return FunConstants.AUTHOR_ERROR; if (!pluginLicense.isAvailable()) {
return InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR");
} }
if(!FunConstants.CheckArgs(args,6)){ PluginContext contexts = PluginManager.getContext(CartUtils.PLUGIN_ID);
if(!contexts.isActive()){
return "插件已被禁用!";
}
if(!CartUtils.CheckArgs(args,6)){
return Primitive.ERROR_VALUE; return Primitive.ERROR_VALUE;
} }
final String text = args[0].toString(); final String text = args[0].toString();
@ -34,9 +43,9 @@ public class FRBlurText extends AbstractFunction {
int height= Integer.parseInt(args[2].toString()); int height= Integer.parseInt(args[2].toString());
int fontSize= Integer.parseInt(args[3].toString()); int fontSize= Integer.parseInt(args[3].toString());
int rate= Integer.parseInt(args[4].toString()); int rate= Integer.parseInt(args[4].toString());
final Color color = FunConstants.TextToColor(args[5].toString()); final Color color = CartUtils.TextToColor(args[5].toString());
final String id=FunConstants.GetCellId(this); final String id= CartUtils.GetCellId(this);
final String url="/webroot/decision/url/img?id="+id; final String url="/webroot/decision/url/img?id="+id;
try { try {
CreateMasaicText(id,text,fontSize,rate,color); CreateMasaicText(id,text,fontSize,rate,color);
@ -61,7 +70,7 @@ public class FRBlurText extends AbstractFunction {
//重复次数 0表示无限重复 默认不重复 //重复次数 0表示无限重复 默认不重复
e.setRepeat(0); e.setRepeat(0);
//添加图片 //添加图片
final BufferedImage image = FunConstants.ImageFromMultiText(text, fontSize, color); final BufferedImage image = CartUtils.ImageFromMultiText(text, fontSize, color);
for (int o=100; o>0; o--) { for (int o=100; o>0; o--) {
e.addFrame(setFilter(image,o)); e.addFrame(setFilter(image,o));
} }

9
src/com/fr/plugin/cool/cartnoon/FRCartnoonFunctions.java

@ -6,10 +6,10 @@ import com.fr.stable.fun.Authorize;
import com.fr.stable.fun.impl.AbstractFunctionDefContainer; import com.fr.stable.fun.impl.AbstractFunctionDefContainer;
import com.fr.stable.script.FunctionDef; import com.fr.stable.script.FunctionDef;
@EnableMetrics @EnableMetrics
@Authorize(callSignKey = FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FRCartnoonFunctions extends AbstractFunctionDefContainer { public class FRCartnoonFunctions extends AbstractFunctionDefContainer {
@Override @Override
@Focus(id=FunConstants.PLUGIN_ID, text="字符动画函数") @Focus(id= CartUtils.PLUGIN_ID, text="字符动画函数")
public FunctionDef[] getFunctionDefs() { public FunctionDef[] getFunctionDefs() {
return new FunctionDef[]{ return new FunctionDef[]{
new FunctionDef("FRPrintText", "生成打字机动画效果。\n参数说明:\n参数1:字符型,打字的文本。\n参数2:整型,显示宽度。\n参数3:整型,显示高度。\n参数4:整型,文本字号。\n参数5:整型,动画刷新频率(毫秒)。\n示例:FRPrintText(\"123456790\",500,100,20,100,\"ffff00\")", FRPrintText.class.getName()), new FunctionDef("FRPrintText", "生成打字机动画效果。\n参数说明:\n参数1:字符型,打字的文本。\n参数2:整型,显示宽度。\n参数3:整型,显示高度。\n参数4:整型,文本字号。\n参数5:整型,动画刷新频率(毫秒)。\n示例:FRPrintText(\"123456790\",500,100,20,100,\"ffff00\")", FRPrintText.class.getName()),
@ -18,7 +18,7 @@ public class FRCartnoonFunctions extends AbstractFunctionDefContainer {
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("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("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(\"123456790\",500,100,20,100,\"ffff00\")", FRCountUp.class.getName()),
new FunctionDef("FRClockTime", "生成时钟动画效果。\n参数说明:\n参数1:文本,时间,用HH:MM表示。\n参数2:整型,显示宽度。\n参数3:整型,显示高度。\n参数4:整型,动画刷新频率(毫秒)。\n示例:FRClockTime(\"123456790\",500,100,20,100,\"ffff00\")", FRClockTime.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("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()), new FunctionDef("FRBlurText", "生成高斯模糊动画效果。\n参数说明:\n参数1:显示的文本。\n参数2:整型,显示宽度。\n参数3:整型,显示高度。\n参数4:整型,动画刷新频率(毫秒)。\n示例:FRBlurText(\"你好,世界\", 180, 180, 25, 60, \"ff0000\")", FRBlurText.class.getName()),
new FunctionDef("FRCustomAnimation", "生成自定义动画效果。\n参数说明:\n参数1:文本数组,动画图片文件名或网址。\n参数2:整型,动画刷新频率(毫秒)。\n参数3:整型,显示宽度。\n参数4:整型,显示高度。\n示例:FRCustomAnimation([\"http://www.jhlabs.com/ip/filters/ChannelMixFilter.jpg\",\"http://www.jhlabs.com/ip/filters/DiffuseFilter.jpg\"], 100, 300, 300)", FRCustomAnimation.class.getName()), new FunctionDef("FRCustomAnimation", "生成自定义动画效果。\n参数说明:\n参数1:文本数组,动画图片文件名或网址。\n参数2:整型,动画刷新频率(毫秒)。\n参数3:整型,显示宽度。\n参数4:整型,显示高度。\n示例:FRCustomAnimation([\"http://www.jhlabs.com/ip/filters/ChannelMixFilter.jpg\",\"http://www.jhlabs.com/ip/filters/DiffuseFilter.jpg\"], 100, 300, 300)", FRCustomAnimation.class.getName()),
@ -28,9 +28,6 @@ public class FRCartnoonFunctions extends AbstractFunctionDefContainer {
@Override @Override
public String getGroupName() { public String getGroupName() {
if (!FunConstants.Author()) {
return FunConstants.AUTHOR_ERROR;
}
return "字符动画函数"; return "字符动画函数";
} }
} }

22
src/com/fr/plugin/cool/cartnoon/FRClockTime.java

@ -3,8 +3,13 @@ package com.fr.plugin.cool.cartnoon;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.intelli.record.Focus; import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original; import com.fr.intelli.record.Original;
import com.fr.locale.InterProviderFactory;
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.utils.AnimatedGifEncoder;
import com.fr.plugin.cool.cartnoon.web.ImageViewer; import com.fr.plugin.cool.cartnoon.web.ImageViewer;
import com.fr.plugin.manage.PluginManager;
import com.fr.record.analyzer.EnableMetrics; import com.fr.record.analyzer.EnableMetrics;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive; import com.fr.stable.Primitive;
@ -17,15 +22,20 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@EnableMetrics @EnableMetrics
@Authorize(callSignKey = FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FRClockTime extends AbstractFunction { public class FRClockTime extends AbstractFunction {
@Override @Override
@Focus(id = FunConstants.PLUGIN_ID, text = "Plugin-Function_FRClockTime", source = Original.PLUGIN) @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Function_FRClockTime", source = Original.PLUGIN)
public Object run(Object[] args) { public Object run(Object[] args) {
if(!FunConstants.Author()){ PluginLicense pluginLicense = PluginLicenseManager.getInstance().getPluginLicenseByID(CartUtils.PLUGIN_ID);
return FunConstants.AUTHOR_ERROR; if (!pluginLicense.isAvailable()) {
return InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR");
} }
if(!FunConstants.CheckArgs(args,4)){ PluginContext contexts = PluginManager.getContext(CartUtils.PLUGIN_ID);
if(!contexts.isActive()){
return "插件已被禁用!";
}
if(!CartUtils.CheckArgs(args,4)){
return Primitive.ERROR_VALUE; return Primitive.ERROR_VALUE;
} }
final String time = args[0].toString(); final String time = args[0].toString();
@ -41,7 +51,7 @@ public class FRClockTime extends AbstractFunction {
int height= Integer.parseInt(args[2].toString()); int height= Integer.parseInt(args[2].toString());
int rate= Integer.parseInt(args[3].toString()); int rate= Integer.parseInt(args[3].toString());
final String id=FunConstants.GetCellId(this); final String id= CartUtils.GetCellId(this);
final String url="/webroot/decision/url/img?id="+id; final String url="/webroot/decision/url/img?id="+id;
try { try {
CreateClockTime(id,htime,mtime,width,rate); CreateClockTime(id,htime,mtime,width,rate);

26
src/com/fr/plugin/cool/cartnoon/FRCountUp.java

@ -2,6 +2,11 @@ package com.fr.plugin.cool.cartnoon;
import com.fr.intelli.record.Focus; import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original; import com.fr.intelli.record.Original;
import com.fr.locale.InterProviderFactory;
import com.fr.plugin.PluginLicense;
import com.fr.plugin.PluginLicenseManager;
import com.fr.plugin.context.PluginContext;
import com.fr.plugin.manage.PluginManager;
import com.fr.record.analyzer.EnableMetrics; import com.fr.record.analyzer.EnableMetrics;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive; import com.fr.stable.Primitive;
@ -10,15 +15,20 @@ import com.fr.stable.fun.Authorize;
import java.awt.*; import java.awt.*;
@EnableMetrics @EnableMetrics
@Authorize(callSignKey = FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FRCountUp extends AbstractFunction { public class FRCountUp extends AbstractFunction {
@Override @Override
@Focus(id = FunConstants.PLUGIN_ID, text = "Plugin-Function_FRCountUp", source = Original.PLUGIN) @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Function_FRCountUp", source = Original.PLUGIN)
public Object run(Object[] args) { public Object run(Object[] args) {
if(!FunConstants.Author()){ PluginLicense pluginLicense = PluginLicenseManager.getInstance().getPluginLicenseByID(CartUtils.PLUGIN_ID);
return FunConstants.AUTHOR_ERROR; if (!pluginLicense.isAvailable()) {
return InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR");
} }
if(!FunConstants.CheckArgs(args,6)){ PluginContext contexts = PluginManager.getContext(CartUtils.PLUGIN_ID);
if(!contexts.isActive()){
return "插件已被禁用!";
}
if(!CartUtils.CheckArgs(args,6)){
return Primitive.ERROR_VALUE; return Primitive.ERROR_VALUE;
} }
final Integer number = Integer.parseInt(args[0].toString()); final Integer number = Integer.parseInt(args[0].toString());
@ -27,12 +37,12 @@ public class FRCountUp extends AbstractFunction {
int height= Integer.parseInt(args[2].toString()); int height= Integer.parseInt(args[2].toString());
int fontSize= Integer.parseInt(args[3].toString()); int fontSize= Integer.parseInt(args[3].toString());
int rate= Integer.parseInt(args[4].toString()); int rate= Integer.parseInt(args[4].toString());
final Color color = FunConstants.TextToColor(args[5].toString()); final Color color = CartUtils.TextToColor(args[5].toString());
final String id=FunConstants.GetCellId(this); final String id= CartUtils.GetCellId(this);
final String url="/webroot/decision/url/img?id="+id; final String url="/webroot/decision/url/img?id="+id;
FunConstants.CreateCountUpAnimate(id,number,fontSize,rate,color,width); CartUtils.CreateCountUpAnimate(id,number,fontSize,rate,color,width);
return "<img src=\""+url+"\" width=\""+width+"\" height=\""+height+"\" />"; return "<img src=\""+url+"\" width=\""+width+"\" height=\""+height+"\" />";
} }

29
src/com/fr/plugin/cool/cartnoon/FRCustomAnimation.java

@ -2,38 +2,47 @@ package com.fr.plugin.cool.cartnoon;
import com.fr.intelli.record.Focus; import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original; import com.fr.intelli.record.Original;
import com.fr.locale.InterProviderFactory;
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.utils.AnimatedGifEncoder;
import com.fr.plugin.cool.cartnoon.web.ImageViewer; import com.fr.plugin.cool.cartnoon.web.ImageViewer;
import com.fr.plugin.manage.PluginManager;
import com.fr.record.analyzer.EnableMetrics; import com.fr.record.analyzer.EnableMetrics;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive; import com.fr.stable.Primitive;
import com.fr.stable.fun.Authorize; import com.fr.stable.fun.Authorize;
import com.jhlabs.image.GaussianFilter;
import net.coobird.thumbnailator.Thumbnails; import net.coobird.thumbnailator.Thumbnails;
import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@EnableMetrics @EnableMetrics
@Authorize(callSignKey = FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FRCustomAnimation extends AbstractFunction { public class FRCustomAnimation extends AbstractFunction {
@Override @Override
@Focus(id = FunConstants.PLUGIN_ID, text = "Plugin-Function_FRCustomAnimation", source = Original.PLUGIN) @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Function_FRCustomAnimation", source = Original.PLUGIN)
public Object run(Object[] args) { public Object run(Object[] args) {
if(!FunConstants.Author()){ PluginLicense pluginLicense = PluginLicenseManager.getInstance().getPluginLicenseByID(CartUtils.PLUGIN_ID);
return FunConstants.AUTHOR_ERROR; if (!pluginLicense.isAvailable()) {
return InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR");
} }
if(!FunConstants.CheckArgs(args,4)){
PluginContext contexts = PluginManager.getContext(CartUtils.PLUGIN_ID);
if(!contexts.isActive()){
return "插件已被禁用!";
}
if(!CartUtils.CheckArgs(args,4)){
return Primitive.ERROR_VALUE; return Primitive.ERROR_VALUE;
} }
String[] arrSrcImg=FunConstants.GetSrcImgFromArgs(args[0]); String[] arrSrcImg= CartUtils.GetSrcImgFromArgs(args[0]);
int rate= Integer.parseInt(args[1].toString()); int rate= Integer.parseInt(args[1].toString());
int width= Integer.parseInt(args[2].toString()); int width= Integer.parseInt(args[2].toString());
int height= Integer.parseInt(args[3].toString()); int height= Integer.parseInt(args[3].toString());
final String id=FunConstants.GetCellId(this); final String id= CartUtils.GetCellId(this);
final String url="/webroot/decision/url/img?id="+id; final String url="/webroot/decision/url/img?id="+id;
try { try {
Create(id,arrSrcImg,rate,width,height); Create(id,arrSrcImg,rate,width,height);
@ -60,7 +69,7 @@ public class FRCustomAnimation extends AbstractFunction {
//添加图片 //添加图片
int imgLen=srcImage.length; int imgLen=srcImage.length;
for (int i = 0; i < imgLen; i++) { for (int i = 0; i < imgLen; i++) {
e.addFrame(setSize(FunConstants.readImage(srcImage[i]),width,height)); e.addFrame(setSize(CartUtils.readImage(srcImage[i]),width,height));
} }
e.finish(); e.finish();

27
src/com/fr/plugin/cool/cartnoon/FRDissolveText.java

@ -2,11 +2,15 @@ package com.fr.plugin.cool.cartnoon;
import com.fr.intelli.record.Focus; import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original; import com.fr.intelli.record.Original;
import com.fr.locale.InterProviderFactory;
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.utils.AnimatedGifEncoder;
import com.fr.plugin.cool.cartnoon.web.ImageViewer; import com.fr.plugin.cool.cartnoon.web.ImageViewer;
import com.fr.plugin.manage.PluginManager;
import com.fr.record.analyzer.EnableMetrics; import com.fr.record.analyzer.EnableMetrics;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.stable.ColumnRow;
import com.fr.stable.Primitive; import com.fr.stable.Primitive;
import com.fr.stable.fun.Authorize; import com.fr.stable.fun.Authorize;
import com.jhlabs.image.DissolveFilter; import com.jhlabs.image.DissolveFilter;
@ -16,15 +20,20 @@ import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
@EnableMetrics @EnableMetrics
@Authorize(callSignKey = FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FRDissolveText extends AbstractFunction { public class FRDissolveText extends AbstractFunction {
@Override @Override
@Focus(id = FunConstants.PLUGIN_ID, text = "Plugin-Function_FRDissolveText", source = Original.PLUGIN) @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Function_FRDissolveText", source = Original.PLUGIN)
public Object run(Object[] args) { public Object run(Object[] args) {
if(!FunConstants.Author()){ PluginLicense pluginLicense = PluginLicenseManager.getInstance().getPluginLicenseByID(CartUtils.PLUGIN_ID);
return FunConstants.AUTHOR_ERROR; if (!pluginLicense.isAvailable()) {
return InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR");
} }
if(!FunConstants.CheckArgs(args,6)){ PluginContext contexts = PluginManager.getContext(CartUtils.PLUGIN_ID);
if(!contexts.isActive()){
return "插件已被禁用!";
}
if(!CartUtils.CheckArgs(args,6)){
return Primitive.ERROR_VALUE; return Primitive.ERROR_VALUE;
} }
final String text = args[0].toString(); final String text = args[0].toString();
@ -33,9 +42,9 @@ public class FRDissolveText extends AbstractFunction {
int height= Integer.parseInt(args[2].toString()); int height= Integer.parseInt(args[2].toString());
int fontSize= Integer.parseInt(args[3].toString()); int fontSize= Integer.parseInt(args[3].toString());
int rate= Integer.parseInt(args[4].toString()); int rate= Integer.parseInt(args[4].toString());
final Color color = FunConstants.TextToColor(args[5].toString()); final Color color = CartUtils.TextToColor(args[5].toString());
final String id=FunConstants.GetCellId(this); final String id= CartUtils.GetCellId(this);
final String url="/webroot/decision/url/img?id="+id; final String url="/webroot/decision/url/img?id="+id;
CreateDissoveText(id,text,fontSize,rate,color,width); CreateDissoveText(id,text,fontSize,rate,color,width);
@ -55,7 +64,7 @@ public class FRDissolveText extends AbstractFunction {
//重复次数 0表示无限重复 默认不重复 //重复次数 0表示无限重复 默认不重复
e.setRepeat(0); e.setRepeat(0);
//添加图片 //添加图片
final BufferedImage image = FunConstants.ImageFromText(text, fontSize, color, width); final BufferedImage image = CartUtils.ImageFromText(text, fontSize, color, width);
for (float i = 0; i <= 9; i++) { for (float i = 0; i <= 9; i++) {
float v=i/10; float v=i/10;
e.addFrame(setFilter(image,v,v)); e.addFrame(setFilter(image,v,v));

27
src/com/fr/plugin/cool/cartnoon/FRMasaicText.java

@ -2,8 +2,13 @@ package com.fr.plugin.cool.cartnoon;
import com.fr.intelli.record.Focus; import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original; import com.fr.intelli.record.Original;
import com.fr.locale.InterProviderFactory;
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.utils.AnimatedGifEncoder;
import com.fr.plugin.cool.cartnoon.web.ImageViewer; import com.fr.plugin.cool.cartnoon.web.ImageViewer;
import com.fr.plugin.manage.PluginManager;
import com.fr.record.analyzer.EnableMetrics; import com.fr.record.analyzer.EnableMetrics;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive; import com.fr.stable.Primitive;
@ -16,15 +21,21 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@EnableMetrics @EnableMetrics
@Authorize(callSignKey = FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FRMasaicText extends AbstractFunction { public class FRMasaicText extends AbstractFunction {
@Override @Override
@Focus(id = FunConstants.PLUGIN_ID, text = "Plugin-Function_FRMasaicText", source = Original.PLUGIN) @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Function_FRMasaicText", source = Original.PLUGIN)
public Object run(Object[] args) { public Object run(Object[] args) {
if(!FunConstants.Author()){ PluginLicense pluginLicense = PluginLicenseManager.getInstance().getPluginLicenseByID(CartUtils.PLUGIN_ID);
return FunConstants.AUTHOR_ERROR; if (!pluginLicense.isAvailable()) {
return InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR");
} }
if(!FunConstants.CheckArgs(args,6)){
PluginContext contexts = PluginManager.getContext(CartUtils.PLUGIN_ID);
if(!contexts.isActive()){
return "插件已被禁用!";
}
if(!CartUtils.CheckArgs(args,6)){
return Primitive.ERROR_VALUE; return Primitive.ERROR_VALUE;
} }
final String text = args[0].toString(); final String text = args[0].toString();
@ -33,9 +44,9 @@ public class FRMasaicText extends AbstractFunction {
int height= Integer.parseInt(args[2].toString()); int height= Integer.parseInt(args[2].toString());
int fontSize= Integer.parseInt(args[3].toString()); int fontSize= Integer.parseInt(args[3].toString());
int rate= Integer.parseInt(args[4].toString()); int rate= Integer.parseInt(args[4].toString());
final Color color = FunConstants.TextToColor(args[5].toString()); final Color color = CartUtils.TextToColor(args[5].toString());
final String id=FunConstants.GetCellId(this); final String id= CartUtils.GetCellId(this);
final String url="/webroot/decision/url/img?id="+id; final String url="/webroot/decision/url/img?id="+id;
try { try {
CreateMasaicText(id,text,fontSize,rate,color); CreateMasaicText(id,text,fontSize,rate,color);
@ -60,7 +71,7 @@ public class FRMasaicText extends AbstractFunction {
//重复次数 0表示无限重复 默认不重复 //重复次数 0表示无限重复 默认不重复
e.setRepeat(0); e.setRepeat(0);
//添加图片 //添加图片
final BufferedImage image = FunConstants.ImageFromMultiText(text, fontSize, color); final BufferedImage image = CartUtils.ImageFromMultiText(text, fontSize, color);
for (int o=36; o>0; o--) { for (int o=36; o>0; o--) {
e.addFrame(setFilter(image,o)); e.addFrame(setFilter(image,o));
} }

58
src/com/fr/plugin/cool/cartnoon/FRPrintText.java

@ -2,23 +2,39 @@ package com.fr.plugin.cool.cartnoon;
import com.fr.intelli.record.Focus; import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original; 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.record.analyzer.EnableMetrics;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive; import com.fr.stable.Primitive;
import com.fr.stable.fun.Authorize; import com.fr.stable.fun.Authorize;
import java.awt.*; import java.awt.*;
import java.io.ByteArrayOutputStream;
@EnableMetrics @EnableMetrics
@Authorize(callSignKey = com.fr.plugin.cool.cartnoon.FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FRPrintText extends AbstractFunction { public class FRPrintText extends AbstractFunction {
@Override @Override
@Focus(id = com.fr.plugin.cool.cartnoon.FunConstants.PLUGIN_ID, text = "Plugin-Function_FRPrintText", source = Original.PLUGIN) @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Function_FRPrintText", source = Original.PLUGIN)
public Object run(Object[] args) { public Object run(Object[] args) {
if(!FunConstants.Author()){ PluginLicense pluginLicense = PluginLicenseManager.getInstance().getPluginLicenseByID(CartUtils.PLUGIN_ID);
return FunConstants.AUTHOR_ERROR; if (!pluginLicense.isAvailable()) {
return InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR");
} }
if(!FunConstants.CheckArgs(args,6)){
PluginContext contexts = PluginManager.getContext(CartUtils.PLUGIN_ID);
if(!contexts.isActive()){
return "插件已被禁用!";
}
if(!CartUtils.CheckArgs(args,6)){
return Primitive.ERROR_VALUE; return Primitive.ERROR_VALUE;
} }
final String text = args[0].toString(); final String text = args[0].toString();
@ -27,16 +43,42 @@ public class FRPrintText extends AbstractFunction {
int height= Integer.parseInt(args[2].toString()); int height= Integer.parseInt(args[2].toString());
int fontSize= Integer.parseInt(args[3].toString()); int fontSize= Integer.parseInt(args[3].toString());
int rate= Integer.parseInt(args[4].toString()); int rate= Integer.parseInt(args[4].toString());
final Color color = FunConstants.TextToColor(args[5].toString()); final Color color = CartUtils.TextToColor(args[5].toString());
final String id=FunConstants.GetCellId(this); final String id= CartUtils.GetCellId(this);
final String url="/webroot/decision/url/img?id="+id; final String url="/webroot/decision/url/img?id="+id;
FunConstants.CreatePrintAnimate(id,text,fontSize,rate,color,width); CreatePrintAnimate(id,text,fontSize,rate,color,width);
return "<img src=\""+url+"\" width=\""+width+"\" height=\""+height+"\" />"; return "<img src=\""+url+"\" width=\""+width+"\" height=\""+height+"\" />";
} }
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);
}
} }

20
src/com/fr/plugin/cool/cartnoon/FRRollText.java

@ -2,21 +2,31 @@ package com.fr.plugin.cool.cartnoon;
import com.fr.intelli.record.Focus; import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original; import com.fr.intelli.record.Original;
import com.fr.locale.InterProviderFactory;
import com.fr.plugin.PluginLicense;
import com.fr.plugin.PluginLicenseManager;
import com.fr.plugin.context.PluginContext;
import com.fr.plugin.manage.PluginManager;
import com.fr.record.analyzer.EnableMetrics; import com.fr.record.analyzer.EnableMetrics;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive; import com.fr.stable.Primitive;
import com.fr.stable.fun.Authorize; import com.fr.stable.fun.Authorize;
@EnableMetrics @EnableMetrics
@Authorize(callSignKey = FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FRRollText extends AbstractFunction { public class FRRollText extends AbstractFunction {
@Override @Override
@Focus(id = FunConstants.PLUGIN_ID, text = "Plugin-Function_FRRollText", source = Original.PLUGIN) @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Function_FRRollText", source = Original.PLUGIN)
public Object run(Object[] args) { public Object run(Object[] args) {
if(!FunConstants.Author()){ PluginLicense pluginLicense = PluginLicenseManager.getInstance().getPluginLicenseByID(CartUtils.PLUGIN_ID);
return FunConstants.AUTHOR_ERROR; if (!pluginLicense.isAvailable()) {
return InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR");
} }
if(!FunConstants.CheckArgs(args,3)){ PluginContext contexts = PluginManager.getContext(CartUtils.PLUGIN_ID);
if(!contexts.isActive()){
return "插件已被禁用!";
}
if(!CartUtils.CheckArgs(args,3)){
return Primitive.ERROR_VALUE; return Primitive.ERROR_VALUE;
} }
final String text = args[0].toString(); final String text = args[0].toString();

27
src/com/fr/plugin/cool/cartnoon/FRRotateText.java

@ -2,8 +2,13 @@ package com.fr.plugin.cool.cartnoon;
import com.fr.intelli.record.Focus; import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original; import com.fr.intelli.record.Original;
import com.fr.locale.InterProviderFactory;
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.utils.AnimatedGifEncoder;
import com.fr.plugin.cool.cartnoon.web.ImageViewer; import com.fr.plugin.cool.cartnoon.web.ImageViewer;
import com.fr.plugin.manage.PluginManager;
import com.fr.record.analyzer.EnableMetrics; import com.fr.record.analyzer.EnableMetrics;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive; import com.fr.stable.Primitive;
@ -16,15 +21,21 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@EnableMetrics @EnableMetrics
@Authorize(callSignKey = FunConstants.PLUGIN_ID) @Authorize(callSignKey = CartUtils.PLUGIN_ID)
public class FRRotateText extends AbstractFunction { public class FRRotateText extends AbstractFunction {
@Override @Override
@Focus(id = FunConstants.PLUGIN_ID, text = "Plugin-Function_FRRotateText", source = Original.PLUGIN) @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Function_FRRotateText", source = Original.PLUGIN)
public Object run(Object[] args) { public Object run(Object[] args) {
if(!FunConstants.Author()){ PluginLicense pluginLicense = PluginLicenseManager.getInstance().getPluginLicenseByID(CartUtils.PLUGIN_ID);
return FunConstants.AUTHOR_ERROR; if (!pluginLicense.isAvailable()) {
return InterProviderFactory.getProvider().getLocText("Plugin.Function.CartNoon_AUTHOR_ERROR");
} }
if(!FunConstants.CheckArgs(args,6)){
PluginContext contexts = PluginManager.getContext(CartUtils.PLUGIN_ID);
if(!contexts.isActive()){
return "插件已被禁用!";
}
if(!CartUtils.CheckArgs(args,6)){
return Primitive.ERROR_VALUE; return Primitive.ERROR_VALUE;
} }
final String text = args[0].toString(); final String text = args[0].toString();
@ -33,9 +44,9 @@ public class FRRotateText extends AbstractFunction {
int height= Integer.parseInt(args[2].toString()); int height= Integer.parseInt(args[2].toString());
int fontSize= Integer.parseInt(args[3].toString()); int fontSize= Integer.parseInt(args[3].toString());
int rate= Integer.parseInt(args[4].toString()); int rate= Integer.parseInt(args[4].toString());
final Color color = FunConstants.TextToColor(args[5].toString()); final Color color = CartUtils.TextToColor(args[5].toString());
final String id=FunConstants.GetCellId(this); final String id= CartUtils.GetCellId(this);
final String url="/webroot/decision/url/img?id="+id; final String url="/webroot/decision/url/img?id="+id;
try { try {
CreateText(id,text,fontSize,rate,color); CreateText(id,text,fontSize,rate,color);
@ -60,7 +71,7 @@ public class FRRotateText extends AbstractFunction {
//重复次数 0表示无限重复 默认不重复 //重复次数 0表示无限重复 默认不重复
e.setRepeat(0); e.setRepeat(0);
//添加图片 //添加图片
final BufferedImage image = FunConstants.ImageFromMultiText(text, fontSize, color); final BufferedImage image = CartUtils.ImageFromMultiText(text, fontSize, color);
for (float i = 1; i <= 10; i++) { for (float i = 1; i <= 10; i++) {
float rotate=i*36; float rotate=i*36;
e.addFrame(setFilter(image,1,rotate)); e.addFrame(setFilter(image,1,rotate));

4
src/com/fr/plugin/cool/cartnoon/FunLocaleFinder.java

@ -10,8 +10,8 @@ import com.fr.stable.fun.impl.AbstractLocaleFinder;
@EnableMetrics @EnableMetrics
public class FunLocaleFinder extends AbstractLocaleFinder { public class FunLocaleFinder extends AbstractLocaleFinder {
@Override @Override
@Focus(id = FunConstants.PLUGIN_ID, text = "Plugin-Test_Function_FRExchangeRate", source = Original.PLUGIN) @Focus(id = CartUtils.PLUGIN_ID, text = "Plugin-Test_Function_coolCartNoon", source = Original.PLUGIN)
public String find() { public String find() {
return "com/fr/plugin/market/update/local/marketUpdate"; return "com/fr/plugin/cool/cartnoon/local/coolCartNoon";
} }
} }

3
src/com/fr/plugin/cool/cartnoon/local/coolCartNoon.properties

@ -0,0 +1,3 @@
Plugin.Function.CartNoon_AUTHOR_ERROR=Error:authorization is expired
Plugin.Function.CartNoon_Disable=plugin disable

2
src/com/fr/plugin/cool/cartnoon/local/coolCartNoon_zh_CN.properties

@ -0,0 +1,2 @@
Plugin.Function.CartNoon_AUTHOR_ERROR=\u63d2\u4ef6\u5df2\u8fc7\u671f
Plugin.Function.CartNoon_Disable=\u63d2\u4ef6\u5df2\u88ab\u7981\u7528

3
src/com/fr/plugin/cool/cartnoon/local/dataEncrypt.properties

@ -1,3 +0,0 @@
Fine-Design_Data_Encrypt_AUTHOR_ERROR=Error:authorization is expired
Fine-Design_Data_Encrypt_CHECK_PASS=checkPass
Fine-Design_Data_Encrypt_ArgsCountError=Args Count Error!

0
src/com/fr/plugin/cool/cartnoon/local/dataEncrypt_zh_CN.properties

BIN
src/com/fr/plugin/cool/cartnoon/resources/menuIcon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 749 B

2
src/com/fr/plugin/cool/cartnoon/web/CSSLoader.java

@ -11,7 +11,7 @@ import com.fr.web.struct.category.StylePath;
public class CSSLoader extends AbstractWebResourceProvider { public class CSSLoader extends AbstractWebResourceProvider {
@Focus(id = "com.fr.plugin.char.cartnoon",text = "字符动画函数") @Focus(id = "com.fr.plugin.cool.cartnoon",text = "字符动画函数")
public Atom[] clients() { public Atom[] clients() {
return new Atom[]{ return new Atom[]{
new Component() { new Component() {

10
src/com/fr/plugin/cool/cartnoon/web/ImageViewer.java

@ -1,14 +1,11 @@
package com.fr.plugin.cool.cartnoon.web; package com.fr.plugin.cool.cartnoon.web;
import com.fr.decision.fun.impl.BaseHttpHandler; import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original;
import com.fr.log.FineLoggerFactory;
import com.fr.third.springframework.web.bind.annotation.RequestMethod; import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.OutputStream;
import java.util.HashMap; import java.util.HashMap;
public class ImageViewer extends BaseHttpHandler { public class ImageViewer extends BaseHttpHandler {
@ -29,18 +26,15 @@ public class ImageViewer extends BaseHttpHandler {
} }
@Override @Override
@Focus(id = "com.fr.plugin.cool.chart.web", text = "", source = Original.PLUGIN)
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception { public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception {
final String JPG = "image/jpeg;charset=GB2312";
String id = request.getParameter("id"); String id = request.getParameter("id");
response.setHeader("Content-Type", "image/gif"); response.setHeader("Content-Type", "image/gif");
OutputStream output = response.getOutputStream(); OutputStream output = response.getOutputStream();
FineLoggerFactory.getLogger().info("id:{}",id);
// 回写 // 回写
response.setContentType("image/gif"); response.setContentType("image/gif");
output.write(gifData.get(id)); output.write(gifData.get(id));
output.flush(); output.flush();
output.close(); output.close();

Loading…
Cancel
Save