From d7115ef89f2e94c50e24db3749552cd658a0dd03 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sat, 20 Aug 2022 10:52:08 -0500 Subject: [PATCH] Prepare live detector (#8) Co-authored-by: sigonasr2 --- bin/ArcadeReader$1.class | Bin 1926 -> 0 bytes bin/ArcadeReader.class | Bin 14820 -> 0 bytes bin/readers/DDRReader.class | Bin 7699 -> 0 bytes bin/readers/ITGReader.class | Bin 7346 -> 0 bytes bin/readers/LoveLiveReader.class | Bin 9816 -> 0 bytes bin/readers/SoundVoltexReader.class | Bin 11725 -> 0 bytes bin/readers/TestReader.class | Bin 738 -> 0 bytes bin/sigPlace.class | Bin 15065 -> 0 bytes bin/sigServer.class | Bin 16249 -> 0 bytes exceptions/FailedResponseException.java | 7 ++ readers/Box.class | Bin 555 -> 0 bytes readers/Box.java | 7 ++ readers/ColorRange.class | Bin 685 -> 0 bytes readers/PopnReader.class | Bin 7083 -> 0 bytes readers/Reader.class | Bin 11212 -> 0 bytes readers/Reader.java | 12 ++ readers/fonts/Font.class | Bin 7231 -> 0 bytes readers/fonts/Glyph.class | Bin 1586 -> 0 bytes requests/GETRequest.java | 99 ++++++++++++++++ requests/MultipartUtility.java | 149 ++++++++++++++++++++++++ requests/POSTRequest.java | 130 +++++++++++++++++++++ sigPlace.java | 38 +++++- 22 files changed, 441 insertions(+), 1 deletion(-) delete mode 100644 bin/ArcadeReader$1.class delete mode 100644 bin/ArcadeReader.class delete mode 100644 bin/readers/DDRReader.class delete mode 100644 bin/readers/ITGReader.class delete mode 100644 bin/readers/LoveLiveReader.class delete mode 100644 bin/readers/SoundVoltexReader.class delete mode 100644 bin/readers/TestReader.class delete mode 100644 bin/sigPlace.class delete mode 100644 bin/sigServer.class create mode 100644 exceptions/FailedResponseException.java delete mode 100644 readers/Box.class delete mode 100644 readers/ColorRange.class delete mode 100644 readers/PopnReader.class delete mode 100644 readers/Reader.class delete mode 100644 readers/fonts/Font.class delete mode 100644 readers/fonts/Glyph.class create mode 100644 requests/GETRequest.java create mode 100644 requests/MultipartUtility.java create mode 100644 requests/POSTRequest.java diff --git a/bin/ArcadeReader$1.class b/bin/ArcadeReader$1.class deleted file mode 100644 index bac1e4055a6e1565549a2a610d0e3842bf7809d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1926 zcma)6TW=Fb6#izs_BzgzkU)V@C@BG&kbqlykAc=WPU60R`<) z82pyLFj>@cf?=DQOpMKqgwx?OVKvIIBkod_ZM_&A*Q~;Xwj2te1D!IqE9gQuL)Rt* zowg({tHP$u{(%+-GKJc)6OYN*rC>Mq(1A^F*TJvb!qn`N$*^mKZ>(k~g1vZL#y$o6 z@dQJ6lb{Y^kPDiX5SJ(bN_X1v=vD9}4l+oFYu;Jsc122N7e&qv$vCt@JJmLIW5G%H zh=QlkPizZLQb+o$Iko!M(rh)!ILgq`3@@%*wjV>JcV4r#tY(P-jw2}JX@~t865GWZ zdMP-s7e#PVvkMkOsP(jJNTHdQ0BWXM02{pNs-DGjGM-oP0$ya;(>Nek&`e9%!ANzc zIP+p&D;MpCVP9P#hw)!Wi!RugMvu^Ak4*ux6WIMiL~)Y(LYJm;e4V`@5<7;|<<6hxg}?^G(5 zjs`G>aTzfMui^DgB9D^NB(nD%lM0W)s)^kQz`2A_i`s6DWs9O_+e)0;2G%Cgb6Z zN)=oU*X>!S=0bj)V`w);P8jxbQM+t8&gT_m9OsUjGfm0Vi0a1-HDwh`W68{0GTtOu z*vx5pk)p>$n1`rXrAR4Hf_27qLnO)gXSjh8Z>3WmvC!K-Sp_xVrwfd7mS`7gN6f5lz?2k!CT@Hzh- zU+_P1pRX|wf5?3N0h9S(teroCMmH2k;2{(ldmrJjj6PbdV+KAMv$U)l+;IR*Mtlvv rHSh=E>o@`Kf~p&mNxKpxWQmg_hdj*^1QxL9S_GD84p1e`(oEk!ABXVY diff --git a/bin/ArcadeReader.class b/bin/ArcadeReader.class deleted file mode 100644 index 8dbaea33fd9d9313bd72da1b72dcc2645c7a5a9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14820 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 diff --git a/bin/readers/DDRReader.class b/bin/readers/DDRReader.class deleted file mode 100644 index 35c712c8a9af71b5f89a29ab5be9cf7c52d7eeb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7699 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 bLRl}C^%7YxlXWFkF_n!es;P#qhUb3)xMp`3 diff --git a/bin/readers/ITGReader.class b/bin/readers/ITGReader.class deleted file mode 100644 index 6849b7e53b51a46717fddd677f4628d53f5908d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7346 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 diff --git a/bin/readers/LoveLiveReader.class b/bin/readers/LoveLiveReader.class deleted file mode 100644 index 1049d3b4d2d16cfb76ce08e27f80d93e83e51fa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9816 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 T_qcuUlO+3n>`O^MISBs`=nO{O diff --git a/bin/readers/SoundVoltexReader.class b/bin/readers/SoundVoltexReader.class deleted file mode 100644 index 798d4a78df07e12b61e2f2d0ca95c8bf97850b99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11725 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 diff --git a/bin/sigPlace.class b/bin/sigPlace.class deleted file mode 100644 index 6409d828b38bc912a0172803bcf733de771ace7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15065 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 diff --git a/bin/sigServer.class b/bin/sigServer.class deleted file mode 100644 index 99337b00529e3f7c981d96c5b2f4df3d2f2106e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16249 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 diff --git a/exceptions/FailedResponseException.java b/exceptions/FailedResponseException.java new file mode 100644 index 0000000..d0c48de --- /dev/null +++ b/exceptions/FailedResponseException.java @@ -0,0 +1,7 @@ +package exceptions; + +public class FailedResponseException extends Exception{ + public FailedResponseException(String msg) { + super(msg); + } +} diff --git a/readers/Box.class b/readers/Box.class deleted file mode 100644 index 946d24039a2928fb779ac93c806944f19cb2a910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmXX@O>YuW6g_WdU7>=0%6%pu^zD&uO}F z;{`=9z`McMH^M3CYac2=N6B#8#IbSK0O*;a1qsy;3 z6tFsrKnWCkVWi%!K2217At!U*g3LIz-s{(mgtej)cZ4^+Z-eU*AV;pXBj+j#~qwU|q_MD)4 zgQwc0cw^5QSFcg0U7)LWgNimOW$mh6!?u3HGJi4NNUQ2effA0WGccaL=x&&this.y-BOX_THRESHOLD<=y&&this.y+this.h+BOX_THRESHOLD>=y; } + public void setNumber(boolean isNumber) { + this.isNumber = isNumber; + } + public boolean isNumber() { + return isNumber; + } } \ No newline at end of file diff --git a/readers/ColorRange.class b/readers/ColorRange.class deleted file mode 100644 index ea030608956d1d65c2e98be017858effbd4120aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 685 zcmY*XO>fgc5Pj>oc4IalO-LcMp&!uVxX>VR1S&+OLZkvxTlLUO##dVPDl;0EO zz=aDE28jbdfWL%**6NT}x z^R9QU`l*2PY!r{u9f5-1J}zP&MHimL4M>4nqQZenE<3y9Xq+5ynPOgY8VQK5&Miw+ zbRxMkjTarN!&KLcRhbcVkyUG9$L8TVnt#VYXW7{YWOj|F3v`W zDm_pG(`Z*G-;=nnGv_(+Dp4xdG9L*<`F+j=e5cz%nw z;BZhRT4+^`rzpl#EaNGH@f3&Ng5Y)ev~8jjVwZk1_zn>)WpIP#45grzp&B&o4E3Nf zmtiqzI2oE>m?;p@uCqQkY!vx>D6@K<`!`X-3eg6;64=7Syv_yd=zd>seZz9_748%} zd03j^3Bz@=)hYZutk2M5xIuPtidr5vXK?LLunV8Lmt{I}SOHkTBU%^MZ|uF`1H!gR G===q0!*Rv{ diff --git a/readers/PopnReader.class b/readers/PopnReader.class deleted file mode 100644 index 7ff3ecc0f600e287fbb7e565ac3bff4a7c800822..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7083 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 N6RF5Ea#%)C{Qr=S2O9tY diff --git a/readers/Reader.java b/readers/Reader.java index f519e0c..db04381 100644 --- a/readers/Reader.java +++ b/readers/Reader.java @@ -29,6 +29,7 @@ public abstract class Reader{ protected void addRegion(Box box,boolean isNumb) { readRegions.add(box); if (isNumb) { + box.setNumber(true); sig_data_size++; } } @@ -436,4 +437,15 @@ public abstract class Reader{ return false; return true; } + + public boolean isReasonableData() { + for (int i=0;i=9| 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 K7aPPT`2QaTh68c{ diff --git a/readers/fonts/Glyph.class b/readers/fonts/Glyph.class deleted file mode 100644 index 0d272bc7ce2aad318781021b1a2735de62e9c7ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1586 zcmb7E%Trrb9RALIHxMwanTF8kkm9V;bNy7 zS2*K8pgX5drZa4cD_0VY#po5oo;Qf8uA#eq}LpeeO;$9|}ZrrAjHhEMO*6H)4n)CgHe2Q_0b}--ghy-I z`D$1yXNId)|NeMsC3MgN)4?$$BwlmThIWB=E$810Go`!!VvreGU04XJK_Rbh0@1}F zyt#*fkn>8p!^P`LGe*`m4MR~oU38(F$Vi z&t1JDPlKsFBs$#+;-Em?ROrut{Jy`eO-Zom#%x}yQpKi9ixodytg_;dLE#@&G=gMdsc2;^sU)q zefPIEiYca01gzZH=Nn~{i zVtj$8s8e^?fBvxltdeXz1VK6U0Ft!UVVTp~-7nhRQ{{Ng66?<% z_I|^v7`j4V;v~-vyfv~)M_8X`_CgDK;NcuvaREp9l(k?K$8ilEcn>Eq&A$1FlM{l)S6o1+-TdEud7baD2sbN`U{SzHta zToMZy5Je6|g&uQ6^%a_S3C)%`CWORkcH9o)qVp;2U5vrmr%Oa7hJ?@pu1I!Jg1;Sf zh#kH(yXZ&!zrq|qi7Vu?=U>L<(|tvVr-*2Od@lBd0Fv-F6%7otg-7-WBh8cgnznIv b#^kq!^P9*%M$f@es38K!KrpGw!aM%}6^|+? diff --git a/requests/GETRequest.java b/requests/GETRequest.java new file mode 100644 index 0000000..dd3cad1 --- /dev/null +++ b/requests/GETRequest.java @@ -0,0 +1,99 @@ +package requests; + +import java.io.IOException; +import java.net.Authenticator; +import java.net.PasswordAuthentication; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpClient.Builder; +import java.net.http.HttpResponse.BodyHandlers; +import java.nio.file.Path; +import java.time.Duration; + +import exceptions.FailedResponseException; + +public class GETRequest{ + String url; + String[] headers; + long timeout; + Path file; + String user=""; + String pass=""; + private HttpRequest req; + private HttpClient client; + /** + * @param file The file path info, use this for file downloads or set to null for standard text. + * @param timeout in milliseconds + * */ + public GETRequest(String url, String username, String password, long timeout, Path file, String...headers){ + this.url = url; + this.user=username; + this.pass=password; + this.headers = headers; + this.timeout = timeout; + this.file=file; + } + /** + * @param file The file path info, use this for file downloads or set to null for standard text. + * @param timeout in milliseconds + * */ + public GETRequest(String url, long timeout, Path file, String...headers){ + this(url,"","",timeout,file,headers); + } + /** + * @param timeout in milliseconds + * */ + public GETRequest(String url, long timeout, String...headers){ + this(url,timeout,null,headers); + } + public GETRequest(String url){ + this(url,30000,null); + } + public HttpResponse run() throws FailedResponseException { + build(); + try { + if (file==null) { + return client.send(req,BodyHandlers.ofString()); + } else { + return client.send(req,BodyHandlers.ofFile(file)); + } + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + throw new FailedResponseException("No proper response returned. THIS SHOULD NOT BE HAPPENING!"); + } + protected java.net.http.HttpRequest.Builder finalizeRequestPreBuild(java.net.http.HttpRequest.Builder requestBuild) throws FailedResponseException { + return requestBuild.GET(); + } + protected Builder finalizeClientPreBuild(Builder clientBuild) { + return clientBuild; + } + protected void build(){ + boolean AUTH_REQUIRED=user.length()>0&&pass.length()>0; + try { + java.net.http.HttpRequest.Builder requestBuild=HttpRequest.newBuilder(new URI(url)) + .version(HttpClient.Version.HTTP_2) + .timeout(Duration.ofMillis(timeout)); + if (headers!=null&&headers.length>0) { + requestBuild.headers(headers); + } + req = finalizeRequestPreBuild(requestBuild).build(); + Builder clientBuild=HttpClient.newBuilder() + .followRedirects(HttpClient.Redirect.ALWAYS); + if (AUTH_REQUIRED) { + clientBuild.authenticator(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(user,pass.toCharArray()); + } + }); + } + client = finalizeClientPreBuild(clientBuild).build(); + } catch (URISyntaxException | FailedResponseException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/requests/MultipartUtility.java b/requests/MultipartUtility.java new file mode 100644 index 0000000..08e9297 --- /dev/null +++ b/requests/MultipartUtility.java @@ -0,0 +1,149 @@ +package requests; +import java.io.BufferedReader; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.List; + +/** + * This utility class provides an abstraction layer for sending multipart HTTP + * POST requests to a web server. + * @author www.codejava.net + * + */ +public class MultipartUtility { + private final String boundary; + private static final String LINE_FEED = "\r\n"; + private HttpURLConnection httpConn; + private String charset; + private OutputStream outputStream; + private PrintWriter writer; + + /** + * This constructor initializes a new HTTP POST request with content type + * is set to multipart/form-data + * @param requestURL + * @param charset + * @throws IOException + */ + public MultipartUtility(String requestURL, String charset) + throws IOException { + this.charset = charset; + + // creates a unique boundary based on time stamp + boundary = "===" + System.currentTimeMillis() + "==="; + + URL url = new URL(requestURL); + httpConn = (HttpURLConnection) url.openConnection(); + httpConn.setUseCaches(false); + httpConn.setDoOutput(true); // indicates POST method + httpConn.setDoInput(true); + httpConn.setRequestProperty("Content-Type", + "multipart/form-data; boundary=" + boundary); + httpConn.setRequestProperty("User-Agent", "CodeJava Agent"); + httpConn.setRequestProperty("Test", "Bonjour"); + outputStream = httpConn.getOutputStream(); + writer = new PrintWriter(new OutputStreamWriter(outputStream, charset), + true); + } + + /** + * Adds a form field to the request + * @param name field name + * @param value field value + */ + public void addFormField(String name, String value) { + writer.append("--" + boundary).append(LINE_FEED); + writer.append("Content-Disposition: form-data; name=\"" + name + "\"") + .append(LINE_FEED); + writer.append("Content-Type: text/plain; charset=" + charset).append( + LINE_FEED); + writer.append(LINE_FEED); + writer.append(value).append(LINE_FEED); + writer.flush(); + } + + /** + * Adds a upload file section to the request + * @param fieldName name attribute in + * @param uploadFile a File to be uploaded + * @throws IOException + */ + public void addFilePart(String fieldName, File uploadFile) + throws IOException { + String fileName = uploadFile.getName(); + writer.append("--" + boundary).append(LINE_FEED); + writer.append( + "Content-Disposition: form-data; name=\"" + fieldName + + "\"; filename=\"" + fileName + "\"") + .append(LINE_FEED); + writer.append( + "Content-Type: " + + URLConnection.guessContentTypeFromName(fileName)) + .append(LINE_FEED); + writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED); + writer.flush(); + + FileInputStream inputStream = new FileInputStream(uploadFile); + char[] buffer = new char[1024]; + String s = new String(buffer); + byte[] data = s.getBytes("ISO-8859-1"); + int bytesRead = -1; + while ((bytesRead = inputStream.read(data)) > 0) { + outputStream.write(data, 0, bytesRead); + } + inputStream.close(); + + writer.flush(); + } + + /** + * Adds a header field to the request. + * @param name - name of the header field + * @param value - value of the header field + */ + public void addHeaderField(String name, String value) { + writer.append(name + ": " + value).append(LINE_FEED); + writer.flush(); + } + + /** + * Completes the request and receives response from the server. + * @return a list of Strings as response in case the server returned + * status OK, otherwise an exception is thrown. + * @throws IOException + */ + public List finish() throws IOException { + List response = new ArrayList(); + + writer.flush(); + writer.append("--" + boundary + "--").append(LINE_FEED); + writer.close(); + + // checks server's status code first + int status = httpConn.getResponseCode(); + if (status == HttpURLConnection.HTTP_OK) { + BufferedReader reader = new BufferedReader(new InputStreamReader( + httpConn.getInputStream())); + String line = null; + while ((line = reader.readLine()) != null) { + response.add(line); + } + reader.close(); + httpConn.disconnect(); + } else { + System.out.println("Server returned non-OK status: " + status); + } + + return response; + } +} \ No newline at end of file diff --git a/requests/POSTRequest.java b/requests/POSTRequest.java new file mode 100644 index 0000000..7c14ee9 --- /dev/null +++ b/requests/POSTRequest.java @@ -0,0 +1,130 @@ +package requests; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpHeaders; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpClient.Builder; +import java.net.http.HttpClient.Version; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.util.List; +import java.util.Optional; + +import javax.net.ssl.SSLSession; + +import exceptions.FailedResponseException; + +public class POSTRequest extends GETRequest{ + + String body = ""; + Path uploadFile = null; + + public POSTRequest(String url, String body, String username, String password, long timeout, Path outputFile, String... headers) { + super(url, username, password, timeout, outputFile, headers); + this.body=body; + } + + public POSTRequest(String url, String body, long timeout, Path outputFile, String... headers) { + super(url, timeout, outputFile, headers); + this.body=body; + } + + public POSTRequest(String url, String body, long timeout, String... headers) { + super(url, timeout, headers); + this.body=body; + } + + public POSTRequest(String url, String body) { + super(url); + this.body=body; + } + + public POSTRequest(String url, Path uploadFile) { + super(url); + this.uploadFile=uploadFile; + } + @Override + public HttpResponse run() throws FailedResponseException { + if (uploadFile!=null) { + String charset = "ISO-8859-1"; + File file = uploadFile.toFile(); + String requestURL = url; + + try { + MultipartUtility multipart = new MultipartUtility(requestURL, charset); + + multipart.addHeaderField("User-Agent", "SIG HTTPCLIENT"); + + multipart.addFilePart("fileUpload", file); + + List response = multipart.finish(); + return new HttpResponse(){ + @Override + public int statusCode() { + return 0; + } + @Override + public HttpRequest request() { + return null; + } + @Override + public Optional> previousResponse() { + return null; + } + @Override + public HttpHeaders headers() { + return null; + } + @Override + public String body() { + StringBuilder sb = new StringBuilder(); + for (String s : response) { + sb.append(s); + } + return sb.toString(); + } + @Override + public Optional sslSession() { + return null; + } + @Override + public URI uri() { + return null; + } + @Override + public Version version() { + return null; + } + }; + } catch (IOException ex) { + System.err.println(ex); + throw new FailedResponseException("Could not send response for POST File upload. THIS SHOULD NOT BE HAPPENING!"); + } + } else { + return super.run(); + } + } + @Override + protected java.net.http.HttpRequest.Builder finalizeRequestPreBuild( + java.net.http.HttpRequest.Builder requestBuild) throws FailedResponseException{ + requestBuild.headers("Content-Type","application/json"); + try { + return file!=null?requestBuild.POST(HttpRequest.BodyPublishers.ofFile(file)): + body.length()>0?requestBuild.POST(HttpRequest.BodyPublishers.ofString(body)): + requestBuild.POST(HttpRequest.BodyPublishers.noBody()); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + throw new FailedResponseException("Could not complete request build. THIS SHOULD NOT BE HAPPENING!"); + } + + @Override + protected Builder finalizeClientPreBuild(Builder clientBuild) { + return clientBuild; + } + +} \ No newline at end of file diff --git a/sigPlace.java b/sigPlace.java index 00c2ca9..6907500 100644 --- a/sigPlace.java +++ b/sigPlace.java @@ -17,12 +17,17 @@ import java.util.regex.Pattern; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; +import java.awt.AWTException; import java.awt.Color; +import java.awt.Robot; +import java.awt.GraphicsEnvironment; import readers.Box; import readers.fonts.Font; +import requests.POSTRequest; import readers.ColorRange; import readers.PopnReader; +import readers.Reader; public class sigPlace { @@ -86,8 +91,39 @@ public class sigPlace { final static int TRANSPARENT = new Color(0,0,0,0).getRGB(); public static void main(String[] args) { + final Color SDVX_UI_COL = new Color(48,48,48); if (args.length>0&&args[0].equals("arcade")) { - System.out.println("Arcade"); + try { + Robot r = new Robot(); + while (true) { + BufferedImage screenshot = r.createScreenCapture(GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds()); + if (new Color(screenshot.getRGB(1550,604)).equals(SDVX_UI_COL)) { + //This is a SDVX image, so we will flip it. + BufferedImage newCanvas = new BufferedImage(screenshot.getHeight(),screenshot.getWidth(),BufferedImage.TYPE_INT_ARGB); + for (int x=0;x