wut
parent
2678822b15
commit
acca920d29
|
|
@ -4,5 +4,6 @@
|
|||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/ImgurLibrary"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/MAndEngine"/>
|
||||
<classpathentry kind="lib" path="lib/jna-4.1.0.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,3 +1,5 @@
|
|||
import imgurlibrary.ImgurRequest;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.FontMetrics;
|
||||
import java.awt.Graphics2D;
|
||||
|
|
@ -7,20 +9,25 @@ import java.awt.Graphics2D;
|
|||
* @author Marcus
|
||||
*
|
||||
*/
|
||||
public class GraphicalImgurRequest extends ImgurRequest{
|
||||
public class GraphicalImgurRequest {
|
||||
|
||||
// motion, because animation
|
||||
private Point point = new Point(0, 0);
|
||||
private Point desiredPoint = new Point(0, 0);
|
||||
|
||||
// graphically, because animation
|
||||
private double progress = 0;
|
||||
private double scanProgress = 0;
|
||||
private ImageListener listener;
|
||||
|
||||
public GraphicalImgurRequest(double x1, double y1, double x2, double y2, ImageListener listener) {
|
||||
super(listener);
|
||||
// wrapped request
|
||||
private final ImgurRequest req;
|
||||
|
||||
public GraphicalImgurRequest(double x1, double y1, double x2, double y2, ImgurRequest req) {
|
||||
point.x = x1;
|
||||
point.y = y1;
|
||||
desiredPoint.x = x2;
|
||||
desiredPoint.y = y2;
|
||||
|
||||
this.req = req;
|
||||
}
|
||||
|
||||
public void setDestination(double x, double y) {
|
||||
|
|
@ -41,51 +48,58 @@ public class GraphicalImgurRequest extends ImgurRequest{
|
|||
point.x = x;
|
||||
point.y = y;
|
||||
|
||||
double newProgress = getProgress();
|
||||
if(newProgress == newProgress)
|
||||
double newProgress = req.getProgress();
|
||||
if (newProgress == newProgress)
|
||||
progress -= (progress - newProgress) / 8d;
|
||||
|
||||
double newScanProgress = getScanProgress();
|
||||
if(newScanProgress == newScanProgress)
|
||||
double newScanProgress = req.getScanProgress();
|
||||
if (newScanProgress == newScanProgress)
|
||||
scanProgress -= (scanProgress - newScanProgress) / 8d;
|
||||
|
||||
}
|
||||
|
||||
private class Point {
|
||||
public double x, y;
|
||||
|
||||
public Point(double x, double y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
}
|
||||
|
||||
public final static int WIDTH = 100;
|
||||
|
||||
public void draw(Graphics2D g) {
|
||||
|
||||
|
||||
int XOFF = (int)(point.x);
|
||||
int YOFF = (int)(point.y);
|
||||
int XOFF = (int) (point.x);
|
||||
int YOFF = (int) (point.y);
|
||||
|
||||
FontMetrics metrics = g.getFontMetrics();
|
||||
|
||||
//the bar
|
||||
// the bar
|
||||
g.setColor(new Color(150, 150, 150));
|
||||
g.fillRect(XOFF, YOFF + 13, (int) (WIDTH * scanProgress) + 1, 20);
|
||||
g.drawRect(XOFF, YOFF + 13, WIDTH, 20);
|
||||
g.setColor(new Color(70, 70, 70));
|
||||
g.fillRect(XOFF, YOFF + 13, (int) (WIDTH * progress) + 1, 20);
|
||||
g.fillRect(XOFF, YOFF + 13, (int) (WIDTH * progress * scanProgress) + 1, 20);
|
||||
g.drawRect(XOFF, YOFF + 13, WIDTH, 20);
|
||||
|
||||
//total images
|
||||
String str = "" + getImagesDiscovered();
|
||||
g.drawString(str, XOFF + WIDTH - (metrics.charsWidth(str.toCharArray(), 0, str.length())) / 2, YOFF + 45);
|
||||
// total images
|
||||
String str = "" + req.getImagesDiscovered();
|
||||
g.drawString(str, XOFF + (int) (WIDTH * scanProgress) - (metrics.charsWidth(str.toCharArray(), 0, str.length())) / 2, YOFF + 45);
|
||||
|
||||
//downloaded
|
||||
str = "" + getImagesDownloaded();
|
||||
g.drawString(str, XOFF + (int) (WIDTH * progress) - (metrics.charsWidth(str.toCharArray(), 0, str.length())) / 2, YOFF + 10);
|
||||
// downloaded
|
||||
str = "" + req.getImagesDownloaded();
|
||||
g.drawString(str, XOFF + (int) (WIDTH * progress * scanProgress) - (metrics.charsWidth(str.toCharArray(), 0, str.length())) / 2, YOFF + 10);
|
||||
|
||||
// name of the thing
|
||||
str = getTitle();
|
||||
str = req.getTitle();
|
||||
g.drawString(str, XOFF + (WIDTH / 2) - (metrics.charsWidth(str.toCharArray(), 0, str.length())) / 2, YOFF);
|
||||
|
||||
}
|
||||
|
||||
// because wrapping
|
||||
public boolean isBusy() {
|
||||
return req.isBusy();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
import imgurlibrary.ImageListener;
|
||||
import imgurlibrary.ImgurRequest;
|
||||
import imgurlibrary.SubredditRequest;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
|
|
@ -17,7 +21,14 @@ import java.util.Scanner;
|
|||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import com.sun.jna.Native;
|
||||
import com.sun.jna.NativeLong;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.WString;
|
||||
import com.sun.jna.ptr.PointerByReference;
|
||||
|
||||
import MAndEngine.BasicApp;
|
||||
import MAndEngine.Button;
|
||||
import MAndEngine.Engine;
|
||||
|
||||
/**
|
||||
|
|
@ -67,6 +78,11 @@ public class ImgurDownloader implements BasicApp, ImageListener {
|
|||
*/
|
||||
private final Font font = new Font("Arial", Font.BOLD, 30);
|
||||
|
||||
/**
|
||||
* settings button
|
||||
*/
|
||||
private Button settings;
|
||||
|
||||
@Override
|
||||
public Dimension getResolution() {
|
||||
return new Dimension(WIDTH, HEIGHT);
|
||||
|
|
@ -75,13 +91,17 @@ public class ImgurDownloader implements BasicApp, ImageListener {
|
|||
@Override
|
||||
public void initialize() {
|
||||
|
||||
settings = new Button(0, new Color(230, 230, 230), WIDTH - 150, 20, 130, 50, "Settings", 10, 10, true);
|
||||
|
||||
setCurrentProcessExplicitAppUserModelID("MAndWorks.ImgurDownloader.ImgurDownloader.2.0.0.0");
|
||||
|
||||
// System.out.println(getCurrentProcessExplicitAppUserModelID());
|
||||
|
||||
requests = new ArrayList<GraphicalImgurRequest>();
|
||||
try {
|
||||
image = ImageIO.read(this.getClass().getClassLoader()
|
||||
.getResourceAsStream("start.png"));
|
||||
image = ImageIO.read(this.getClass().getClassLoader().getResourceAsStream("start.png"));
|
||||
} catch (Exception e) {
|
||||
image = null;
|
||||
System.out.println("eakljrfgskldhfg");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -103,8 +123,7 @@ public class ImgurDownloader implements BasicApp, ImageListener {
|
|||
int GAP = GraphicalImgurRequest.WIDTH + LEFT_MARGIN;
|
||||
|
||||
for (int i = 0; i < requests.size(); i++) {
|
||||
requests.get(i).setDestination(LEFT_MARGIN + (GAP * i),
|
||||
HEIGHT - BOTTOM_HEIGHT + TOP_MARGIN);
|
||||
requests.get(i).setDestination(LEFT_MARGIN + (GAP * i), HEIGHT - BOTTOM_HEIGHT + TOP_MARGIN);
|
||||
requests.get(i).tick();
|
||||
}
|
||||
|
||||
|
|
@ -120,6 +139,8 @@ public class ImgurDownloader implements BasicApp, ImageListener {
|
|||
execute(textBox);
|
||||
textBox = "";
|
||||
}
|
||||
|
||||
settings.poll();
|
||||
}
|
||||
|
||||
private void execute(String str) {
|
||||
|
|
@ -127,34 +148,27 @@ public class ImgurDownloader implements BasicApp, ImageListener {
|
|||
if (parts[0].equalsIgnoreCase("load")) {
|
||||
loadScript(parts[1]);
|
||||
} else if (parts[0].equalsIgnoreCase("user")) {
|
||||
GraphicalImgurRequest request = new GraphicalImgurRequest(
|
||||
(int) (WIDTH * 1.2d), HEIGHT - BOTTOM_HEIGHT + TOP_MARGIN,
|
||||
0, 0, this);
|
||||
int pages = 0;
|
||||
try {
|
||||
pages = Integer.parseInt(parts[2]);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
request.saveSubmitted(parts[1], pages == 0 ? 10 : pages);
|
||||
requests.add(request);
|
||||
|
||||
} else {
|
||||
// assume subreddit
|
||||
GraphicalImgurRequest request = new GraphicalImgurRequest(
|
||||
(int) (WIDTH * 1.2d), HEIGHT - BOTTOM_HEIGHT + TOP_MARGIN,
|
||||
0, 0, this);
|
||||
int pages = 0;
|
||||
GraphicalImgurRequest greq;
|
||||
ImgurRequest req;
|
||||
int pages;
|
||||
try {
|
||||
pages = Integer.parseInt(parts[1]);
|
||||
} catch (Exception e) {
|
||||
pages = 10;
|
||||
}
|
||||
request.saveSubreddit(parts[0], pages == 0 ? 10 : pages, "time");
|
||||
requests.add(request);
|
||||
|
||||
req = new SubredditRequest(parts[0], pages, true, this);
|
||||
// TODO make these positions variables bc vars
|
||||
greq = new GraphicalImgurRequest((int) (WIDTH * 1.2d), HEIGHT - BOTTOM_HEIGHT + TOP_MARGIN, 0, 0, req);
|
||||
requests.add(greq);
|
||||
}
|
||||
}
|
||||
|
||||
private void loadScript(String script) {
|
||||
File file = new File(System.getenv("APPDATA")
|
||||
+ "\\MAndWorks\\ImgurDownloader\\scripts\\" + script + ".lst");
|
||||
File file = new File(System.getenv("APPDATA") + "\\MAndWorks\\ImgurDownloader\\scripts\\" + script + ".lst");
|
||||
try {
|
||||
Scanner scan = new Scanner(file);
|
||||
while (scan.hasNextLine()) {
|
||||
|
|
@ -205,9 +219,9 @@ public class ImgurDownloader implements BasicApp, ImageListener {
|
|||
g.setFont(font);
|
||||
g.setColor(new Color(70, 70, 70));
|
||||
// TODO filepath variable and stufffffff ya
|
||||
g.drawString("> " + textBox
|
||||
+ ((System.currentTimeMillis() / 1000) % 2 == 0 ? "I" : ""),
|
||||
80, 28);
|
||||
g.drawString("> " + textBox + ((System.currentTimeMillis() / 1000) % 2 == 0 ? "I" : ""), 80, 28);
|
||||
|
||||
settings.render(g);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -274,7 +288,7 @@ public class ImgurDownloader implements BasicApp, ImageListener {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void newImage(BufferedImage image) {
|
||||
public void sendImage(BufferedImage image) {
|
||||
|
||||
try {
|
||||
image = fitImageScale(image, INNER_FRAME_WIDTH, INNER_FRAME_HEIGHT);
|
||||
|
|
@ -285,8 +299,7 @@ public class ImgurDownloader implements BasicApp, ImageListener {
|
|||
|
||||
}
|
||||
|
||||
private static BufferedImage fitImageScale(BufferedImage image, int width,
|
||||
int height) throws IOException {
|
||||
private static BufferedImage fitImageScale(BufferedImage image, int width, int height) throws IOException {
|
||||
|
||||
int imageWidth = image.getWidth();
|
||||
int imageHeight = image.getHeight();
|
||||
|
|
@ -302,33 +315,51 @@ public class ImgurDownloader implements BasicApp, ImageListener {
|
|||
scaleY = scaleX;
|
||||
|
||||
// give us the transform object thing
|
||||
AffineTransform scaleTransform = AffineTransform.getScaleInstance(
|
||||
scaleX, scaleY);
|
||||
AffineTransform scaleTransform = AffineTransform.getScaleInstance(scaleX, scaleY);
|
||||
|
||||
// then make the scaling algorithm thing.
|
||||
AffineTransformOp bilinearScaleOp = new AffineTransformOp(
|
||||
scaleTransform, AffineTransformOp.TYPE_BILINEAR);
|
||||
AffineTransformOp bilinearScaleOp = new AffineTransformOp(scaleTransform, AffineTransformOp.TYPE_BILINEAR);
|
||||
|
||||
// out new image that we need to crop onto the buffer with the right
|
||||
// dimensions.
|
||||
BufferedImage newImage = bilinearScaleOp.filter(image,
|
||||
new BufferedImage((int) (imageWidth * scaleX),
|
||||
(int) (imageHeight * scaleY), image.getType()));
|
||||
BufferedImage newImage = bilinearScaleOp.filter(image, new BufferedImage((int) (imageWidth * scaleX), (int) (imageHeight * scaleY), image.getType()));
|
||||
|
||||
// make the buffer
|
||||
BufferedImage buffer = new BufferedImage(width, height,
|
||||
BufferedImage.TYPE_INT_ARGB);
|
||||
BufferedImage buffer = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics g = buffer.getGraphics();
|
||||
|
||||
int newImageWidth = newImage.getWidth(null);
|
||||
int newImageHeight = newImage.getHeight(null);
|
||||
|
||||
// do math, shove it on.
|
||||
g.drawImage(newImage, (width - newImageWidth) / 2,
|
||||
(height - newImageHeight) / 2, null);
|
||||
g.drawImage(newImage, (width - newImageWidth) / 2, (height - newImageHeight) / 2, null);
|
||||
|
||||
// return dat
|
||||
return buffer;
|
||||
}
|
||||
|
||||
public static void setCurrentProcessExplicitAppUserModelID(final String appID) {
|
||||
if (SetCurrentProcessExplicitAppUserModelID(new WString(appID)).longValue() != 0)
|
||||
throw new RuntimeException("unable to set current process explicit AppUserModelID to: " + appID);
|
||||
}
|
||||
|
||||
public static String getCurrentProcessExplicitAppUserModelID() {
|
||||
final PointerByReference r = new PointerByReference();
|
||||
|
||||
if (GetCurrentProcessExplicitAppUserModelID(r).longValue() == 0) {
|
||||
final Pointer p = r.getValue();
|
||||
|
||||
return p.getString(0, true); // here we leak native memory by
|
||||
// lazyness
|
||||
}
|
||||
return "N/A";
|
||||
}
|
||||
|
||||
private static native NativeLong GetCurrentProcessExplicitAppUserModelID(PointerByReference appID);
|
||||
|
||||
private static native NativeLong SetCurrentProcessExplicitAppUserModelID(WString appID);
|
||||
|
||||
static {
|
||||
Native.register("shell32");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue