In realtà, è abbastanza semplice. Devi avere jsesh.jar nel tuo classpath e probabilmente anche jseshGlyphs.jar se vuoi i font completi. Quindi, avere un campo geroglifico nella tua applicazione è semplice come:
// Il pacchetto potrebbe cambiare in un (lontano) futuro.
import package jsesh.mdcDisplayer.swing.editor.*;
public MyClass .... {
void buildInterface() {
// Un editor di grandi dimensioni, meglio posizionato in un JScrollPane
JMDCEditor editor= new JMDCEditor();
// Un editor simile a TextField
JMDCField mdcField= new JMDCField();
}
}
Ora è possibile manipolare il testo direttamente tramite la classe HieroglyphicTextModel, che rappresenta il testo come un elenco di oggetti, oppure, se si necessita solo di funzionalità semplici, utilizzare i metodi setMDCText(String mdc)
e getMDCText()
per impostare e recuperare il contenuto del campo come "Manuel de codage".
È possibile impedire la modifica del testo con setEditable(false)
.
Una cosa che attualmente manca nelle librerie (ma che dovrebbe essere risolta a breve) è un modo per indirizzare facilmente le informazioni dalla palette a vari widget JSesh (può essere fatto con la struttura generale, ma non è affatto automatico).
Ci sono diversi motivi per cui si potrebbe voler generare un'immagine da un testo MDC. Ad esempio, si potrebbe utilizzare JSesh come libreria in un'applicazione web.
Naturalmente, è necessario avere sia jsesh.jar che jseshGlyphs.jar nel classpath. Attualmente (JSesh 2.13.7) è necessario anche jvectClipboard-1.0.jar, ma questa è una dipendenza che eliminerò a breve. Se si desidera generare SVG, WMF o simili, sarà necessario jvectClipboard-1.0.jar. A questo punto, il codice Java seguente sarà sufficiente:
public static BufferedImage buildImage(String mdcText) throws MDCSyntaxError {
// Crea il sistema di disegno:
MDCDrawingFacade drawing = new MDCDrawingFacade();
// Crea l'immagine
BufferedImage result = drawing.createImage(mdcText);
return result
}
Questo è tutto. Una volta ottenuta una BufferedImage, è possibile visualizzarla sullo schermo o scriverla in formato JPEG o PNG utilizzando ImageIO.
Opzionalmente, è possibile personalizzare il rendering. Ecco un esempio completo e pronto all'uso:
/**
* Come usare JSesh per creare bitmap in Java.
* compilare: javac -cp .:/FOLDER_CONTAINING/jsesh.jar TestJSeshBitmap.java
* eseguire: java -cp .:/FOLDER_CONTAINING/jsesh.jar TestJSeshBitmap
*
* jseshGlyphs.jar e jvectClipboard-1.0.jar dovrebbero trovarsi nella stessa cartella di jsesh.jar.
* (normalmente, non è necessario aggiungerli esplicitamente al class path, poiché jsesh.jar contiene le informazioni necessarie
* nel suo manifest.
*/
import javax.imageio.ImageIO;
import java.io.*;
import java.awt.image.* ;
import jsesh.mdcDisplayer.preferences.*;
import jsesh.mdcDisplayer.draw.*;
import jsesh.mdc.*;
public class Test {
public static BufferedImage buildImage(String mdcText) throws MDCSyntaxError {
// Crea il sistema di disegno:
MDCDrawingFacade drawing = new MDCDrawingFacade();
// Modifica la scala, scegliendo l'altezza del quadrato in pixel.
drawing.setCadratHeight(60);
// Modifica una serie di parametri
DrawingSpecification drawingSpecifications = new DrawingSpecificationsImplementation();
PageLayout pageLayout= new PageLayout();
pageLayout.setLeftMargin(5);
pageLayout.setTopMargin(5);
drawingSpecifications.setPageLayout(pageLayout);
drawing.setDrawingSpecifications(drawingSpecifications);
// Crea l'immagine
BufferedImage result = drawing.createImage(mdcText);
return result;
}
public static void main(String args[]) throws MDCSyntaxError, IOException {
// Crea l'immagine
BufferedImage img= buildImage("i-w-r:a-C1-m-p*t:pt");
File f = new File("example.png");
// salvalo in png (meglio di jpeg in questo caso)
ImageIO.write(img, "png", f);
}
}
La dimensione dei segnali è controllata tramite drawing.setCadratHeight()
.
(nota personale: dovrebbe essere più facile modificare le dimensioni di tutto tramite drawingSpecification
!!!)