From f3ed8d1a7cd3606315648f1b6ecd216210d5ebf0 Mon Sep 17 00:00:00 2001 From: bancika Date: Thu, 13 Jan 2011 18:50:27 +0000 Subject: [PATCH] tweak colors --- .../DIYLC/config.xml | 8 +++--- .../DIYLC/library/main.jar | Bin 514048 -> 513922 bytes .../src/org/diylc/common/IComponentFiler.java | 8 ++++++ .../src/org/diylc/common/IPlugInPort.java | 8 ++++-- .../components/AbstractLeadedComponent.java | 16 +++++------- .../org/diylc/plugins/canvas/CanvasPanel.java | 6 ++--- .../plugins/file/ProjectDrawingProvider.java | 10 ++++++-- .../diylc/plugins/file/ProjectPreview.java | 8 +++--- .../diylc/presenter/ComponentZOrderFiler.java | 23 +++++++++++++++++ .../src/org/diylc/presenter/Presenter.java | 18 ++++++++----- .../electromechanical/MiniToggleSwitch.java | 24 ++++++++---------- .../components/semiconductors/DIL_IC.java | 22 ++++++---------- 12 files changed, 92 insertions(+), 59 deletions(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IComponentFiler.java create mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentZOrderFiler.java diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml index d6460070..6b58cd31 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml @@ -6,14 +6,14 @@ K - - lastPath - C:\Documents and Settings\Branislav Stojkovic\Desktop - metric true + + lastPath + C:\Documents and Settings\Branislav Stojkovic\Desktop + default.org.diylc.components.semiconductors.DIL_IC:Value LM366 diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar index 473a0b164a915c0f18115a25e8098b159a9605c9..6831326f5910c6362e7fe02c5cacd63a9b6f3160 100644 GIT binary patch delta 14134 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 AbN~PV diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IComponentFiler.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IComponentFiler.java new file mode 100644 index 00000000..c1647cdb --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IComponentFiler.java @@ -0,0 +1,8 @@ +package org.diylc.common; + +import org.diylc.core.IDIYComponent; + +public interface IComponentFiler { + + boolean testComponent(IDIYComponent component); +} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java index 27106901..750d9044 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java @@ -83,11 +83,15 @@ public interface IPlugInPort { Map> getComponentTypes(); /** - * Draws project on the provided {@link Graphics2D}. + * Draws project on the provided {@link Graphics2D}. If the provided filter + * is not null, it will be used to filter the components that are shown. * * @param g2d + * @param drawOptions + * specific drawing options + * @param filter */ - void draw(Graphics2D g2d, Set drawProperties); + void draw(Graphics2D g2d, Set drawOptions, IComponentFiler filter); /** * Injects a custom GUI panels provided by the plug-in and desired position diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java index b6608b0e..8684a7f9 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java @@ -71,16 +71,14 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp (points[0].y + points[1].y - shapeRect.height) / 2); g2d.rotate(theta, shapeRect.width / 2, shapeRect.height / 2); // Draw body. - if (componentState != ComponentState.DRAGGING) { - Composite oldComposite = g2d.getComposite(); - if (alpha < MAX_ALPHA) { - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha - / MAX_ALPHA)); - } - g2d.setColor(bodyColor); - g2d.fill(shape); - g2d.setComposite(oldComposite); + Composite oldComposite = g2d.getComposite(); + if (alpha < MAX_ALPHA) { + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha + / MAX_ALPHA)); } + g2d.setColor(bodyColor); + g2d.fill(shape); + g2d.setComposite(oldComposite); g2d.setStroke(new BasicStroke(1)); g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasPanel.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasPanel.java index 1bb2a2ec..822b8d93 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasPanel.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/canvas/CanvasPanel.java @@ -107,7 +107,7 @@ class CanvasPanel extends JComponent implements Autoscroll { bufferImage = createImage(getWidth(), getHeight()); } Graphics2D g2d = (Graphics2D) bufferImage.getGraphics(); - plugInPort.draw(g2d, drawOptions); + plugInPort.draw(g2d, drawOptions, null); } @Override @@ -119,7 +119,7 @@ class CanvasPanel extends JComponent implements Autoscroll { createBufferImage(); } else { Graphics2D g2d = (Graphics2D) bufferImage.getGraphics(); - plugInPort.draw(g2d, drawOptions); + plugInPort.draw(g2d, drawOptions, null); } if (USE_HARDWARE_ACCELLERATION) { VolatileImage volatileImage = (VolatileImage) bufferImage; @@ -139,7 +139,7 @@ class CanvasPanel extends JComponent implements Autoscroll { } while (volatileImage == null || volatileImage.contentsLost()); } else { Graphics2D g2d = (Graphics2D) bufferImage.getGraphics(); - plugInPort.draw(g2d, drawOptions); + plugInPort.draw(g2d, drawOptions, null); g.drawImage(bufferImage, 0, 0, this); bufferImage.flush(); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectDrawingProvider.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectDrawingProvider.java index 0c537e44..ad34afab 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectDrawingProvider.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectDrawingProvider.java @@ -6,6 +6,7 @@ import java.awt.Graphics2D; import java.util.EnumSet; import org.diylc.common.DrawOption; +import org.diylc.common.IComponentFiler; import org.diylc.common.IPlugInPort; import com.diyfever.gui.IDrawingProvider; @@ -18,7 +19,7 @@ import com.diyfever.gui.IDrawingProvider; */ public class ProjectDrawingProvider implements IDrawingProvider { - IPlugInPort plugInPort; + private IPlugInPort plugInPort; public ProjectDrawingProvider(IPlugInPort plugInPort) { super(); @@ -27,7 +28,12 @@ public class ProjectDrawingProvider implements IDrawingProvider { @Override public void draw(Graphics g) { - plugInPort.draw((Graphics2D) g, EnumSet.of(DrawOption.ZOOM, DrawOption.ANTIALIASING)); + plugInPort.draw((Graphics2D) g, EnumSet.of(DrawOption.ZOOM, DrawOption.ANTIALIASING), null); + } + + public void draw(Graphics g, IComponentFiler filter) { + plugInPort.draw((Graphics2D) g, EnumSet.of(DrawOption.ZOOM, DrawOption.ANTIALIASING), + filter); } @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectPreview.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectPreview.java index 8d6fe1d1..64e24957 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectPreview.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/ProjectPreview.java @@ -132,14 +132,14 @@ public class ProjectPreview extends JPanel implements PropertyChangeListener, IF zoomRatio = rect.getHeight() / d.getHeight(); } // d.setSize(d.getWidth() * zoomRatio, d.getHeight() * zoomRatio); - int x = (int) (rect.getWidth() - d.getWidth() * zoomRatio) / 2; - int y = (int) (rect.getHeight() - d.getHeight() * zoomRatio) / 2; +// int x = (int) (rect.getWidth() - d.getWidth() * zoomRatio) / 2; +// int y = (int) (rect.getHeight() - d.getHeight() * zoomRatio) / 2; // System.out.println(x + "," + y); - g2d.translate(x, y); +// g2d.translate(x, y); g2d.scale(zoomRatio, zoomRatio); - presenter.draw(g2d, EnumSet.noneOf(DrawOption.class)); + presenter.draw(g2d, EnumSet.noneOf(DrawOption.class), null); g2d.setColor(Color.black); g2d.drawRect(0, 0, d.width - (int) (1 / zoomRatio), d.height - (int) (1 / zoomRatio)); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentZOrderFiler.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentZOrderFiler.java new file mode 100644 index 00000000..7ff1ab09 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentZOrderFiler.java @@ -0,0 +1,23 @@ +package org.diylc.presenter; + +import org.diylc.common.ComponentType; +import org.diylc.common.IComponentFiler; +import org.diylc.core.IDIYComponent; + +public class ComponentZOrderFiler implements IComponentFiler { + + private int zOrder; + + public ComponentZOrderFiler(int zOrder) { + super(); + this.zOrder = zOrder; + } + + @SuppressWarnings("unchecked") + @Override + public boolean testComponent(IDIYComponent component) { + ComponentType componentType = ComponentProcessor.getInstance().createComponentTypeFrom( + (Class>) component.getClass()); + return Math.round(componentType.getZOrder()) == zOrder; + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java index db27e4ac..e715ad79 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java @@ -8,7 +8,6 @@ import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.RenderingHints; -import java.awt.geom.AffineTransform; import java.awt.geom.Area; import java.awt.geom.Point2D; import java.lang.reflect.Modifier; @@ -31,6 +30,7 @@ import org.diylc.common.ComponentSelection; import org.diylc.common.ComponentType; import org.diylc.common.DrawOption; import org.diylc.common.EventType; +import org.diylc.common.IComponentFiler; import org.diylc.common.IPlugIn; import org.diylc.common.IPlugInPort; import org.diylc.common.PropertyWrapper; @@ -215,7 +215,7 @@ public class Presenter implements IPlugInPort { } @Override - public void draw(Graphics2D g2d, Set drawOptions) { + public void draw(Graphics2D g2d, Set drawOptions, IComponentFiler filter) { if (currentProject == null) { return; } @@ -227,7 +227,7 @@ public class Presenter implements IPlugInPort { RenderingHints.VALUE_ANTIALIAS_ON); } - AffineTransform initialTx = g2d.getTransform(); +// AffineTransform initialTx = g2d.getTransform(); Dimension d = getCanvasDimensions(drawOptions.contains(DrawOption.ZOOM)); g2dWrapper.setColor(Constants.CANVAS_COLOR); @@ -259,6 +259,10 @@ public class Presenter implements IPlugInPort { componentAreaMap.clear(); if (components != null) { for (IDIYComponent component : components) { + // Do not draw the component if it's filtered out. + if (filter != null && !filter.testComponent(component)) { + continue; + } g2dWrapper.startedDrawingComponent(); ComponentState state = ComponentState.NORMAL; if (drawOptions.contains(DrawOption.SELECTION) @@ -299,10 +303,10 @@ public class Presenter implements IPlugInPort { // Go back to the original transformation and zoom in to draw the // selection rectangle and other similar elements. - g2d.setTransform(initialTx); - if ((drawOptions.contains(DrawOption.ZOOM)) && (Math.abs(1.0 - zoomLevel) > 1e-4)) { - g2d.scale(zoomLevel, zoomLevel); - } +// g2d.setTransform(initialTx); +// if ((drawOptions.contains(DrawOption.ZOOM)) && (Math.abs(1.0 - zoomLevel) > 1e-4)) { +// g2d.scale(zoomLevel, zoomLevel); +// } // At the end draw selection rectangle if needed. if (drawOptions.contains(DrawOption.SELECTION) && (selectionRect != null)) { diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java index 678d160b..93e74f87 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java @@ -157,16 +157,14 @@ public class MiniToggleSwitch extends AbstractTransparentComponent { g2d.setColor(PIN_BORDER_COLOR); g2d.drawRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); } - if (componentState != ComponentState.DRAGGING) { - Composite oldComposite = g2d.getComposite(); - if (alpha < MAX_ALPHA) { - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha - / MAX_ALPHA)); - } - g2d.setColor(BODY_COLOR); - g2d.fill(getBody()); - g2d.setComposite(oldComposite); + Composite oldComposite = g2d.getComposite(); + if (alpha < MAX_ALPHA) { + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha + / MAX_ALPHA)); } + g2d.setColor(BODY_COLOR); + g2d.fill(getBody()); + g2d.setComposite(oldComposite); g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : BORDER_COLOR); g2d.setStroke(new BasicStroke()); g2d.draw(getBody()); // Draw label. g2d.setFont(Constants.LABEL_FONT); - if (componentState == ComponentState.DRAGGING) { - g2d.setColor(BORDER_COLOR); - } else { - g2d.setColor(LABEL_COLOR); - } + g2d.setColor(LABEL_COLOR); FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont()); Rectangle2D rect = fontMetrics.getStringBounds(getName(), g2d); int textHeight = (int) (rect.getHeight());