Skip to content
Snippets Groups Projects
Commit d37bcd2f authored by Andrey Ruzhanskiy's avatar Andrey Ruzhanskiy
Browse files

first implementation, much TODO, but runnable

parent abf31460
No related branches found
No related tags found
1 merge request!8Feat/rasterizer 10
Showing with 247 additions and 3 deletions
......@@ -32,11 +32,11 @@ dependencies {
}
// Define the main class for the application
mainClassName = 'de.tudresden.inf.mci.brailleplot.App'
mainClassName = 'de.tudresden.inf.mci.brailleplot.DirectPrint'
jar {
manifest {
attributes "Main-Class": "de.tudresden.inf.mci.brailleplot.App"
attributes "Main-Class": "de.tudresden.inf.mci.brailleplot.DirectPrint"
}
from {
......
......@@ -47,7 +47,9 @@
<!-- Checks whether files end with a new line. -->
<!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
<!--- no, it checks localy if its complient with the OS, have fun mac and Unix user....
<module name="NewlineAtEndOfFile"/>
-->
<!-- Checks that property files contain the same keys. -->
<!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
......@@ -77,6 +79,7 @@
<!-- <property name="fileExtensions" value="java"/> -->
<!-- </module> -->
<module name="SuppressWarningsFilter" />
<module name="TreeWalker">
<!-- Checks for Javadoc comments. -->
......@@ -102,7 +105,9 @@
<!-- Checks for imports -->
<!-- See http://checkstyle.sf.net/config_import.html -->
<!-- Sometimes its better with a star...
<module name="AvoidStarImport"/>
-->
<module name="IllegalImport"/> <!-- defaults to sun.* packages -->
<module name="RedundantImport"/>
<module name="UnusedImports">
......@@ -181,6 +186,9 @@
<module name="TodoComment"/>
-->
<module name="UpperEll"/>
<!-- Add support for SupressWarnings Annotations -->
<module name="SuppressWarningsHolder" />
</module>
......
File added
package de.tudresden.inf.mci.brailleplot;
/**
* This Class provides an Extension Point for further implementation
* and Protocol Building for Documents that need to be send to the printer.
* @author Andrey Ruzhanskiy
* @version 28.05.2019
*/
public abstract class AbstractDocumentBuilder {
/**
* MemberVariable for the final Document. Readable via getDocument
*/
protected byte[] mDocument;
/**
* Complex method for complex construction of an Document for the printer.
* @param data Raw Data to be printed without any escapesequences
* @return Fully build Document as byte[]
*/
public byte[] assemble(final byte[] data) {
return null;
}
/**
* Interface for getting the final Document.
* @return DOcument to be printed
*/
public byte[] getDocument() {
return mDocument;
}
}
......@@ -9,8 +9,11 @@ public final class App {
public String getGreeting() {
return "Hello world.";
}
/*
public static void main(final String[] args) {
System.out.println(new App().getGreeting());
}
*/
}
package de.tudresden.inf.mci.brailleplot;
import java.awt.print.PrinterJob;
import javax.print.*;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.PageRanges;
import java.io.ByteArrayOutputStream;
/**
* This Class provides means to print. But poorly currently. Big TODO.
* @author Andrey Ruzhanskiy
* @version 28.05.2019
*/
public class DirectPrint {
private PrintService[] printService;
private byte[] data;
public DirectPrint() {
this.printService = PrinterJob.lookupPrintServices();
}
@SuppressWarnings("checkstyle:MagicNumber")
public static void main(final String[] args) {
DirectPrint lt = new DirectPrint();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
byte[] betterData = new byte[] {
0x1B, 0x09, 0x1B, 0x0B, 0x04, 0x04, 0x04, 0x0F, 0x1B,
0x5C, 0x03, 0x00, 0x49, (byte) 0x92, 0x24, 0x0D, 0x0A, 0x1B, 0x5C,
0x03, 0x00, 0x49, (byte) 0x92, 0x24, 0x0D, 0x0A, 0x1B, 0x5C, 0x03, 0x00, 0x09, (byte) 0x92,
0x20, 0x0D, 0x0A, 0x1B, 0x5C, 0x02, 0x00, 0x01, 0x02, 0x0D, 0x0A,
0x1B, 0x5C, 0x02, 0x00, 0x49, 0x02, 0x0D, 0x0A, 0x1B, 0x0A
};
prettyPrintCLI(betterData);
lt.printString(betterData);
}
/**
* Heheheh leer.
* @param input
*/
public void printString(final byte[] input) {
this.data = input;
DocFlavor flavor = new DocFlavor("application/octet-stream", "[B");
Doc braille = new SimpleDoc(this.data, flavor, null);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new PageRanges(1, 1));
aset.add(new Copies(1));
//new copy paste
PrintService services =
PrintServiceLookup.lookupDefaultPrintService();
DocFlavor[] array = services.getSupportedDocFlavors();
DocPrintJob job = services.createPrintJob();
try {
job.print(braille, aset);
} catch (PrintException pe) {
System.out.println(pe.getMessage());
}
}
public static void prettyPrintCLI(final byte[] data) {
StringBuilder sb = new StringBuilder();
for (byte b : data) {
sb.append(String.format("%02X ", b));
}
System.out.println(sb.toString());
}
}
package de.tudresden.inf.mci.brailleplot;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* Placeholder.
*/
public class FloatingDotArea extends AbstractDocumentBuilder {
private final byte[] mActivateDotArea = new byte[]{0x1B, 0x46};
private byte[] mDotList;
private final byte[] mSemicolon = new byte[] {0x3B};
private final byte[] mNewLine = new byte[] {0x0A};
private final byte mColon = 0x3A;
public FloatingDotArea(final byte[] data) {
mDocument = this.assemble(data);
}
@Override
public byte[] assemble(final byte[] data) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
try {
stream.write(mActivateDotArea);
stream.write(mSemicolon);
stream.write(mNewLine);
stream.write(data);
stream.write(parseData(data));
stream.write(mSemicolon);
} catch (IOException e) {
e.getMessage();
}
return mDocument;
}
private byte[] parseData(final byte[] data) {
for (byte b : data) {
if (Byte.compare(b, mColon) == 0) {
System.out.println("No Warning pls");
}
}
return null;
}
}
import de.tudresden.inf.mci.brailleplot.AbstractDocumentBuilder;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* Placeholder.
*/
public class GraphicPrint extends AbstractDocumentBuilder {
private final byte[] mEnterIMageMode = new byte[] {0x1B, 0x09};
private final byte[] mExitImageMode = new byte[] {0x1B, 0x0A};
private final byte[] mSetImageType = new byte[] {0x1B, 0x0B};
public GraphicPrint(final byte[] data) {
this.mDocument = this.assemble(data);
}
/**
* Hehe Leer.
* @return
*/
public byte[] assemble() {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
try {
stream.write(mEnterIMageMode);
stream.write(mSetImageType);
//
stream.write(mExitImageMode);
} catch (IOException e) {
e.getMessage();
}
return mDocument;
}
}
package de.tudresden.inf.mci.brailleplot;
/**
* Placeholder.
*/
public class NormalPrint extends AbstractDocumentBuilder {
}
package de.tudresden.inf.mci.brailleplot;
/**
* Placeholder.
*/
public class PrintDirector {
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment