package simple.escp.fill.function;
import simple.escp.dom.Line;
import simple.escp.dom.Page;
import simple.escp.dom.Report;
import simple.escp.util.EscpUtil;
import java.util.regex.Matcher;
/**
* A built-in function that will generate ESC/P to toggle superscript printing.
* If the current status of superscript printing is off, <code>%{SUPER}</code> will generate ESC/P to switch on
* superscript printing. If superscript printing is already turned on (as a result of previous invocation),
* <code>%{SUPER}</code> will turn off superscript printing. It will also turn off subscript printing.
*/
public class SuperscriptFunction extends Function {
private boolean superscript;
/**
* Create new instance of this function.
*/
public SuperscriptFunction() {
super("%\\{\\s*(SUPER)\\s*\\}");
superscript = false;
}
@Override
public String process(Matcher matcher, Report report, Page page, Line line) {
String result = superscript ? EscpUtil.escCancelSuperscriptOrSubscript() : EscpUtil.escSelectSuperscript();
superscript = !superscript;
return result;
}
@Override
public void reset() {
superscript = false;
}
}