public static AbstractCanvasObject createShape(Element elt, Map<Location, Instance> pins) {
   String name = elt.getTagName();
   if (name.equals("circ-anchor") || name.equals("circ-origin")) {
     Location loc = getLocation(elt);
     AbstractCanvasObject ret = new AppearanceAnchor(loc);
     if (elt.hasAttribute("facing")) {
       Direction facing = Direction.parse(elt.getAttribute("facing"));
       ret.setValue(AppearanceAnchor.FACING, facing);
     }
     return ret;
   } else if (name.equals("circ-port")) {
     Location loc = getLocation(elt);
     String[] pinStr = elt.getAttribute("pin").split(",");
     Location pinLoc =
         Location.create(Integer.parseInt(pinStr[0].trim()), Integer.parseInt(pinStr[1].trim()));
     Instance pin = pins.get(pinLoc);
     if (pin == null) {
       return null;
     } else {
       return new AppearancePort(loc, pin);
     }
   } else {
     return SvgReader.createShape(elt);
   }
 }
Example #2
0
 private static AbstractCanvasObject createRectangle(Element elt) {
   int x = Integer.parseInt(elt.getAttribute("x"));
   int y = Integer.parseInt(elt.getAttribute("y"));
   int w = Integer.parseInt(elt.getAttribute("width"));
   int h = Integer.parseInt(elt.getAttribute("height"));
   if (elt.hasAttribute("rx")) {
     AbstractCanvasObject ret = new RoundRectangle(x, y, w, h);
     int rx = Integer.parseInt(elt.getAttribute("rx"));
     ret.setValue(DrawAttr.CORNER_RADIUS, Integer.valueOf(rx));
     return ret;
   } else {
     return new Rectangle(x, y, w, h);
   }
 }
Example #3
0
 public static AbstractCanvasObject createShape(Element elt) {
   String name = elt.getTagName();
   AbstractCanvasObject ret;
   if (name.equals("ellipse")) {
     ret = createOval(elt);
   } else if (name.equals("line")) {
     ret = createLine(elt);
   } else if (name.equals("path")) {
     ret = createPath(elt);
   } else if (name.equals("polyline")) {
     ret = createPolyline(elt);
   } else if (name.equals("polygon")) {
     ret = createPolygon(elt);
   } else if (name.equals("rect")) {
     ret = createRectangle(elt);
   } else if (name.equals("text")) {
     ret = createText(elt);
   } else {
     return null;
   }
   List<Attribute<?>> attrs = ret.getAttributes();
   if (attrs.contains(DrawAttr.PAINT_TYPE)) {
     String stroke = elt.getAttribute("stroke");
     String fill = elt.getAttribute("fill");
     if (stroke.equals("") || stroke.equals("none")) {
       ret.setValue(DrawAttr.PAINT_TYPE, DrawAttr.PAINT_FILL);
     } else if (fill.equals("none")) {
       ret.setValue(DrawAttr.PAINT_TYPE, DrawAttr.PAINT_STROKE);
     } else {
       ret.setValue(DrawAttr.PAINT_TYPE, DrawAttr.PAINT_STROKE_FILL);
     }
   }
   attrs = ret.getAttributes(); // since changing paintType could change it
   if (attrs.contains(DrawAttr.STROKE_WIDTH) && elt.hasAttribute("stroke-width")) {
     Integer width = Integer.valueOf(elt.getAttribute("stroke-width"));
     ret.setValue(DrawAttr.STROKE_WIDTH, width);
   }
   if (attrs.contains(DrawAttr.STROKE_COLOR)) {
     String color = elt.getAttribute("stroke");
     String opacity = elt.getAttribute("stroke-opacity");
     if (!color.equals("none")) {
       ret.setValue(DrawAttr.STROKE_COLOR, getColor(color, opacity));
     }
   }
   if (attrs.contains(DrawAttr.FILL_COLOR)) {
     String color = elt.getAttribute("fill");
     if (color.equals("")) color = "#000000";
     String opacity = elt.getAttribute("fill-opacity");
     if (!color.equals("none")) {
       ret.setValue(DrawAttr.FILL_COLOR, getColor(color, opacity));
     }
   }
   return ret;
 }