diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GPar.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GPar.java index f826ccd696f2f509374b4b9c2b072fa9ab75957c..2e46872077b1b9d058a76ababe52e67bcffe66bf 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GPar.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GPar.java @@ -264,7 +264,16 @@ public final class GPar { } private GridColor getGridColor(int listIndex) { - GridColor color = GridColorUtils.gridColorFromString(GridUtils.asString(data[listIndex], index)); + Object value = data[listIndex]; + String strValue = null; + if (value instanceof String) { + strValue = (String) value; + } else if (value instanceof RAbstractStringVector && ((RAbstractStringVector) value).getLength() > 0) { + strValue = ((RAbstractStringVector) value).getDataAt(listIndex % ((RAbstractStringVector) value).getLength()); + } else { + return GridColor.TRANSPARENT; + } + GridColor color = GridColorUtils.gridColorFromString(strValue); double alpha = asDouble(data[GP_ALPHA], index); if (alpha != 1.) { int newAlpha = Math.min(255, (int) (alpha * ((color.getAlpha() / 255.0) * 255))); diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GridColorUtils.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GridColorUtils.java index 939a90546e5b2cfcb1ef3155d6c352519e64fe16..9ab71e892308256b4dad68cca67dc32ed63df0b2 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GridColorUtils.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GridColorUtils.java @@ -34,6 +34,11 @@ public final class GridColorUtils { return parseHex(value); } + if (value.equals("NA")) { + // special case value, we want to check only for "NA", not "na". + return GridColor.TRANSPARENT; + } + Object result = findByName(value); if (result == null) { throw RError.error(RError.NO_CALLER, Message.GENERIC, "Invalid color '" + value + "'."); @@ -84,7 +89,6 @@ public final class GridColorUtils { static { NAMES.put("transparent", GridColor.TRANSPARENT); - NAMES.put("NA", GridColor.TRANSPARENT); NAMES.put("white", "#FFFFFF"); NAMES.put("aliceblue", "#F0F8FF"); NAMES.put("antiquewhite", "#FAEBD7");