import java.io.File;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
import org.simantics.databoard.Bindings;
import org.simantics.db.Resource;
public class CreateSVGElement {
public static void createSVGElement(WriteGraph g, Resource diagram, String suffix, byte[] data, double mposX, double mposY) throws DatabaseException {
+ createSVGElement(g, diagram, suffix, data, mposX, mposY);
+ }
+
+ public static Resource createSVGElementR(WriteGraph g, Resource diagram, String suffix, byte[] data, double mposX, double mposY) throws DatabaseException {
Layer0 L0 = Layer0.getInstance(g);
DiagramResource DIA = DiagramResource.getInstance(g);
g.claimValue(transform, new double[] {1.0, 0.0, 0.0, 1.0, mposX, mposY}, Bindings.DOUBLE_ARRAY);
element = GraphUtils.create(g,
L0.InstanceOf, DIA.SVGElement,
- G2D.HasSVGDocument, new String(data),
+ G2D.HasSVGDocument, new String(data, StandardCharsets.UTF_8),
DIA.HasTransform, transform);
AddElement.claimFreshElementName(g, diagram, element);
} else if ("png".equals(suffix)) {
throw new DatabaseException("Unknown image format " + suffix);
OrderedSetUtils.addFirst(g, diagram, element);
g.claim(diagram, L0.ConsistsOf, element);
-
+ return element;
}
-
+
public static void importSVGElement(WriteGraph graph, Resource diagram, File file, double posX, double posY) throws DatabaseException, IOException {
-
+ importSVGElementR(graph, diagram, file, posX, posY);
+ }
+
+ public static Resource importSVGElementR(WriteGraph graph, Resource diagram, File file, double posX, double posY) throws DatabaseException, IOException {
final byte[] data = FileUtils.readFile(file);
- createSVGElement(graph, diagram, suffix(file.getName()), data, posX, posY);
+ return createSVGElementR(graph, diagram, suffix(file.getName()), data, posX, posY);
}
-
+
private static String suffix(String fileName) {
int len = fileName.length();
if(len < 3) return null;
else return fileName.substring(len-3,len).toLowerCase();
}
-
+
}