optimize drawing of semiconductors

This commit is contained in:
Bane Stojkovic
2025-05-03 21:49:01 +02:00
parent aa98f27de8
commit 24ee6b3a5f
8 changed files with 42 additions and 6 deletions
@@ -213,6 +213,9 @@ public class PCBTerminalBlock extends AbstractTransparentComponent<PCBTerminalBl
}
g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : getBodyColor());
g2d.fill(body[0]);
// Do not track these changes because the whole switch has been tracked
// so far.
drawingObserver.stopTracking();
g2d.setComposite(oldComposite);
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
Color finalBorderColor;
@@ -232,9 +235,7 @@ public class PCBTerminalBlock extends AbstractTransparentComponent<PCBTerminalBl
g2d.setColor(finalBorderColor);
g2d.draw(body[0]);
}
// Do not track these changes because the whole switch has been tracked
// so far.
drawingObserver.stopTracking();
// Draw lugs.
int circleDiameter = getClosestOdd((int) (getPitch().convertToPixels() * 3d / 5));
@@ -315,7 +315,9 @@ public class DIL_IC extends AbstractLabeledComponent<String> implements IGerberC
Rectangle2D rect = new Rectangle2D.Double(point.getX() - pinSize / 2,
point.getY() - pinSize / 2, pinSize, pinSize);
g2d.setColor(PIN_COLOR);
drawingObserver.startTracking();
g2d.fill(rect);
drawingObserver.stopTracking();
g2d.setColor(PIN_BORDER_COLOR);
g2d.draw(rect);
}
@@ -325,7 +327,9 @@ public class DIL_IC extends AbstractLabeledComponent<String> implements IGerberC
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : getBodyColor());
drawingObserver.startTracking();
g2d.fill(mainArea);
drawingObserver.stopTracking();
g2d.setComposite(oldComposite);
Color finalBorderColor;
@@ -356,8 +360,6 @@ public class DIL_IC extends AbstractLabeledComponent<String> implements IGerberC
}
}
drawingObserver.stopTracking();
// Draw label.
g2d.setFont(project.getFont());
@@ -308,6 +308,7 @@ public class SIL_IC extends AbstractTransparentComponent<String> implements IGer
}
g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : getBodyColor());
g2d.fill(mainArea);
drawingObserver.stopTracking();
g2d.setComposite(oldComposite);
Color finalBorderColor;
@@ -161,6 +161,8 @@ public class TransistorTO1 extends AbstractTransistorPackage {
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver) {
drawingObserver.stopTracking();
if (checkPointsClipped(g2d.getClip())) {
return;
}
@@ -184,7 +186,9 @@ public class TransistorTO1 extends AbstractTransistorPackage {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : bodyColor);
drawingObserver.startTracking();
g2d.fill(mainArea);
drawingObserver.stopTracking();
g2d.setComposite(oldComposite);
Color finalBorderColor;
@@ -183,6 +183,7 @@ public class TransistorTO126 extends AbstractTransistorPackage {
if (checkPointsClipped(g2d.getClip())) {
return;
}
drawingObserver.stopTracking();
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
@@ -211,7 +212,9 @@ public class TransistorTO126 extends AbstractTransistorPackage {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
g2d.setColor(finalPinBorderColor);
line = new Line2D.Double(point.getX(), point.getY(), point.getX() + leadLength - leadThickness / 2, point.getY());
drawingObserver.startTracking();
g2d.draw(line);
drawingObserver.stopTracking();
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
g2d.setColor(finalPinColor);
g2d.draw(line);
@@ -220,7 +223,9 @@ public class TransistorTO126 extends AbstractTransistorPackage {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
g2d.setColor(finalPinBorderColor);
line = new Line2D.Double(point.getX(), point.getY(), point.getX(), point.getY() + leadLength - leadThickness / 2);
drawingObserver.startTracking();
g2d.draw(line);
drawingObserver.stopTracking();
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
g2d.setColor(finalPinColor);
g2d.draw(line);
@@ -229,7 +234,9 @@ public class TransistorTO126 extends AbstractTransistorPackage {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
g2d.setColor(finalPinBorderColor);
line = new Line2D.Double(point.getX(), point.getY(), point.getX() - leadLength - leadThickness / 2, point.getY());
drawingObserver.startTracking();
g2d.draw(line);
drawingObserver.stopTracking();
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
g2d.setColor(finalPinColor);
g2d.draw(line);
@@ -238,7 +245,9 @@ public class TransistorTO126 extends AbstractTransistorPackage {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
g2d.setColor(finalPinBorderColor);
line = new Line2D.Double(point.getX(), point.getY(), point.getX(), point.getY() - leadLength);
drawingObserver.startTracking();
g2d.draw(line);
drawingObserver.stopTracking();
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
g2d.setColor(finalPinColor);
g2d.draw(line);
@@ -266,7 +275,9 @@ public class TransistorTO126 extends AbstractTransistorPackage {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : bodyColor);
g2d.fill(mainArea);
drawingObserver.startTracking();
g2d.fill(mainArea);
drawingObserver.stopTracking();
g2d.setComposite(oldComposite);
if (!outlineMode) {
@@ -210,6 +210,7 @@ public class TransistorTO220 extends AbstractTransistorPackage {
if (checkPointsClipped(g2d.getClip())) {
return;
}
drawingObserver.stopTracking();
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
@@ -238,7 +239,9 @@ public class TransistorTO220 extends AbstractTransistorPackage {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
g2d.setColor(finalPinBorderColor);
line = new Line2D.Double(point.getX(), point.getY(), point.getX() + leadLength - leadThickness / 2, point.getY());
drawingObserver.startTracking();
g2d.draw(line);
drawingObserver.stopTracking();
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
g2d.setColor(finalPinColor);
g2d.draw(line);
@@ -247,7 +250,9 @@ public class TransistorTO220 extends AbstractTransistorPackage {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
g2d.setColor(finalPinBorderColor);
line = new Line2D.Double(point.getX(), point.getY(), point.getX(), point.getY() + leadLength - leadThickness / 2);
drawingObserver.startTracking();
g2d.draw(line);
drawingObserver.stopTracking();
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
g2d.setColor(finalPinColor);
g2d.draw(line);
@@ -256,7 +261,9 @@ public class TransistorTO220 extends AbstractTransistorPackage {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
g2d.setColor(finalPinBorderColor);
line = new Line2D.Double(point.getX(), point.getY(), point.getX() - leadLength - leadThickness / 2, point.getY());
drawingObserver.startTracking();
g2d.draw(line);
drawingObserver.stopTracking();
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
g2d.setColor(finalPinColor);
g2d.draw(line);
@@ -265,7 +272,9 @@ public class TransistorTO220 extends AbstractTransistorPackage {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
g2d.setColor(finalPinBorderColor);
line = new Line2D.Double(point.getX(), point.getY(), point.getX(), point.getY() - leadLength);
drawingObserver.startTracking();
g2d.draw(line);
drawingObserver.stopTracking();
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
g2d.setColor(finalPinColor);
g2d.draw(line);
@@ -294,7 +303,9 @@ public class TransistorTO220 extends AbstractTransistorPackage {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : bodyColor);
drawingObserver.startTracking();
g2d.fill(mainArea);
drawingObserver.stopTracking();
Color finalTabColor;
if (outlineMode) {
finalTabColor = theme.getOutlineColor();
@@ -231,6 +231,7 @@ public class TransistorTO3 extends AbstractLabeledComponent<String> {
if (checkPointsClipped(g2d.getClip())) {
return;
}
drawingObserver.stopTracking();
int pinSize = (int) PIN_DIAMETER.convertToPixels() / 2 * 2;
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
@@ -251,7 +252,9 @@ public class TransistorTO3 extends AbstractLabeledComponent<String> {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : bodyColor);
drawingObserver.startTracking();
g2d.fill(mainArea);
drawingObserver.stopTracking();
g2d.setComposite(oldComposite);
Color finalBorderColor;
@@ -187,6 +187,7 @@ public class TransistorTO92 extends AbstractTransistorPackage {
if (checkPointsClipped(g2d.getClip())) {
return;
}
drawingObserver.stopTracking();
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
@@ -206,7 +207,9 @@ public class TransistorTO92 extends AbstractTransistorPackage {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : bodyColor);
drawingObserver.startTracking();
g2d.fill(mainArea);
drawingObserver.stopTracking();
g2d.setComposite(oldComposite);
Color finalBorderColor;
if (outlineMode) {