}
@Internal
public static void title(@Current Context context, SEXP main, SEXP sub, SEXP xlab, SEXP ylab,
double line, boolean outer, @ArgumentList ListVector arguments) {
GraphicsDevice dd = Devices.GEcurrentDevice(context);
dd.saveParameters();
double adj, adjy, offset, hpos, vpos, where;
int i, n;
// GCheckState(dd);
//TODO: ProcessInlinePars(args, dd, call);
/* override par("xpd") and force clipping to figure region
NOTE: don't override to _reduce_ clipping region */
// if (gpptr(dd)->xpd < 1)
// gpptr(dd)->xpd = 1;
// if (outer)
// gpptr(dd)->xpd = 2;
adj = dd.getParameters().getTextJustification();
// GMode(1, dd);
if (main != Null.INSTANCE) {
dd.getParameters().getMainTitleStyle();
/* GetTextArg may coerce, so protect the result */
//GetTextArg(call, Main, &Main, &col, &cex, &font);
// dd.getParameters().setCurrentTextStyle(style);
if (outer) {
// if (DoubleVector.isFinite(line)) {
// vpos = line;
// adjy = 0;
// }
// else {
// vpos = 0.5 * dd.getOuterMargins().getTop();
// adjy = 0.5;
// }
// hpos = adj;
// where = 0; //OMA3;
throw new EvalException("main title in outer margins not yet implemented");
} else {
if (DoubleVector.isFinite(line)) {
vpos = line;
adjy = 0;
}
else {
vpos = 0.5 * dd.getInnerMargins().getTop();
adjy = 0.5;
}
hpos = 0; // GConvertX(adj, NPC, USER, dd);
where = 0; //MAR3;
}
if (main instanceof ExpressionVector) {
// GMathText(hpos, vpos, where, main.getElementAsSEXP(0),
// adj, 0.5, 0.0, dd);
} else {
n = main.length();
offset = 0.5 * (n - 1) + vpos;
for (i = 0; i < n; i++) {
String text = ((Vector)main).getElementAsString(i);
if(!StringVector.isNA(text)) {
dd.text(new Point(hpos, offset - i), where, text,
new Point(adj, adjy), 0.0);
}
}
}
}
// if (sub != R_NilValue) {
// cex = gpptr(dd)->cexsub;
// col = gpptr(dd)->colsub;
// font = gpptr(dd)->fontsub;
// /* GetTextArg may coerce, so protect the result */
// GetTextArg(call, sub, &sub, &col, &cex, &font);
// PROTECT(sub);
// gpptr(dd)->col = col;
// gpptr(dd)->cex = gpptr(dd)->cexbase * cex;
// gpptr(dd)->font = font;
// if (R_FINITE(line))
// vpos = line;
// else
// vpos = gpptr(dd)->mgp[0] + 1;
// if (outer) {
// hpos = adj;
// where = 1;
// }
// else {
// hpos = GConvertX(adj, NPC, USER, dd);
// where = 0;
// }
// if (isExpression(sub))
// GMMathText(VECTOR_ELT(sub, 0), 1, vpos, where,
// hpos, 0, 0.0, dd);
// else {
// n = length(sub);
// for (i = 0; i < n; i++) {
// string = STRING_ELT(sub, i);
// if(string != NA_STRING)
// GMtext(CHAR(string), getCharCE(string), 1, vpos, where,
// hpos, 0, 0.0, dd);
// }
// }
// UNPROTECT(1);
// }
// if (xlab != R_NilValue) {
// cex = gpptr(dd)->cexlab;
// col = gpptr(dd)->collab;
// font = gpptr(dd)->fontlab;
// /* GetTextArg may coerce, so protect the result */
// GetTextArg(call, xlab, &xlab, &col, &cex, &font);
// PROTECT(xlab);
// gpptr(dd)->cex = gpptr(dd)->cexbase * cex;
// gpptr(dd)->col = col;
// gpptr(dd)->font = font;
// if (R_FINITE(line))
// vpos = line;
// else
// vpos = gpptr(dd)->mgp[0];
// if (outer) {
// hpos = adj;
// where = 1;
// }
// else {
// hpos = GConvertX(adj, NPC, USER, dd);
// where = 0;
// }
// if (isExpression(xlab))
// GMMathText(VECTOR_ELT(xlab, 0), 1, vpos, where,
// hpos, 0, 0.0, dd);
// else {
// n = length(xlab);
// for (i = 0; i < n; i++) {
// string = STRING_ELT(xlab, i);
// if(string != NA_STRING)
// GMtext(CHAR(string), getCharCE(string), 1, vpos + i,
// where, hpos, 0, 0.0, dd);
// }
// }
// UNPROTECT(1);
// }
// if (ylab != R_NilValue) {
// cex = gpptr(dd)->cexlab;
// col = gpptr(dd)->collab;
// font = gpptr(dd)->fontlab;
// /* GetTextArg may coerce, so protect the result */
// GetTextArg(call, ylab, &ylab, &col, &cex, &font);
// PROTECT(ylab);
// gpptr(dd)->cex = gpptr(dd)->cexbase * cex;
// gpptr(dd)->col = col;
// gpptr(dd)->font = font;
// if (R_FINITE(line))
// vpos = line;
// else
// vpos = gpptr(dd)->mgp[0];
// if (outer) {
// hpos = adj;
// where = 1;
// }
// else {
// hpos = GConvertY(adj, NPC, USER, dd);
// where = 0;
// }
// if (isExpression(ylab))
// GMMathText(VECTOR_ELT(ylab, 0), 2, vpos, where,
// hpos, 0, 0.0, dd);
// else {
// n = length(ylab);
// for (i = 0; i < n; i++) {
// string = STRING_ELT(ylab, i);
// if(string != NA_STRING)
// GMtext(CHAR(string), getCharCE(string), 2, vpos - i,
// where, hpos, 0, 0.0, dd);
// }
// }
// UNPROTECT(1);
// }
//
dd.restoreParameters();
}