108 lines
3.1 KiB
Java
108 lines
3.1 KiB
Java
/*
|
|
* To change this template, choose Tools | Templates
|
|
* and open the template in the editor.
|
|
*/
|
|
package rene.zirkel.graphics;
|
|
|
|
import de.erichseifert.vectorgraphics2d.VectorGraphics2D;
|
|
import de.erichseifert.vectorgraphics2d.VectorGraphics2D.FontRendering;
|
|
import java.awt.Graphics2D;
|
|
import org.scilab.forge.jlatexmath.Box;
|
|
import org.scilab.forge.jlatexmath.DefaultTeXFont;
|
|
import org.scilab.forge.jlatexmath.StrutBox;
|
|
import org.scilab.forge.jlatexmath.TeXConstants;
|
|
import org.scilab.forge.jlatexmath.TeXEnvironment;
|
|
import org.scilab.forge.jlatexmath.TeXFormula;
|
|
import rene.zirkel.ZirkelCanvas;
|
|
|
|
/**
|
|
*
|
|
* @author erichake
|
|
*/
|
|
public class MyTeXFormula extends MyFormula {
|
|
|
|
private TeXFormula JTeX=null;
|
|
private String EQ="";
|
|
private ZirkelCanvas ZC;
|
|
private Graphics2D G=null;
|
|
private boolean parseError=false;
|
|
|
|
public MyTeXFormula(ZirkelCanvas zc, Graphics2D g) {
|
|
ZC=zc;
|
|
G=g;
|
|
try {
|
|
JTeX=new TeXFormula();
|
|
} catch (Exception e) {
|
|
JTeX=null;
|
|
}
|
|
}
|
|
|
|
public MyTeXIcon createTeXIcon(int style, float size) {
|
|
TeXEnvironment te=new TeXEnvironment(style, new DefaultTeXFont(size));
|
|
Box box;
|
|
if (JTeX.root==null) {
|
|
box=new StrutBox(0, 0, 0, 0);
|
|
} else {
|
|
box=JTeX.root.createBox(te);
|
|
}
|
|
MyTeXIcon ti=new MyTeXIcon(box, size);
|
|
ti.isColored=te.isColored;
|
|
return ti;
|
|
}
|
|
|
|
public void setEquation(String s) {
|
|
EQ=s;
|
|
try {
|
|
JTeX.setLaTeX(s);
|
|
MyTeXIcon icon=createTeXIcon(TeXConstants.STYLE_DISPLAY, (float) ZC.fontSize());
|
|
EQwidth=icon.getTrueIconWidth();
|
|
EQheight=icon.getTrueIconHeight();
|
|
EQbaseLine=icon.getBaseLine();
|
|
parseError=false;
|
|
} catch (Exception e) {
|
|
EQwidth=0;
|
|
EQheight=0;
|
|
EQbaseLine=0;
|
|
parseError=true;
|
|
System.out.println("jlatexmath.ParseException");
|
|
}
|
|
}
|
|
|
|
public double getEquationWidth() {
|
|
return EQwidth;
|
|
}
|
|
|
|
public double getEquationHeight() {
|
|
return EQheight;
|
|
}
|
|
|
|
public double getEquationAscent() {
|
|
double d=EQheight*EQbaseLine;
|
|
return d;
|
|
}
|
|
|
|
public String getEquation() {
|
|
return EQ;
|
|
}
|
|
|
|
public double paint(double c, double r, Graphics2D g) {
|
|
if (parseError) {
|
|
return 0;
|
|
}
|
|
float col=(float) c;
|
|
float row=(float) r;
|
|
JTeX.setColor(g.getColor());
|
|
MyTeXIcon icon=createTeXIcon(org.scilab.forge.jlatexmath.TeXConstants.STYLE_DISPLAY, (float) ZC.fontSize());
|
|
if (g instanceof VectorGraphics2D) {
|
|
VectorGraphics2D vg2d=(VectorGraphics2D) g;
|
|
FontRendering oldFontRendering=vg2d.getFontRendering();
|
|
vg2d.setFontRendering(VectorGraphics2D.FontRendering.VECTORS);
|
|
icon.paintIcon(null, g, col, row);
|
|
vg2d.setFontRendering(oldFontRendering);
|
|
} else {
|
|
icon.paintIcon(null, g, col, row);
|
|
}
|
|
return icon.getTrueIconHeight();
|
|
}
|
|
}
|