From ef24664eaccab25655b1ec54e6725a238eb584c4 Mon Sep 17 00:00:00 2001 From: bancika Date: Mon, 22 Apr 2013 10:22:04 +0000 Subject: [PATCH] added breadboard component --- .../diylc-library/lib/diylc-core.jar | Bin 209260 -> 209507 bytes .../diylc/components/boards/Breadboard.java | 241 ++++++++++++++++++ 2 files changed, 241 insertions(+) create mode 100644 diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/boards/Breadboard.java diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/lib/diylc-core.jar b/ diy-layout-creator --username bancika@gmail.com/diylc-library/lib/diylc-core.jar index d663714bcae3d1ec10aed0f26de55ba98a09ac2f..360787427a8f3f8ac28d4c436bcaefc528402fe9 100644 GIT binary patch delta 25118 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

%IWQ&TCYvsQdY`vHbNa$<4Y!{Su0UVEJ)yb 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 { + + private static final long serialVersionUID = 1L; + + public static Color FILL_COLOR = Color.white; + public static Color BORDER_COLOR = Color.black; + public static Size BODY_ARC = new Size(3d, SizeUnit.mm); + public static Color SELECTION_COLOR = Color.red; + public static Color HOLE_COLOR = Color.decode("#EEEEEE"); + + public static Color PLUS_COLOR = Color.red; + public static Color MINUS_COLOR = Color.blue; + + public static float COORDINATE_FONT_SIZE = 9f; + public static Color COORDINATE_COLOR = Color.gray.brighter(); + + public static Size HOLE_SIZE = new Size(1.5, SizeUnit.mm); + public static Size HOLE_ARC = new Size(1d, SizeUnit.mm); + + protected Point point = new Point(0, 0); + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, + boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { + if (checkPointsClipped(g2d.getClip())) { + return; + } + + int bodyArc = (int) BODY_ARC.convertToPixels(); + double spacing = project.getGridSpacing().convertToPixels(); + + // draw body + g2d.setColor(FILL_COLOR); + int width = (int) (23 * project.getGridSpacing().convertToPixels()); + int height = (int) (31 * project.getGridSpacing().convertToPixels()); + g2d.fillRoundRect(point.x, point.y, width, height, bodyArc, bodyArc); + g2d.setColor(componentState == ComponentState.SELECTED + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : BORDER_COLOR); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); + g2d.drawRoundRect(point.x, point.y, width, height, bodyArc, bodyArc); + + drawingObserver.stopTracking(); + + // draw lines + g2d.setColor(PLUS_COLOR); + g2d.drawLine((int) (point.x + spacing), (int) (point.y + spacing), + (int) (point.x + spacing), (int) (point.y + 30 * spacing)); + g2d.drawLine((int) (point.x + 19 * spacing), (int) (point.y + spacing), + (int) (point.x + 19 * spacing), (int) (point.y + 30 * spacing)); + g2d.setColor(MINUS_COLOR); + g2d.drawLine((int) (point.x + 4 * spacing), (int) (point.y + spacing), + (int) (point.x + 4 * spacing), (int) (point.y + 30 * spacing)); + g2d.drawLine((int) (point.x + 22 * spacing), (int) (point.y + spacing), + (int) (point.x + 22 * spacing), (int) (point.y + 30 * spacing)); + + int holeSize = getClosestOdd(HOLE_SIZE.convertToPixels()); + int holeArc = (int) HOLE_ARC.convertToPixels(); + + g2d.setFont(LABEL_FONT.deriveFont(COORDINATE_FONT_SIZE)); + byte a = "a".getBytes()[0]; + + // draw main holes + for (int section = 0; section <= 1; section++) { + double offset = section * 7 * spacing; + + for (int y = 0; y < 30; y++) { + g2d.setColor(COORDINATE_COLOR); + int coordinateX; + if (section == 0) { + coordinateX = (int) (point.x + offset + 5.5 * spacing); + } else { + coordinateX = (int) (point.x + offset + 10.5 * spacing); + } + drawCenteredText(g2d, new Integer(y + 1).toString(), + coordinateX, (int) (point.y + (y + 1) * spacing), + section == 0 ? HorizontalAlignment.RIGHT + : HorizontalAlignment.LEFT, + VerticalAlignment.CENTER); + for (int x = 0; x < 5; x++) { + int holeX = (int) (point.x + offset + (x + 6) * spacing); + int holeY = (int) (point.y + (y + 1) * spacing); + g2d.setColor(HOLE_COLOR); + g2d.fillRoundRect(holeX - holeSize / 2, holeY - holeSize + / 2, holeSize, holeSize, holeArc, holeArc); + g2d.setColor(BORDER_COLOR); + g2d.drawRoundRect(holeX - holeSize / 2, holeY - holeSize + / 2, holeSize, holeSize, holeArc, holeArc); + + // Draw horizontal labels + if (y == 0) { + g2d.setColor(COORDINATE_COLOR); + drawCenteredText(g2d, new String(new byte[] { (byte) (a + + x + 5 * section) }), holeX, (int) (point.y), + HorizontalAlignment.CENTER, + VerticalAlignment.TOP); + drawCenteredText(g2d, new String(new byte[] { (byte) (a + + x + 5 * section) }), holeX, (int) (point.y + + spacing * 30 + COORDINATE_FONT_SIZE / 2), + HorizontalAlignment.CENTER, + VerticalAlignment.TOP); + } + } + } + } + + // draw side holes + for (int section = 0; section <= 1; section++) { + double offset = section * 18 * spacing; + for (int y = 0; y < 30; y++) { + for (int x = 0; x < 2; x++) { + if ((y + 1) % 5 == 0) + continue; + int holeX = (int) (point.x + offset + (x + 2) * spacing); + int holeY = (int) (point.y + (y + 1 + 0.5) * spacing); + g2d.setColor(HOLE_COLOR); + g2d.fillRoundRect(holeX - holeSize / 2, holeY - holeSize + / 2, holeSize, holeSize, holeArc, holeArc); + g2d.setColor(BORDER_COLOR); + g2d.drawRoundRect(holeX - holeSize / 2, holeY - holeSize + / 2, holeSize, holeSize, holeArc, holeArc); + } + } + } + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int factor = 32 / width; + int arc = 4 / factor; + g2d.setColor(FILL_COLOR); + g2d.fillRect(2 / factor, 2 / factor, width - 4 / factor, height - 4 + / factor); + g2d.setColor(BORDER_COLOR); + g2d.drawRect(2 / factor, 2 / factor, width - 4 / factor, height - 4 + / factor); + + g2d.setColor(HOLE_COLOR); + g2d.fillRoundRect(width / 3 - 2 / factor, width / 3 - 2 / factor, + getClosestOdd(5.0 / factor), getClosestOdd(5.0 / factor), arc, + arc); + g2d.setColor(BORDER_COLOR); + g2d.drawRoundRect(width / 3 - 2 / factor, width / 3 - 2 / factor, + getClosestOdd(5.0 / factor), getClosestOdd(5.0 / factor), arc, + arc); + + g2d.setColor(HOLE_COLOR); + g2d.fillRoundRect(2 * width / 3 - 2 / factor, width / 3 - 2 / factor, + getClosestOdd(5.0 / factor), getClosestOdd(5.0 / factor), arc, + arc); + g2d.setColor(BORDER_COLOR); + g2d.drawRoundRect(2 * width / 3 - 2 / factor, width / 3 - 2 / factor, + getClosestOdd(5.0 / factor), getClosestOdd(5.0 / factor), arc, + arc); + + g2d.setColor(HOLE_COLOR); + g2d.fillRoundRect(width / 3 - 2 / factor, 2 * width / 3 - 2 / factor, + getClosestOdd(5.0 / factor), getClosestOdd(5.0 / factor), arc, + arc); + g2d.setColor(BORDER_COLOR); + g2d.drawRoundRect(width / 3 - 2 / factor, 2 * width / 3 - 2 / factor, + getClosestOdd(5.0 / factor), getClosestOdd(5.0 / factor), arc, + arc); + + g2d.setColor(HOLE_COLOR); + g2d.fillRoundRect(2 * width / 3 - 2 / factor, 2 * width / 3 - 2 + / factor, getClosestOdd(5.0 / factor), + getClosestOdd(5.0 / factor), arc, arc); + g2d.setColor(BORDER_COLOR); + g2d.drawRoundRect(2 * width / 3 - 2 / factor, 2 * width / 3 - 2 + / factor, getClosestOdd(5.0 / factor), + getClosestOdd(5.0 / factor), arc, arc); + + g2d.setColor(MINUS_COLOR); + g2d.drawLine(width / 2, 2 / factor, width / 2, height - 4 + / factor); + } + + @Override + public int getControlPointCount() { + return 1; + } + + @Override + public Point getControlPoint(int index) { + return point; + } + + @Override + public boolean isControlPointSticky(int index) { + return false; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + @Override + public void setControlPoint(Point point, int index) { + this.point.setLocation(point); + } + + @Override + public Void getValue() { + return null; + } + + @Override + public void setValue(Void value) { + } + + @Deprecated + @Override + public String getName() { + return super.getName(); + } +}