From 2adfaaa32ca1bfe0aa8adaa1cddbf6a7f2992a65 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Sun, 3 Feb 2019 22:52:35 -0500 Subject: [PATCH 01/33] Added Straw Poll support --- build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 82a7099..cb6ad46 100644 --- a/build.gradle +++ b/build.gradle @@ -62,7 +62,9 @@ dependencies { 'com.google.cloud:google-cloud-storage:1.55.0', 'io.sentry:sentry:1.7.16', - 'io.sentry:sentry-log4j2:1.7.16' + 'io.sentry:sentry-log4j2:1.7.16', + + 'com.github.Samuel-Maddock:StrawPoll-Java-API:1.0.4' ) runtime( From eb5f53125e4cb2e3cf3eaeb0b9f8e25acb21632c Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Sun, 3 Feb 2019 22:53:16 -0500 Subject: [PATCH 02/33] Added poll commands --- src/main/java/com/mazawrath/beanbot/Main.java | 5 + .../beanbot/commands/poll/PollCommand.java | 36 ++++++ .../commands/poll/StrawPollCommand.java | 107 ++++++++++++++++++ 3 files changed, 148 insertions(+) create mode 100644 src/main/java/com/mazawrath/beanbot/commands/poll/PollCommand.java create mode 100644 src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java diff --git a/src/main/java/com/mazawrath/beanbot/Main.java b/src/main/java/com/mazawrath/beanbot/Main.java index d6946b0..1d6da2b 100644 --- a/src/main/java/com/mazawrath/beanbot/Main.java +++ b/src/main/java/com/mazawrath/beanbot/Main.java @@ -8,6 +8,8 @@ import com.mazawrath.beanbot.commands.beancoin.*; import com.mazawrath.beanbot.commands.copypasta.*; import com.mazawrath.beanbot.commands.googlevision.AnalyzeCommand; +import com.mazawrath.beanbot.commands.poll.PollCommand; +import com.mazawrath.beanbot.commands.poll.StrawPollCommand; import com.mazawrath.beanbot.utilities.*; import com.mazawrath.beanbot.commands.admin.*; import com.mazawrath.beanbot.utilities.jersey.RestServer; @@ -77,6 +79,9 @@ public static void main(String[] args) { cmdHandler.registerCommand(new BeanLotteryCommand(points, lottery)); // Google Vision Commands cmdHandler.registerCommand(new AnalyzeCommand(points)); + // Poll Commands + cmdHandler.registerCommand(new PollCommand(points)); + cmdHandler.registerCommand(new StrawPollCommand(points)); // Admin commands cmdHandler.registerCommand(new AdminPostChangeLogCommand()); cmdHandler.registerCommand(new AdminDeleteMessageCommand()); diff --git a/src/main/java/com/mazawrath/beanbot/commands/poll/PollCommand.java b/src/main/java/com/mazawrath/beanbot/commands/poll/PollCommand.java new file mode 100644 index 0000000..2753245 --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/commands/poll/PollCommand.java @@ -0,0 +1,36 @@ +package com.mazawrath.beanbot.commands.poll; + +import com.mazawrath.beanbot.utilities.Points; +import com.mazawrath.beanbot.utilities.SentryLog; +import com.vdurmont.emoji.EmojiParser; +import de.btobastian.sdcf4j.Command; +import de.btobastian.sdcf4j.CommandExecutor; +import io.sentry.Sentry; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.channel.ServerTextChannel; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; + +public class PollCommand implements CommandExecutor { + private Points points; + + public PollCommand(Points points) { + this.points = points; + } + + @Command( + aliases = {"poll"}, + usage = "poll [question]", + description = "Adds a thumbs up and thumbs down emoji to the message.", + privateMessages = false + ) + + public void onCommand(DiscordApi api, ServerTextChannel serverTextChannel, Message message, User author, Server server) { + SentryLog.addContext(null, author, server); + + message.addReactions(EmojiParser.parseToUnicode(":thumbsup:"), EmojiParser.parseToUnicode(":thumbsdown:"), EmojiParser.parseToUnicode(":shrug:")); + + Sentry.clearContext(); + } +} diff --git a/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java b/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java new file mode 100644 index 0000000..05eec92 --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java @@ -0,0 +1,107 @@ +package com.mazawrath.beanbot.commands.poll; + +import com.mazawrath.beanbot.utilities.Points; +import com.mazawrath.beanbot.utilities.SentryLog; +import com.samuelmaddock.strawpollwrapper.StrawPoll; +import de.btobastian.sdcf4j.Command; +import de.btobastian.sdcf4j.CommandExecutor; +import io.sentry.Sentry; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.channel.ServerTextChannel; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; + +import java.util.ArrayList; +import java.util.List; + +public class StrawPollCommand implements CommandExecutor { + private Points points; + + public StrawPollCommand(Points points) { + this.points = points; + } + + @Command( + aliases = {"strawpoll"}, + usage = "strawpoll", + privateMessages = false, + async = true + ) + + public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server) { + SentryLog.addContext(args, author, server); + + StringBuilder question = new StringBuilder(); + List options = new ArrayList<>(); + boolean isMulti = false; + int i = 0; + + if (args[i].toLowerCase().equals("m")) { + isMulti = true; + i++; + } + + for (; i < args.length; i++) { + if (args[i].equals("|")) { + i++; + break; + } + if (args[i].startsWith("|") && args[i].endsWith("|")) { + break; + } if (args[i].startsWith("|")) { + break; + } + if (args[i].endsWith("|")) { + question.append(args[i], 0, args[i].length() - 1).append(" "); + i++; + break; + } + question.append(args[i]).append(" "); + } + + int k = i; + while (k < args.length) { + StringBuilder option = new StringBuilder(); + while (k < args.length) { + if (args[k].equals("|")) { + k++; + break; + } else if (args[k].startsWith("|") && args[k].endsWith("|")) { + option.append(args[k], 1, args[k].length() - 1).append(" "); + k++; + break; + } else if (args[k].startsWith("|")) + option.append(args[k].substring(1)).append(" "); + else if (args[k].endsWith("|")) { + option.append(args[k], 1, args[k].length() - 1).append(" "); + k++; + break; + } else + option.append(args[k]).append(" "); + k++; + } + System.out.println(option.toString()); + options.add(option.toString()); + } + + if (options.size() < 2) { + serverTextChannel.sendMessage("You must have at least two options. Options are seperated by `|`\n" + + "`.strawpoll Question | Option 1 | Option 2 | Option 3`\n" + + "If you would like to be able to select multiple options, put a `m` before your question\n" + + "`.strawpoll m Question | Option 1 | Option 2 | Option 3`"); + return; + } + if (options.size() > 30) { + serverTextChannel.sendMessage("There is a maximum of 30 options for one poll."); + return; + } + + StrawPoll strawPoll = new StrawPoll(question.toString(), options) + .setIsMulti(isMulti); + strawPoll.create(); + + serverTextChannel.sendMessage("Strawpoll created: " + strawPoll.getPollURL()); + + Sentry.clearContext(); + } +} From d7e9d47d16f2f3092b55c7a6a822cae29ad11519 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Sun, 3 Feb 2019 23:00:33 -0500 Subject: [PATCH 03/33] Fixed typo --- .../com/mazawrath/beanbot/commands/poll/StrawPollCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java b/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java index 05eec92..113b975 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java @@ -85,7 +85,7 @@ else if (args[k].endsWith("|")) { } if (options.size() < 2) { - serverTextChannel.sendMessage("You must have at least two options. Options are seperated by `|`\n" + + serverTextChannel.sendMessage("You must have at least two options. Options are separated by `|`\n" + "`.strawpoll Question | Option 1 | Option 2 | Option 3`\n" + "If you would like to be able to select multiple options, put a `m` before your question\n" + "`.strawpoll m Question | Option 1 | Option 2 | Option 3`"); From 6f29de492f80de638bbde7f7540055cb4c631263 Mon Sep 17 00:00:00 2001 From: TehPsychedelic <21700114+TehPsychedelic@users.noreply.github.com> Date: Fri, 22 Feb 2019 14:55:38 -0500 Subject: [PATCH 04/33] Added support for MarvinFramework --- build.gradle | 2 + ext/marvin/ASK_AN_EXPERT.html | 12 +++ ext/marvin/Discussion_Group.html | 12 +++ ext/marvin/READ-ME.html | 80 ++++++++++++++++++ ext/marvin/framework/marvin_1.5.5.jar | Bin 0 -> 104734 bytes ext/marvin/lib/junit-4.7.jar | Bin 0 -> 232354 bytes ...rg.marvinproject.image.artistic.mosaic.jar | Bin 0 -> 4098 bytes ...arvinproject.image.artistic.television.jar | Bin 0 -> 1854 bytes ...kground.determineFixedCameraBackground.jar | Bin 0 -> 1952 bytes ...ge.background.determineSceneBackground.jar | Bin 0 -> 2610 bytes ....marvinproject.image.blur.gaussianBlur.jar | Bin 0 -> 3206 bytes .../org.marvinproject.image.blur.pixelize.jar | Bin 0 -> 2340 bytes ...arvinproject.image.color.alphaBoundary.jar | Bin 0 -> 1854 bytes ...arvinproject.image.color.blackAndWhite.jar | Bin 0 -> 1902 bytes ...ject.image.color.brightnessAndContrast.jar | Bin 0 -> 2448 bytes ...marvinproject.image.color.colorChannel.jar | Bin 0 -> 1921 bytes .../org.marvinproject.image.color.emboss.jar | Bin 0 -> 1767 bytes ...rg.marvinproject.image.color.grayScale.jar | Bin 0 -> 1867 bytes .../org.marvinproject.image.color.invert.jar | Bin 0 -> 1526 bytes .../org.marvinproject.image.color.sepia.jar | Bin 0 -> 2981 bytes ...project.image.color.skinColorDetection.jar | Bin 0 -> 5762 bytes ...marvinproject.image.color.thresholding.jar | Bin 0 -> 2865 bytes ...t.image.color.thresholdingNeighborhood.jar | Bin 0 -> 2238 bytes ...vinproject.image.combine.combineByMask.jar | Bin 0 -> 1910 bytes ...ct.image.combine.combineByTransparency.jar | Bin 0 -> 2191 bytes ...arvinproject.image.combine.mergePhotos.jar | Bin 0 -> 2393 bytes .../org.marvinproject.image.convolution.jar | Bin 0 -> 2284 bytes .../org.marvinproject.image.corner.harris.jar | Bin 0 -> 2951 bytes ...org.marvinproject.image.corner.moravec.jar | Bin 0 -> 2623 bytes .../org.marvinproject.image.corner.susan.jar | Bin 0 -> 2721 bytes ...oject.image.difference.differenceColor.jar | Bin 0 -> 2162 bytes ...roject.image.difference.differenceGray.jar | Bin 0 -> 2202 bytes ...ject.image.difference.differentRegions.jar | Bin 0 -> 2914 bytes ....marvinproject.image.edge.edgeDetector.jar | Bin 0 -> 2503 bytes .../org.marvinproject.image.edge.prewitt.jar | Bin 0 -> 1710 bytes .../org.marvinproject.image.edge.roberts.jar | Bin 0 -> 1449 bytes .../org.marvinproject.image.edge.sobel.jar | Bin 0 -> 1471 bytes ...age.equalization.histogramEqualization.jar | Bin 0 -> 2303 bytes ....marvinproject.image.fill.boundaryFill.jar | Bin 0 -> 2927 bytes ...g.marvinproject.image.halftone.circles.jar | Bin 0 -> 2936 bytes ...marvinproject.image.halftone.dithering.jar | Bin 0 -> 2092 bytes ...nproject.image.halftone.errorDiffusion.jar | Bin 0 -> 2366 bytes ...marvinproject.image.halftone.rylanders.jar | Bin 0 -> 2326 bytes ...project.image.histogram.colorHistogram.jar | Bin 0 -> 2163 bytes ...nproject.image.histogram.grayHistogram.jar | Bin 0 -> 2041 bytes .../org.marvinproject.image.interfaceTest.jar | Bin 0 -> 2321 bytes ...inproject.image.morphological.boundary.jar | Bin 0 -> 1747 bytes ...vinproject.image.morphological.closing.jar | Bin 0 -> 1579 bytes ...inproject.image.morphological.dilation.jar | Bin 0 -> 1886 bytes ...vinproject.image.morphological.erosion.jar | Bin 0 -> 1859 bytes ...vinproject.image.morphological.opening.jar | Bin 0 -> 1580 bytes ...arvinproject.image.pattern.correlation.jar | Bin 0 -> 3381 bytes ...project.image.pattern.findColorPattern.jar | Bin 0 -> 3855 bytes ...rvinproject.image.pattern.findSubimage.jar | Bin 0 -> 2613 bytes ...nproject.image.pattern.findTextRegions.jar | Bin 0 -> 3158 bytes ...vinproject.image.pattern.harrisPlessey.jar | Bin 0 -> 4930 bytes ...oject.image.pattern.patternRecognition.jar | Bin 0 -> 3073 bytes ...t.image.quantization.colorQuantization.jar | Bin 0 -> 1441 bytes ...age.quantization.grayScaleQuantization.jar | Bin 0 -> 2032 bytes ...arvinproject.image.render.grayGradient.jar | Bin 0 -> 1835 bytes ...ct.image.render.iteratedFunctionSystem.jar | Bin 0 -> 4344 bytes ...rg.marvinproject.image.render.juliaSet.jar | Bin 0 -> 3259 bytes ...marvinproject.image.render.lindenmayer.jar | Bin 0 -> 6743 bytes ....marvinproject.image.render.mandelbrot.jar | Bin 0 -> 3124 bytes .../org.marvinproject.image.render.text.jar | Bin 0 -> 3128 bytes ...oject.image.restoration.noiseReduction.jar | Bin 0 -> 3736 bytes ....marvinproject.image.segmentation.crop.jar | Bin 0 -> 1966 bytes ...age.segmentation.floodfillSegmentation.jar | Bin 0 -> 3043 bytes ...project.image.segmentation.imageSlicer.jar | Bin 0 -> 3795 bytes ...arvinproject.image.statistical.maximum.jar | Bin 0 -> 2672 bytes ...marvinproject.image.statistical.median.jar | Bin 0 -> 2610 bytes ...arvinproject.image.statistical.minimum.jar | Bin 0 -> 2692 bytes ...g.marvinproject.image.statistical.mode.jar | Bin 0 -> 3238 bytes .../org.marvinproject.image.steganography.jar | Bin 0 -> 9437 bytes .../org.marvinproject.image.subtract.jar | Bin 0 -> 1856 bytes ...arvinproject.image.texture.tileTexture.jar | Bin 0 -> 2597 bytes ...org.marvinproject.image.transform.flip.jar | Bin 0 -> 2263 bytes ...g.marvinproject.image.transform.rotate.jar | Bin 0 -> 3701 bytes ...rg.marvinproject.image.transform.scale.jar | Bin 0 -> 2067 bytes ...org.marvinproject.image.transform.skew.jar | Bin 0 -> 3039 bytes ...arvinproject.image.transform.watershed.jar | Bin 0 -> 4056 bytes .../image/org.marvinproject.ml.kmeans.jar | Bin 0 -> 3328 bytes 82 files changed, 106 insertions(+) create mode 100644 ext/marvin/ASK_AN_EXPERT.html create mode 100644 ext/marvin/Discussion_Group.html create mode 100644 ext/marvin/READ-ME.html create mode 100644 ext/marvin/framework/marvin_1.5.5.jar create mode 100644 ext/marvin/lib/junit-4.7.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.artistic.mosaic.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.artistic.television.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.background.determineFixedCameraBackground.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.background.determineSceneBackground.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.blur.gaussianBlur.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.blur.pixelize.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.color.alphaBoundary.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.color.blackAndWhite.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.color.brightnessAndContrast.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.color.colorChannel.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.color.emboss.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.color.grayScale.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.color.invert.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.color.sepia.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.color.skinColorDetection.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.color.thresholding.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.color.thresholdingNeighborhood.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.combine.combineByMask.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.combine.combineByTransparency.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.combine.mergePhotos.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.convolution.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.corner.harris.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.corner.moravec.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.corner.susan.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.difference.differenceColor.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.difference.differenceGray.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.difference.differentRegions.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.edge.edgeDetector.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.edge.prewitt.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.edge.roberts.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.edge.sobel.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.equalization.histogramEqualization.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.fill.boundaryFill.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.halftone.circles.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.halftone.dithering.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.halftone.errorDiffusion.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.halftone.rylanders.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.histogram.colorHistogram.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.histogram.grayHistogram.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.interfaceTest.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.morphological.boundary.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.morphological.closing.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.morphological.dilation.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.morphological.erosion.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.morphological.opening.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.pattern.correlation.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.pattern.findColorPattern.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.pattern.findSubimage.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.pattern.findTextRegions.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.pattern.harrisPlessey.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.pattern.patternRecognition.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.quantization.colorQuantization.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.quantization.grayScaleQuantization.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.render.grayGradient.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.render.iteratedFunctionSystem.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.render.juliaSet.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.render.lindenmayer.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.render.mandelbrot.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.render.text.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.restoration.noiseReduction.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.segmentation.crop.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.segmentation.floodfillSegmentation.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.segmentation.imageSlicer.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.statistical.maximum.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.statistical.median.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.statistical.minimum.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.statistical.mode.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.steganography.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.subtract.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.texture.tileTexture.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.transform.flip.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.transform.rotate.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.transform.scale.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.transform.skew.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.image.transform.watershed.jar create mode 100644 ext/marvin/plugins/image/org.marvinproject.ml.kmeans.jar diff --git a/build.gradle b/build.gradle index 82a7099..fab8371 100644 --- a/build.gradle +++ b/build.gradle @@ -64,6 +64,8 @@ dependencies { 'io.sentry:sentry:1.7.16', 'io.sentry:sentry-log4j2:1.7.16' ) + + compile files('ext/marvin/framework/marvin_1.5.5.jar') runtime( 'org.glassfish.jersey.media:jersey-media-json-jackson:2.27' diff --git a/ext/marvin/ASK_AN_EXPERT.html b/ext/marvin/ASK_AN_EXPERT.html new file mode 100644 index 0000000..ce4a074 --- /dev/null +++ b/ext/marvin/ASK_AN_EXPERT.html @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/ext/marvin/Discussion_Group.html b/ext/marvin/Discussion_Group.html new file mode 100644 index 0000000..4f638cc --- /dev/null +++ b/ext/marvin/Discussion_Group.html @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/ext/marvin/READ-ME.html b/ext/marvin/READ-ME.html new file mode 100644 index 0000000..a8dbeb9 --- /dev/null +++ b/ext/marvin/READ-ME.html @@ -0,0 +1,80 @@ + + + READ-ME | Marvin Framework + + + +

Marvin Framework 1.5.5

+ +
+ 1. Support Marvin
+ 2. Using Marvin in your a application
+ 3. Compiling and running (command-line)
+ 4. Resources
+ 5. Discussion Group
+ 6. Subscribe
+ 7. Ask an Expert
+ 8. License
+
+ + +

1. Support Marvin

+ +Suport us sharing the project with your friends and colleagues. Have you successfully used Marvin in a project? +Post a review. Visit our site and share it using the social media +panel on the top of the page. The more people we reach, more contributors we get! + + +

2. Using Marvin in your a application

+ +
  • copy this folder 'marvin' to your project folder and add marvin_1.5.5.jar into your project + library list
  • + +
  • the folder organization, including subfolders 'framework' and 'plugins', must be preserved.
  • + +
  • DO NOT add plug-ins .jar to your library list. They are loaded dynamically.
  • + + +
    + +

    3. Compiling and running (command-line)

    + +Compiling: javac -cp .;./marvin/framework/marvin_1.5.5.jar YourApplication.java

    + +Running: java -cp .;./marvin/framework/marvin_1.5.5.jar YourApplication + + +

    + +

    4. Resources

    + +
  • Tutorials
  • +
  • Examples
  • +
  • Plug-ins
  • +
  • Downloads (Samples and Project source code)
  • +
  • Youtube Channel
  • + +

    + + +

    5. Discussion Group

    +Get involved in discussion! Marvin Discussion Group + +

    + +

    6. Subscribe

    + +Get informed about new releases subscribing our Freecode page! + +

    + + +

    7. Ask an Expert

    +Are you looking for an image processing expert to help your project? Post your question on this form. + +

    +
    +

    8. License

    + +Marvin is released under LGPL license. Basically it can be distributed by any means. Its +binary might be used for commercial purposes. \ No newline at end of file diff --git a/ext/marvin/framework/marvin_1.5.5.jar b/ext/marvin/framework/marvin_1.5.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..b98b63df810a8950d270fd1ee6827ec1f3ccf148 GIT binary patch literal 104734 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:hI>Lw@;(2~2RA0{f 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

    O23dyc_cl6cy>ZRp8+?; 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�oMFXR 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

    `<^K9KoSHVVg)Dv&XRG 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.artistic.mosaic.jar b/ext/marvin/plugins/image/org.marvinproject.image.artistic.mosaic.jar new file mode 100644 index 0000000000000000000000000000000000000000..0dc4c7e70278a3dadac0ee15ff64a172979dc361 GIT binary patch literal 4098 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 Oz@ta@$fF)|eEJu6W-m$r literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.artistic.television.jar b/ext/marvin/plugins/image/org.marvinproject.image.artistic.television.jar new file mode 100644 index 0000000000000000000000000000000000000000..bad8cc5f6fd999925a6b306c06d76326ede6d32c GIT binary patch literal 1854 zcmWIWW@Zs#;Nak3aEhJg$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1g-O3A%xNEQUA>FE-nv@n&Ya&IWN^j!!P6o=FJB!`-;1TI zSU6|AmOL_BS}Ws+xT@OoC0Z8G#YLZpt4?E>n*FKhV-X|R5!?$S?l=RjZ~?qtkmQZ{mk6N^i=)CqLR$wlFVfNlGL2kvdrSl z{5*YxchF6;A+^L&o$+N#&HA=V3SSTLh6m5}eN#S&5(qn5pBFL%thug!$W9oz* z!Bak@T`TnZ+}QGTX65I5d%oA@*M0u>{OKDq62ROe&&!twCk7%Foj(rm!X^ za-54`J-zpg!qG?GJpW1xuZAcnu2E`GaQ42YHRJQtucDWCX0ExR=3KpPhVdKK!yA9> zTlZymcG%2^LErv2&RfP&b}?eS*Hn?6tad*D4*P_&v82bu!cc;k{l|H@b)1KlN zsS`G5PUYE0XRj4quu%Tq!`r+uAlemP5q(E*FWSq?|%OB_q?=A z8zZLgZ|hsRV2O6S(C%S9_bB>02hG+b>?(*xn(x z$=l}s3%fb|+m$AXJ)D~R-tJz|jAavQ605%prn?D!-|aY`&2MIp;I4xzRt8;+Jr8a4 z6#BZ4bo$-$R`FG8)znFnQcK(5xvRX8_5DLFJB8Ek9*=|f^yq)!+IPhCPfO&VCLXzm zR{vb4u})0W_1Kixv%ztX-jAC3a=e9M&nJ892ZX3C@tjoSG;2}MqzP#sl>RvF@|npz z;b!Eid5g@2j=!(y6gbiH-P~!STSvfuuZT+=&WU?lG`Y1N*JBObO+hjq}|JPGWE~&k?eZ5~W;ca!xo|hfUK7SgHd;DY*`fIz-_MYPL zBa4dn?dRZnJpV)$_a0Bz;F~XA{9|FvT)vyPdcO0r%H`F|4@Pc&anpRoJJnZ>(U0`} zEAxJrdtQ>cdc?)I?nl#~WE=fm&yU%IO6n^gUuzYzFfix?i^c$NMkWyk)Pf#Xih~Mz zQ~)ozLB&3@R!}jIT=s&Bc?7TpGT~a03Vo0XTnxC&XoLxefK1X#Y=pN!Wj3;xL1i`q b@Gz2QGI|Lf;LXYgGK~cY9f4*&X9e*9t3BTn literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.background.determineFixedCameraBackground.jar b/ext/marvin/plugins/image/org.marvinproject.image.background.determineFixedCameraBackground.jar new file mode 100644 index 0000000000000000000000000000000000000000..9dce87ff223c1a1e28d3c8967f25f65536e322c4 GIT binary patch literal 1952 zcmWIWW@Zs#;Nak3aEhJg$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1g-O3A%xNEQUA>FE-nv@n&Ya&IWN^j!!P6o=FJB!`-;1TI zSU6|AmOL_BS}Ws+xT@OoC0Z8G#YLZpt4?E>n*FKhV-X|R5!?$S?l=RjZ~?qtkmQZ{mk6N^i=(%#N_PsqWsdl6#bOclGLKy z%)C^$%!6dd>m}zT78h>~iS?HWm8d)S=FPcxMgb1( z+eD&TqY}i+Z|Cmb_S9K(Ynir)kLcuW;&boL)w%pGye+az?cT(Sw`)5MRiuO#cP#gqY ztGmLhABg zw6>DHcQguThVEYZXVUwdtoG`k&uaHJd^}O;-TiNp!wepBcBN;r?%tD7 zz3vWs`>y>jjFRh~{bx(=*?G!zc5TUYnfg=TZO!k0n7g!c_p2$ae*FDsSUjdmz2oya zA8qJTBQDtZ@1gAUw3WWqF`J#R=u?3R_oc^yjX^A5r0C3H7bhn>f7WldFDCp3}D~@0rv- zhuwEyg}(Kd<71Z$OMG1Y<{Nw4&DZlbzp?61v$T_0)BmI3&Jixo2PXr$r`sHVc=y%M zqGqn|J*I%L&Jt+t0hcYTTPM zIfv(H{^Vo!KbNZX8D8fwmC4N(F+X_XxqI=33+xXjINe_^-mO^mqArB>U8WU#+z$Bp+^7neepcyh5wZr3gp1{+0h* z%l1EBXSSh{v^_-TH~$*%rkw|!)b+I|s6?R~*h*n@7lWEf4k zdcAOw|8JpOPjCOPwO3=*b!v-3#iz}y*|qJjdwqJ%$J=5W%vnBqhNn`+tdA{uta66s z*NqdJ@7yEy3Qz&OYzI{g$XY=a0dnaKst6Fk z7RZEaMXDA+CU7y}F2xZh90D?_QKln23o6x-0|Hd4BY+YkHS8m%j1TZ;WdqsE0)&k~ ITRFiz02tN*u>b%7 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.background.determineSceneBackground.jar b/ext/marvin/plugins/image/org.marvinproject.image.background.determineSceneBackground.jar new file mode 100644 index 0000000000000000000000000000000000000000..a51fb099061c7a3b2c6a0fd168de7479f6971eeb GIT binary patch literal 2610 zcmbuBc{CL28^@=y%`lc*gNhWQ?E4n3eQaZ&aAgTIG{!!R$&Ie4-y}u0Y$FZjVvGn0 zQ`YQTH3o$cBGjO=)VSuJ-!FB~xxasU-t(UGp7TE6=leYGKkvuhnvER_0D(XNV~A#lWd~=yJJgmdB71H_SW0@nNLG7Z zSn!RoR3;z;vl`9_-}iSDJa=4Qne1Aa?rv5S+yKCCV|DQvKTM#vdm9q&uN34Rjzb5B zhKB^8d?S?5LEio-B_D5JjDL7YWH3?*iHbml2cd&ePQIvMl=0rh-gy74?DmtDP5;GG z(KpZ=i>*2B5h~&$$fQ)4WxTN=X*)a8g2wKNS02#~SVo`&wb0W{)AoxmaL?*^8CGMR zxo-h+NygZS#- zKphA_{^=NY;L-e!?mTm4%`29@fPYd;Kp;!LVG}tNK2Lm>cjmE=KefoIdKIVYi>jC# z53fnLo(mknU9;`V?;Mlb?yY}a8N|-19@nZ-*7e9(V_<-AirA0PqjyK67ku3<*(D~( z7#F{u%XxoT@FZ{&Q)h@!5H2GBz~Gf`9o@uZZt#O3o~6V0dWHg2d>hi7@15nT=DYR4 zc`9%A)asI&M#yjpC{KiWu}Ir+`*KwVk4dr*|1{?qJIOUVuZ}VI_ zpgdP@OcQI6zyDBjT&Hn%%n%9$ABZA(G?7Op&;wW^oaTG@Kf0Q)ZXat%KRVKMsHZcD z6M4sNO#~`80;0e!)Ri5}98^{30*OUs6YSKjPXvS1hCOwU*(tcR$RKIhJ z!o8IBA!~`CF<_W7SokI7%DK z)KYo5^eo;H-`+;^Yw^s651E2dkN9Mhh36a1IG&?rHWR_ZOJ0NBv&RK;mzvOQr>`&r zpL1;M3GvF4o6msFHxeS@_ye6dL}bFi3+eB`Oh;1wJopFV^_A&)EN;>}vD z%e0l0lkJ^Jj<7lCTAN*FMxFeWffx6(5Hm>6t8_yZs1#J;V0j&m_* zJ1n{4yuBhH#nWf_D5fmi2*NS-5Nnm-M_qC#@aTXhQbzYVkG$cA(KHdd%i#UDIzcgFhTmQ`P|rA^8N@A72bKvTg6 zq<-YHouNrF_W-UMN4p3jb1RuJ>XWS|JI7>)~k6UOp)PPE8n@x1=BpD6}6D>97^ z_^su{RiVi=`cWIxcqJ`_l-&^k+KdGOXB`VbNVD^h?<3>JaW%?q3xmuSbrL zyMDwbwhQ@vQTOq-9G19Pe4|H1RQR=ctwFnYbQT*H*g?3jcJLU9lL7f9yICf^D@-MU z&NviwW*+KxP#B_2U zEdR#u?cm04FnB8EZR|%e8e1b@Df#y+BF5a=C~6 z#KhCI@5Mwty?CK!?p?#WRPnoc0)@ou&1MW@>zFl&QoS`QJGtBm(=<;3vgM~QCyXMb z1G;xwLYx=$>-&zN3Q7h(!H!sVZhy|&C&c(YU?SuT7mGJWQ_t0dxc~quKGs*i4+sVP zh%5hN5f-le7~lAV1ux%AS+MdwL9k$DFZ6eh-=yE63#$S*;NMAOuR_c2@#nZ>Z%h_> jeE$S2^4JT}eLv^)|2f3onuC+&#lE{jcAd)qhQGf6g!5A{ literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.blur.gaussianBlur.jar b/ext/marvin/plugins/image/org.marvinproject.image.blur.gaussianBlur.jar new file mode 100644 index 0000000000000000000000000000000000000000..a385e9b6899eddc81d677165a653cc96a80cffd4 GIT binary patch literal 3206 zcmb7`XHXMb7RN)cO4WdL5s?y#^d`Oc-a80EDG4ATMUf)C7ej#1s~AEPr1+?T5D+vJ zMS7QxD0w2Xu(PYax3eGKxpQaEoqPWOd(O=L@H5gSB4z}Tlam8f>~pjMzXb(=7@)6i zrVP?H&=CHC0RV^qM!IC=7Zrs6DKq*hR{fip@x0=vSYO#dTSMK{Oh{kjvp#lMPZuOK zen}U^KZF5h;>yHQ45K}zcV(x>p@O$EcJU7?N_@&o@S5|;LIe_eY zhtLBk!M~fJDz^Hldj5pk`Mzj^5&$@FtTih8FB9;e-}*v5guR`i55PWtP+u>1*8pL# zx3h=4u*>~GsIZ4~pua!Z*+=E#@N1aA`^f(zAI;xPg{Uw71oA|WA&qT{u*SS)4I#KbQ+0O6rl8CBeM-C4 z{ClG}{2>vqu1w7#nnB!Nnq@hcyfpuK_YP&Fq()p(r&HO`lHL%S>^6Ed#z2mj4V9Ih z)Yc#mwtO)AmJ9q)s<+--U>wmnvQ5hEev{SsXBOiWIE-D(c;GzV zZeHhb*X?$E8ME9;^j&6@T1uDK6t4+Is7xU4X=sS2x$Iri#co!%i7Mwiuju*w?R~1| zn?zp?5EBw?P6E-E0V3!%B_o*-?e50Cc+IJ^J$44`@^(+!bU`8??rye25cxxU^%`&3ReZ@DW?7o7peYEEg^0=B=V=pgvo?yOZz9f|tCpWysk5KYTZaTHcRAf| z1ID)D8Z^-2ddIFHDrhy4a)65gK#GDm<8;WDK{S-}vCqve%}8I^M@OV9kxxZ5U1A{f z>Dyf0vN3y#W72x#A{;x4Ezo2JB>NB|U>o^C62|>CFB+Ca5fFAg8K{}NodRa@=9ZoI zcC*8s#2-|_c%*l}^?=ECM_Qo_HP`9mhQm>C}8(@V2 zlSoev3FUGcY-(|<+CgvF9!ZO5qdQG9yz@wSFe6#mucQKO>yL+Dhzq{2Uq>ViR^;)B zzOvOMZ~R`Bg#`xKrC>O}x*#}S8nzr}Sx=xig6dx+sWkYU+^1L&a;Z_s)ZVT3zosi2 ztc1>WyQO?Z2VDL-CCFxxRV zP$MBT1G&}8K|`)*SXSb(+B-~8apUq9K9+UHT~2zkkqA=_U@zRCYrEcbg}F*`bFWmE zJ@W@gGpdi868=3oJ%s#)D&Q?zec8JcxykZ(rHEST=b$%AptxwCFJM?tQ6MPpNt96VH> zi3}O?`8iiAi89@??c3pispFjEr{P_T`CQn~d8@-^$uHx@aA!qqto$8`gxYH<%QXr0lB9>0 zQu%6IYYeSEjJhmM#!V7qeIA~IE!)3bVI~EuN1$N$ThUyg4oNT6zpbg znOCv1bZhOG2!qRVUxh-%TBO;7Wj7@fIY-5%mDf>U+{M?%(OQ4Tw|ISL^Zeo;1nzfY zSG`R4R^>-zT8l!eeN346pu~@M*~&)0geXdX4gaotwCN^N(56E6izm{ zde#Vqv#m~)7cVRsy_ZN;k&CSvFcLA#K`Ycnl4{2gQW-9E5xGApJKMm^ndlE9(8WZ` z-QhbM_-A&QWo7q;;wO=h_=tQ9e3cSt1R_wCaalamr5iZ`JY6t_0KC(im6n%r9j#@^ zxO^RGF*PRnAl>EUX@Wj0|0MKQs;}XVqW<`=?J@H5qUlc$OXOD$aQ+OmA+%KZ_Pk5Y zv7mR_o@z#^EGWiVPqge0TSNJeSfC2c-k0P-Cx%!E)$ZcwPYyk6A_s@kQ-uQ-^61md zu;`8_JHeT}bIOWys*Gm~I|qi_wApcqt4y>+T5;TA-11S%2Z9`Aich&5)O9+#<&N04 zP4?w)usG&J7Wt|x50atX;mx3Z+j&5Fle%(7t>UGx@`yjU`0&%hItDS8Me+2m4slSb*+G`D`WHU>F9iufZHw5}=fnFV_8~CHftvv=tf%_5Pf2=Hcx)gR#6~>aqt&^eh zce0lIMB z(ZpH=enF|7nKw_G#SAZ=kmvbPemkbOHjY%Rg&zx_5nV8E|CSL=Cj|iDMSp>t1cZ!$ zzasO0dH4dE{~A9T_yVARmtFw#?-Y9h%)dh6JpC#C4WBO@C;|VUc7HkaoTvYUeSZyg lLBGEbd_ljzf|B5$`2H^o8|jjeUbqpTFU4~&QL2m6zW|7-j-&tp literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.blur.pixelize.jar b/ext/marvin/plugins/image/org.marvinproject.image.blur.pixelize.jar new file mode 100644 index 0000000000000000000000000000000000000000..ec0bf273ae4866e3894130e934b8f9dc44d30cc3 GIT binary patch literal 2340 zcma)-do&aLAICQ|o0SogOL{7IF)`>mPzm0Z%$Jd9yV!$R~#iKHo-Hn(_ELaW$_ zXJSA116UtiI0BV?kG)Dsdw+U#`u@O7b7xtnfZbAkC5H(hFf%?M)+M?G}q+ocsKZzW2 zGJ0OlMw8$XAu)JjNE{yiZIFL@?EQId*IIvCEf@W875kkS-!lVZNhbluLz0?B3 z{_0JIF9WLsAH^G##}6Aa-Yl;vb?jLl;pKC6QN47R&t{K%YA5q1%|1ufuM3~Sf$A;h z$ej`?WqxL+VX;tGe0RAYvt%U?5k`IQ!)3(Qng#cf^9N@}B6O!xA?o0n$jFn7PF`WZ zEA?$cPmTcEfA*M#{7{gve)2|Wy@eIggXo3((|XG1fmwM$1B$pNBzBV9x@{om3x)34Tv|VE<0c=u4!&corDmUbh)6tM8=<(J{?`9(R_~t58i|0>D zA~!==@)<&}(Cpw0WaTxBsopsn=Tq2=Bx)qX+05(S5_$O3#+eq&Hx;p9oj z+))NoO|^S=I#t)AeMhne5j_S5lF_pS$=gyC86sqX0$^zz#Q&0E1=hUJ=L5?%v*N5V zubl^vNwjTkJh9-EOPI2`l~{7xmNQ0Ce(%umXT__KL}o+CV3+Xbf$H=xF9sHE!i;8| z@?V+adzc9;on>cwQxn<9m;~6l%5%+|RwuaAxl^iHn8=qLl@+?-k!-_?-|}tQvmYSC z6|11`*WO7V+*eG7^QR-WxE;sQ2sb1Qw^qb=HrR?8XfT9w&Mh1A^} zPvh)T^Hz;PWfuhc^}KYAZM|uk1xk~Vd*Da9yQ-31auAxA!#1Vp@3_%;_$t5Z{#DeS zwjd?s+5MB5P66FaW%cFfHnNVue_vNQqw|DxnUvVzuy(Rt(*RUPQy}0o^R@+-F(aR+ z`Od-6Ac-MuPAQ_Hpif@-ChUyaCRG}T@39nPpQSS5r_E3gLVmR^#v9CCU~kgUb)tMD%*hH#2-Z#xWC!{EaNFHTK(p`~7ynwM$jYM5wIP3!_GnRe2H z$0o?LJV%s{ZE!@sThhV;=gtlHp{SkJje(iSixkM>VCncl_NBRVwmwlSsp0AEu}Vpw zHw183W*r1`hy1QgEbhPjoWyRPep0vqn>%@)n-X(jD=Z-;WunVvA%}bWgB|u#Kau7c+wJyFCuuVEXd*Z-kaYtY%FVC{bnw$ZV)HX*kY&s;WfxCRhPfd`H0qPvRk?Uwq&3c z%UQqDpr@U+wBq#TD7lSQxa7IWe_IP_zbL}$#lhj4!5faHw^@BWLW8+6x~2j8!6 zhQ`u2xCr)P?cr*l^s46&K5S0#&7r!@tn0s&fC%H8dRx^BubNt`!ECbnu`(=OZjD9~ z`8crH;QaBTRVj?Fb*2n7QEOk*=$e(7&eJ`8W|1HOAY`K$j6exRz>jeMAGyVF|1rMO zT8#SdrDC*y&s#CtzlDV;{VM$q^kN4Y!2jp+H-|=1`m>b&HjtRp-w!M1^tS*3f7;^F`k z_bepfP)Ptl0JOQIF%)TI0pDW+0Kxz}l$f}nL+GD2yM3|gXJR>i$G#YCY=g8gzv>7> zTf9RL^jo8#ut6ylRD(Uhp*x%(xj6rt0JB1CA<=`8G>}BjvSJrSNdvp3a8`|5tZ{{_ zAitn+HVg1DaD(uc0Q`FhFx6$+l>dbpe+z~<0s!y_t51CRNdhhYE1qx@9*iLn142Rx zc$}Y41Uw)ZbJGv*gAc+J;FzFLEXD*M8RCl}#J~^YeC}lQg-*tYePKR9nDFp|O!shE zrxU%rb9l-MY?B1T2FGNpp_N5+QsTW*g$A>nmqrwO!X{J$8Genfx)g_|jNI8BiTX#n z&7+k0=$Fyub8WHfyCCTsJg#cyh!8s`cjjF_ozu_TE(qV~pEKG6&8r;0)CGcxVCeO@ z2C^XC+MH(Mx~K03W(SXU(-KW^QWW)GylHXF8=W7H7M24yD=dFHSWEW#W!4!s0N zX?3z%+Qt%A^$Xh;gFvO>O+UfRh->MYlaL?pUL}Ja*ud(|fXgMb|ZEqmhtpCD76B$gLsjbTN01$wPR0 zIO4K<;wUm=EA9!nA2&zu$LL%m(>d$i^%59p#F#sG4^o+ayWaHo7RT%0j@QcA&@v_$ zSR_Srxx2E{tQU)RSDBo-OAg$+-RmBb*%bqIaR;R7)e zH{~2~BfGe}RkGz0I|V{=D~LYeVU71SVEvUKx(Ug1M{;WuQ zy1mRn!(*s6OvA$p?}M%KDuJ@B4BET=Z@4U)h;8@k{}hDl7{b~b%x1nOR^r%zoyNoh0>eMx2^45@tx?joDh2xTAH4Z1^w(@U~QjEy~3+lCP(wq#B^bb0u zi@QoWr>QX+4XkYiH_y}Qm3`ickQU5%#?tsqDY4AZtOoH1RYmq{R?u}$O2#=lqB%Woc{yg Tb|?{1fgy;$%=mT-B7)mr84m4W literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.color.blackAndWhite.jar b/ext/marvin/plugins/image/org.marvinproject.image.color.blackAndWhite.jar new file mode 100644 index 0000000000000000000000000000000000000000..fded99d851e4ed02bb5e1f813ce86b0c95bdb855 GIT binary patch literal 1902 zcmWIWW@Zs#;Nak3aEhJg$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1g-O3A%xNEQUA>FE-nv@n&Ya&IWN^j!!P6o=FJB!`-;1TI zSU6|AmOL_BS}Ws+xT@OoC0Z8G#YLZpt4?E>n*FKhV-X|R5!?$S?l=RjZ~?qtkmQZ{mk6N^i=)i{G9wE{iK}4hl<#fDaWk2mi>RQ|v5amVv} zE*wIqe3)n3exFmlzxZ7FIoqFq=g+TaEs)&S!q+Bw+i+3p*_%ddeUIO}P@H!~C%aAV z>`m3%ooU`t>n!r0hI21l?Y@5dI+YS5ACo>ebMMgRxXg{S&WFXgpWf-ow?#*Xr>N@R zzh8H+B&8W1Js`wm%e^hM(Dd}#jHRpI?fq8z_uTyWo-2|yZHsHSO}gx5bvR?y+-9){ z7R}#RWzKx3)2uFW%AiE=MrCXpJ0mMsmBg>0WlQg`o3?pZvH$6!EB~hWevmwC_;c6F zHznL@t%~!iGTk($otw1w>F&a=#I6J-_5>v+HKhclYD+gW6Zd18b0!)bF}UQj{nf0c zX`6a&f?HNwbG3ccN_ z-oNB+bnbCei(#Aa?+Ko#ukyaDml5Wn zxg_VR>MZqJF1Hp%o+?`PXwL+pkJBz|hX|Yhh}Y`%+L9t*KzoKy+ax2Q9g2w) z7na+%Y0PH7t#J(%aw-V|y2Ij>RMm@91OCHGU&yD~*$UI|TfoAmC$g^Mc1Q9Cw-JXJSQ zittd@&lB8rE;XxdTJ77}u3J{^OMNx}LQ3>vbx-G$g3~({e)y`()_2UECpultE$X&N zu)9-Z;ty9xj~h4cU%Y19yZPF(l{(pC->t>&?Edd|)uu(eEbz&vuGrF|U%bI*jxs;i zIn><~_{xv}>PBYg7fsW{CPkE9c5ZHd;&!zk9wYTp0w7e zNctz6a%ffj)a(lNXTi0N$L}XZe6@YcZ4*}eb9r;nMU8LQHh$1~cKe`Y-h=8E#c&yi zO?~AjRRluh|F3@dP1rv8??b6~cK7dADjA2W{oMO}cl@U-HcDG13K{39E<1Oz|B%Mn z+lF3Gne-->h$`w_2>9C&R9q-HfAT-coBJ2V7yBJtrg6M%GLzoj&sE$C^ z3aS&33u;iEfB?2YCR{604FNKNivf3mjxga6kV#tcj_?+!fJgQ+sDMWR9!Ank#!}n| Sc(byB3}gX97oc$>U>*R5vh-m9 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.color.brightnessAndContrast.jar b/ext/marvin/plugins/image/org.marvinproject.image.color.brightnessAndContrast.jar new file mode 100644 index 0000000000000000000000000000000000000000..09737ff1a1d60de843e0b362b869e719ea1b4f18 GIT binary patch literal 2448 zcmbW3c{J4h9>;$eVIo4=mz13ua|cP*FdBnw$u-7UVi?0@G-1foxD?qF*?OWzn(j0R zrO?yZmnq4bbu3MVmMJ0?m*?Eu@|=6`AAQdGp7TBD`+0ws??11%3rYYa4G0Sh1BWpA zNZ^MM0YHG0orkqP(is6=?*;$?zy&2Fyp_TK?=+WhVw=B+r8hIaiJh#SkqA3?4~P@u zgA=>Q5v3356GQ3iJZAUSxETz8!$K-{~ zt~nX?d>}9EJ&8x+`*VoxWnSYpn=NcN&(;uN0N5O?{vUZiZD6?hN+jW+;r^skp%EuY zM0`--NoZ)eKQ0IwNF)$R&;U{>F63lHP*jw4#Bm#9#7UBW)Jf>~wf{vN$n&44`)TE;iiW;gu|T8Tez$&_wwQxuEiEu^-Vx5L z|7bFe1t-7L-=5vg?_FIcDGZV{65Izm#7~!$l+;a1@~ZL^RA^1anh=8}8^WL7z9AdO zors=lTA7HOY+AXz@nZG}AEQG=Wgg@f47()jo;FK);9@8qCZ}7LML(dQ0~4z$I4rX~ zo{~50P|l3M)4@jD)g4#AkDFa{fmSuc^0Z{1E1pY;8_I*Yss)zQrZ0ayZ*{niarJiy z+B>wOXjqgwWO3}kv7rhh=*3sk!XASl=9M8W^!>C(gCQnUWXH?p7wXMb+3#v>+^F_myJrO zwXF=e#hkt4!z+<2)p?nuH{6!n_%Bhoq}Ea!mRZbcFDEvWCh<_maIHH3ghJ>wig5x% zGjYO5nAxlkHs*Mm-VClejrU$VnG9euMGdqiAaWE>UEh#eca~DUJ4arAB6#=mIpIXS z=;#IhvGv@q9y;Vt>=f~?TgKWW1YE3d@k>|-IM}xb-M|*Hyf4Uwe|be%x^~Ic6NeT| z%zSGOw;wPGp%?Zg)NzKAvUX+rJMw!HM&&AG6^V-hZyVotFY>YJ!AMsbx(QG@uPCdJIM%VCU;kXmI0pwQ|u0ey3JHoC3TUn z3VCs#l~`?+Q|>F>dqIM;#)P>yLp4Jw(YZC+VNY;E#Q}j>!<9l*t2)djU*zcPxsQzr z>GtUUew-y`4Woshy>Hyt>kCo+$SdDSl+z={_w%2J`GhAk@PYNCp{)Y(?(r&1)1UBR z#bo%+9YxOr5Mwuc(y@kNnpk})0h9>!oYerY!}qxRVvpj&z2=6qQ=dxIO~9ESMlF-x zKhWQOQ3MB<+1pw zK}^#VRoSkx+}WgCk9n^%5&|XLQLdNYvGw%PTULG@N7(QVzZftMcgBuIDtQLzo1Rcm z@Dlf|0fq-w8>W_5APQ^NvJ_}EkAtybH}Cm-@qgU1cvSJAM|>ps`X}m+SBVQ9 z(>GRZ2YyqNH*sZ+@HAM-;LJu?-SZf)+9V{J=y>arYihRA;FQwf4bz*hE7-{^$d(UY z9d9qQf6vgn;MBO<5PM|h-B?-zfu&5aJ6q@(z%);7;Qj5+EZNtR7`3c-inCpm6E>+c z6)2NnBOXltSc<}bNw=t!VBy)0Fbwh-p@|~XY znE@&qa)BZt-X*EFY(O_HrX(%TRMYKw1q5kY=1gS1r{!cb%#06ezA;#q!U}C)2YpGO z(>$l9QOPl(1A9L|E|Z|6&r}@N_VPTIRe==DX}w#}3SYuWS#;FUifmIlN6h-v8h7+U z7PFq1*}bzN*jOl5ZQQaj(=2IdpWVZg;ihU&vNB|PV&?X0^^H87l8(d2IKye{55JTK zE-VdJ*`2{w9ekU%!M_D~A%zG`#x?-JiEXi!k6#-2*&qA|{#*Xw=lBNvEw}Kabjuz5 zi0mzQ@IA~ouivCUc!jMBVBmkF{dGE!2MxX}(|U@PEMXf)d>P SWnl9cL4eO@dF4N?)xQ8&{rmF( literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.color.colorChannel.jar b/ext/marvin/plugins/image/org.marvinproject.image.color.colorChannel.jar new file mode 100644 index 0000000000000000000000000000000000000000..21463739fa9c7bf8cb6e0f7ecb376bc6d96d4668 GIT binary patch literal 1921 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 V-vDn`Hjoi4K&THiU=b^b2LQd7zfJ%E literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.color.grayScale.jar b/ext/marvin/plugins/image/org.marvinproject.image.color.grayScale.jar new file mode 100644 index 0000000000000000000000000000000000000000..a5f6774c7285c2e098c9e22f61febfed52e4909c GIT binary patch literal 1867 zcmWIWW@Zs#;Nak3aEhJg$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1g-O3A%xNEQUA>FE-nv@n&Ya&IWN^j!!P6o=FJB!`-;1TI zSU6|AmOL_BS}Ws+xT@OoC0Z8G#YLZpt4?E>n*FKhV-X|R5!?$S?l=RjZ~?qtkmQZ{mk6N^i=)i{G9wE{q&;5%HZV0oK$^; zSI|u{C&3hVn0b21If=!^Q$tP%M~6!MmlZ1VEL!kXP^ZHq-i-0qhm6Z&x0IH)E>qK; z>ZKdKe)M~7^E9s8K+a6xo(wH3u56^wnU-7?Ly7b8Xos|uu z0r^Gmf1dkZyZ?R7`OlB%$JetbNK9+9YCJe+Do=Vz_SG}b*527Pal_#>H-D*zE_!n} zAM*5$pY8b~Q`shTsmTsjzbT3jYj(|eB2-@Xn49(XCE>CV$r)uTOzfZAwoch>RArWU zg!lFamS0JsU$(7CO8O=FG>~zA-tB2S1Ge-wIh2b=Z8=-=^~S6@x8`xDUE8A1xua=e zB;$9Nyo(Pg|@jsNG$ z{d(Z{{EI7ZF4MyQGAsDkW_)paVA)w!QM1HK#p>f8hvZ8ej+Z}Kpe}LCp8M1pZXqct ziM#g?T&}w2!7X!p+XS6i{|z2w81nThs`oJUZ)pzwTl6KhCHVQp`sr`pJ)O5>M_h#D zT<){K3Pg^Z$_T%>W%j zoiS?jPYYQt*wg9e9GLoO&XJ#Yr?5>e2zhiU?~vm88|M$7do20;>B}qAbKl#3?WvXi z^YwTC`&N;6T}MJ&v%^aLo(EU)u3Qo>pmFcJJwKH}fJk0T4VV$fZu(3yt(S0EkC{% zi$Bwv;`d(di8A|zBkPYRmOWzFziCZFbH=k%57#%USGG*r`n9h4+V0sLHg47V`JC-? zi?eTsO@8dbFW4TrPT4wV+tr-1$49%){_Aosee}@yp3MEmHLDe?=LB?$*c%>j`!ug) zhqr~%qnCfV-s&C{s#<+SGyKT@#?o+?JcXMNe=?qxo!3yWq0nyMoX))c7t_B6okW90 zp({2|Y~wN&`pCA0|5ibv>V*TTIjVvmie%$GYeYVN)t=k+$mPKDI#r)_-i~>k*X46+ zSJ?!laGGEHtMowq@2lpurbqQ2ZvFIW*Qpt&JHJ~M^PFpJyWI1c$Esl3Ps`&xbDrn5 zTyc##rs{V?BJHEmCyC>~pVT#J|CqBYeuELeVXN=Cm8Wi2S?W)nqnRc5eU6RYLFpy0 zWM27hYd^j4-DBNtor_9zHhhwjQ*3m-_Rz@RV1tWaPo0XV>4j#-B_5S8-K~9s>`ERw z>rDQ%`CjFk36nf7Kk}^DCed|8!Gy>1e^1-uJ5L@=5w2elx8+Y?#oc@pHIA^Ob-#gy z96QJFa}BE}urM$r01M0jZ$>5&2GrsoRy3V#H!1v24U zk*Wfa30w@gOKyY-hk#7t%W;I4KqWb{cR?jN0&p-AZz@{39^lQ&1~P~R2rYod{AC64 E01J}oZU6uP literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.color.invert.jar b/ext/marvin/plugins/image/org.marvinproject.image.color.invert.jar new file mode 100644 index 0000000000000000000000000000000000000000..605c5810be4eb6aa632ef324bb875ca9eee15196 GIT binary patch literal 1526 zcmWIWW@Zs#;Nak3aEhJg$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1g-O3A%xNEQUA>FE-nv@n&Ya&IWN^j!!P6o=FJB!`-;1TI zSU6|AmOL_BS}Ws+xT@OoC0Z8G#YLZpt4?E>n*FKhV-X|R5!?$S?l=RjZ~?qtkmQZ{mk6N^i=)i{G9wE{mi_w)S?o7gg?-Y zFeKIpPq0aP$vKI|#ZyCk^M&0d>W-D|`Svbo(g7wufm==o&rNq`%2RaU$kdEh%~e?y z!rPven?F}Id;M0q_I~G`AGoWYw1sG1FX9wxm#co^ziQR8^Jk>m`&CwGpFi{a>zUvC zKA-uqzCQjhV}jUy2@lR5_rk?@zC1d+;A-FE-*vvznwMSwaC)mo&!eIXx4tAtmVHf9 zP%cp9)Z2bIule+*YhtTpC96$eYQ55FEGud6Ct@MWH%^7ZDv15YmfUs2Mx!Qj)YJDVP!X4QPW z;MUZ-^rP877arJ|l)3V{+hXZG?;gI@$V)WvKl|Qbr_R1U{~$GvyKnEb+r~<^yjQ&` zzx_?A*|Te2tJV4*&0utYaK&+I!p?$pIzq7oX@-rbEhHf#!J^W&OxgFpANi5n|h zXGwICVb-?A)9z2YoW*@zcV||2e{RjD@C&X_ZL%NVi909x)F%INQxTsg+o5l}u9s`) zpFAdUjCGA4zZW0tr!%YVuKwXr%k^34qg}q^F?(<6%J-AjyIRBU| zew@=W^OCdnZ&5w>=EbKzPIxTXy-R!Vtz(<6U;BRlz}wh=-*rwOC}sSdccnM`-&=>h z655q4!Qc1#_P;SyyfS^^k@n*^7lb|2+QHYe*X12+tBB9J$XuNRk8;!*WB3b2f2`n_ zyKZ%S_kqdz46gDO63w;`T=cWO{`})B`of#Cs$b?%L6eB=IkQ}Uu9>+qJ7@WZpV7@( zqJ2%QPABF6kpRWlGmQI8fAieb)!|D_zhfwyE!|pm^v2b5SG0G=zP((fYQONvyni#3 zEiBdd_dW{tzObve^SSkYThrF$pm}xsKCjNQSbKWj#iuk(aot|CQkPt~lyR<==a0tjGvg|?l2UPkX`xR9BAOI^P bkwzkyMFHNdz(8XF1`G>>KG1-T;1B`;bkax# literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.color.sepia.jar b/ext/marvin/plugins/image/org.marvinproject.image.color.sepia.jar new file mode 100644 index 0000000000000000000000000000000000000000..22bb3e04c99b83e6011c35cc75258d1d13a09987 GIT binary patch literal 2981 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.color.skinColorDetection.jar b/ext/marvin/plugins/image/org.marvinproject.image.color.skinColorDetection.jar new file mode 100644 index 0000000000000000000000000000000000000000..0639b08c939b0ff60f8a905e081845f91a481c66 GIT binary patch literal 5762 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.color.thresholding.jar b/ext/marvin/plugins/image/org.marvinproject.image.color.thresholding.jar new file mode 100644 index 0000000000000000000000000000000000000000..62bcff3fd863fe200512754ebb163e9f73298000 GIT binary patch literal 2865 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.combine.combineByMask.jar b/ext/marvin/plugins/image/org.marvinproject.image.combine.combineByMask.jar new file mode 100644 index 0000000000000000000000000000000000000000..817297cba12e1ec3b00aa92b9d720c78caac5571 GIT binary patch literal 1910 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 GM*26#KIBjU literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.convolution.jar b/ext/marvin/plugins/image/org.marvinproject.image.convolution.jar new file mode 100644 index 0000000000000000000000000000000000000000..3bd7250884cc63b054341cceb7dc673752327357 GIT binary patch literal 2284 zcma)-2T;>n7RLXOD1`Swng&n^NC|`zF`)<&l_o_Z(iFiG5QCJE0EtKu6_7`L^j@V# ziUg3NAcndEf5Y@m*|o3Ttd=U}>dd zX1HqB-F3!PS*4HHR2k9J-CJdGgn^ov_Ea%3Q!+N|BR>Q~QszZl(+?t?zd&W>nE41z zCUpN4R5l4nbp7c0!IR_PMf{d~;f)^a34PXL7r_GntitMo5`XGIhIQ-ViATEQJSjH_ zL{ASFCr5AO4R;*g3F+uTpm?~Ey>ECBkh^XC-9haa9rSkHR2`D9ORGrk)pX|12~t2vwX@IC_V@I>5wf%epm zVw8nQ2I-T5_?0aX=F1#xg>JXKj(NXF`G{6b<1qQr<7bb1=Jo~ZZ1X&)ym>VtXq1Gg zpNg>+eF5!C?9WN0#ebDT;bl<;lSWkY$EyVnm5xb669OX>nlfD>F45l?wogRHSX>okT{dGf`ne&T%U@# z<(GX&dz_&-@m}7k40uyKd@dA-pY4X0X_V+~+f3JuUa0^d&Mb(uomEr3^f|1^o1n>{p`OJDA=NJ3w;P!l@|vT?qk z@@nOiw#vhNj?Uy;9I+mhA0tv(qjn>8ssJCDOCDmnlY8$i_HN)CHYk&e0n|3yqXN5`8|2iM4ry`~oIM{E=~H_LKOpr8<(# znoAuV-W596>+MCn#H1?VSy)jK-hzw{1&G_N-{MUrB2^mpTg( zZ`4%a?;I2qMa^o<{$aH`?+FCu58_BxkXWet)DnCTio$J${=Y&x>8-G_TG zG|1|6!o$Q!vOKb>^i@V#o$XNAV1}}WE9nEQHsnFwJ0CylTgpuR9s9W2nEqDB*=)rs z$+Ovl?G-UaOCplNM?46RM43UqOOYc4!;F=DgJr{z6*7WC@fXxLt<0xs;k5GuzoHf7V{nFmREW^)c>_(pjQ?74Jc z2aFXFa~f|3EugBS;zy`;3wkoVtdBEZXccuo`(dM6R;N+(ifKnwx`g8ncuvDuJua=4 zPHG}X!p;O}l|z^>xh!G+7)#rGcR<=k%hyaVe$~Kh%)bf3EVN0kx5x#?fBZbcZ~MWv zDCJ^XoXI|J{`ovCG zsBWGBIXhufB`|h9xOVS}hKN2V!x8T5$eJ%=kukKG;Ok$O=xBdcB+mDb`1_Q7f9c0B z^n_{(t_?RhO0?je<27&3dlnADc(?TYO~OIvwqcVPg`tj?X6~*ni8E1=p}_(!a%6?M zzjxeU-o6dR#jYMa8|;h$H=CQi$?;kIoF7c!s}$*U4(gEgdfx4A_-b#%RIu` z$!=+wX!ypmKIrCyjZEVNe9>F+(uuDJ>IszM&_)a$^VtD{#T~ax)J` zZ0?h`r_{#M;fz4Tr$zFU2UW_KNB;>^jm*~6Ysv|~LJDy_ir^FxiXd5|C(BZN!f|j413y#xzX)bi`setL zT{g3Sl(HH9BRJWN-VGhr_Pg{4VzV81fd3EJU594Y_SbN`+YTGJKeoyS?rwlNe$DZJ X@M~_mhc!EZH5)K+lx337#XkKD!^pWy literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.corner.harris.jar b/ext/marvin/plugins/image/org.marvinproject.image.corner.harris.jar new file mode 100644 index 0000000000000000000000000000000000000000..0180e38a835118e1e0067e8396894212062edd28 GIT binary patch literal 2951 zcma);c{CJy8^_0*Z72+8hT>YX4Y#oulaLx?rlDe7QB0FDmdRiuODV^4jV-cgH$ueB ztu$mw#?peCBC-{CEZMS`c)90&+s=8qYdlr?x1VP7e?T(|qx)i)sHmM{i`DqGN;BMxuKH%lU;from6Lp_;@sSyeS|v8FLs z7BnWSng+P(^@*}T;rV9>(E{8%%k3|$w(rgmA^^blV71q8{xDje1NW}kDCWU7f+`65-7SvHwwkmU-$bWzk0y`wa4*)taR|+ZvOta9DTe`_JYF` z=I)W-8?PxhD2XR%1ei-UDLE}bUVh5tr3QD() z@ILj5k%*Zp*Xgdrf6*&OXX&5Ljx;Q@-E}zr0E|p5X4FvtLRO-FNPlT@4+Fo16SqDcu8QM$yifXXV}yN|(Egt9i8q`F*K?I5uEDwHHR;;D8&u!5E(e`!W>Dc?W_(ondi@yz8woy0;hU; zdT01PT*{X3qrrGjm)V9FXx(wkHg9<()L#QSVNyMaRjK(}78H&%oDERahE}|-)l0S! z=Mtu0QH)lEaM>-RY0Z$2?7hG+Uevy%d*Y^1U3&a^nk%sD5W$IO&DR4ijx*(ak!TPPSnpLx0dYI`GwO->xeSSSqEvW)NW-jLUCePMTPv%x( z%PF9LdD=x#?FrKJYsqf2OV({Oa_pF>)T>+J!lO;M-oiwgwO4*Yh*R<2VZG54u^~iAynidbW1m7>Btb=K8 z_*QVg$Q;n-P0&<(a@qUr*1-$y{1%9hySwJ!zKBNQjSgP25~Xm#k829C_;QeHv#pf# z`tOcMb&C*5iEL|=61z7BIZi@rE@mn~rntRJ)(76$Jui%tU}NsFGaAAAoQzh4`U4qJ zV0yHM;<@CK)OMR^DN)0(Q~TFs826Up9~%{`o0Lwr5tjGR>ZHl$)t3*!YHf zm3vn~oUf7%4qcMzQ~@+I=&#qzP8cGy4d!~M;o7|?qA8qL>a_(GHK`uYlsBBC3~;W7 zll?D?6-?WnBYUO6&QA_K=y7qPdun(hqL%6O6=%t_BDZ~t_2RnccIUK4VW6=P`*Si- z%hOBej+Ad2+(*=1mKhACo?%x3SKh3SIL|N}6I}%mhe9k2KHXCu>-Gw0o9iLJ#d;M! zN(08(v^!bo7>wmMALb-^2=<0i2aBu&9zgP1N9xVxGy<(`?CV2u_1=A<$5b{M+@|&q zfgsic=%c&HSGMc?bmU!f^6X^yVBEA!Z+yL4ur0_$Ct3ZDbY+?H1kF@Gw0X5D84sPO~Mf@;ixL%X!2|B zoiU{c7EH4{hYp&~fLOh_x6Y4B>Q^fY=-@F9_MG6JD))R#GHGrJo}gAKq3`ybp4?&@j9u3H1IML zK0Bj*gKz_vAqyq2#9QEu8@OU3azW7F1Ri+$nN{$4516=d1j#ImX>B z+;#TYK7>UhvCXw6c7KSjVCxZA-5Wx2!l6fUnw0!R&PsE4gUItq4Ofc^0`_Tn_)|`a zwG08f5?QIvaOqUb410IuD%z;YxO%Q5=Dol;FGln5IhB_QgGBUjbcGCVm#d>2~kh^tf7UvJJLCBUg4?P(*u6M((*UNX`L9 zWl(av76vy&c(&RM!#IW0Jbz0x_IMbR9y9f1`h8f-pN=`QdQqTT$@2NndFyE&a-}g- z;MeFih#epPi+bQ)cS(j~`;1MObIPPI-e z>+bq`6y@J{ogK|6m{(r*%qJxTORaIlh!L*ZH}oBxeDhZXr-+G;xW(UPD>5Ta%ZC(p zWQjYaPdFGzUXdyij9KGUkVmT<`-~@a4K)?KhsvB6l?KEPjyq>JYYtNPo@TAM=zr#@ zDr_n?209nF-1SNxajw=RpYXEi4VaeTR-G7#^i7$_GFh6j_aqW7^N}ffp%OE-P13b7 zur)+3TVi*!s+b*y878U6hLsGf9Bv$sIsZwBuVbu6?zpdFtGP#JkY?qHQP6#-J?>?} zH`}A)H=36q$!f3SSJh`4Hx^WVEu>yAi=9~pexL@tsFey^yt0FU8?4Fm{oA}Hy=RBM zczC4&KNIBt@NkD9e~xcRxWkh_N_Y72N2uH3$M0dbU4E1PK$ANTB7px7f8QM*Z#sTg4Qj$kNO^M2uZ!CrcV@Ln_-K zX|iu6OEgHE;pP3lujM`GJE!|O&pG!w&wX9bb^rIXgwfIS0GOGX0jFIuOaZ?X5I_%r z8`|iDP0fuUyFCB^9l#RC#C$M8``a3JTj?cVBDw@F+OyNUeW%R(z6~V4-VL6{K{8G}3#c~>p{JabNQW=2s ziyKG^lIEWftOX7e(ETqA_U}Om764#BSW{g3ZyU($zXl<_Apr_ zfbjN&xCbEvJ&}-rAS5E((;f12lYg72{<#VKKW2*V{s`c^vpi z6@kpYkHT7D)sKKr9Ua1*ABi8IvuSriWi!{OY(2`uur$477XBftOIo*(vuQe(#`^sDHG8B5iC1Q#=bU%p42voU4rP99#YX#N zwOr>e?wP+P)2{mMET1OJaA|lwm;czkWq<1)wRCy@o^%|2KS;Rdtiw6=biQDYw(!TIk4_@!9lfj(8aNYc7%^MM3=A0?n_mv&(bpwxe z;*4x+Pn zr5tr7xk0459XR>L@+*hd3em981pLFzfhQ(j#Y(FCQ7>CrtxVp!!S3dfXx{BB3&ohp)uRm);hTL;T!qDCgJ}Q?Xu@-E1C`mMoHDRr}Od?l%h~-}t z3h*E|tPz!(h)#9A9cPERcEi(78yhVu3?kVg*Iwqf*i|m;WMPli-dVV)4eEjf9h0J9 z-#tLZS2O6&=TK8LpHPgD40aEnM2R{XH$4CDBk+o-KB%E0G`i5CY?-i(!|0VV^aSUR ztl$dtd`GhE)4eA3Z9U^$A2lr3KY1`N>{DH|WGq+5^kt%KBjB_Ex5F&CFN=2}0Z)F4 zX&K$n?VUtco_N#ropIawnZ%23HN5K`jEUOXYg*sQD-zV$?X#=h;q@Djy*q)G4cwZ8 z=X7S3Q;}dvw8Lhhd_PoJ0eYgB?mdeF)cg4eUzut`eR5p8L8l5wNmxRI?s0TN?of1Z zBzA9#cPlLWMcy1Hy8m5sq$9NM1@G7Q)D!0Mgd)+bXZ4{`z-Y%Y$J5@Zkw(I5A*gyugvNWvj+o=5o!U1U?0XQ_rjPhG}qDyokMGbwz9Wj!wx=$zAvGmfl9}me-J5 zC_|pmzF_*^BRw|zR>PCcmpngwj%k*Cnzz0OpiomtC!S@5m~-WW-n({Dqr$Q8=!$2> zw&z2pzWRCuGZ*0$^Mw_&KYD5>LgrtMI;H(>_ z&_ik9)ST4V-Q+DD59JOnp{JiQ_j!u;^v{I2<>V4(&pr%hC&__QMUU@-N}8VsU*>e1 zpUt2_;FTR#_@ym|?=qZ<)%QV8Z#_bG^2pAvN58x?794@tYq@f^B**#4!;FytlJcTL>iiLNN`R_) zg|r65@)T)73g#U<6I5qlS}28+9AW{PZsdbXO^Q3W(1KFS;uTr0I9{0Xi=pHTrgP17 z-R&U`HxD6h`f$hGnwrbK9W`$k^PSZqqq0@V%vdtKTXEb{2`nF@RIAQMnan8rhR?W5 zh&UYN>x%+bU-X?++X)Q?x+9ap$J|$fOcn~~!QuWGLdul z^Rr7>GfIsBaAH=sYAWZJJN>#KQO%&Et(y`s&>qKvCh||ReBMdQH#761b@0PgjLM#? zJp0hG$RoYDMbAui?5gWoWO8-uYaS_Sbb*hG1Ebp$e%UPlQJ|p%&VWOncp<3cd_9=#DWJM-^DO}YjYE02RImJvI*@_7ZDJG#f1i< zy~7{@7?d9x;vI?$LE|9!a6Bpm@*~GTEtLPQg~Oo{*gF`7$LBc(1ta`~3C%OTq`cd0 z5%`9B7&SAz7elJeXgE!8n9A%38mflnQeN0BIgBSmUh1x(l}!SUu>}n28G50uKE}_n z8eU-usIQ<6K-t+r(jYFF0V4=R*g6aUeR@Y%OJk(+de^+xz&2rZ|5D5LZ0)zNb1;DD zy4vr#dd{VH6OUAEM=L#-d{8#=gA@Ffg?PVmR{_BEmtlCRc7OB*z2IsPPzK>j2b3v;ma%B z`FfkSmHw;cN2QlGvenXRfvtuQGKdnjJ(~4T1SYN3o%tf87cQqJc1-T16aNDBjmZij zrG*@E6u6v+yeV3{sM=!G^{IV=+@MqHTA5>C3{1yRTIIB$Do)z zl2=rDc49Jg&P|2-Zij5N1A5wXh1Ffc703uoN}o5u4^WHLE2t!=%r7|jpLjO{WFH@_qoMOu*`jrDUUyp<{A78ob+T*$IDk@l(F)#|*o zz`LgPrV81exe<^l_sqx!-Qrlid3uP%8(5NiC$wGrOieQjOVRLTji8Uo zJ^hPe-={$I1yKE)$D3ubQ5CXhia1(1mP2ek#B>>Q1++v}Q5>w!CZc+~MUK5BoU$SI zTU@@dx-y|8dB)#U(3?@eqdj86QQnGpBZ3ljUmR{AFQ&03rfY)=x~en1V(Swl$&x}l z=4VENE4s{Qi&;o5IQg|E2rwo;xAgFl;X*htNU0RQ;`iUL{!95*`Y5?Qh-?C<$V6hC zC(lY$wejDCKZrAiaXi0tQRq|(;~s|nUDKXj0jexGzx$0}f~E+tjZc?7YILbJ!^^v* zzegQ)qN+^w(eB_v%BART&CUsMZ!8XctB2?ig^pRoMO#w`jhZuZ6%lkdVu1P$M;u&X zv+2dAr}bl>u+m`89c-UQ3e+huJ@>WZ$U3q8w|A;iyXQnb1Rv&+{Yzb~-!N%vb}|K? zHbsBLMo{<>7J9d1Q@afNo-jI}y`a(@UmSrnegBYIUrtcuCE0g+ymjVJd14PlhGL z2{vhO_lMb<5wqqi0VgV0)8ut3+aSt)0 zCR%k-R~$}R32T3)x}X+2EVQWh$}WJ62L_#h1xmC|Y&_fQ3UkRum2O^8TOQt7;YU); zifAk8+&LGE=}_*};Q)$;OM*z)=$5Ri#(cPOF5BfvJSUgV^h{dExw{!ktM-5H`UQV@ z+siU}-KmZ8YX9gKN^6(II=-fOuj5z*jX45jX(1f@D1Fzse~EJ}LBjiN$a_Etjdx0B znMZq%t#e%{h1TNDSew?-;>pQlo#@zg{g|||#0@Wvk~ZCpc5`@J6uiCnjDox5veLb# z*y2c`&i1{!6~5Xk8pM^x~k+gZ(Il|btt1%>Bv&()pimgyy!wN*X+{%I^FZE5I4VM(xWkWFI>!gZd{wFGs$Ohuu`gLm+3k0Odt}kS{f#E6 zT&J3MSpk4;u0u3oU=#%WidX+*r$fB@wZ8MxA#D9DJ%p>DiRTcmew5C^@w@aV)H-zF z0Q`S4`r*)eaQv5?^drw9DgB)Fkd%HDkl|li{=`kTmOz$62j+tXKF}lC4{!eg!d0L( literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.difference.differenceColor.jar b/ext/marvin/plugins/image/org.marvinproject.image.difference.differenceColor.jar new file mode 100644 index 0000000000000000000000000000000000000000..969d023cb27169f9aff45b12221ccbd85e3d5cf7 GIT binary patch literal 2162 zcmbW2do&w%8^?o$xVHqORcuII6OFW~b=tVZC4z=fLK9OGbqP`G-c^Int%{&1HbLD= zF{*4`1trwA!nDUwRHi6xO;znpcHS4=dG}AB-}#;M{Lb(BexK+0>*I(O0YU&^Fc@Iw znPUUk7vcaQ0B7lpHn6eBz;-wQfC#`5D+U%+2>-XtaaU~q4>5#au`9-*?QJlYPR@on z%o|*PpB>h~a9A2^pgYh%*ocQeMNH4r4Q+AyHn`!iDxi4Yl5%IkAzkXGl9u*MmM-e0 zlER#lRt|vazfNDH3;jKW^gU*!^qFPc}gCe`$0IEYOP{?iUnH zr(N{%z6A3N^rHB{F8KNS`p|uXy!WT(v;Z0%wzt(k4Xr=V&|MLqHvOU|s^}T%`={MKEnTIqDn)KCZ%XVx-7|P=<3yBH`{i_Cx2NV zH&y0N8MES1SNb@~14mZn57;bJHDJ&tQPDN=^QU0b>D?IMsgGSo2*8Q_utn;Hs%!$> zAs31$j~(cl;~lhDXvD-Zcv>X+s6z1+rYvjcG+lop3#Q^N1a4Y9m*jG_yO8(R(2VMB zym29Q`_fcNsnB_~c%dfm(!>goi>Fa}T11iS4X9-LEkvMdLA~3Vg5&Exp;QlYps_O6 z0I?)P)@$~k&>q@gb((~$+rqKs>RI?3Vd7H8JcrxR!BmJvHXHcoT)!tD zyKVQe#dp5>6qh!1)N}a=(~&C26EP`bqi6H7P(dW2#}jmQWc^OqjXrhgY=(@q=}DQS zu)}CraUvlYb75&r#M-trP8AIlX8d(0-Fu{`Pj@qlwa$=v=v-uB%dXsl*FUwS4e8u^Uz7rBobKtyWc8lItK1%4o3+J6v)0?wb6xN& z(qu@ku}7iWVbE~NjNM{{a&DxrcLJu>8R+Q`?%%}?%4MaCBl<~md>jS`_cW9vMr zw%^;%oLv~KkbZVIy#Gm@(JXFfid^pXxaYj8arsm3XmCo)7lt{@HIe<9#Na2Hgl6LL z?<5mLHpja}ay_hB9(1X(UN1bw@%9mS`qFya_a226)4vU^A6qb69pp}f>nqfQ~NY#u#NV7Q9mLv(;h)u>FBz2M~?3-sa zQG-*K{x3xsCS`i>UnsC>Cz6$$93Qyb`1dyA<>hW3Aj0D)E1k>QXipILc5CNdG3unk zfR#%1lT2y49yPG3@`_Ww_zT5XR>ESz*Q?jTGITnd}HkDrH12YRzP8%~bTY zM*6H_=4NK!($|F@gQzqToIz^+e&^Sd+r2(-lpZj;yV~-XN9r>M;Z=~UGbTD}dWYE3_&DyCXi%m^ z{m7dLCMDy~52|%DigVpN(plNab;!816;?xUf=FIiW|7xAZw$ii$y z&yBK?3ma5ZiO; q;HRI3w7u;FP}{$`0BU<7FZ5Xr{x9Mju^>@_Gmw9r`MzK=!RtTfUTHc2 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.difference.differenceGray.jar b/ext/marvin/plugins/image/org.marvinproject.image.difference.differenceGray.jar new file mode 100644 index 0000000000000000000000000000000000000000..79c834a69bcf25e686b4f5f144671d1d8880dce0 GIT binary patch literal 2202 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.edge.sobel.jar b/ext/marvin/plugins/image/org.marvinproject.image.edge.sobel.jar new file mode 100644 index 0000000000000000000000000000000000000000..9780a63025a4f632c872cc8bf8509b6a01c0c4c5 GIT binary patch literal 1471 zcmWIWW@Zs#;Nak3aEhJg$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1g-O3A%xNEQUA>FE-nv@n&Ya&IWN^j!!P6o=FJB!`-;1TI zSU6|AmOL_BS}Ws+xT@OoC0Z8G#YLZpt4?E>n*FKhV-X|R5!?$S?l=RjZ~?qtkmQZ{mk6N^i=)S6d+NYpOl)TkMIS$0eZw4 z5DYR#FF7Z%xVSg?uAgwAz(2p;cXdyDi8|^iaWrjNS|;jpQOVxP=Yo<4@5X|yy0drf zcsuFswpl-fe#zX+Pzvm+zrL?yyIo`9xlG;L5l7T))63HK{rq|E%=dWt{R}e>O=@Cr zK2z9Tb+RBktnz$m+1aM$(W;9xUOnTJ6;;o_RW)rsmrC2mUCZ~Shj*8(?OK1d=4f$m z)AmD!uMZtsFqP;0)_L47lG`49`&P8t==g=mf>Wl)*Huk(?s(|4`@y~inQWEUw4(3H z9PK`8F1bWC{dkC=%XBu;xmyPg9E`4IVQH!VZ%>N=cQSWWZZ(0m}?g(mKZSvv_ zId$AA>v}5+}S^xGQyX<_5O!BU-u<^}5YJT`arr)dPYn`iS1R0z(DDn9&wJvcM+m=VK zXU|*1JJIfJ)V%#kR{KtVzH?#1k<_gCkZn%qFVvUx^CT{eSzXm)ps{!Y+yA@PzQLWl zzWm&p-e{J6-ZXpK&zz~>nj3QsS41v zB(pEupWFTV6SzZ9z3}}tk62!xaBmSody$8Mi}GDhK7TPsq}6TZ2ga<-1~2=5MV_Qt z=c*+R*8Z|zqPy9kOI+fx_a|9}mazPuJ?t-+EzC5tb)LA>*S948N5jP0BYc}zmM{yu zcwZ8C&2{sfuvSjh(|kMYjoE5ZVp4b8c}ymn`13x={`A=2XnsX|M0wY_eatbOP4#{% zks+^mWgqP7S!Q|bT1~_kNhLN9<)+B2Vm{3?mv<_hnz4F$)|7)wCGUtVJ^NV9lTmRg zr=-ZGTqh5wS<5*TKgEbtzWc)lDnXXavUsJy%)pS%2FkpQOd<@Z1rV%s0Tn=~0A8Yi ziX&vLpyCI)OaK)>2w)3j!nGn5Mj#Wo7;u*z2onwgnM9Q&2;YFp5@er($`S-%W+ci$ Yq>?4Tn-v&d48Sm9VbB8Vt_KGW0QYMiEdT%j literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.equalization.histogramEqualization.jar b/ext/marvin/plugins/image/org.marvinproject.image.equalization.histogramEqualization.jar new file mode 100644 index 0000000000000000000000000000000000000000..8faf16619626b5841fab62f044aec45f1c0c976e GIT binary patch literal 2303 zcmbuAc{tQ-8^?zR6Un|7hp~*vSd%qk#$fE*(dfi5hQV0II3l6!WE>r)F_x<&CVO_p zkuB9smQ1M7A%$a2Wl4C=d%bUTuJ=9vbU)Ycx}N9x-QW9r-_JiEd*mUYFaQJs0Ze}( zTLKQmVE_GLAOS#LI-(~s>*$g{yIl>rq-YD2v94Vla@Av;bp+XlzEBnykp9K8)6EIGsVif zGh!msVhUtHPQWVR1A*<|P4L`u8#CLpfbD&(Cb$8By~dj2bH1CvVDE1*!B-8BCj5#E z3Lymh`*;)8aCo$@kD5lx0vZoLc)LH{-wV6`SYeC*We4>R zM2Ce{x*!9cUBq|##&FBT_kHDy93@BiBG=$tX(W>q*{jF>aJYLGJdg30axdr?+#NDV zxjz6G(n+H5i`5P=DbBZfEUZ(l)MX#Rrc6)YKNUJNkx~7nAgolb<0`Z@w`Im)chh5L zYd35u-q`p7mnQ@|yK?xGSlUZwwoB{ObZL4beT|YwD5OYo+VCH{CLPgQGD@+G(i8k!)5?l@c!qO&_M@W$kReNHh6-0kYh@1+0HmBFnbh z(b+7OkR*A?g(jM^rW?71!TB?xg^lK6jV5?IG~+4nIXI$^ZrV;4=HQIlSzaW9WE{F$7a)U|wQVr}+Aa^Bc z$xkqKjVh(=E*Um*a$RRDV5YswS6njdbOz#Huxp^Ot4kf7OrmV?%=qGSxZ+TD7IawL z?Lq$Yqbgj^Gga1UHr5BDg(uYOT7a!Bg&}AtX zvsNm@$Wuzi^_xf8n+``WDA9aYz9www7;=!%q-l^t|LF2c+ts3<1a~;P*PMGfmN?gE zC-_&ABvqvfdz;B5hPRBvw#Zbfzt;1hq=*UFXT!Bdihx#YoXDJ~gu>7*P1Fq?!TS=1 zBk$WsZ-6MWd`wCbdz}E<93@(V4*GEWWsQ1QxBGk1H*1|qZL(9mgD^MbEXv&jT%^EG zxaOZKN!lS^)06MSTJLPX#UBw5@XiJ)2-pd($U9gS6&9OYV!f||w7Dr*jp{qkB3m0^W|tq}qO@Cwy@vC!xtxi@yxf+Oo!FX1 zszf{als7i|E9#c?YsKo)cxw$bh`LfcV=~@YUl?X|DxsC~BbuiQ}g67o|k2p}i$m!Y&ckqUSAhUYc z@`{9vU;>O(?WokEW;zXWS4__CjXDVyz9F~`3nlz2R+{4fWDFuMQzqmdf{d&ZtGtMS zYiU@RP9QK@iPvWN^n+GryI%Gk^vT=bLp@YsX(kV?i|4C$p|4$L8M5l-$7ZGitp9i4m|)tVX%(is*z3Gg1;^xWe5I@@ zH528lvW`nfh;-kMn7fm_ literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.fill.boundaryFill.jar b/ext/marvin/plugins/image/org.marvinproject.image.fill.boundaryFill.jar new file mode 100644 index 0000000000000000000000000000000000000000..426b5bb060962336540571bd41086960890dddb2 GIT binary patch literal 2927 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 P1DVAFgmyraZh(0JoNrB> literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.halftone.errorDiffusion.jar b/ext/marvin/plugins/image/org.marvinproject.image.halftone.errorDiffusion.jar new file mode 100644 index 0000000000000000000000000000000000000000..81d5ab02aa7e0360a49a8cc37412fa98df0c6a7a GIT binary patch literal 2366 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.histogram.colorHistogram.jar b/ext/marvin/plugins/image/org.marvinproject.image.histogram.colorHistogram.jar new file mode 100644 index 0000000000000000000000000000000000000000..91ee401e031d2ae36874982db90b79603f80cb04 GIT binary patch literal 2163 zcmbW2XH*kd7RN&fRhk$jL6jn4BtSrlG(jXGln@Bg27xRL3n7FMnn)35got!RigW=9 zLYx4D^j-|06b+(GgshZViGwU%a1|M{XIFI2&KK`H@0@$jyZ`^Y_tOuD;Rk^M!otD; zq-UNr;ENCefB;wvrwba^c4*B{j{yLF01hK0%zhMI!Gjc3Hq?;INX0n2BxxD2{%}j zIr^InEDw-NS`S?d<@?VNhswX7LGFKn+P}OZL;-;P!CDe>zuMr;{wpPvph@-)jUWaE zhf)H3eZn<~WN(76rav((oI(ioCTsdo0x6+ZpUZ=t{%mLQEq2JS+z~#3-eF-h=V`|y zu8_SFP(xdwQyI~7Nx*>wv~dFKm7Vp-@izk>Qfdyd&Z}={KO7TmlyP?_T>afve!5^h z{OUSQav2kBb1!yz$9^-D>prczJI=-e#Ge-U-Qujob&qJiihBRVz6ZeVlaW3rCX?b~ zipMboIO=Z9j!Q2xmIUlY{WqEJ zqKYiG8^czF%_{85PFzqldfL)d^~2I2=|&+N-XJI6GbW)cHc)-hamMf)sg_0Md6 zx*l!uZB&4}?$M%6ANlmRw`j!I0Z!-N=>#6vg1>y3EirqOnjmJZPe%_L8;sT`yfzC; zV4BzX2UNwTl^Yh?FfX1%*`f)j?k;#lp$1v#$45M%w?o8+pukEw*5=1f4TaMc?}iN? zU5=Yb{#|)fTka*je4vVKk`tVmaiCA8q&RIV zrnMx_6)nx5lTBThOjGFp*mD z;?9!)hMk1|YUUec_n@(u-{WMU(;%eQ$hxD{M7+K+N&&y8Q2VGAk@r)L#*3jVU9H?9 z@x(GKSFbV2ODFjH!tz6=inOajQhye%%#L=u(u{KYXdI;THj1G!ZeBPsCYQO#cLJ`$ z!c$06I;{hiRoca591h;J6)@{NHmd@=?}uWmUb@zC77xnlAw@Qs130yQlhG(ecE@|V zLT60@ka1lvFMUdo0n~GBXcX{tm!q8+?Ty?{vlR#H?rCIMI{bYKIeI;UIY5b47sZh~tN{)@n#`NjBSiFXo`f7%c= zs=L|Z8kgZsq3jq&=a{*oGN|{ttsGAHB3(M1T|JQK(Tu6L?^l=p7ro*G`|-$k+Nr~+ zJCV)n=AdH7t0M+_C$jFquO-dwhC}ZquSMSuju6>(_P|vZntuN*=8>24O5GdeWfSP+ z);tP6$9_CD0x8D#2b;V6_98Wvdhw9Ye2?;beMs+>M#CSOQgK6CF5K55KTuhoy%KZUOO;Dy^2EG{r;B(y8=9oqMCTqLEuV# zk`M|C-cU4EUbf7chwiuxpHaVNZJ^LCkBLOtx-Wky*r35bp>G=ArE%4)cA3{r>|U4kIAQvjy!R`+ZXhAzt+d=UZ%m literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.histogram.grayHistogram.jar b/ext/marvin/plugins/image/org.marvinproject.image.histogram.grayHistogram.jar new file mode 100644 index 0000000000000000000000000000000000000000..6e59c5df3e79457cec13bfb17eb4ba0e4cc78843 GIT binary patch literal 2041 zcmWIWW@Zs#;Nak3aE_hk$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1g>3T zQn{n%y-W3G?`&W1tL8Hwp8ePxUYS&L;i9DPRjYF!Qrhhg>_52wVBvw{_iZLqr&&Et zDcXO|a)0%?_j9Vh-TWM1$6O#YUo#^~qUcV|q7!#nPwVYGw`b;8p|FY1&mNf*`fbjh z)7_j>(~iB`eY)40m9Z`FzD=N3$S0HD(|22MZhHP{O*+Sh?4Uynerho_CDvyt?`Hd} z;{0JvYV^I`JZCq~(`-A?G1=JEWN~Oa)6|8wsW+cp^(wqplK9e0q{vtc(`ukL^OMO1sHu{q|(_uYX zT@E4r%FDYSOnjPi)cExE9l2r>yOK&L)Eupvx$|q3$W|x8w6jKrFOJ5&`n|{W&dfVe zmju4vQk{Lf_w%Q{PfE^*Xj>IJ9IR`rjdod+%>Pa6Mbe8knbU0F1^!!;<1}dS)md;gkt2 zXi0pY=J?X0?J>`7P1%z79l<)5+cK+DE(sa;$T>UAxl+irT+(TYNm|rTOMg2CP3a4U z8Yx;QpIqfSXC!k=>rVH!=X#n8re9Gz{HQxF$t7e}o8laC!}tZ)-Q-SaOp*|EU)SO$-Qq^R?Q+`z0xyX>h?nG(V%aQ7C&QjZ1UrM$$^4b{ntc_pwL7R77 zvRGu+wvhS3VK+ZnC*(w#To5>aqJig?=5Dk44Jk3fb5;br-TIkleY~pww|)OSgEc?; zOq`eB{Os8I*%=RJPRiDcc=pJ`w4BZD%~mm^uQkD0+t+9{af%ws;CjjJ3uBpb z*Gtb=%vHQxby(K^VXwSktn-Bowp||Y1DLzQ+;8@7&(`>BDn9E*`Tt$}cOTreGS74E z_3bI=J(gX(nf0E(4tVH4-s@<(sxA0p0{ibx%&S9V);_8VS(}u_ z`m&_rn0=qnA@}Bm86A7}DBsAQ_A%aZ#pn%?do)2f~Y_dG0rCEs+Iy(ngFp+=bHj7ir+?<@_S9P`vry*pJ@ z?AgkIBd_GRru@G9gU$8El<5-tnwo{C2FUk4NZt{`>#nJs8r52`yY5?upKVCS*C{39 z8$2%kZrQB1Z4Mt j>KJ5igX$Or5MU(TbSyPafHx}}$WRs_^Z^<<9n1p&8$3EP literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.interfaceTest.jar b/ext/marvin/plugins/image/org.marvinproject.image.interfaceTest.jar new file mode 100644 index 0000000000000000000000000000000000000000..60e0ed6234d0b401a3883463481396ff85c9cb0a GIT binary patch literal 2321 zcma)-c{J4f8^^yf7)x1VY?&+9zKosGwPdX^GfdX8jmAE@wi!awf{JWE)ZiLRWSXL^ z86-7>WEmlKEs*cVYPeMP4EH0Ze#Ss>)%bFxceGL4Acz46HgOD!--+R z{=Si#gb;k7za}9x(w`WB_w{%3Cq-)R4f1ynqaXG_eCr7F{S{9l6}oIWI=YH}DFS^+ zwr2#sXf}Xd0=3gb#luxFSwTYb$#Nm93Qg@wnz4&L{It8{^{MwiPXuqq*Em-&mg=A9 zf0;yeE@pnrTtwYkn2?tj7IM$)dazmao)Y&injE+DX<@VqSc(`=krY`%t1YDxURFcx zvGc-^hWIn6RGnfdJzt-8$xRSBYI=UEm-kB2Qd+hq{$}a=qEOvDX0V~Y`t5>ZbCQ+C zrGPOq)OJLDq`V{lFy30W;t+b#h~~_sjGM)g;(hX=hYiL6S%&-8G@? zMVgkltrpVU$aB`}Xl9+sZEUieiTl%&B10D>U#8($gImTA-c$=N*Lzt`p6|E7!37*s z8)c_pTx(k1%u40D0{*_KjhOdmvxyF^9v2VRrddZyrDi=;z|OZj@RBlu+J1Z1KYgNx zbj^+L-9?WC5?0rtl7wNN&3r8_!E=g;=W;QsabRZu5>hpZa~imZ2yjd?;kujvN;y`* z=W@i7LRJi`639#%q;+6DZT4pg$$9%#QcDDuxP|3?(?KJs;bzI`s+<}Z3!???qM^6G zqRDa@wJNo$_CvD>W>>Slxk@)>_~@)%`J@GBK-Vy8Lc%>+a$H?5@k%;(x@V&^!{Aq? z8b}HV?qdt7Rij)AxSGhy7#%nE+aKh-0-QdMdFmplL0{}mK0d6i5f^PI(mG~$M<^n> zP;z?PiY{T$J&XpC>}yL8{KglQ3PvdvW+J!Jera|!rz>Z{r3w1Jyt;kUr|Cv=WyhGk z)sp=AA#xdZ7=P!9qJ26CX3HMno-qEbEGjsUVOYlGsS69kdPu7HSnQ;N=CKJ+&m-WPNXfC(CLSMhR?ST zl!64H$We9bBpg~!^{3JZtR9N9VZ2u)rXZuI9-EVPPz18^K`}qlL%nw$4~YnLljDawwIEw}56KwiOu5Q{cR^v4S{7Pgc{VG_=% z6waD#r6q{3iWvPgCqoaGYnwq{D2TCURK%nQT5nWD*0wmT$h0curbI6Rcd2-H z7P)*NYIY^&^Y$yIAm6!mE~b1Z-qvLM98P|2^g{K&Z&hOTV&AQGqPT~4M;Yu7UN^d>gXGUyjO)M&BH17#S zyT#k*Yt-1#2E{Me-AkEwHfn=5!GVzS^3kWgByT6g$14PTRX@A&PH^M;op^>o z^&=s8Nw5(T|H3u)o{mGdd5y)jdk1dU^fq^i!}?=wL53QUJ|&m?ut)|ry_{C&{gZ)@ z#%OZl!}TFEtIcDg(&17CGzr5Qbt#qmbXl~(#N!Q)FQEZj$g8r*^Er7^rVehZiPyA@ z<3qie)qh~6GM{fAvHN)YS;q7hs^xjil%YCeW=;>M3A7Y)I@xo?81k&xam1MM(8Ml~ z2xqYZpX7N~&^}Xjhh!B2@3eg`IbBtQ@Zx8Us(1KK8v1(zxX6>@8z;eqLzNH0i{RS_ z&HuavWxQ$-P;i_7^hOTGYY;Z2B*hXc>+!3wO1mfY{(!brhjX9KIml<+XK^-#my}QN zxo`tO!G1OX_i=~<-$VR=gl0qhdwr!c8|i;9{g$h2gzw2@H~d=q4ba&Re84~Rch7;j s8~!Mb_Xc9~_}gLGJl+%cz904cKXk?*xpp@Q>~07Iz;}(>c-XhU0HEHxUH||9 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.morphological.boundary.jar b/ext/marvin/plugins/image/org.marvinproject.image.morphological.boundary.jar new file mode 100644 index 0000000000000000000000000000000000000000..6882aca3ab69f24da7ec264de2447be3c294c5b9 GIT binary patch literal 1747 zcmWIWW@Zs#;Nak3aE_hk$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1g6yuiIr>TYrFkid zMV0ypAE6s&OS)lBP*e4ia}tY-=Z4-7mJSv9msj?=dBX*%qfXHs7owaNbZ%X`m1U#D zZ4)Uju0ss|vp2*}Q;SU7?D+eh{ek}um5)Nxb+-2Xda&5;*L{n=ue;4}3uv71QQusB z-uC;Q;&b2U7Ms=o`TaScVcp}?8cs~xW6qxo^UXiLGPnBOw9s#x{jP3Vn{)N+HuJk( z+19C>C+Y6&z18;8_T)JhCy`wT3O*;5?Y^{O=b4pvOIE(CPP?h^Vb1-^Wx?vqqVvVC z`%eE&__$+rZg>&X#8oe=&s}G__3M|^_Q`%{KQ7Za#O{fwzyOnbMQ0j+&Y;s&H4>vhNyWV>z#j zVE4lC2U2&__;#Mv*gn%a&p2#y$C+s_j~2>_FW#YGAW(4W!(6We9+P{N9!Jh=tm6?_ z-c#3c=VM6W={ts-MK`CVi=T`Y?I7!jdgB@Y8R>}t!(7kloNUTQ+lL9eqV1`U~c#XlUU;khdk!Ii8U`^e*C7L z_xVNTzDv>%C(db^yDBz8@%;RpWB-<4tU0XStoBhW^TGd<32C8+@-|z~6Kgz|d;V78 zn)NCnj0ZDcM}0Z_>9J*TbZ>7;?yUnnX{@_Wp6&^Ltf5ghqjpt*MC4?(?>u+h=c#>F zRui1X@^M1FkWp0MHeuC@CTuBABY zEsyfeGoN$)fwp#1xBf2P^*MLTpL{9bEA_Z1$B$=Im(>0?#eWtYUXN6Yc|W(z7u{#Q z^K_AD(Cj+C$Ly)s&X&7qo`1-5-|aF(`bV+wWp{S%@oxW=qbmDTG=F{8#P~0vzVT64 zf3|#GdNlN}sqc>!&m^lZbr#z%d@niarTj!6o=_rkT@@*&H zsysLt>xca;vY0~Tw0ub z{^LTP)hjn}zIes2dMxwBQ46*L@75VvyEvUZUaI-GOtM=f5_BooXN8c;%x6nJO*wLW zkMuEhttN>DipOiKI!wV{UM%{^b5?>bo@!hcTy;g|%tcTGn zKIw-1WC-n;#&77q-*D3=2hZ?`b4s814>{S1FIu=?()B@cjUa|XjGTxwaR$}<0BW?(qa4l1=6nM4>+OI}#93MzR~0lX*$mBZ*-kqbjmxr+dx zG7GL1sT2m8z{P;O&_tMU2*@P42u1h|REQ$`8ss1Z;AbS+aMU6-z?+o~WE=|+x&jTW HU6yuiIr_;t`Nf%e z>G}u{p_^q*vRTd$Gxd^l5{rxHhTIMkb`-D`E>hN65x9p*OJOHNq{~5X0apQ6;e}k> z-W9W2)*2*E_RTfZsDG^PG4;XIgP%^a|39j~;nb$|vd(U{jWsvl&3yUNuGsH;-QSNN zg&VR@xC2BKkIgaIsjOqQe@^z) zQ`41BUwApsb^~X_9^rXHp$~n6&!uFwDq3W(l{Vb6(A$|umgjiUqAZ)-5U#erJ>ovi zit{$V(A2&oR`fQPZ7y$M`i_ae_2oFiFKqcyC9<&0V9qrGCkwZGk-X0f<~gpGKG);i zuWur=YMRHhQ#IYM)t1Yg-r}oSW8KXfX)!yhb5VQZ9EDUqhf^9JGnpqCy_V~pX|z50 z#o?tKdPZL=d(31Kt7>+IJmXlGn7yN?PRX;$Ug4?>cgsrUrxW|-uLwArbSbv2{@-?| zVC$3vsZC4T%3LIsN|t9_@f20x8GrNYp>T`pFP-mS`f|Q%zkmAkue37Ltx8X&FB)|5 zoD8>8xF6tM^zVYcQuPC^b*=_}a|X`;(b?lAVcgkM~hyLyT7wzJz;?)~5GVHvI%sHqzeKgZstCv9Srm^7c~ z@lKtmU;oCk&YI2j@ojhZT6Smmvu4{`J_cPneBj0Ri#y+Zc$7Bp`nTt|^n+?U!&Q5m zPo`a;CiRG)L91)i@o8(@Vojd4`Yfpoo;$JYQo{s^FUxbB9sEoy8E-x~wM|=k3CFMN z7s3}$^_w=4cj^6w#qO=Li}NFL=N&Bkm6gZfr{Fj3Van%EMpGxI?|u1W<(KG^_YZxn z>K@uwl^agzix2dB6n@F#Dw|?YV#6e!MeNS|nD(A!x*{Ien9t&}Z{eI}T-6f)cxuJ( z9cqs)c;?T7smouOu4FPO{Ot@C00uE#X7X$9{2w}n@Ad}S6 n3E?qN`Go9gQ2B%ae2k=;jZ#_#c(byB3}XR8C!kT6!GQ(4AD literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.morphological.dilation.jar b/ext/marvin/plugins/image/org.marvinproject.image.morphological.dilation.jar new file mode 100644 index 0000000000000000000000000000000000000000..ad104e4fa8cfa1493701c96fb0851eedf19db6f0 GIT binary patch literal 1886 zcmWIWW@Zs#;Nak3aEYDf$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1g6yuiIr=G?If*5i z`FZ*XAE6s&OS)k$P*e4ia}tY-=Y~WF%Y+L2I~SK$md?It#zX-Qq2>*zH%00d7Beo2 zDT+*GRBhEvn#yaf$ESX!#d3Pt@9Obq@_6A?}FgU-d6tFU3j;)A2UfF1T z{HbvvT>-31q2f|57|PqUxfv|XvUS*>k}q0i&Db0)`sWNGp*&11!sn`(qE6T$4 z?3(Jws(aQf+9u<+%PYT9>}7W4()ZRgtS$cPOgSi<@x1Px$BYw+GmJA=+~`2Lm*fArV>0dKw6eYfrQqPN_<=ZkLoVy1iVzsSb36E--N z_~*R+zilPA_i~#JTmP?Kb7Z~N%fO4tXJpf_vAp*D#Kd>OsKb0`fAIN$NuhNS>z4#B zozhn58EWU;@6C0YCuql-j#&pqCkX^xGVPi0foefbY&$BTQ~PssV#d@3{haU;cL@;rW_e+%y>D2jTWFufy|@&3la+x&r_m-pnZ z`4K!Z_s&)x?LQK2q8pv!ABP<>YFl&SgLBVT@6(@-Yp!*!3b>&ARR6J`Z zOk|sx+VkAFLuu^^-iO?2Q=gbUHhw0j-1=4{dDf(ZyFUnKOD0FFd@X$OTgPmXGsi)` z7cU+$uVmaL?Ylqu()RWba={#GGjn-%z3I`ptiI23PQGvCJGq&;_aEk**L=HoKO?9V zZ#?qleJ2Y8gDJ4s4De=T5@A5C1YjjRs1iU0@KPOAC7^3XE|)=700MxDPq6yuiIr^zZ`Nf&} zdHM(sp_^q*vRSSWGxd^l5{rxHhC~NPhl>0w%TrfrkK1s3nvdPIPS&)%8Z%)96qmt~koBHi;*hN@9{;?&kyf59U9_Z}t6nJJ(^O zuGL|co7Hc(UXRPJy&t7r|L5;(X9njT>kcXxY<%-%vg_r@&EBHR_hdc2vn1B!bJ(Vc zGA-?=PL}!4&p2HwIu*J*#>?+YIj>#gySj?t5mBlL)IJcyn zI+Jv;B&RY@qxM}_tmuv@mO?FwRvJ^zK2`YRD^TItF5f7i>U{jPh3?6o!bWa4`CJa}@gZWZ=PeENUr!e=I)i_aZ1CUyAjS+&sn!I{L5C41WP z8q?Y&)KB_N3)NXMYuVG+aLIsn z7em99UYbb1UXf>A80Q|8#3^*T{oAJ9N>iDw*p_bUJe56dZhRr@pEASwY0mR)?DES@*I%CA ze4v!`FU)c#yY(8Y>}e_dCGLx=9X^@8#0{)p9M*Rwe75KV9Y`-u?FJ zeUZf{cP@Fd{7gOjI$s;ro!l#XZ5>{?bIHAkVfM;gFmrXB`2jd*1o7ZoBx{H}kfIsIiH%g8t)Leu2AJS{8ovOv?Vg{%nH*)0E%a%l=RK zSrKYys}(k7=Ml@xoJNzMBzz5)I$-c!bKdiUz^7Gv=lLs#Yw|v9I#oYUOk8AB<&px= zLhF8Wk5+%r=`T1RH@NcM>)V)W4J%7w!5N^{LKc}MQgL2!)6OLwa*D}a=Mx;#2j3e^HE?Qn zt9TLJv&Hl5C-s#MySFTGnDuVaagHs&JkQr|k-il>$IPVi&HnypVfzIQOy2X|yUD|? ztmB;jwr;-0tr=Dc`=9|G})J5-GuB(!fNmdT*)7lI!Os z>swT|Jq%7WJhbk0Q>V_-4M}!f%eSKZR!oVO0EFJ^A8JR>FPz!rlNe(LP zQ31U41{MA2T9M0NP*INnwm>FaD^kG^GJ%T$cR7tP;Si8XYN?Iz7^vJv_B5#6MgTrW ZQq4vw#RI%q*+7P|0HG7msMo9@9sqJz+;9K@ literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.morphological.opening.jar b/ext/marvin/plugins/image/org.marvinproject.image.morphological.opening.jar new file mode 100644 index 0000000000000000000000000000000000000000..0679e16aff2aa6c1676ef4f236dc43bd8d041d28 GIT binary patch literal 1580 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.pattern.findSubimage.jar b/ext/marvin/plugins/image/org.marvinproject.image.pattern.findSubimage.jar new file mode 100644 index 0000000000000000000000000000000000000000..ceed1ff15215ef9f543e69eaca07e7f34d999022 GIT binary patch literal 2613 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 Z_5OeGjh5PDj0a2f-$(hk;U@9J?Oz~D_3{7! literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.pattern.patternRecognition.jar b/ext/marvin/plugins/image/org.marvinproject.image.pattern.patternRecognition.jar new file mode 100644 index 0000000000000000000000000000000000000000..8d403ecee065922dc80a8811ab658caaee43d1a8 GIT binary patch literal 3073 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 O`D}Kq({@4v0RI71C@P=; literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.quantization.colorQuantization.jar b/ext/marvin/plugins/image/org.marvinproject.image.quantization.colorQuantization.jar new file mode 100644 index 0000000000000000000000000000000000000000..6758bb47c84a1a8116526ba21911ab4f35a78bb6 GIT binary patch literal 1441 zcmWIWW@Zs#;Nak3aEYDf$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1gm=q2YQ78kD#iS`$E6#2JIcgqylEioZ1PqlJ)uBn(VCFG=%6m`_W zL*--QEx&7xZ}aZXb$zt{l8fTSBjLjJQ$D_V)AaORGrx85vokgKf1aCZ{QLFy?eYxo z6770f4i{hFe1`3N*^PWM9h9=>pP>ZcUbfJ5<5`!-0roi@C|^@Q=$i7*-nKG!CGhsAC_gD+AU&ec+Xc@B#+ZhGOI&URhW>dmUPsy`*~ zBzU-gtEoshalrRZ(uogMd(W(1IOAkZW%v7n%g_2!*9k67p6XY{B`w(_u=Q3b`<3L7 z`dDsz?;v%aJI7Rjx<{qt0v7bD#!7+Jv*|$aAZpu~- z-Y>4XOy@rsT;+Se@IeCi1X-r_3gXOD!x+zq?qBd+{nOF+FRC~9ua3VcTvc?vh`Czg z%CmyJEj!vj+FH4s_Gj^W znwQc|4m)j;G;W#JXN$u3s_kIDlSj~JpY3V4|J`_IT%z}Ab>593D=5Lbbw6YV!)l#5hff0 qGRe;O2p@uSKC!DS&B_Kcp9KixfTrt$0~7!==nT35 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.quantization.grayScaleQuantization.jar b/ext/marvin/plugins/image/org.marvinproject.image.quantization.grayScaleQuantization.jar new file mode 100644 index 0000000000000000000000000000000000000000..af7f531e78516d94d0118c1bf82910e0d073d2e9 GIT binary patch literal 2032 zcmWIWW@Zs#;Nak3aEYDf$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1gfq*Xm(RaYvsZ))+fK1=x1r1TBt5y?5_zfH?U85b_Snxe z-_1(34lMby{N|oK$?efwFTdTwWyR|DN>F%p*wz!rd%l+`hZoA)zF(I5r!wF5!Gd?Y z`ev@)<(3+^o!9$8$g+nqYi7-!cRM$TX|B-311EiUyXbOe+^Rjg#rONH27RMl9_LRM z9SnHr+~39!qI6=$Hp6J$r#$J7=Of!3G=kGYyLTm@`rfwba;%v)Q@PQ9^TbV3tJjGC zvCt7n{_oA_;~{A#pwYFx`hzC7$``p(KGr4tf+IjbN*-~RB9w#5&bWl|R! zoi_WV?`EX^Yu3CCCA(*wn3TMGhSc5Zml#<3vI8D`Pj2`VHf`pTMUPngG%YkQ-0qpV zEq1X6V@-!5W2*1=RmbiqH}3POGTD4sXQ|Pr4Q+xhEL*xB=6#(je3dP$J55i0r`Jig z_AcGN+0LdSl6ULZq$DOw?Ygj5L9Zamo?SHk!sFvR91fg{jO=H#Keze9E*nK&y)2JM zlN#dnMU1Nanr<$icGgYj*GEC;-LLbu9o*pHbyze;^u^6Em5pYvvn89Bxq3PMj5u6+ zM`3Hrri3-SgO??WvgG~Kwy18Oe&l;ftnL2_xA@#Q60O2>%(YyeyP55M9lbPlSmY&rRIY z6?sN`hOosZX+GZVh3*Tq^QY!k$>x`3q_1?;NeDa`+jy|HY<`>P9pN2c=1WXna^_KE zn`(_>LC2DU=f2atSG#2FPUke6BX2~fx#l(Nk;@!=YWxNyDY1uy6`oNR9x}TB%ypZ(0r0aDG zdkRgi`8}HvR=vA z`RYlpX7Ibt#kuPncF5Syd2--ag=zVR!^S5jSDg5C^Q7p#&_BGNbPq0nuvz;T+b!+$ zZy4%#+osC%eF|SK{Xn4V=aZQ`p4yxhDbkhU-TPha;dKi!-mmgO_meiXT|S$@Zlm(| zj8(_sJ8WkcJY2hAafeycE;*+Jn_tRF`xS-$vZl-JaeQQ&6eMgVZ54i))qju7tNv>S zfrm|h{$ie66L-jN5o=q-hs;H?X|Du(3|);sRw#c|pVu$3xJYRJHNg&5tE`v}k-og< z_aD0OzDz0CH#>AUEGThZ@xFe%l{va9+N*GDj25uJU(Yn^;TB~R~85p4gr}IRUHUlf+`Q>5CByk2q4W!kwti_ Uk^pa3Hjq6mK$r!zr2xzW0OOM&b^rhX literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.render.grayGradient.jar b/ext/marvin/plugins/image/org.marvinproject.image.render.grayGradient.jar new file mode 100644 index 0000000000000000000000000000000000000000..397ce83fd18f802279cb7a82040d69f6846edda3 GIT binary patch literal 1835 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.render.juliaSet.jar b/ext/marvin/plugins/image/org.marvinproject.image.render.juliaSet.jar new file mode 100644 index 0000000000000000000000000000000000000000..618cebacf1d3174bc577b399c06de02aa13483a7 GIT binary patch literal 3259 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.render.lindenmayer.jar b/ext/marvin/plugins/image/org.marvinproject.image.render.lindenmayer.jar new file mode 100644 index 0000000000000000000000000000000000000000..63c0f5a72fdaa67876761996342ed97d6ab9319c GIT binary patch literal 6743 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.restoration.noiseReduction.jar b/ext/marvin/plugins/image/org.marvinproject.image.restoration.noiseReduction.jar new file mode 100644 index 0000000000000000000000000000000000000000..6a45cd92da6bc828c6e8eddd1979b57c94711883 GIT binary patch literal 3736 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 NN5|;MR)Y2T^*<6XcQ*h4 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.segmentation.crop.jar b/ext/marvin/plugins/image/org.marvinproject.image.segmentation.crop.jar new file mode 100644 index 0000000000000000000000000000000000000000..15cf0ae35b77667a1a951be901166bedae302858 GIT binary patch literal 1966 zcmWIWW@Zs#;Nak3aE+bj$$$hn8CV#6T|*poJ^kGD|D9rBU}gyLX6FE@V1g33lQx>1q9w#TJt&X$mdaY*jFm~+e;oDg=6}x3oYLaTeaqze zo6Y*q-~4^+UHA8S`+NqO!{SoASlnXPPgyzR-m14Dw&h2)en{?4nzqL0tX8Pbar4^S zrADmh*QPDok-@>q!}e=t*3P&`W{drne=@yq%v~22bzZacK-lH)w$}0A*WQ}*G9tC{ zU(D$pA=|I(&c7ll-m&d0%eQsWS88|vnZmjC@bTQ^-_%)mOq}v(k^)Rn;jYRwEQynG#k&J zUeU8$tW@RYGhf-vM&0bPi}BYC&xGhimu1fUeq_GGf~miqb0y5q?`wI~(WuLjT`~27 z?RkZ+#V;;?+~woEuO{-iG*fJ^;mNww2P9_5-_;Q-PK(?1Va|^z8Oi%CYdYHMBjZXA z9q^nZWKeOj>FS5&xvOJDEPl_|t1f#M-2JIhlQ}(PrPZ}tQ=(Vy;^Th1X!o*YtB%)Q zeV=F`ed+f)gBg^F9 zOaEYy-{j!E$${PMfX&yE)>Hp>W<8MdQA)J_x9E+isp6(Uk%Y{Ie`R^!_B6iMFua@7 zX>3-#?^s{@T=mV7FM}AjHHzL5=(wm_c6&;6+1_a}vGIlv4lLbsO_M)(-c(_)VE(kq z)c4O$c8*29Z&I!A-`D5{GuA4s|uyMUVl73Az?eR)p zk$b)8*K6+)mwy%TV_IG5>L16hR86R~a1r1)KE%kAJYoMwPamaL$t4>b6k}AcCzg~R z`>rbZW7g#5vj6Xf{h1yTbY#8=cg(S=3|t%C1bDmNvFyx9dYS&k^y9@0ixcj%7qVJr z8h=sH&vi?&Sg5Y#`$YKR#TT|Ro*9cbR=<$;a}j=+q%`e9m$OQ;ua0@(K3U;OQ#)dQ zKfCyT`(h_8)e^b7-Tx&T1*fj%{AGXg&Afys>Xrfi%EwFP(l@qbhU~0A_Bs5-sulK} zhcaDtS8CaXdE9AqU*#QW8s@uwQOzT7Y=KO;R;20% zWC9lh?%Dxi!XY4&l)3`pDNt>J>|s!CfdE{Lq?n7SI|95}*+8bS0HHb1j6^UG0LU#D A!~g&Q literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.segmentation.floodfillSegmentation.jar b/ext/marvin/plugins/image/org.marvinproject.image.segmentation.floodfillSegmentation.jar new file mode 100644 index 0000000000000000000000000000000000000000..a199a3139901e8052dc365938bf5cfc81aa3805d GIT binary patch literal 3043 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 F@Gtd!EQ24CW#`MP#y! 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.statistical.maximum.jar b/ext/marvin/plugins/image/org.marvinproject.image.statistical.maximum.jar new file mode 100644 index 0000000000000000000000000000000000000000..c11bc8d581f7d4b363cae37b397780c3d5f9e4bc GIT binary patch literal 2672 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 T#NK_oQfxa*dq+qFxO@5=;=p}; literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.statistical.median.jar b/ext/marvin/plugins/image/org.marvinproject.image.statistical.median.jar new file mode 100644 index 0000000000000000000000000000000000000000..fca64a5872720540ebe6e7e2d04da818dc6167ae GIT binary patch literal 2610 zcmb7`c{CJk8^#ASjImU9-ssIRvW{kuY&9{H!C0q}of$%QvNQH=qEZcIFG9A6C`-y( zAzMwT2qR08B^eYio$qUT&w2modd_psea>^=*K=S0{fzZlfP4Tj7z{w$q+tQSh#dd~ z;Lv!KJk}5c-+BfBumFtp*}%IU%>QdM{?B2)osJ*FIFun4gEqq};4mw=?k)p;d4+y1 zeR-MZ-M!VOiZ77wrhFCjaB^5&zkdmk{n`iNw#>g|To{6qu;~IB)oDR~x}anlfa*cb9+w06UA-#ZZ4sAiMMGUYkS7qRw z7)f)ylZ4BI?IjL-0`I$nVSBy*K2%lZ#>-NuV{37~=FIBjv)@4MShG5usoqAaiihrC zM&V?-#-;1xYCQ(8XSLPlwYTF8#}I?l&mApA)&k9!*`{P)>aOL4E@)2Ytf)`tx{f3(#8Bi zW#T;WkwIa@n9(`=61rMPLFOe$e3NJttkqvsR(U?-mIKslg!v*TJ`OoZqtNG_H-OP@ zMCMF$i9(yMhuX14t?0p{R^GlC^1yy2o56iEwy73%r}#y;a$E85#+;|*1Dhl7AXQ+- zukCa*QH;I z018}FG8CBr6hRb*dW&+3W>;;pm>7)*@I#oHGz{V-KQK29C3A!9coGeSk(f6s%h!X% zKV=9HnpA-A?ztIAzpbre%B zH=t2HHA*KA@fe6A;k;o((vJIy;ZM9BE8e)CJ+Z;px+23`u!id0Y(<{Q8M)wa`f;Bn zg<4ro&-bcS=c%kT zDd_UIq4u(VyC?h{!Mzj~)%*#x#OXS*6HLy;KT3VG(@u z20f#FU?1V4Db1iOy9}bAmfUA?(PCALb>ocw!{(N0DrTVd@5eI3_^kQzp zqEpG0SX{4x$KG4kx2!xNn@Q zq%ksmQnB~(w4-T_{|jYUFP8}VPK`_uRdTI10wTphXrf9(AYCixQD_v*U+ujK~H?lud|!jorkkY1$VQNbV^PD!ro>8F+nsAxnLZ zIxQPy)ZV+O#Z*)=`93SO4dD?T%HWu7i1>E-X$Yv&XIH65@;&MIO}MDlO%lXC0|0r_|11w!JEECzsnCfCkLL>b>%uaXweq zSVU`FIFxAp+#2-@m*q>-H5M#7^uzQu8luXM+-{Vr&ri0YT0QIAj_h&z`0|^U&C)DW zuI;D67%ffu;L8QXmk(U~H&;6-S@b9VwaHM~j2yR8d6Ku+6{9`yBrYw@yRi|q%Hh$v zR#yZ@Z=plR;v(2123sEap4C~?ylqFGi<6w_`hTeqTc4V3VVLS@_51<&Og1ZI_h>$l98QiyAX<7OxV z?5<$4{Kki=LTSeknG>H=Cv{TvROUV#byb z!tE61p=r&r54GOWK9vVVyUCG=ak}tWkiU`~dF!?#HTAZE*@577$^3Qmt%INd#p;m$ z=d=gx4Z7;U_PBF1=IArv(;%FzB95>0h6i!z&TYwo(kj^ro4ehx;tPv-9w)1Lx?Gx1sbgr#7 z2^XQ+I?#f5#iOJTNBR-LwL&Pv#z=Ci4$9GlZ`w!KIu>fHjcsIl)zxMsJ51=&!A@OD zAI6p(FX_mqbnE4w%uay%W#E%U=K2&U*9y(a?mS1kFPruqEL1!x6Im{K<_ty)8bYj-Zl$+ zh?3E(sUSt+k>rbh4A^afuoG<$(Rxrqc3UuOc~JI(WM7TJqBtZrnq@RFGnzzP&40(W zLFVumFOl9J-?rM<2x`96904_1ffwgGNEM~T&fvm|EQM{Co^e(tNc*iDB~}YqJIFIe zxvbN&X4dkL$xWUVTOXXktmk#zmq~Z}YHj$++^p=aEU_BsbD^RK*{+~?O93%%Yiq9h z1>d?_FC`W7wDJAREW0hiT}H{R$4>gN0RTt2cJY9TnGf(g;{2aqb`j@y{a}_|;Q9CH zuhg*%I6tMiQ~ntJ1$TBGAb|g-lb;SPJLMm-%Fk50wDN1>U0V4m4yHdc{*_&f^+Bw= PM!=n;zGE}~9sd3Saq&e? literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.statistical.minimum.jar b/ext/marvin/plugins/image/org.marvinproject.image.statistical.minimum.jar new file mode 100644 index 0000000000000000000000000000000000000000..1f9f0cff5f32ff06995f13f77ab30be595fc6573 GIT binary patch literal 2692 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.statistical.mode.jar b/ext/marvin/plugins/image/org.marvinproject.image.statistical.mode.jar new file mode 100644 index 0000000000000000000000000000000000000000..1b80da9b51797d3f2a42c8b8d3d3a6422f1c85f9 GIT binary patch literal 3238 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.steganography.jar b/ext/marvin/plugins/image/org.marvinproject.image.steganography.jar new file mode 100644 index 0000000000000000000000000000000000000000..a8c702df6fcbbcf3eca948f2ea4888cfe54bdda8 GIT binary patch literal 9437 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 F2LO$+&|v@o literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.texture.tileTexture.jar b/ext/marvin/plugins/image/org.marvinproject.image.texture.tileTexture.jar new file mode 100644 index 0000000000000000000000000000000000000000..09a6d5262378c1437b6d6d02318e283e203e7b89 GIT binary patch literal 2597 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.transform.rotate.jar b/ext/marvin/plugins/image/org.marvinproject.image.transform.rotate.jar new file mode 100644 index 0000000000000000000000000000000000000000..0bc69b6f464ff9b718ea966bc12cfe96bef2574f GIT binary patch literal 3701 zcmb7{c{CK<8^HFr}qPc>#2NQ=K zH)L(JQAV>V#4Ie=`AO3*5M{)JPM3DMRbH_kR)Qge+f)wyms+6WxYeXxA;Dpnml98B zBI&uR*<`GHmd$z(C;GI~u7#ub6_0<>4y9VN9w=FFG9zapw%n|tdHfM0&xE2Hyfs-c zBxziBK7o@km=RZhFFY?&2D|(9?`8bm8UF=8;r$1+zQGF9{c3aak>%&{RQ3Lm+$gPb{E|CDuedd zr?HmEW$Iv&eA3EI(Fx324;My@UGVah@5I|uOuC!L;1fZ4uyy0gO)J<1v}!yHJI}1$ zYSoNj%k_^s7iDw_8caX^VW9zanCeLZjF|k7?nR-C{x(Tj>sG@MgAgUi_8bM}(7D3m zJSJ8!>HNMZT}{)wrzNv&t5%dW)FqKKIbm&kq`xn8rrX#UTd@9~l@n=qbo_NmX^72CAqLsr|)u(j`3v2&B>?D8BKLqObkf$FRb_<(?C^?S#* z>*e!Id;HhI1=)^H*$G-qWe%0G8vG?BFh~U#S11*oP%v#PP-^65MGScqtGhs3UU=r? zv}NHbdL@-H47WCA{-nltq(HezmGNi~A!O+%jwO3%PQGqJdo=emjheh0fnnP_$qJGEx?{2<<_b6h94J`wYLYiA4rlkym;|)Lu4@ITIp7k>de%@E>)O@GXzGy= zjGB)IXGkJtvYDKO5vBD$7RDmz?_|W3<(nA|_AczzJ8M_%Bf}19KiR6QQV}srld+Uw z#?Ybu_qn08KR5KriV=P>GbtffVr3m+_uW^!E zb{dx-2^md2+P~k8iS8;??Wsg42CB6VM-|zwgg<-usC=ze*GM5IyZS;@+wd{ z(VYnse|^=1d!X6Q0EIv?-AAacO>GH2>Lba692rgLd%X&{j|7UGWYkoO7ew`fu^_YM zEviaWZR_7rlDuFVXVYAcI@)?H(K-zx?-a@M4U>+qxl+|+AVV* z(~DD{J4{5{Q&|RA$8myMd#c{pa?as!ww#OH71IX9GQHP#%RW!4a9Q_$&*&Vq>k|#8 zF7~$%GIpJW5T+n0m<1_eOcqdRnzVHg8b4erAFnPqOKZCM!bH!aRJ*9S+jbN}D4#%& z=f*OqOH)rOpidbMlyy_28+Lk(l4C4JiJ>bHaSe+?rP$ZS`wU)_kB9s}8A&jiGngm0 z+JQ%7M5gF-a(mBj*1eKbiFhhwDm=y;{NA=<;Qb|D5QoYVakrFKdP{MLgw)D2sxgoh!pW0@&etUx7ZEbJaIU{STHp;=X#5_4n7)00`X{O9EQ4;~0 zeruj0X%gT^#f2abw`a{!*vL4uckJdkBW}dYXwi#D%_q>@{f^^u_s_Y01=}jv%VZ)Q zfWxVYjt-wyBGORD=;t?NlJ9hhJHa(Y(eABoVlPu1?zmE=(x=3^3CKQvEy-+jb!A-U z2SFUtYfjHO-bl=~x~TW{y&3epl)1Q4Yh#=1ZrxyNOk}<}i8#3Q0GW3--;B!7k;*i> zB`u(brX2BVM0zN=33>3XN|nBQ3GO6BfrLR@MfyqwZ>LFcyQ4pv4BK-(m8#MvIG>RZ zL^Ontf1TSYqDxg-8sUxSK+LgNGkdGZu3rMKJD}HL6uO%S6z`yX(P8AoZ#LFLmSg;9 z>eaW=^L-#44VzB7JZ!R8ff4`n^fA~u@N`^7rSyH@GhU!+%@NNvIa$T);S~m(q&R~g zdTO}TIl5pv8=)uh?e4ft^HXZoob8sz-^<_03WKC(3`yE>Wi`WiZ+(&6gXS4e`=CkS zo6;FCLiY-=QcT%4*%ergRJdw$n7+`;6?>DHoTJ`MmTB%D{)5yEoV|u^FRK5<$n;wF z6WBS!Vd}C@iuAUWMu`baE@PRs^O$U$iSyX?I7go=HkrfnG-|xXSKL|l>#Tn~BeiIVTRy)@x_apg+m%2ozXeIS#aM{x zKvl_Dg2l6!?riI|Kgoey2qa}AE~{gw8mpppe!7n}=|eybzQEVC4x3zOAG64JCZOhu z4)|-bfNy&T#Ox-Sk3UHiQK;2`VQ@(V?+(Q<-42&z@d3K}sj{qGcAMdQ#7}EL_3;|b z=fq~*GQb!_7UeH#@QLHK8BAk8qM%aE9pa8UJ;Vxy4&^n;kgFpUgL#~ zCeLj=Php;%J16t*<0TK45K83*K~74CcmYy3yA9~wmfV~B42*K}eD_GVBUGc>taI+e1SMqA5Db!22Cj2!t7`zR2DD2+v*;ghhLg`bPyjMF@R|+-VY5+SJ_gZ z%t(Vy5K-!^ET-D@TB*T1fscvYtx0JZjDoC^aM7yHkIK}H&;A1Q7C~}>*o@DKQC__p za1XR6U269VMP`e=yhLy62)JYrURzD^E&bvEeDzhed<;t*(Xr4(Qm|>WQGYZL@lf?1 zcb3->T%EM$rNA8|5tZ%k$o^9#YBn*f#_|iQlE=h(d_rtds>H3hkXl6APu6<8PwRTc zeP+4}qT8&1a&1&fOL}d8rH%jAJ?Y3Av;NvrM~;iUbn85WN^KX%-`RNXk1J!Cc68_N zD!{JkE@aQc(ax?ra*iTjW2$V-Vnezc0ySM19Cd7$bdU{t6Yt(vhs0f;JU+O>E`6c# z{_vh#z|Lr5FKMmfNi|~_v3M`rRXTAh_^JgsWs&&KJaN;84F>RBEP2yi4!=Y6j?2SZ z9lFH-D0jj*6?qFm@TEqPdy~u15^32gk3TNXL#LNbt z$4P>p#|$zIYknFz%2D`;KYIExP4B)tffn%pA?KGv+j06YkmuJ-C(!fzyeH7}D}bl| Zh3)SMq<4#w>cr;s@sd3@5vDu2{Rb3!iW>j` literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.transform.scale.jar b/ext/marvin/plugins/image/org.marvinproject.image.transform.scale.jar new file mode 100644 index 0000000000000000000000000000000000000000..fd4a422d1925a6dc1065add0f77be46f573b0401 GIT binary patch literal 2067 zcmb7_do&d28^?!?CYPn$ifF`$!Ay-yu7fapG-h&}3P}@_`_K%rA<2Cutx2YF`5|T9 z#*A?*8x=cDgu$ZCZO14}D!E15*qJ@QU$p1!Is1Fw^Pcm(=Y784_j&$#KQ8DU5{dv2 z2n2BSx$Okl7P|lv0F0xDouLyJ1s6O60CoUe&^tk*3i1Dzx%{J8QCRUsjIqNyp&Z>k zU>MXArl;E(Z3yGaq79+FJ$)>GbGq?jDZt|8&xT>i#orrBVP>~_)!I-^STUb z_F6@WuL8LZ$PM{GS|o}6)r54(=`nlZ6Ar>HYC;MC5H{A7l>5~Ly29IVQUE**Pr4LD zj39*v6Z|6KL1Fj+0z8t0Cz3COlfvL+KYS zmzIC_$j@w=bYh|Ya8>Ix(!c0-ds<=6^nu+VNY1o)*5`@(FmN(8qnvT)DjCZ`x*EP( z_@Jl%?pJYULFePnnmVnv`KPD^c1cU*+XP6qK+UI*W(s~^kP$WtV^o~`6hD735UqXS zfPHdyH1#mkiPV>WxEM{$%g~KfPfh&h4VU3vOc?fJ4A61VG8SYKHcC*4{XxE8*`O&{ z&R2dkr%Q({S3!^|>#xB7$98`DF?BQ>_NwkYOFmX%UM9=+o<~zsO{$#eFqO_^VMbn*j)Nj^I+B$(Jmt36uJUM;NC54E*n ziXWWi15#*nJ(O?_*|_#-`;!D18O1jF-d&X~(MT){=BY=Vk21x^OGhNL>eMDoO6>A< zdZ{rdppHK(IzZp`-AV8Iq^N`WNiGvEU58(@D%IwsS)S}2yp<6&Gp@HjO}bRpB&{O_ z{)Vz(Go`rT_VZ%%5^c|mPQ;lweS;FU{`P_Sd zlx84K-wY&RdXFs@*7t#HoN~(y;)ySt5hQ!b@7r;{L_Vh>r9vAYQrCs3_AbhXDg4lr zw*c%syPr3}Cn4>P(G)^=v=u4uWOM30qDEc}C~cFaiuCr@$~MNN`<-pDBFI_PsmL}M zwD@Z>GFPM*N1)dw%|Gx}{h3NxLlv&&T#K1t?Jz!?9$EDKkK+`nf%`*Y^Vpb_)?Y9D5QvV?9zJc^S7j`J83= z@hrIkQ}PbX9`9({d4$fpq}`vzw^*~Tdh6SPj#`_nJbl%bw$PdsIv23tEMDzV_w4PQ z(Qf9ckS^WTsFZsRsmOKD_9GB$jo1)J&GN@Jx^drDX{OM9W{5WAmyZ5HZ;Cgu2WK@~ zwXD)2BGjL8EuJYr@jQ)MVCs=Q0Of>%>zt~V#rw4phZ<^ADc#hY%gcz~`_~G7i4Yu( z9J-lTAv4g39UA6*i>R5L(yJ>cpxW54uzERhvZfpd@>0&N=12G(){|5DFRM~6XXWn& zt)Rk7Ej6;z0%-a0wYiI0bUoOBQwbAJ@6<9ei}I?*3%oo!?hf#>J|&znau~b0N*vo< z91bp(6Af$FVcZ3+{fGzJ_ za404_)8+dP@nz0HdQWg1aldaAkGFGXeAlSb3g##r11ZDL5qni0=`Ds|2QQ=+1K%fO(L-UUAmnvB9Lu` zwJ`l6-G()hgB0MODYWJARG9vICT)!*qSE$pMO4}fkl4R>-Nq;vG*D7xA|YJHLJQ7c Gr#}H8El|7w literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.image.transform.skew.jar b/ext/marvin/plugins/image/org.marvinproject.image.transform.skew.jar new file mode 100644 index 0000000000000000000000000000000000000000..517d35bfc859ba30803a4f825f30709653682031 GIT binary patch literal 3039 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 literal 0 HcmV?d00001 diff --git a/ext/marvin/plugins/image/org.marvinproject.ml.kmeans.jar b/ext/marvin/plugins/image/org.marvinproject.ml.kmeans.jar new file mode 100644 index 0000000000000000000000000000000000000000..4e5ac8a327487ec88850e50ddc75d5ad33890f7a GIT binary patch literal 3328 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 F{{S! Date: Fri, 22 Feb 2019 14:57:53 -0500 Subject: [PATCH 05/33] Added LICENSE and link to sources for marvin framework --- ext/marvin/LICENSE | 165 +++++++++++++++++++++++++++++++++++++++++++ ext/marvin/README.md | 17 +++++ 2 files changed, 182 insertions(+) create mode 100644 ext/marvin/LICENSE create mode 100644 ext/marvin/README.md diff --git a/ext/marvin/LICENSE b/ext/marvin/LICENSE new file mode 100644 index 0000000..65c5ca8 --- /dev/null +++ b/ext/marvin/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/ext/marvin/README.md b/ext/marvin/README.md new file mode 100644 index 0000000..7889eae --- /dev/null +++ b/ext/marvin/README.md @@ -0,0 +1,17 @@ +# Marvin Image Processing Framework + +**Java Image Processing Framework** + +Pure Java cross-platform image processing framework that provides features for image and video frame processing, multi-threading image processing, GUI integration, extensibility via plug-ins, unit text automation among other things. + +**WEBSITE:**
    +http://marvinproject.sourceforge.net/ + +**DISCUSSION GROUP:**
    +https://groups.google.com/forum/#!forum/marvin-project + +# Javascript Version: +**Site:** https://www.marvinj.org + +**Git:** https://github.com/gabrielarchanjo/marvinj + From 4cdd7f5de07ca32e6561026343ccf3ae07714b3f Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Fri, 22 Feb 2019 15:24:17 -0500 Subject: [PATCH 06/33] Added new features --- .../beanbot/commands/HelpCommand.java | 1 + .../beanlottery/BeanLotteryCommand.java | 15 +++++++---- .../commands/googlevision/AnalyzeCommand.java | 1 + .../commands/poll/StrawPollCommand.java | 2 +- .../mazawrath/beanbot/utilities/Lottery.java | 26 ++++++++++++++----- 5 files changed, 33 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/commands/HelpCommand.java b/src/main/java/com/mazawrath/beanbot/commands/HelpCommand.java index 82d9d0e..b3c95ba 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/HelpCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/HelpCommand.java @@ -27,6 +27,7 @@ public HelpCommand(CommandHandler commandHandler) { async = true, showInHelpPage = true ) + public void onCommand(String[] args, ServerTextChannel channel, User author, Server server) { SentryLog.addContext(args, author, server); diff --git a/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java b/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java index c112f7a..4e477e4 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java @@ -12,10 +12,12 @@ import org.javacord.api.entity.message.MessageBuilder; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; +import org.javacord.api.util.NonThrowingAutoCloseable; import java.math.BigDecimal; import java.util.ArrayList; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; public class BeanLotteryCommand implements CommandExecutor { private Points points; @@ -69,16 +71,19 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex } if (!lottery.canBuyTickets(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0]))) { - serverTextChannel.sendMessage("You can only buy " + Lottery.MAX_TICKETS + " tickets at a time for a bean lottery drawing. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); + serverTextChannel.sendMessage("You can only buy " + lottery.getMaxTickets(server.getIdAsString()) + " tickets at a time for a bean lottery drawing. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); return; } if (points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.LOTTERY_TICKET_COST.multiply(new BigDecimal(Integer.parseInt(args[0]))))) { + ArrayList> numbers; - ArrayList> numbers = lottery.addEntry(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0])); + try (NonThrowingAutoCloseable typingIndicator = serverTextChannel.typeContinuouslyAfter(1, TimeUnit.SECONDS)) { + numbers = lottery.addEntry(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0])); - serverTextChannel.sendMessage(args[0] + " tickets bought.\n" + - "The numbers generated have been sent to you in a private message."); + serverTextChannel.sendMessage(args[0] + " tickets bought.\n" + + "The numbers generated have been sent to you in a private message."); + } author.sendMessage(args[0] + " tickets bought.\n" + "Your numbers are:"); MessageBuilder message = new MessageBuilder(); @@ -98,7 +103,7 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex } if (!lottery.canBuyTickets(author.getIdAsString(), server.getIdAsString(), 1)) { - serverTextChannel.sendMessage("You can only buy " + Lottery.MAX_TICKETS + " tickets at a time for a bean lottery drawing. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); + serverTextChannel.sendMessage("You can only buy " + lottery.getMaxTickets(server.getIdAsString()) + " tickets at the moment. After every drawing you will be able to buy " + Lottery.ADD_AFTER_DRAWING + " more tickets. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); return; } diff --git a/src/main/java/com/mazawrath/beanbot/commands/googlevision/AnalyzeCommand.java b/src/main/java/com/mazawrath/beanbot/commands/googlevision/AnalyzeCommand.java index ef6ca69..7488c1c 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/googlevision/AnalyzeCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/googlevision/AnalyzeCommand.java @@ -56,6 +56,7 @@ else if (args.length > 0) { } serverTextChannel.sendMessage("Analyzing image..."); + serverTextChannel.type(); ImageRequest imageRequest; diff --git a/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java b/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java index 113b975..d3ea485 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java @@ -73,7 +73,7 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex } else if (args[k].startsWith("|")) option.append(args[k].substring(1)).append(" "); else if (args[k].endsWith("|")) { - option.append(args[k], 1, args[k].length() - 1).append(" "); + option.append(args[k], 0, args[k].length() - 1).append(" "); k++; break; } else diff --git a/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java b/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java index d3f16f7..bbe87c7 100644 --- a/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java +++ b/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java @@ -20,8 +20,10 @@ public class Lottery { public static final int AMOUNT_DRAWN = 3; public static final int MIN_NUMBER = 1; public static final int MAX_NUMBER = 20; - public static final int MAX_TICKETS = 200; + public static final int STARTING_TICKET_AMOUNT = 100; + public static final int ADD_AFTER_DRAWING = 50; private static final String DB_NAME = "beanBotLottery"; + private static final String MAX_TICKETS_TABLE = "maxTicketTracker"; private Connection conn; @@ -35,13 +37,18 @@ private void checkTable(Connection conn) { if (r.dbList().contains(DB_NAME).run(conn)) { } else { r.dbCreate(DB_NAME).run(conn); + r.db(DB_NAME).tableCreate(MAX_TICKETS_TABLE).run(conn); } } private void checkServer(String serverId) { if (r.db(DB_NAME).tableList().contains(serverId).run(conn)) { - } else + } else { r.db(DB_NAME).tableCreate(serverId).run(conn); + r.db(DB_NAME).table(MAX_TICKETS_TABLE).insert(r.array( + r.hashMap("id", serverId) + .with("MaxTickets", STARTING_TICKET_AMOUNT))).run(conn); + } } private void checkUser(String userId, String serverId) { @@ -54,10 +61,14 @@ private void checkUser(String userId, String serverId) { .with("TicketCount", 0))).run(conn); } + public long getMaxTickets(String serverId) { + return r.db(DB_NAME).table(MAX_TICKETS_TABLE).get(serverId).getField("MaxTickets").run(conn); + } + public boolean canBuyTickets(String userId, String serverId, int amount) { checkUser(userId, serverId); - return getTicketCount(userId, serverId) + amount <= 200; + return getTicketCount(userId, serverId) + amount <= getMaxTickets(serverId); } public long getTicketCount(String userId, String serverId) { @@ -102,6 +113,8 @@ public void addEntry(String userId, String serverId, int[] numbers) { } public ArrayList getWinner(String serverId, int[] winningNumbers) { + checkServer(serverId); + ArrayList ticket = new ArrayList<>(); for (int i = 0; i < winningNumbers.length; i++) @@ -161,9 +174,10 @@ public void drawNumbers(Points points, Server server, DiscordApi api, ServerText for (int i = 0; i < winningNumbers.length; i++) message.append(winningNumbers[i] + " "); message.append("\n"); - if (winners.size() == 0) - message.append("No one has won. All bean lottery tickets have been saved until the next drawing."); - else { + if (winners.size() == 0) { + message.append("No one has won. Everyone can now buy " + ADD_AFTER_DRAWING + " more tickets. All bean lottery tickets have been saved until the next drawing."); + r.db(DB_NAME).table(MAX_TICKETS_TABLE).get(server.getIdAsString()).update(r.hashMap("MaxTickets", getMaxTickets(server.getIdAsString() + ADD_AFTER_DRAWING))).run(conn); + } else { BigDecimal prizePool = points.getBalance(api.getYourself().getIdAsString(), server.getIdAsString()); BigDecimal amountWon = prizePool.divide(new BigDecimal(winners.size())).setScale(Points.SCALE, Points.ROUNDING_MODE); points.removePoints(api.getYourself().getIdAsString(), null, server.getIdAsString(), points.getBalance(api.getYourself().getIdAsString(), server.getIdAsString())); From 6a8b79177d1c223cb1301120c0bf53e6fcdfc1ce Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Fri, 22 Feb 2019 20:49:40 -0500 Subject: [PATCH 07/33] Added basics for deep frying images --- src/main/java/com/mazawrath/beanbot/Main.java | 3 + .../commands/image/DeepFryCommand.java | 103 ++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java diff --git a/src/main/java/com/mazawrath/beanbot/Main.java b/src/main/java/com/mazawrath/beanbot/Main.java index d6946b0..ea5ce57 100644 --- a/src/main/java/com/mazawrath/beanbot/Main.java +++ b/src/main/java/com/mazawrath/beanbot/Main.java @@ -8,6 +8,7 @@ import com.mazawrath.beanbot.commands.beancoin.*; import com.mazawrath.beanbot.commands.copypasta.*; import com.mazawrath.beanbot.commands.googlevision.AnalyzeCommand; +import com.mazawrath.beanbot.commands.image.DeepFryCommand; import com.mazawrath.beanbot.utilities.*; import com.mazawrath.beanbot.commands.admin.*; import com.mazawrath.beanbot.utilities.jersey.RestServer; @@ -75,6 +76,8 @@ public static void main(String[] args) { cmdHandler.registerCommand(new BeanInvestCommand(points, stockMarket)); // Bean Lottery Commands cmdHandler.registerCommand(new BeanLotteryCommand(points, lottery)); + // Image Manipulation Commands + cmdHandler.registerCommand(new DeepFryCommand(points)); // Google Vision Commands cmdHandler.registerCommand(new AnalyzeCommand(points)); // Admin commands diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java new file mode 100644 index 0000000..edc1aba --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java @@ -0,0 +1,103 @@ +package com.mazawrath.beanbot.commands.image; + +import com.mazawrath.beanbot.utilities.Points; +import com.mazawrath.beanbot.utilities.SentryLog; +import de.btobastian.sdcf4j.Command; +import de.btobastian.sdcf4j.CommandExecutor; +import marvin.MarvinPluginCollection; +import marvin.image.MarvinImage; +import org.apache.commons.io.IOUtils; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.channel.ServerTextChannel; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; + +import javax.activation.MimetypesFileTypeMap; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; + +public class DeepFryCommand implements CommandExecutor { + private Points points; + + public DeepFryCommand(Points points) { + this.points = points; + } + + @Command( + aliases = {"deepfry"}, + usage = "deepfry [url] [[brightness] [contrast]]", + description = "Creates a deep fried image with custom options to decide the brightness and contrast.", + privateMessages = false + ) + + public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { + SentryLog.addContext(args, author, server); + + URL url; + if (message.getAttachments().size() != 0) + url = message.getAttachments().get(0).getUrl(); + else if (args.length > 0) { + try { + url = new URL(args[0]); + } catch (MalformedURLException e) { + e.printStackTrace(); + serverTextChannel.sendMessage("URL is not valid."); + return; + } + } else { + serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); + return; + } + + if (urlContainsImage(url)) { + try { + BufferedImage buffImage = ImageIO.read(new ByteArrayInputStream(downloadFile(url))); + MarvinImage image = new MarvinImage(buffImage); + + MarvinPluginCollection.brightnessAndContrast(image, 10, 140); + MarvinPluginCollection.colorChannel(image, 100, 10, 10); + image.update(); + File output = new File("Output.png"); + ImageIO.write(image.getBufferedImage(), "png", output); + serverTextChannel.sendMessage(output); + } catch (Exception e) { + e.printStackTrace(); + serverTextChannel.sendMessage("Something went wrong."); + return; + } + } + + } + + private boolean urlContainsImage(URL url) { + File f = new File(url.toString()); + String mimetype = new MimetypesFileTypeMap().getContentType(f); + String type = mimetype.split("/")[0]; + return type.equals("image"); + } + + private static byte[] downloadFile(URL url) { + try { + URLConnection conn = url.openConnection(); + conn.setConnectTimeout(5000); + conn.setReadTimeout(5000); + conn.connect(); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + IOUtils.copy(conn.getInputStream(), baos); + + return baos.toByteArray(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } +} From f78193ce1ad7b32d9d2454c6244cfcdfc77f54e2 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Fri, 22 Feb 2019 21:37:20 -0500 Subject: [PATCH 08/33] Added request class --- .../utilities/photo/MarvinRequest.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java diff --git a/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java new file mode 100644 index 0000000..548b2d0 --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java @@ -0,0 +1,71 @@ +package com.mazawrath.beanbot.utilities.photo; + +import marvin.MarvinPluginCollection; +import marvin.image.MarvinImage; +import org.apache.commons.io.IOUtils; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.net.URLConnection; + +public class MarvinRequest { + URL url2; + BufferedImage buffImage; + MarvinImage image; + + public MarvinRequest(URL url) throws IOException { + url2 = url; + buffImage = ImageIO.read(new ByteArrayInputStream(downloadFile(url))); + image = new MarvinImage(buffImage); + } + + public File deepFryImage() throws IOException { + MarvinPluginCollection.brightnessAndContrast(image, 10, 140); + MarvinPluginCollection.colorChannel(image, 100, 10, 10); + image.update(); + + File output = new File("Output.png"); + ImageIO.write(image.getBufferedImage(), "png", output); + return output; + } + + public File embossImage() throws IOException { + MarvinPluginCollection.emboss(image, image); + image.update(); + + File output = new File("Output.png"); + ImageIO.write(image.getBufferedImage(), "png", output); + return output; + } + + public File invertImage() throws IOException { + MarvinPluginCollection.invertColors(image); + image.update(); + + File output = new File("Output.png"); + ImageIO.write(image.getBufferedImage(), "png", output); + return output; + } + + private static byte[] downloadFile(URL url) { + try { + URLConnection conn = url.openConnection(); + conn.setConnectTimeout(5000); + conn.setReadTimeout(5000); + conn.connect(); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + IOUtils.copy(conn.getInputStream(), baos); + + return baos.toByteArray(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } +} From 8e8e461558d90898250e9c62f1d6e0a274513ce1 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Fri, 22 Feb 2019 21:38:00 -0500 Subject: [PATCH 09/33] Added new commands --- src/main/java/com/mazawrath/beanbot/Main.java | 4 ++ .../commands/image/DeepFryCommand.java | 38 +--------- .../beanbot/commands/image/EmbossCommand.java | 70 +++++++++++++++++++ .../beanbot/commands/image/InvertCommand.java | 70 +++++++++++++++++++ 4 files changed, 147 insertions(+), 35 deletions(-) create mode 100644 src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java create mode 100644 src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java diff --git a/src/main/java/com/mazawrath/beanbot/Main.java b/src/main/java/com/mazawrath/beanbot/Main.java index ea5ce57..72e80a3 100644 --- a/src/main/java/com/mazawrath/beanbot/Main.java +++ b/src/main/java/com/mazawrath/beanbot/Main.java @@ -9,6 +9,8 @@ import com.mazawrath.beanbot.commands.copypasta.*; import com.mazawrath.beanbot.commands.googlevision.AnalyzeCommand; import com.mazawrath.beanbot.commands.image.DeepFryCommand; +import com.mazawrath.beanbot.commands.image.EmbossCommand; +import com.mazawrath.beanbot.commands.image.InvertCommand; import com.mazawrath.beanbot.utilities.*; import com.mazawrath.beanbot.commands.admin.*; import com.mazawrath.beanbot.utilities.jersey.RestServer; @@ -78,6 +80,8 @@ public static void main(String[] args) { cmdHandler.registerCommand(new BeanLotteryCommand(points, lottery)); // Image Manipulation Commands cmdHandler.registerCommand(new DeepFryCommand(points)); + cmdHandler.registerCommand(new EmbossCommand(points)); + cmdHandler.registerCommand(new InvertCommand(points)); // Google Vision Commands cmdHandler.registerCommand(new AnalyzeCommand(points)); // Admin commands diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java index edc1aba..5613b97 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java @@ -2,11 +2,9 @@ import com.mazawrath.beanbot.utilities.Points; import com.mazawrath.beanbot.utilities.SentryLog; +import com.mazawrath.beanbot.utilities.photo.MarvinRequest; import de.btobastian.sdcf4j.Command; import de.btobastian.sdcf4j.CommandExecutor; -import marvin.MarvinPluginCollection; -import marvin.image.MarvinImage; -import org.apache.commons.io.IOUtils; import org.javacord.api.DiscordApi; import org.javacord.api.entity.channel.ServerTextChannel; import org.javacord.api.entity.message.Message; @@ -14,15 +12,9 @@ import org.javacord.api.entity.user.User; import javax.activation.MimetypesFileTypeMap; -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.File; -import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; -import java.net.URLConnection; public class DeepFryCommand implements CommandExecutor { private Points points; @@ -59,15 +51,8 @@ else if (args.length > 0) { if (urlContainsImage(url)) { try { - BufferedImage buffImage = ImageIO.read(new ByteArrayInputStream(downloadFile(url))); - MarvinImage image = new MarvinImage(buffImage); - - MarvinPluginCollection.brightnessAndContrast(image, 10, 140); - MarvinPluginCollection.colorChannel(image, 100, 10, 10); - image.update(); - File output = new File("Output.png"); - ImageIO.write(image.getBufferedImage(), "png", output); - serverTextChannel.sendMessage(output); + MarvinRequest request = new MarvinRequest(url); + serverTextChannel.sendMessage(request.deepFryImage()); } catch (Exception e) { e.printStackTrace(); serverTextChannel.sendMessage("Something went wrong."); @@ -83,21 +68,4 @@ private boolean urlContainsImage(URL url) { String type = mimetype.split("/")[0]; return type.equals("image"); } - - private static byte[] downloadFile(URL url) { - try { - URLConnection conn = url.openConnection(); - conn.setConnectTimeout(5000); - conn.setReadTimeout(5000); - conn.connect(); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - IOUtils.copy(conn.getInputStream(), baos); - - return baos.toByteArray(); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } } diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java new file mode 100644 index 0000000..60117cf --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java @@ -0,0 +1,70 @@ +package com.mazawrath.beanbot.commands.image; + +import com.mazawrath.beanbot.utilities.Points; +import com.mazawrath.beanbot.utilities.SentryLog; +import com.mazawrath.beanbot.utilities.photo.MarvinRequest; +import de.btobastian.sdcf4j.Command; +import de.btobastian.sdcf4j.CommandExecutor; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.channel.ServerTextChannel; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; + +import javax.activation.MimetypesFileTypeMap; +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; + +public class EmbossCommand implements CommandExecutor { + private Points points; + + public EmbossCommand(Points points) { + this.points = points; + } + + @Command( + aliases = {"emboss"}, + usage = "emboss [url]", + description = "Creates a deep fried image with custom options to decide the brightness and contrast.", + privateMessages = false + ) + + public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { + SentryLog.addContext(args, author, server); + + URL url; + if (message.getAttachments().size() != 0) + url = message.getAttachments().get(0).getUrl(); + else if (args.length > 0) { + try { + url = new URL(args[0]); + } catch (MalformedURLException e) { + e.printStackTrace(); + serverTextChannel.sendMessage("URL is not valid."); + return; + } + } else { + serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); + return; + } + + if (urlContainsImage(url)) { + try { + MarvinRequest request = new MarvinRequest(url); + serverTextChannel.sendMessage(request.embossImage()); + } catch (Exception e) { + e.printStackTrace(); + serverTextChannel.sendMessage("Something went wrong."); + return; + } + } + } + + private boolean urlContainsImage(URL url) { + File f = new File(url.toString()); + String mimetype = new MimetypesFileTypeMap().getContentType(f); + String type = mimetype.split("/")[0]; + return type.equals("image"); + } +} diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java new file mode 100644 index 0000000..72d3046 --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java @@ -0,0 +1,70 @@ +package com.mazawrath.beanbot.commands.image; + +import com.mazawrath.beanbot.utilities.Points; +import com.mazawrath.beanbot.utilities.SentryLog; +import com.mazawrath.beanbot.utilities.photo.MarvinRequest; +import de.btobastian.sdcf4j.Command; +import de.btobastian.sdcf4j.CommandExecutor; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.channel.ServerTextChannel; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; + +import javax.activation.MimetypesFileTypeMap; +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; + +public class InvertCommand implements CommandExecutor { + private Points points; + + public InvertCommand(Points points) { + this.points = points; + } + + @Command( + aliases = {"invert"}, + usage = "invert [url]", + description = "Inverts the colors of an image", + privateMessages = false + ) + + public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { + SentryLog.addContext(args, author, server); + + URL url; + if (message.getAttachments().size() != 0) + url = message.getAttachments().get(0).getUrl(); + else if (args.length > 0) { + try { + url = new URL(args[0]); + } catch (MalformedURLException e) { + e.printStackTrace(); + serverTextChannel.sendMessage("URL is not valid."); + return; + } + } else { + serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); + return; + } + + if (urlContainsImage(url)) { + try { + MarvinRequest request = new MarvinRequest(url); + serverTextChannel.sendMessage(request.invertImage()); + } catch (Exception e) { + e.printStackTrace(); + serverTextChannel.sendMessage("Something went wrong."); + return; + } + } + } + + private boolean urlContainsImage(URL url) { + File f = new File(url.toString()); + String mimetype = new MimetypesFileTypeMap().getContentType(f); + String type = mimetype.split("/")[0]; + return type.equals("image"); + } +} From f288543b7ecf475abe2c1fb886fb23d8ca4ab7d7 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Fri, 22 Feb 2019 22:53:39 -0500 Subject: [PATCH 10/33] Updated method names and added possible new options --- .../utilities/photo/MarvinRequest.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java index 548b2d0..5b83287 100644 --- a/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java +++ b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java @@ -14,18 +14,18 @@ import java.net.URLConnection; public class MarvinRequest { - URL url2; BufferedImage buffImage; MarvinImage image; public MarvinRequest(URL url) throws IOException { - url2 = url; buffImage = ImageIO.read(new ByteArrayInputStream(downloadFile(url))); image = new MarvinImage(buffImage); } - public File deepFryImage() throws IOException { - MarvinPluginCollection.brightnessAndContrast(image, 10, 140); + public File getDeepFry() throws IOException { + int pixelValue = image.getHeight() * image.getWidth() ; + MarvinPluginCollection.pixelize(image, image, 1); + MarvinPluginCollection.brightnessAndContrast(image, 0, 140); MarvinPluginCollection.colorChannel(image, 100, 10, 10); image.update(); @@ -34,7 +34,7 @@ public File deepFryImage() throws IOException { return output; } - public File embossImage() throws IOException { + public File getEmboss() throws IOException { MarvinPluginCollection.emboss(image, image); image.update(); @@ -43,7 +43,7 @@ public File embossImage() throws IOException { return output; } - public File invertImage() throws IOException { + public File getInvert() throws IOException { MarvinPluginCollection.invertColors(image); image.update(); @@ -52,6 +52,15 @@ public File invertImage() throws IOException { return output; } + public File getEdges() throws IOException { + MarvinPluginCollection.sobel(image,image); + image.update(); + + File output = new File("Output.png"); + ImageIO.write(image.getBufferedImage(), "png", output); + return output; + } + private static byte[] downloadFile(URL url) { try { URLConnection conn = url.openConnection(); From bb0bff71cd4c56712182a28d82ebf83ed7efeef8 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Fri, 22 Feb 2019 23:13:31 -0500 Subject: [PATCH 11/33] Added check for previous images --- .../commands/image/DeepFryCommand.java | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java index 5613b97..8f85704 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java @@ -5,9 +5,11 @@ import com.mazawrath.beanbot.utilities.photo.MarvinRequest; import de.btobastian.sdcf4j.Command; import de.btobastian.sdcf4j.CommandExecutor; +import io.sentry.Sentry; import org.javacord.api.DiscordApi; import org.javacord.api.entity.channel.ServerTextChannel; import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.MessageSet; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; @@ -33,7 +35,7 @@ public DeepFryCommand(Points points) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { SentryLog.addContext(args, author, server); - URL url; + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); else if (args.length > 0) { @@ -45,14 +47,29 @@ else if (args.length > 0) { return; } } else { - serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); - return; + MessageSet previousMessages = message.getMessagesBefore(20).join(); + + for (Message previousMessage: previousMessages.descendingSet()) { + URL urlTest; + if (previousMessage.getAttachments().size() != 0) { + urlTest = previousMessage.getAttachments().get(0).getUrl(); + if (urlContainsImage(urlTest)) { + url = urlTest; + break; + } + } + } + + if (url == null) { + serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); + return; + } } if (urlContainsImage(url)) { try { MarvinRequest request = new MarvinRequest(url); - serverTextChannel.sendMessage(request.deepFryImage()); + serverTextChannel.sendMessage(request.getDeepFry()); } catch (Exception e) { e.printStackTrace(); serverTextChannel.sendMessage("Something went wrong."); @@ -60,6 +77,7 @@ else if (args.length > 0) { } } + Sentry.clearContext(); } private boolean urlContainsImage(URL url) { From 4374f299e72bcecc78607b57e42e6a378f96f924 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Fri, 22 Feb 2019 23:46:59 -0500 Subject: [PATCH 12/33] Updated commands --- src/main/java/com/mazawrath/beanbot/Main.java | 2 + .../beanbot/commands/image/EdgeCommand.java | 73 +++++++++++++++++++ .../beanbot/commands/image/EmbossCommand.java | 5 +- .../beanbot/commands/image/InvertCommand.java | 5 +- 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java diff --git a/src/main/java/com/mazawrath/beanbot/Main.java b/src/main/java/com/mazawrath/beanbot/Main.java index 72e80a3..5dff44a 100644 --- a/src/main/java/com/mazawrath/beanbot/Main.java +++ b/src/main/java/com/mazawrath/beanbot/Main.java @@ -9,6 +9,7 @@ import com.mazawrath.beanbot.commands.copypasta.*; import com.mazawrath.beanbot.commands.googlevision.AnalyzeCommand; import com.mazawrath.beanbot.commands.image.DeepFryCommand; +import com.mazawrath.beanbot.commands.image.EdgeCommand; import com.mazawrath.beanbot.commands.image.EmbossCommand; import com.mazawrath.beanbot.commands.image.InvertCommand; import com.mazawrath.beanbot.utilities.*; @@ -80,6 +81,7 @@ public static void main(String[] args) { cmdHandler.registerCommand(new BeanLotteryCommand(points, lottery)); // Image Manipulation Commands cmdHandler.registerCommand(new DeepFryCommand(points)); + cmdHandler.registerCommand(new EdgeCommand(points)); cmdHandler.registerCommand(new EmbossCommand(points)); cmdHandler.registerCommand(new InvertCommand(points)); // Google Vision Commands diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java new file mode 100644 index 0000000..fcacee6 --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java @@ -0,0 +1,73 @@ +package com.mazawrath.beanbot.commands.image; + +import com.mazawrath.beanbot.utilities.Points; +import com.mazawrath.beanbot.utilities.SentryLog; +import com.mazawrath.beanbot.utilities.photo.MarvinRequest; +import de.btobastian.sdcf4j.Command; +import de.btobastian.sdcf4j.CommandExecutor; +import io.sentry.Sentry; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.channel.ServerTextChannel; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; + +import javax.activation.MimetypesFileTypeMap; +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; + +public class EdgeCommand implements CommandExecutor { + private Points points; + + public EdgeCommand(Points points) { + this.points = points; + } + + @Command( + aliases = {"edge"}, + usage = "edge [url]", + description = "Creates a deep fried image with custom options to decide the brightness and contrast.", + privateMessages = false + ) + + public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { + SentryLog.addContext(args, author, server); + + URL url; + if (message.getAttachments().size() != 0) + url = message.getAttachments().get(0).getUrl(); + else if (args.length > 0) { + try { + url = new URL(args[0]); + } catch (MalformedURLException e) { + e.printStackTrace(); + serverTextChannel.sendMessage("URL is not valid."); + return; + } + } else { + serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); + return; + } + + if (urlContainsImage(url)) { + try { + MarvinRequest request = new MarvinRequest(url); + serverTextChannel.sendMessage(request.getEdges()); + } catch (Exception e) { + e.printStackTrace(); + serverTextChannel.sendMessage("Something went wrong."); + return; + } + } + + Sentry.clearContext(); + } + + private boolean urlContainsImage(URL url) { + File f = new File(url.toString()); + String mimetype = new MimetypesFileTypeMap().getContentType(f); + String type = mimetype.split("/")[0]; + return type.equals("image"); + } +} diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java index 60117cf..a1b8a16 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java @@ -5,6 +5,7 @@ import com.mazawrath.beanbot.utilities.photo.MarvinRequest; import de.btobastian.sdcf4j.Command; import de.btobastian.sdcf4j.CommandExecutor; +import io.sentry.Sentry; import org.javacord.api.DiscordApi; import org.javacord.api.entity.channel.ServerTextChannel; import org.javacord.api.entity.message.Message; @@ -52,13 +53,15 @@ else if (args.length > 0) { if (urlContainsImage(url)) { try { MarvinRequest request = new MarvinRequest(url); - serverTextChannel.sendMessage(request.embossImage()); + serverTextChannel.sendMessage(request.getEmboss()); } catch (Exception e) { e.printStackTrace(); serverTextChannel.sendMessage("Something went wrong."); return; } } + + Sentry.clearContext(); } private boolean urlContainsImage(URL url) { diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java index 72d3046..3251283 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java @@ -5,6 +5,7 @@ import com.mazawrath.beanbot.utilities.photo.MarvinRequest; import de.btobastian.sdcf4j.Command; import de.btobastian.sdcf4j.CommandExecutor; +import io.sentry.Sentry; import org.javacord.api.DiscordApi; import org.javacord.api.entity.channel.ServerTextChannel; import org.javacord.api.entity.message.Message; @@ -52,13 +53,15 @@ else if (args.length > 0) { if (urlContainsImage(url)) { try { MarvinRequest request = new MarvinRequest(url); - serverTextChannel.sendMessage(request.invertImage()); + serverTextChannel.sendMessage(request.getInvert()); } catch (Exception e) { e.printStackTrace(); serverTextChannel.sendMessage("Something went wrong."); return; } } + + Sentry.clearContext(); } private boolean urlContainsImage(URL url) { From 0fbb2bcc255f7722a91c765e4cc80ff5f7bc30c6 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Sat, 23 Feb 2019 07:30:18 -0500 Subject: [PATCH 13/33] Fixed edge cases with strawpolls --- .../beanbot/commands/poll/StrawPollCommand.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java b/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java index d3ea485..2f3ed73 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/poll/StrawPollCommand.java @@ -67,11 +67,17 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex k++; break; } else if (args[k].startsWith("|") && args[k].endsWith("|")) { - option.append(args[k], 1, args[k].length() - 1).append(" "); - k++; - break; + if (option.toString().isEmpty()) { + option.append(args[k], 1, args[k].length() - 1).append(" "); + k++; + break; + } else + break; } else if (args[k].startsWith("|")) - option.append(args[k].substring(1)).append(" "); + if (option.toString().isEmpty()) { + option.append(args[k], 1, args[k].length()).append(" "); + } else + break; else if (args[k].endsWith("|")) { option.append(args[k], 0, args[k].length() - 1).append(" "); k++; From 51b54dd3f2ed977ad69c989d0219d671c0b77f04 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Sat, 23 Feb 2019 09:30:38 -0500 Subject: [PATCH 14/33] Made variables private and cleaned up file names --- .../beanbot/utilities/photo/MarvinRequest.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java index 5b83287..57bc2b6 100644 --- a/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java +++ b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java @@ -14,12 +14,10 @@ import java.net.URLConnection; public class MarvinRequest { - BufferedImage buffImage; - MarvinImage image; + private MarvinImage image; public MarvinRequest(URL url) throws IOException { - buffImage = ImageIO.read(new ByteArrayInputStream(downloadFile(url))); - image = new MarvinImage(buffImage); + image = new MarvinImage(ImageIO.read(new ByteArrayInputStream(downloadFile(url)))); } public File getDeepFry() throws IOException { @@ -29,7 +27,7 @@ public File getDeepFry() throws IOException { MarvinPluginCollection.colorChannel(image, 100, 10, 10); image.update(); - File output = new File("Output.png"); + File output = new File("deepfry.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -38,7 +36,7 @@ public File getEmboss() throws IOException { MarvinPluginCollection.emboss(image, image); image.update(); - File output = new File("Output.png"); + File output = new File("emboss.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -47,7 +45,7 @@ public File getInvert() throws IOException { MarvinPluginCollection.invertColors(image); image.update(); - File output = new File("Output.png"); + File output = new File("invert.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -56,7 +54,7 @@ public File getEdges() throws IOException { MarvinPluginCollection.sobel(image,image); image.update(); - File output = new File("Output.png"); + File output = new File("edge.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } From c1a12888aa1b90f2371bc516c2e04e80cde77ed9 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Sat, 23 Feb 2019 11:04:59 -0800 Subject: [PATCH 15/33] Added basics for image merging --- .../beanbot/commands/image/MergeCommand.java | 74 +++++++++++++++++++ .../beanbot/utilities/photo/MergeRequest.java | 52 +++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java create mode 100644 src/main/java/com/mazawrath/beanbot/utilities/photo/MergeRequest.java diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java new file mode 100644 index 0000000..f4b57ee --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java @@ -0,0 +1,74 @@ +package com.mazawrath.beanbot.commands.image; + +import com.mazawrath.beanbot.utilities.Points; +import com.mazawrath.beanbot.utilities.SentryLog; +import com.mazawrath.beanbot.utilities.photo.MergeRequest; +import de.btobastian.sdcf4j.Command; +import de.btobastian.sdcf4j.CommandExecutor; +import io.sentry.Sentry; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.channel.ServerTextChannel; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; + +import javax.activation.MimetypesFileTypeMap; +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +public class MergeCommand implements CommandExecutor { + private Points points; + + public MergeCommand(Points points) { + this.points = points; + } + + @Command( + aliases = {"merge"}, + usage = "merge [urls]", + description = "Merges multiple images into one.", + privateMessages = false + ) + + public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { + SentryLog.addContext(args, author, server); + + URL[] urls = new URL[args.length]; + if (args.length > 1) { + for (int i = 0; i < args.length; i++) { + try { + urls[i] = new URL(args[i]); + if (!urlContainsImage(urls[i])) { + serverTextChannel.sendMessage(urls[i] + " is not a valid image."); + return; + } + } catch (MalformedURLException e) { + e.printStackTrace(); + serverTextChannel.sendMessage("Invalid URL."); + return; + } + } + } else { + serverTextChannel.sendMessage("You must either have at least 2 URL's in your message."); + return; + } + + try { + MergeRequest request = new MergeRequest(urls); + serverTextChannel.sendMessage(request.getMerge()); + } catch (IOException e) { + e.printStackTrace(); + } + + Sentry.clearContext(); + } + + private boolean urlContainsImage(URL url) { + File f = new File(url.toString()); + String mimetype = new MimetypesFileTypeMap().getContentType(f); + String type = mimetype.split("/")[0]; + return type.equals("image"); + } +} diff --git a/src/main/java/com/mazawrath/beanbot/utilities/photo/MergeRequest.java b/src/main/java/com/mazawrath/beanbot/utilities/photo/MergeRequest.java new file mode 100644 index 0000000..5259774 --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/utilities/photo/MergeRequest.java @@ -0,0 +1,52 @@ +package com.mazawrath.beanbot.utilities.photo; + +import marvin.MarvinPluginCollection; +import marvin.image.MarvinImage; +import org.apache.commons.io.IOUtils; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.net.URLConnection; +import java.util.List; + +public class MergeRequest { + private List images; + + public MergeRequest(URL[] url) throws IOException { + for (int i = 0; i < url.length; i++) { + images.add(new MarvinImage(ImageIO.read(new ByteArrayInputStream(downloadFile(url[i]))))); + } + } + + public File getMerge() throws IOException { + MarvinImage marvinOutput = new MarvinImage(); + MarvinPluginCollection.mergePhotos(images, marvinOutput, 1); + + marvinOutput.update(); + File output = new File("merge.png"); + ImageIO.write(marvinOutput.getBufferedImage(), "png", output); + return output; + } + + private static byte[] downloadFile(URL url) { + try { + URLConnection conn = url.openConnection(); + conn.setConnectTimeout(5000); + conn.setReadTimeout(5000); + conn.connect(); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + IOUtils.copy(conn.getInputStream(), baos); + + return baos.toByteArray(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } +} From 5cd5ec3ec7ec4d4f41f36f8866e2e8965b6db1d3 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Sun, 24 Feb 2019 22:13:07 -0800 Subject: [PATCH 16/33] Fixed an issue with records being added to someone not able to buy lottery tickets. --- .../commands/beanlottery/BeanLotteryCommand.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java b/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java index 4e477e4..83b14e0 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java @@ -70,12 +70,12 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex return; } - if (!lottery.canBuyTickets(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0]))) { - serverTextChannel.sendMessage("You can only buy " + lottery.getMaxTickets(server.getIdAsString()) + " tickets at a time for a bean lottery drawing. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); - return; - } - if (points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.LOTTERY_TICKET_COST.multiply(new BigDecimal(Integer.parseInt(args[0]))))) { + if (!lottery.canBuyTickets(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0]))) { + serverTextChannel.sendMessage("You can only buy " + lottery.getMaxTickets(server.getIdAsString()) + " tickets at a time for a bean lottery drawing. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); + return; + } + ArrayList> numbers; try (NonThrowingAutoCloseable typingIndicator = serverTextChannel.typeContinuouslyAfter(1, TimeUnit.SECONDS)) { @@ -97,6 +97,11 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex } else serverTextChannel.sendMessage("You don't have enough beanCoin to buy that many tickets."); } else if (args.length >= Lottery.AMOUNT_DRAWN) { + if (!lottery.canBuyTickets(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0]))) { + serverTextChannel.sendMessage("You can only buy " + lottery.getMaxTickets(server.getIdAsString()) + " tickets at a time for a bean lottery drawing. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); + return; + } + if (!StringUtils.isNumeric(args[0])) { serverTextChannel.sendMessage("Invalid amount."); return; From de21b99ea3adb0f78615e31887593f330135537b Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Sun, 24 Feb 2019 23:16:35 -0800 Subject: [PATCH 17/33] Fixed issue with parentheses --- src/main/java/com/mazawrath/beanbot/utilities/Lottery.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java b/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java index bbe87c7..e583da1 100644 --- a/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java +++ b/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java @@ -176,7 +176,7 @@ public void drawNumbers(Points points, Server server, DiscordApi api, ServerText message.append("\n"); if (winners.size() == 0) { message.append("No one has won. Everyone can now buy " + ADD_AFTER_DRAWING + " more tickets. All bean lottery tickets have been saved until the next drawing."); - r.db(DB_NAME).table(MAX_TICKETS_TABLE).get(server.getIdAsString()).update(r.hashMap("MaxTickets", getMaxTickets(server.getIdAsString() + ADD_AFTER_DRAWING))).run(conn); + r.db(DB_NAME).table(MAX_TICKETS_TABLE).get(server.getIdAsString()).update(r.hashMap("MaxTickets", getMaxTickets(server.getIdAsString()) + ADD_AFTER_DRAWING)).run(conn); } else { BigDecimal prizePool = points.getBalance(api.getYourself().getIdAsString(), server.getIdAsString()); BigDecimal amountWon = prizePool.divide(new BigDecimal(winners.size())).setScale(Points.SCALE, Points.ROUNDING_MODE); From c347e3b37ba8cb1dfdf9b66314fe8714d7192352 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Sun, 24 Feb 2019 23:19:35 -0800 Subject: [PATCH 18/33] Set up so bean lottery max tickets will get reset after someone wins --- src/main/java/com/mazawrath/beanbot/utilities/Lottery.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java b/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java index e583da1..cc2f250 100644 --- a/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java +++ b/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java @@ -23,7 +23,7 @@ public class Lottery { public static final int STARTING_TICKET_AMOUNT = 100; public static final int ADD_AFTER_DRAWING = 50; private static final String DB_NAME = "beanBotLottery"; - private static final String MAX_TICKETS_TABLE = "maxTicketTracker"; + private static final String MAX_TICKETS_TABLE = "maxTickets"; private Connection conn; @@ -65,6 +65,10 @@ public long getMaxTickets(String serverId) { return r.db(DB_NAME).table(MAX_TICKETS_TABLE).get(serverId).getField("MaxTickets").run(conn); } + public void resetMaxTickets(String serverId) { + r.db(DB_NAME).table(MAX_TICKETS_TABLE).get(serverId).delete().run(conn); + } + public boolean canBuyTickets(String userId, String serverId, int amount) { checkUser(userId, serverId); @@ -196,6 +200,7 @@ public void drawNumbers(Points points, Server server, DiscordApi api, ServerText message.append(" winners, each gets " + Points.pointsToString(amountWon) + "!"); message.append("\nAll bean lottery tickets have been deleted for the next bean lottery drawing."); clearTickets(server.getIdAsString()); + resetMaxTickets(server.getIdAsString()); } message.send(serverTextChannel); } From 74919fda18334e25304b52d0fb40005c535cb76c Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Sun, 24 Feb 2019 23:20:49 -0800 Subject: [PATCH 19/33] Added check for overflows --- .../beanlottery/BeanLotteryCommand.java | 159 +++++++++--------- 1 file changed, 81 insertions(+), 78 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java b/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java index 83b14e0..e4d4981 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/beanlottery/BeanLotteryCommand.java @@ -39,102 +39,105 @@ public BeanLotteryCommand(Points points, Lottery lottery) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server) { SentryLog.addContext(args, author, server); - if (args.length == 1) { - if (args[0].equalsIgnoreCase("start")) { - if (!author.isBotOwner() && !server.isOwner(author)) { - try { - serverTextChannel.sendMessage("Only " + api.getOwner().get().getDiscriminatedName() + " or " + server.getOwner().getDisplayName(server) + " can use this command."); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); + try { // Thanks a lot Jeff + if (args.length == 1) { + if (args[0].equalsIgnoreCase("start")) { + if (!author.isBotOwner() && !server.isOwner(author)) { + try { + serverTextChannel.sendMessage("Only " + api.getOwner().get().getDiscriminatedName() + " or " + server.getOwner().getDisplayName(server) + " can use this command."); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + return; + } else { + serverTextChannel.sendMessage("Automatic drawings now active. Drawing will happen at this time every 3 days."); + lottery.scheduleWeeklyDrawing(points, server, api, serverTextChannel); + return; } - return; - } else { - serverTextChannel.sendMessage("Automatic drawings now active. Drawing will happen at this time every 3 days."); - lottery.scheduleWeeklyDrawing(points, server, api, serverTextChannel); - return; - } - } //else if (args[0].equalsIgnoreCase("draw")) { + } //else if (args[0].equalsIgnoreCase("draw")) { // if (points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.LOTTERY_DRAWING_COST)) { // lottery.drawNumbers(points, server, api, serverTextChannel); // } else // serverTextChannel.sendMessage("You do not have enough beanCoin for this command"); // return; // } - if (Integer.parseInt(args[0]) > 200) { - serverTextChannel.sendMessage("You can only buy 200 tickets at a time."); - return; - } - - if (Integer.parseInt(args[0]) < 1) { - serverTextChannel.sendMessage("You cannot buy less than 1 ticket."); - return; - } + if (Integer.parseInt(args[0]) > 200) { + serverTextChannel.sendMessage("You can only buy 200 tickets at a time."); + return; + } - if (points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.LOTTERY_TICKET_COST.multiply(new BigDecimal(Integer.parseInt(args[0]))))) { - if (!lottery.canBuyTickets(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0]))) { - serverTextChannel.sendMessage("You can only buy " + lottery.getMaxTickets(server.getIdAsString()) + " tickets at a time for a bean lottery drawing. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); + if (Integer.parseInt(args[0]) < 1) { + serverTextChannel.sendMessage("You cannot buy less than 1 ticket."); return; } - ArrayList> numbers; + if (points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.LOTTERY_TICKET_COST.multiply(new BigDecimal(Integer.parseInt(args[0]))))) { + if (!lottery.canBuyTickets(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0]))) { + serverTextChannel.sendMessage("You can only buy " + lottery.getMaxTickets(server.getIdAsString()) + " tickets at a time for a bean lottery drawing. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); + return; + } + + ArrayList> numbers; - try (NonThrowingAutoCloseable typingIndicator = serverTextChannel.typeContinuouslyAfter(1, TimeUnit.SECONDS)) { - numbers = lottery.addEntry(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0])); + try (NonThrowingAutoCloseable typingIndicator = serverTextChannel.typeContinuouslyAfter(1, TimeUnit.SECONDS)) { + numbers = lottery.addEntry(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0])); - serverTextChannel.sendMessage(args[0] + " tickets bought.\n" + - "The numbers generated have been sent to you in a private message."); + serverTextChannel.sendMessage(args[0] + " tickets bought.\n" + + "The numbers generated have been sent to you in a private message."); + } + author.sendMessage(args[0] + " tickets bought.\n" + + "Your numbers are:"); + MessageBuilder message = new MessageBuilder(); + + for (int i = 0; i < numbers.size(); i++) { + for (int j = 0; j < Lottery.AMOUNT_DRAWN; j++) + message.append(numbers.get(i).get(j) + " "); + message.append("\n"); + } + message.send(author); + } else + serverTextChannel.sendMessage("You don't have enough beanCoin to buy that many tickets."); + } else if (args.length >= Lottery.AMOUNT_DRAWN) { + if (!lottery.canBuyTickets(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0]))) { + serverTextChannel.sendMessage("You can only buy " + lottery.getMaxTickets(server.getIdAsString()) + " tickets at a time for a bean lottery drawing. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); + return; } - author.sendMessage(args[0] + " tickets bought.\n" + - "Your numbers are:"); - MessageBuilder message = new MessageBuilder(); - - for (int i = 0; i < numbers.size(); i++) { - for (int j = 0; j < Lottery.AMOUNT_DRAWN; j++) - message.append(numbers.get(i).get(j) + " "); - message.append("\n"); + + if (!StringUtils.isNumeric(args[0])) { + serverTextChannel.sendMessage("Invalid amount."); + return; } - message.send(author); - } else - serverTextChannel.sendMessage("You don't have enough beanCoin to buy that many tickets."); - } else if (args.length >= Lottery.AMOUNT_DRAWN) { - if (!lottery.canBuyTickets(author.getIdAsString(), server.getIdAsString(), Integer.parseInt(args[0]))) { - serverTextChannel.sendMessage("You can only buy " + lottery.getMaxTickets(server.getIdAsString()) + " tickets at a time for a bean lottery drawing. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); - return; - } - - if (!StringUtils.isNumeric(args[0])) { - serverTextChannel.sendMessage("Invalid amount."); - return; - } - - if (!lottery.canBuyTickets(author.getIdAsString(), server.getIdAsString(), 1)) { - serverTextChannel.sendMessage("You can only buy " + lottery.getMaxTickets(server.getIdAsString()) + " tickets at the moment. After every drawing you will be able to buy " + Lottery.ADD_AFTER_DRAWING + " more tickets. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); - return; - } - - int[] numbers = new int[Lottery.AMOUNT_DRAWN]; - - for (int i = 0; i < Lottery.AMOUNT_DRAWN; i++) { - if (Integer.parseInt(args[i]) >= Lottery.MIN_NUMBER && Integer.parseInt(args[i]) <= Lottery.MAX_NUMBER) - numbers[i] = Integer.parseInt(args[i]); - else { - serverTextChannel.sendMessage(args[i] + " is an invalid number. Numbers must be greater than or equal to " + Lottery.MIN_NUMBER + " and less than or equal to " + Lottery.MAX_NUMBER); + + if (!lottery.canBuyTickets(author.getIdAsString(), server.getIdAsString(), 1)) { + serverTextChannel.sendMessage("You can only buy " + lottery.getMaxTickets(server.getIdAsString()) + " tickets at the moment. After every drawing you will be able to buy " + Lottery.ADD_AFTER_DRAWING + " more tickets. You have bought " + lottery.getTicketCount(author.getIdAsString(), server.getIdAsString()) + " tickets."); return; } - } - if (points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.LOTTERY_TICKET_COST)) { - lottery.addEntry(author.getIdAsString(), server.getIdAsString(), numbers); - - serverTextChannel.sendMessage("1 ticket bought.\n" + - "Your numbers have been sent to you in a private message."); - author.sendMessage("1 ticket bought.\n" + - "Your numbers are:\n"); - author.sendMessage(args[0] + " " + args[1] + " " + args[2]); - } else - serverTextChannel.sendMessage("You do not have enough beanCoin to buy a ticket."); - } else - serverTextChannel.sendMessage("You must have 1 number with how many tickets you want to buy, " + Lottery.AMOUNT_DRAWN + " numbers >= " + Lottery.MIN_NUMBER + " and <= " + Lottery.MAX_NUMBER + ", or the word `draw` to have your own drawing."); + int[] numbers = new int[Lottery.AMOUNT_DRAWN]; + + for (int i = 0; i < Lottery.AMOUNT_DRAWN; i++) { + if (Integer.parseInt(args[i]) >= Lottery.MIN_NUMBER && Integer.parseInt(args[i]) <= Lottery.MAX_NUMBER) + numbers[i] = Integer.parseInt(args[i]); + else { + serverTextChannel.sendMessage(args[i] + " is an invalid number. Numbers must be greater than or equal to " + Lottery.MIN_NUMBER + " and less than or equal to " + Lottery.MAX_NUMBER); + return; + } + } + if (points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.LOTTERY_TICKET_COST)) { + lottery.addEntry(author.getIdAsString(), server.getIdAsString(), numbers); + + serverTextChannel.sendMessage("1 ticket bought.\n" + + "Your numbers have been sent to you in a private message."); + author.sendMessage("1 ticket bought.\n" + + "Your numbers are:\n"); + author.sendMessage(args[0] + " " + args[1] + " " + args[2]); + } else + serverTextChannel.sendMessage("You do not have enough beanCoin to buy a ticket."); + } else + serverTextChannel.sendMessage("You must have 1 number with how many tickets you want to buy, " + Lottery.AMOUNT_DRAWN + " numbers >= " + Lottery.MIN_NUMBER + " and <= " + Lottery.MAX_NUMBER + ", or the word `draw` to have your own drawing."); + } catch (NumberFormatException e) { + serverTextChannel.sendMessage("Invalid number(s)."); + } Sentry.clearContext(); } } From 84766550c011ef437a2f65bcdd430520f826ad41 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Sun, 24 Feb 2019 23:39:35 -0800 Subject: [PATCH 20/33] Fixed issues with deleting tables and first time drawings --- .../com/mazawrath/beanbot/utilities/Lottery.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java b/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java index cc2f250..af3bfae 100644 --- a/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java +++ b/src/main/java/com/mazawrath/beanbot/utilities/Lottery.java @@ -65,10 +65,6 @@ public long getMaxTickets(String serverId) { return r.db(DB_NAME).table(MAX_TICKETS_TABLE).get(serverId).getField("MaxTickets").run(conn); } - public void resetMaxTickets(String serverId) { - r.db(DB_NAME).table(MAX_TICKETS_TABLE).get(serverId).delete().run(conn); - } - public boolean canBuyTickets(String userId, String serverId, int amount) { checkUser(userId, serverId); @@ -81,8 +77,9 @@ public long getTicketCount(String userId, String serverId) { return r.db(DB_NAME).table(serverId).get(userId).getField("TicketCount").run(conn); } - public void clearTickets(String serverId) { - r.db(DB_NAME).table(serverId).delete().run(conn); + private void clearTickets(String serverId) { + r.db(DB_NAME).tableDrop(serverId).delete().run(conn); + r.db(DB_NAME).table(MAX_TICKETS_TABLE).get(serverId).delete().run(conn); } public ArrayList> addEntry(String userId, String serverId, int amount) { @@ -169,6 +166,8 @@ public void run() { } public void drawNumbers(Points points, Server server, DiscordApi api, ServerTextChannel serverTextChannel) { + checkServer(server.getIdAsString()); + int[] winningNumbers = generateNumbers(); ArrayList winners = getWinner(server.getIdAsString(), winningNumbers); @@ -200,7 +199,6 @@ public void drawNumbers(Points points, Server server, DiscordApi api, ServerText message.append(" winners, each gets " + Points.pointsToString(amountWon) + "!"); message.append("\nAll bean lottery tickets have been deleted for the next bean lottery drawing."); clearTickets(server.getIdAsString()); - resetMaxTickets(server.getIdAsString()); } message.send(serverTextChannel); } From 889ad68e62d88184fa099de965fe0ceeaa30b7f0 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Mon, 25 Feb 2019 00:31:39 -0800 Subject: [PATCH 21/33] Fixed issues with reading images --- src/main/java/com/mazawrath/beanbot/Main.java | 3 +- .../commands/googlevision/AnalyzeCommand.java | 39 +++++++++---------- .../beanbot/utilities/GoogleCloudVision.java | 7 +--- 3 files changed, 22 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/Main.java b/src/main/java/com/mazawrath/beanbot/Main.java index 1d6da2b..cdb97dd 100644 --- a/src/main/java/com/mazawrath/beanbot/Main.java +++ b/src/main/java/com/mazawrath/beanbot/Main.java @@ -28,12 +28,13 @@ public class Main { private static DiscordApi api; public static void main(String[] args) { - Sentry.init(); System.setProperty("log4j2.loggerContextFactory", "org.apache.logging.log4j.core.impl.Log4jContextFactory"); FallbackLoggerConfiguration.setDebug(false); + System.setProperty("http.agent", "Chrome"); + Connection conn = r.connection().hostname("localhost").port(28015).connect(); Points points = new Points(conn); diff --git a/src/main/java/com/mazawrath/beanbot/commands/googlevision/AnalyzeCommand.java b/src/main/java/com/mazawrath/beanbot/commands/googlevision/AnalyzeCommand.java index 7488c1c..b23e04d 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/googlevision/AnalyzeCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/googlevision/AnalyzeCommand.java @@ -11,11 +11,13 @@ import org.javacord.api.entity.message.Message; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; +import org.javacord.api.util.NonThrowingAutoCloseable; -import javax.activation.MimetypesFileTypeMap; -import java.io.File; +import javax.swing.*; +import java.awt.*; import java.net.MalformedURLException; import java.net.URL; +import java.util.concurrent.TimeUnit; public class AnalyzeCommand implements CommandExecutor { private Points points; @@ -41,7 +43,6 @@ else if (args.length > 0) { try { url = new URL(args[0]); } catch (MalformedURLException e) { - e.printStackTrace(); serverTextChannel.sendMessage("URL is not valid."); return; } @@ -55,33 +56,31 @@ else if (args.length > 0) { return; } - serverTextChannel.sendMessage("Analyzing image..."); - serverTextChannel.type(); - ImageRequest imageRequest; + try (NonThrowingAutoCloseable typingIndicator = serverTextChannel.typeContinuouslyAfter(5, TimeUnit.MICROSECONDS)) { - if (urlContainsImage(url)) { - try { - imageRequest = new ImageRequest(url); - } catch (Exception e) { - e.printStackTrace(); - serverTextChannel.sendMessage("Something went wrong."); + + if (urlContainsImage(url)) { + try { + imageRequest = new ImageRequest(url); + } catch (Exception e) { + e.printStackTrace(); + serverTextChannel.sendMessage("Something went wrong."); + return; + } + } else { + serverTextChannel.sendMessage("URL must be an image."); return; } - } else { - serverTextChannel.sendMessage("URL must be an image."); - return; } - serverTextChannel.sendMessage(imageRequest.buildEmbed()); + serverTextChannel.sendMessage(imageRequest.buildEmbed()); Sentry.clearContext(); } private boolean urlContainsImage(URL url) { - File f = new File(url.toString()); - String mimetype = new MimetypesFileTypeMap().getContentType(f); - String type = mimetype.split("/")[0]; - return type.equals("image"); + Image image = new ImageIcon(url).getImage(); + return image.getWidth(null) != -1; } } diff --git a/src/main/java/com/mazawrath/beanbot/utilities/GoogleCloudVision.java b/src/main/java/com/mazawrath/beanbot/utilities/GoogleCloudVision.java index 5608656..95e3421 100644 --- a/src/main/java/com/mazawrath/beanbot/utilities/GoogleCloudVision.java +++ b/src/main/java/com/mazawrath/beanbot/utilities/GoogleCloudVision.java @@ -13,12 +13,7 @@ import java.util.List; import java.util.Objects; -public class GoogleCloudVision { - - public GoogleCloudVision() { - System.setProperty("http.agent", "Chrome"); - } - +class GoogleCloudVision { List getLabelDetection(URL image) { try (ImageAnnotatorClient vision = ImageAnnotatorClient.create()) { From 5ffd4a29ecf904afa7abe3a4dd501be3d65f18c6 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Mon, 25 Feb 2019 00:54:02 -0800 Subject: [PATCH 22/33] Improved and updated commands --- .../commands/image/DeepFryCommand.java | 29 +++++----------- .../beanbot/commands/image/EdgeCommand.java | 32 ++++++++++------- .../beanbot/commands/image/EmbossCommand.java | 32 ++++++++++------- .../beanbot/commands/image/InvertCommand.java | 34 +++++++++++-------- .../beanbot/commands/image/MergeCommand.java | 7 ++-- 5 files changed, 68 insertions(+), 66 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java index 8f85704..3368065 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java @@ -13,9 +13,8 @@ import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; -import javax.activation.MimetypesFileTypeMap; -import java.io.File; -import java.net.MalformedURLException; +import javax.swing.*; +import java.awt.*; import java.net.URL; public class DeepFryCommand implements CommandExecutor { @@ -38,15 +37,7 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); - else if (args.length > 0) { - try { - url = new URL(args[0]); - } catch (MalformedURLException e) { - e.printStackTrace(); - serverTextChannel.sendMessage("URL is not valid."); - return; - } - } else { + else { MessageSet previousMessages = message.getMessagesBefore(20).join(); for (Message previousMessage: previousMessages.descendingSet()) { @@ -59,11 +50,10 @@ else if (args.length > 0) { } } } - - if (url == null) { - serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); - return; - } + } + if (url == null) { + serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); + return; } if (urlContainsImage(url)) { @@ -81,9 +71,6 @@ else if (args.length > 0) { } private boolean urlContainsImage(URL url) { - File f = new File(url.toString()); - String mimetype = new MimetypesFileTypeMap().getContentType(f); - String type = mimetype.split("/")[0]; - return type.equals("image"); + return new ImageIcon(url).getImage().getWidth(null) != -1; } } diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java index fcacee6..01ab361 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java @@ -9,10 +9,13 @@ import org.javacord.api.DiscordApi; import org.javacord.api.entity.channel.ServerTextChannel; import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.MessageSet; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; import javax.activation.MimetypesFileTypeMap; +import javax.swing.*; +import java.awt.*; import java.io.File; import java.net.MalformedURLException; import java.net.URL; @@ -34,18 +37,24 @@ public EdgeCommand(Points points) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { SentryLog.addContext(args, author, server); - URL url; + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); - else if (args.length > 0) { - try { - url = new URL(args[0]); - } catch (MalformedURLException e) { - e.printStackTrace(); - serverTextChannel.sendMessage("URL is not valid."); - return; + else { + MessageSet previousMessages = message.getMessagesBefore(20).join(); + + for (Message previousMessage: previousMessages.descendingSet()) { + URL urlTest; + if (previousMessage.getAttachments().size() != 0) { + urlTest = previousMessage.getAttachments().get(0).getUrl(); + if (urlContainsImage(urlTest)) { + url = urlTest; + break; + } + } } - } else { + } + if (url == null) { serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); return; } @@ -65,9 +74,6 @@ else if (args.length > 0) { } private boolean urlContainsImage(URL url) { - File f = new File(url.toString()); - String mimetype = new MimetypesFileTypeMap().getContentType(f); - String type = mimetype.split("/")[0]; - return type.equals("image"); + return new ImageIcon(url).getImage().getWidth(null) != -1; } } diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java index a1b8a16..17e9e0f 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java @@ -9,10 +9,13 @@ import org.javacord.api.DiscordApi; import org.javacord.api.entity.channel.ServerTextChannel; import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.MessageSet; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; import javax.activation.MimetypesFileTypeMap; +import javax.swing.*; +import java.awt.*; import java.io.File; import java.net.MalformedURLException; import java.net.URL; @@ -34,18 +37,24 @@ public EmbossCommand(Points points) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { SentryLog.addContext(args, author, server); - URL url; + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); - else if (args.length > 0) { - try { - url = new URL(args[0]); - } catch (MalformedURLException e) { - e.printStackTrace(); - serverTextChannel.sendMessage("URL is not valid."); - return; + else { + MessageSet previousMessages = message.getMessagesBefore(20).join(); + + for (Message previousMessage: previousMessages.descendingSet()) { + URL urlTest; + if (previousMessage.getAttachments().size() != 0) { + urlTest = previousMessage.getAttachments().get(0).getUrl(); + if (urlContainsImage(urlTest)) { + url = urlTest; + break; + } + } } - } else { + } + if (url == null) { serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); return; } @@ -65,9 +74,6 @@ else if (args.length > 0) { } private boolean urlContainsImage(URL url) { - File f = new File(url.toString()); - String mimetype = new MimetypesFileTypeMap().getContentType(f); - String type = mimetype.split("/")[0]; - return type.equals("image"); + return new ImageIcon(url).getImage().getWidth(null) != -1; } } diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java index 3251283..9fcb040 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java @@ -9,11 +9,12 @@ import org.javacord.api.DiscordApi; import org.javacord.api.entity.channel.ServerTextChannel; import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.MessageSet; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; -import javax.activation.MimetypesFileTypeMap; -import java.io.File; +import javax.swing.*; +import java.awt.*; import java.net.MalformedURLException; import java.net.URL; @@ -34,18 +35,24 @@ public InvertCommand(Points points) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { SentryLog.addContext(args, author, server); - URL url; + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); - else if (args.length > 0) { - try { - url = new URL(args[0]); - } catch (MalformedURLException e) { - e.printStackTrace(); - serverTextChannel.sendMessage("URL is not valid."); - return; + else { + MessageSet previousMessages = message.getMessagesBefore(20).join(); + + for (Message previousMessage: previousMessages.descendingSet()) { + URL urlTest; + if (previousMessage.getAttachments().size() != 0) { + urlTest = previousMessage.getAttachments().get(0).getUrl(); + if (urlContainsImage(urlTest)) { + url = urlTest; + break; + } + } } - } else { + } + if (url == null) { serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); return; } @@ -65,9 +72,6 @@ else if (args.length > 0) { } private boolean urlContainsImage(URL url) { - File f = new File(url.toString()); - String mimetype = new MimetypesFileTypeMap().getContentType(f); - String type = mimetype.split("/")[0]; - return type.equals("image"); + return new ImageIcon(url).getImage().getWidth(null) != -1; } } diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java index f4b57ee..a278b41 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java @@ -13,6 +13,8 @@ import org.javacord.api.entity.user.User; import javax.activation.MimetypesFileTypeMap; +import javax.swing.*; +import java.awt.*; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; @@ -66,9 +68,6 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex } private boolean urlContainsImage(URL url) { - File f = new File(url.toString()); - String mimetype = new MimetypesFileTypeMap().getContentType(f); - String type = mimetype.split("/")[0]; - return type.equals("image"); + return new ImageIcon(url).getImage().getWidth(null) != -1; } } From 11ddc7c0a564869b578643f3e7e06dcfd45980b5 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Tue, 26 Feb 2019 08:44:07 -0800 Subject: [PATCH 23/33] Added new commands and updated old code --- src/main/java/com/mazawrath/beanbot/Main.java | 10 ++- .../commands/image/DiffuseCommand.java | 75 +++++++++++++++++++ .../beanbot/commands/image/MosaicCommand.java | 75 +++++++++++++++++++ .../utilities/photo/MarvinRequest.java | 32 +++++++- .../beanbot/utilities/photo/MergeRequest.java | 14 ++-- 5 files changed, 194 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java create mode 100644 src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java diff --git a/src/main/java/com/mazawrath/beanbot/Main.java b/src/main/java/com/mazawrath/beanbot/Main.java index 5dff44a..a8cd655 100644 --- a/src/main/java/com/mazawrath/beanbot/Main.java +++ b/src/main/java/com/mazawrath/beanbot/Main.java @@ -8,10 +8,7 @@ import com.mazawrath.beanbot.commands.beancoin.*; import com.mazawrath.beanbot.commands.copypasta.*; import com.mazawrath.beanbot.commands.googlevision.AnalyzeCommand; -import com.mazawrath.beanbot.commands.image.DeepFryCommand; -import com.mazawrath.beanbot.commands.image.EdgeCommand; -import com.mazawrath.beanbot.commands.image.EmbossCommand; -import com.mazawrath.beanbot.commands.image.InvertCommand; +import com.mazawrath.beanbot.commands.image.*; import com.mazawrath.beanbot.utilities.*; import com.mazawrath.beanbot.commands.admin.*; import com.mazawrath.beanbot.utilities.jersey.RestServer; @@ -34,6 +31,8 @@ public static void main(String[] args) { Sentry.init(); System.setProperty("log4j2.loggerContextFactory", "org.apache.logging.log4j.core.impl.Log4jContextFactory"); + System.setProperty("http.agent", "Chrome"); + FallbackLoggerConfiguration.setDebug(false); Connection conn = r.connection().hostname("localhost").port(28015).connect(); @@ -84,6 +83,9 @@ public static void main(String[] args) { cmdHandler.registerCommand(new EdgeCommand(points)); cmdHandler.registerCommand(new EmbossCommand(points)); cmdHandler.registerCommand(new InvertCommand(points)); + cmdHandler.registerCommand(new MergeCommand(points)); + cmdHandler.registerCommand(new DiffuseCommand(points)); + cmdHandler.registerCommand(new MosaicCommand(points)); // Google Vision Commands cmdHandler.registerCommand(new AnalyzeCommand(points)); // Admin commands diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java new file mode 100644 index 0000000..af69604 --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java @@ -0,0 +1,75 @@ +package com.mazawrath.beanbot.commands.image; + +import com.mazawrath.beanbot.utilities.Points; +import com.mazawrath.beanbot.utilities.SentryLog; +import com.mazawrath.beanbot.utilities.photo.MarvinRequest; +import de.btobastian.sdcf4j.Command; +import de.btobastian.sdcf4j.CommandExecutor; +import io.sentry.Sentry; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.channel.ServerTextChannel; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.MessageSet; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; + +import javax.swing.*; +import java.net.URL; + +public class DiffuseCommand implements CommandExecutor { + private Points points; + + public DiffuseCommand(Points points) { + this.points = points; + } + + @Command( + aliases = {"diffuse"}, + usage = "diffuse [url]", + description = "Creates a deep fried image with custom options to decide the brightness and contrast.", + privateMessages = false + ) + + public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { + SentryLog.addContext(args, author, server); + + URL url = null; + if (message.getAttachments().size() != 0) + url = message.getAttachments().get(0).getUrl(); + else { + MessageSet previousMessages = message.getMessagesBefore(20).join(); + + for (Message previousMessage: previousMessages.descendingSet()) { + URL urlTest; + if (previousMessage.getAttachments().size() != 0) { + urlTest = previousMessage.getAttachments().get(0).getUrl(); + if (urlContainsImage(urlTest)) { + url = urlTest; + break; + } + } + } + } + if (url == null) { + serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); + return; + } + + if (urlContainsImage(url)) { + try { + MarvinRequest request = new MarvinRequest(url); + serverTextChannel.sendMessage(request.getErrorDiffusion()); + } catch (Exception e) { + e.printStackTrace(); + serverTextChannel.sendMessage("Something went wrong."); + return; + } + } + + Sentry.clearContext(); + } + + private boolean urlContainsImage(URL url) { + return new ImageIcon(url).getImage().getWidth(null) != -1; + } +} diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java new file mode 100644 index 0000000..514d592 --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java @@ -0,0 +1,75 @@ +package com.mazawrath.beanbot.commands.image; + +import com.mazawrath.beanbot.utilities.Points; +import com.mazawrath.beanbot.utilities.SentryLog; +import com.mazawrath.beanbot.utilities.photo.MarvinRequest; +import de.btobastian.sdcf4j.Command; +import de.btobastian.sdcf4j.CommandExecutor; +import io.sentry.Sentry; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.channel.ServerTextChannel; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.MessageSet; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; + +import javax.swing.*; +import java.net.URL; + +public class MosaicCommand implements CommandExecutor { + private Points points; + + public MosaicCommand(Points points) { + this.points = points; + } + + @Command( + aliases = {"mosaic"}, + usage = "mosaic [url]", + description = "Creates a deep fried image with custom options to decide the brightness and contrast.", + privateMessages = false + ) + + public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { + SentryLog.addContext(args, author, server); + + URL url = null; + if (message.getAttachments().size() != 0) + url = message.getAttachments().get(0).getUrl(); + else { + MessageSet previousMessages = message.getMessagesBefore(20).join(); + + for (Message previousMessage: previousMessages.descendingSet()) { + URL urlTest; + if (previousMessage.getAttachments().size() != 0) { + urlTest = previousMessage.getAttachments().get(0).getUrl(); + if (urlContainsImage(urlTest)) { + url = urlTest; + break; + } + } + } + } + if (url == null) { + serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); + return; + } + + if (urlContainsImage(url)) { + try { + MarvinRequest request = new MarvinRequest(url); + serverTextChannel.sendMessage(request.getMosaic()); + } catch (Exception e) { + e.printStackTrace(); + serverTextChannel.sendMessage("Something went wrong."); + return; + } + } + + Sentry.clearContext(); + } + + private boolean urlContainsImage(URL url) { + return new ImageIcon(url).getImage().getWidth(null) != -1; + } +} diff --git a/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java index 57bc2b6..dcffecb 100644 --- a/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java +++ b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java @@ -2,6 +2,7 @@ import marvin.MarvinPluginCollection; import marvin.image.MarvinImage; +import marvin.image.MarvinImageMask; import org.apache.commons.io.IOUtils; import javax.imageio.ImageIO; @@ -36,7 +37,7 @@ public File getEmboss() throws IOException { MarvinPluginCollection.emboss(image, image); image.update(); - File output = new File("emboss.png"); + File output = new File("/ext/out/emboss.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -54,7 +55,34 @@ public File getEdges() throws IOException { MarvinPluginCollection.sobel(image,image); image.update(); - File output = new File("edge.png"); + File output = new File("/ext/out/edge.png"); + ImageIO.write(image.getBufferedImage(), "png", output); + return output; + } + + public File getErrorDiffusion() throws IOException { + MarvinPluginCollection.halftoneErrorDiffusion(image,image); + image.update(); + + File output = new File("errorTone.png"); + ImageIO.write(image.getBufferedImage(), "png", output); + return output; + } + + public File getMosaic() throws IOException { + MarvinPluginCollection.mosaic(image,image, "triangles", 10, true); + image.update(); + + File output = new File("mosaic.png"); + ImageIO.write(image.getBufferedImage(), "png", output); + return output; + } + + public File getSepia() throws IOException { + MarvinPluginCollection.sepia(image, 100); + image.update(); + + File output = new File("mosaic.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } diff --git a/src/main/java/com/mazawrath/beanbot/utilities/photo/MergeRequest.java b/src/main/java/com/mazawrath/beanbot/utilities/photo/MergeRequest.java index 5259774..784b71f 100644 --- a/src/main/java/com/mazawrath/beanbot/utilities/photo/MergeRequest.java +++ b/src/main/java/com/mazawrath/beanbot/utilities/photo/MergeRequest.java @@ -2,30 +2,31 @@ import marvin.MarvinPluginCollection; import marvin.image.MarvinImage; +import marvin.plugin.MarvinImagePlugin; +import marvin.util.MarvinPluginLoader; import org.apache.commons.io.IOUtils; import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.net.URL; import java.net.URLConnection; +import java.util.ArrayList; import java.util.List; public class MergeRequest { - private List images; + private List images = new ArrayList<>(); public MergeRequest(URL[] url) throws IOException { - for (int i = 0; i < url.length; i++) { - images.add(new MarvinImage(ImageIO.read(new ByteArrayInputStream(downloadFile(url[i]))))); - } + for (URL url1 : url) + images.add(new MarvinImage(ImageIO.read(new ByteArrayInputStream(downloadFile(url1))))); } public File getMerge() throws IOException { MarvinImage marvinOutput = new MarvinImage(); - MarvinPluginCollection.mergePhotos(images, marvinOutput, 1); + MarvinPluginCollection.mergePhotos(images, marvinOutput, 38); marvinOutput.update(); File output = new File("merge.png"); @@ -36,6 +37,7 @@ public File getMerge() throws IOException { private static byte[] downloadFile(URL url) { try { URLConnection conn = url.openConnection(); + conn.addRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0"); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); conn.connect(); From df801445e89f4e2d8ad9300653fd9f6aa2de6f56 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Tue, 26 Feb 2019 08:54:08 -0800 Subject: [PATCH 24/33] Added beanCoin cost to the commands --- .../com/mazawrath/beanbot/commands/image/DeepFryCommand.java | 5 +++++ .../com/mazawrath/beanbot/commands/image/DiffuseCommand.java | 5 +++++ .../com/mazawrath/beanbot/commands/image/EdgeCommand.java | 5 +++++ .../com/mazawrath/beanbot/commands/image/EmbossCommand.java | 5 +++++ .../com/mazawrath/beanbot/commands/image/InvertCommand.java | 5 +++++ .../com/mazawrath/beanbot/commands/image/MergeCommand.java | 5 +++++ .../com/mazawrath/beanbot/commands/image/MosaicCommand.java | 5 +++++ 7 files changed, 35 insertions(+) diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java index 3368065..f8319fb 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java @@ -34,6 +34,11 @@ public DeepFryCommand(Points points) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { SentryLog.addContext(args, author, server); + if (!points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.COMMAND_COST)) { + serverTextChannel.sendMessage("You do not have enough beanCoin for this command"); + return; + } + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java index af69604..53402fa 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java @@ -33,6 +33,11 @@ public DiffuseCommand(Points points) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { SentryLog.addContext(args, author, server); + if (!points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.COMMAND_COST)) { + serverTextChannel.sendMessage("You do not have enough beanCoin for this command"); + return; + } + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java index 01ab361..9d9e389 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java @@ -37,6 +37,11 @@ public EdgeCommand(Points points) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { SentryLog.addContext(args, author, server); + if (!points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.COMMAND_COST)) { + serverTextChannel.sendMessage("You do not have enough beanCoin for this command"); + return; + } + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java index 17e9e0f..191b079 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java @@ -37,6 +37,11 @@ public EmbossCommand(Points points) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { SentryLog.addContext(args, author, server); + if (!points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.COMMAND_COST)) { + serverTextChannel.sendMessage("You do not have enough beanCoin for this command"); + return; + } + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java index 9fcb040..d23f6d0 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java @@ -35,6 +35,11 @@ public InvertCommand(Points points) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { SentryLog.addContext(args, author, server); + if (!points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.COMMAND_COST)) { + serverTextChannel.sendMessage("You do not have enough beanCoin for this command"); + return; + } + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java index a278b41..a5ab833 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java @@ -37,6 +37,11 @@ public MergeCommand(Points points) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { SentryLog.addContext(args, author, server); + if (!points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.COMMAND_COST)) { + serverTextChannel.sendMessage("You do not have enough beanCoin for this command"); + return; + } + URL[] urls = new URL[args.length]; if (args.length > 1) { for (int i = 0; i < args.length; i++) { diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java index 514d592..0d09723 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java @@ -33,6 +33,11 @@ public MosaicCommand(Points points) { public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { SentryLog.addContext(args, author, server); + if (!points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.COMMAND_COST)) { + serverTextChannel.sendMessage("You do not have enough beanCoin for this command"); + return; + } + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); From 0b35282f52f1393b81d66f179bff283c8ce4cb01 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Tue, 26 Feb 2019 10:36:10 -0800 Subject: [PATCH 25/33] Added new commands --- src/main/java/com/mazawrath/beanbot/Main.java | 2 + .../commands/image/HistogramCommand.java | 80 +++++++++++++++++++ .../beanbot/commands/image/SepiaCommand.java | 80 +++++++++++++++++++ .../utilities/photo/MarvinRequest.java | 13 ++- 4 files changed, 173 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/mazawrath/beanbot/commands/image/HistogramCommand.java create mode 100644 src/main/java/com/mazawrath/beanbot/commands/image/SepiaCommand.java diff --git a/src/main/java/com/mazawrath/beanbot/Main.java b/src/main/java/com/mazawrath/beanbot/Main.java index a8cd655..157adfe 100644 --- a/src/main/java/com/mazawrath/beanbot/Main.java +++ b/src/main/java/com/mazawrath/beanbot/Main.java @@ -86,6 +86,8 @@ public static void main(String[] args) { cmdHandler.registerCommand(new MergeCommand(points)); cmdHandler.registerCommand(new DiffuseCommand(points)); cmdHandler.registerCommand(new MosaicCommand(points)); + cmdHandler.registerCommand(new SepiaCommand(points)); + cmdHandler.registerCommand(new HistogramCommand(points)); // Google Vision Commands cmdHandler.registerCommand(new AnalyzeCommand(points)); // Admin commands diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/HistogramCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/HistogramCommand.java new file mode 100644 index 0000000..7652638 --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/commands/image/HistogramCommand.java @@ -0,0 +1,80 @@ +package com.mazawrath.beanbot.commands.image; + +import com.mazawrath.beanbot.utilities.Points; +import com.mazawrath.beanbot.utilities.SentryLog; +import com.mazawrath.beanbot.utilities.photo.MarvinRequest; +import de.btobastian.sdcf4j.Command; +import de.btobastian.sdcf4j.CommandExecutor; +import io.sentry.Sentry; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.channel.ServerTextChannel; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.MessageSet; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; + +import javax.swing.*; +import java.net.URL; + +public class HistogramCommand implements CommandExecutor { + private Points points; + + public HistogramCommand(Points points) { + this.points = points; + } + + @Command( + aliases = {"histogram"}, + usage = "histogram [url]", + description = "Creates a histogram image.", + privateMessages = false + ) + + public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { + SentryLog.addContext(args, author, server); + + if (!points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.COMMAND_COST)) { + serverTextChannel.sendMessage("You do not have enough beanCoin for this command"); + return; + } + + URL url = null; + if (message.getAttachments().size() != 0) + url = message.getAttachments().get(0).getUrl(); + else { + MessageSet previousMessages = message.getMessagesBefore(20).join(); + + for (Message previousMessage: previousMessages.descendingSet()) { + URL urlTest; + if (previousMessage.getAttachments().size() != 0) { + urlTest = previousMessage.getAttachments().get(0).getUrl(); + if (urlContainsImage(urlTest)) { + url = urlTest; + break; + } + } + } + } + if (url == null) { + serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); + return; + } + + if (urlContainsImage(url)) { + try { + MarvinRequest request = new MarvinRequest(url); + serverTextChannel.sendMessage(request.getHistogram()); + } catch (Exception e) { + e.printStackTrace(); + serverTextChannel.sendMessage("Something went wrong."); + return; + } + } + + Sentry.clearContext(); + } + + private boolean urlContainsImage(URL url) { + return new ImageIcon(url).getImage().getWidth(null) != -1; + } +} diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/SepiaCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/SepiaCommand.java new file mode 100644 index 0000000..4574521 --- /dev/null +++ b/src/main/java/com/mazawrath/beanbot/commands/image/SepiaCommand.java @@ -0,0 +1,80 @@ +package com.mazawrath.beanbot.commands.image; + +import com.mazawrath.beanbot.utilities.Points; +import com.mazawrath.beanbot.utilities.SentryLog; +import com.mazawrath.beanbot.utilities.photo.MarvinRequest; +import de.btobastian.sdcf4j.Command; +import de.btobastian.sdcf4j.CommandExecutor; +import io.sentry.Sentry; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.channel.ServerTextChannel; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.MessageSet; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; + +import javax.swing.*; +import java.net.URL; + +public class SepiaCommand implements CommandExecutor { + private Points points; + + public SepiaCommand(Points points) { + this.points = points; + } + + @Command( + aliases = {"sepia"}, + usage = "sepia [url]", + description = "Creates a sepia image.", + privateMessages = false + ) + + public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTextChannel, User author, Server server, Message message) { + SentryLog.addContext(args, author, server); + + if (!points.removePoints(author.getIdAsString(), api.getYourself().getIdAsString(), server.getIdAsString(), Points.COMMAND_COST)) { + serverTextChannel.sendMessage("You do not have enough beanCoin for this command"); + return; + } + + URL url = null; + if (message.getAttachments().size() != 0) + url = message.getAttachments().get(0).getUrl(); + else { + MessageSet previousMessages = message.getMessagesBefore(20).join(); + + for (Message previousMessage: previousMessages.descendingSet()) { + URL urlTest; + if (previousMessage.getAttachments().size() != 0) { + urlTest = previousMessage.getAttachments().get(0).getUrl(); + if (urlContainsImage(urlTest)) { + url = urlTest; + break; + } + } + } + } + if (url == null) { + serverTextChannel.sendMessage("You must either have a URL in your message or an attachment."); + return; + } + + if (urlContainsImage(url)) { + try { + MarvinRequest request = new MarvinRequest(url); + serverTextChannel.sendMessage(request.getSepia()); + } catch (Exception e) { + e.printStackTrace(); + serverTextChannel.sendMessage("Something went wrong."); + return; + } + } + + Sentry.clearContext(); + } + + private boolean urlContainsImage(URL url) { + return new ImageIcon(url).getImage().getWidth(null) != -1; + } +} diff --git a/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java index dcffecb..4db79a1 100644 --- a/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java +++ b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java @@ -55,7 +55,7 @@ public File getEdges() throws IOException { MarvinPluginCollection.sobel(image,image); image.update(); - File output = new File("/ext/out/edge.png"); + File output = new File("edge.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -82,7 +82,16 @@ public File getSepia() throws IOException { MarvinPluginCollection.sepia(image, 100); image.update(); - File output = new File("mosaic.png"); + File output = new File("sepia.png"); + ImageIO.write(image.getBufferedImage(), "png", output); + return output; + } + + public File getHistogram() throws IOException { + MarvinPluginCollection.histogramEqualization(image, image); + image.update(); + + File output = new File("histogram.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } From 4a62ee97579cfd309de5204b3bfff2bfe06f8ed5 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Tue, 26 Feb 2019 10:37:37 -0800 Subject: [PATCH 26/33] Disabled non-functioning commands --- src/main/java/com/mazawrath/beanbot/Main.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/Main.java b/src/main/java/com/mazawrath/beanbot/Main.java index 157adfe..2aa268e 100644 --- a/src/main/java/com/mazawrath/beanbot/Main.java +++ b/src/main/java/com/mazawrath/beanbot/Main.java @@ -80,10 +80,10 @@ public static void main(String[] args) { cmdHandler.registerCommand(new BeanLotteryCommand(points, lottery)); // Image Manipulation Commands cmdHandler.registerCommand(new DeepFryCommand(points)); - cmdHandler.registerCommand(new EdgeCommand(points)); + //cmdHandler.registerCommand(new EdgeCommand(points)); cmdHandler.registerCommand(new EmbossCommand(points)); cmdHandler.registerCommand(new InvertCommand(points)); - cmdHandler.registerCommand(new MergeCommand(points)); + //cmdHandler.registerCommand(new MergeCommand(points)); cmdHandler.registerCommand(new DiffuseCommand(points)); cmdHandler.registerCommand(new MosaicCommand(points)); cmdHandler.registerCommand(new SepiaCommand(points)); From 14ab4e32b84f07ea6acc79e5146a9f9bdcc7a107 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Tue, 26 Feb 2019 11:15:00 -0800 Subject: [PATCH 27/33] Fixed file path issue --- src/main/java/com/mazawrath/beanbot/Main.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/mazawrath/beanbot/Main.java b/src/main/java/com/mazawrath/beanbot/Main.java index 2aa268e..3bf0b5a 100644 --- a/src/main/java/com/mazawrath/beanbot/Main.java +++ b/src/main/java/com/mazawrath/beanbot/Main.java @@ -17,6 +17,7 @@ import de.btobastian.sdcf4j.handler.JavacordHandler; //import org.apache.log4j.BasicConfigurator; import io.sentry.Sentry; +import marvin.MarvinDefinitions; import org.javacord.api.DiscordApi; import org.javacord.api.DiscordApiBuilder; import org.javacord.api.util.logging.FallbackLoggerConfiguration; @@ -50,6 +51,8 @@ public static void main(String[] args) { Main.api = api; Twitch.setApi(api); + MarvinDefinitions.setImagePluginPath(".\\ext\\marvin\\plugins\\image\\"); + // Instantiate command handler CommandHandler cmdHandler = new JavacordHandler(api); From e4cdad5899ba176a73aef73f7c5c3f98cda415fb Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Tue, 26 Feb 2019 22:29:05 -0800 Subject: [PATCH 28/33] Updated git to ignore image output --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 40af856..3f9877a 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,9 @@ out/ # Twitch Files config/ +# Image Output +ext/out + launch.sh libsentry_agent_windows-x86_64.dll From 7250d69d45f5db1c6a55e862376db8d3aec78fa3 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Tue, 26 Feb 2019 22:53:41 -0800 Subject: [PATCH 29/33] Improved file paths --- .../beanbot/utilities/photo/MarvinRequest.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java index 4db79a1..f2fdfc0 100644 --- a/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java +++ b/src/main/java/com/mazawrath/beanbot/utilities/photo/MarvinRequest.java @@ -28,7 +28,7 @@ public File getDeepFry() throws IOException { MarvinPluginCollection.colorChannel(image, 100, 10, 10); image.update(); - File output = new File("deepfry.png"); + File output = new File(".\\ext\\out\\deepfry.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -37,7 +37,7 @@ public File getEmboss() throws IOException { MarvinPluginCollection.emboss(image, image); image.update(); - File output = new File("/ext/out/emboss.png"); + File output = new File(".\\ext\\out\\emboss.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -46,7 +46,7 @@ public File getInvert() throws IOException { MarvinPluginCollection.invertColors(image); image.update(); - File output = new File("invert.png"); + File output = new File(".\\ext\\out\\invert.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -55,7 +55,7 @@ public File getEdges() throws IOException { MarvinPluginCollection.sobel(image,image); image.update(); - File output = new File("edge.png"); + File output = new File(".\\ext\\out\\edge.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -64,7 +64,7 @@ public File getErrorDiffusion() throws IOException { MarvinPluginCollection.halftoneErrorDiffusion(image,image); image.update(); - File output = new File("errorTone.png"); + File output = new File(".\\ext\\out\\errorTone.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -73,7 +73,7 @@ public File getMosaic() throws IOException { MarvinPluginCollection.mosaic(image,image, "triangles", 10, true); image.update(); - File output = new File("mosaic.png"); + File output = new File(".\\ext\\out\\mosaic.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -82,7 +82,7 @@ public File getSepia() throws IOException { MarvinPluginCollection.sepia(image, 100); image.update(); - File output = new File("sepia.png"); + File output = new File(".\\ext\\out\\sepia.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } @@ -91,7 +91,7 @@ public File getHistogram() throws IOException { MarvinPluginCollection.histogramEqualization(image, image); image.update(); - File output = new File("histogram.png"); + File output = new File(".\\ext\\out\\histogram.png"); ImageIO.write(image.getBufferedImage(), "png", output); return output; } From b4dced6e64d2d8631ba75660e59d387a113b7a02 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Wed, 27 Feb 2019 15:45:57 -0800 Subject: [PATCH 30/33] Updated gradle --- gradle/wrapper/gradle-wrapper.jar | Bin 56177 -> 55741 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- gradlew.bat | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 29953ea141f55e3b8fc691d31b5ca8816d89fa87..457aad0d98108420a977756b7145c93c8910b076 100644 GIT binary patch delta 46476 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

    d1ZzV`PJaf;LURr$w8USfDLW+{$cK=5Uq0( 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�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 V;3?$)Jo1M@amx&F&%^&5`+o%ZZcYFI diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e0b3fb8..75b8c7c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index cccdd3d..af6708f 100755 --- a/gradlew +++ b/gradlew @@ -28,7 +28,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" diff --git a/gradlew.bat b/gradlew.bat index f955316..6d57edc 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome From 50a69ff0af117e823f4c5a8f2f509566024a01ee Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Wed, 27 Feb 2019 16:17:49 -0800 Subject: [PATCH 31/33] Added typing indicator --- .../com/mazawrath/beanbot/commands/image/DeepFryCommand.java | 2 ++ .../com/mazawrath/beanbot/commands/image/DiffuseCommand.java | 2 ++ .../java/com/mazawrath/beanbot/commands/image/EdgeCommand.java | 2 ++ .../com/mazawrath/beanbot/commands/image/EmbossCommand.java | 2 ++ .../com/mazawrath/beanbot/commands/image/HistogramCommand.java | 2 ++ .../com/mazawrath/beanbot/commands/image/InvertCommand.java | 2 ++ .../java/com/mazawrath/beanbot/commands/image/MergeCommand.java | 2 ++ .../com/mazawrath/beanbot/commands/image/MosaicCommand.java | 2 ++ .../java/com/mazawrath/beanbot/commands/image/SepiaCommand.java | 2 ++ 9 files changed, 18 insertions(+) diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java index f8319fb..ea06c5b 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/DeepFryCommand.java @@ -39,6 +39,8 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex return; } + serverTextChannel.type(); + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java index 53402fa..c5c91ad 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/DiffuseCommand.java @@ -38,6 +38,8 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex return; } + serverTextChannel.type(); + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java index 9d9e389..ba36ac3 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/EdgeCommand.java @@ -42,6 +42,8 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex return; } + serverTextChannel.type(); + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java index 191b079..5dba59d 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/EmbossCommand.java @@ -42,6 +42,8 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex return; } + serverTextChannel.type(); + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/HistogramCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/HistogramCommand.java index 7652638..c2afe19 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/HistogramCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/HistogramCommand.java @@ -38,6 +38,8 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex return; } + serverTextChannel.type(); + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java index d23f6d0..f4d4270 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/InvertCommand.java @@ -40,6 +40,8 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex return; } + serverTextChannel.type(); + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java index a5ab833..f080133 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/MergeCommand.java @@ -42,6 +42,8 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex return; } + serverTextChannel.type(); + URL[] urls = new URL[args.length]; if (args.length > 1) { for (int i = 0; i < args.length; i++) { diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java index 0d09723..c6cb7e1 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/MosaicCommand.java @@ -38,6 +38,8 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex return; } + serverTextChannel.type(); + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); diff --git a/src/main/java/com/mazawrath/beanbot/commands/image/SepiaCommand.java b/src/main/java/com/mazawrath/beanbot/commands/image/SepiaCommand.java index 4574521..edf851c 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/image/SepiaCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/image/SepiaCommand.java @@ -38,6 +38,8 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex return; } + serverTextChannel.type(); + URL url = null; if (message.getAttachments().size() != 0) url = message.getAttachments().get(0).getUrl(); From 1d2af2436843a00fdfbbdb06d9d52c13d37ebcb8 Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Wed, 27 Feb 2019 16:18:06 -0800 Subject: [PATCH 32/33] Added fix for Linux systems --- src/main/java/com/mazawrath/beanbot/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/mazawrath/beanbot/Main.java b/src/main/java/com/mazawrath/beanbot/Main.java index 1ce03ec..0938b50 100644 --- a/src/main/java/com/mazawrath/beanbot/Main.java +++ b/src/main/java/com/mazawrath/beanbot/Main.java @@ -52,7 +52,7 @@ public static void main(String[] args) { Main.api = api; Twitch.setApi(api); - MarvinDefinitions.setImagePluginPath(".\\ext\\marvin\\plugins\\image\\"); + MarvinDefinitions.setImagePluginPath("./ext/marvin/plugins/image/"); // Instantiate command handler CommandHandler cmdHandler = new JavacordHandler(api); From bf907fe4aaca22c9bca77816acab783c5ed919bf Mon Sep 17 00:00:00 2001 From: Mazawrath Date: Wed, 27 Feb 2019 16:18:27 -0800 Subject: [PATCH 33/33] Updated changelog --- .../admin/AdminPostChangeLogCommand.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/mazawrath/beanbot/commands/admin/AdminPostChangeLogCommand.java b/src/main/java/com/mazawrath/beanbot/commands/admin/AdminPostChangeLogCommand.java index 5061a91..0f02b5f 100644 --- a/src/main/java/com/mazawrath/beanbot/commands/admin/AdminPostChangeLogCommand.java +++ b/src/main/java/com/mazawrath/beanbot/commands/admin/AdminPostChangeLogCommand.java @@ -40,19 +40,26 @@ public void onCommand(String[] args, DiscordApi api, ServerTextChannel serverTex private String getRecentChangeLog() { return "**New beanBOT update released.**\n" + - "Release can be found on https://github.com/Mazawrath/beanBOT/releases/tag/v3.4.0\n" + - "Detailed changelog can be found on https://github.com/Mazawrath/beanBOT/compare/v3.3.0...v3.4.0\n" + + "Release can be found on https://github.com/Mazawrath/beanBOT/releases/tag/v3.5.0\n" + + "Detailed changelog can be found on https://github.com/Mazawrath/beanBOT/compare/v3.4.0...v3.5.0\n" + "\n" + - "**v3.4.0**\n" + + "**v3.5.0**\n" + "**New**\n" + - "\t- Added `.minesweeper`.\n" + + "\t- Added photo manipulation.\n" + + "\t\t- Added `.deepfry`.\n" + + "\t\t- Added `.emboss`.\n" + + "\t\t- Added `.invert`.\n" + + "\t\t- Added `.diffuse`.\n" + + "\t\t- Added `.mosaic`.\n" + + "\t\t- Added `.sepia`.\n" + + "\t- Added polling.\n" + + "\t\t- Added `.poll`.\n" + + "\t\t- Added `.strawpoll`.\n" + "**Changes**\n" + - "\t- Set limit to how many lottery tickets can be bought in a single drawing to 200.\n" + - "\t- Set max lottery number to be drawn from 40 to 20.\n" + - "\t- Removed minimum amount required for automatic bean lottery drawings.\n" + - "\t- Bean coin from `.beanbet` will only go to the bot when the bet loses.\n" + + "\t- Changed limit to how many lottery tickets can be bought at the start of a new drawing from 200 to 100.\n" + + "\t\t- After every drawing without a winner users will be able to buy up to 50 more tickets.\n" + "**Bug Fixes**\n" + - "\t- Fixed outdated info with `.beanlottery draw`.\n" + - "\t- Fixed an issue with integer checks with `.beanlottery`."; + "\t- Fixed a file reading issue with `.analyze`.\n" + + "\t- Fixed a issue with records getting added to the lottery database when they did not buy a ticket."; } } \ No newline at end of file