From 248ca23a502074f6b57b43bd1ba4678ed3097970 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Fri, 22 Sep 2023 11:56:05 +0200 Subject: [PATCH] [#2344] Optimize UI color fetching --- .../gui/scalefigure/FinPointFigure.java | 44 +++++++++++++------ 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/scalefigure/FinPointFigure.java b/swing/src/net/sf/openrocket/gui/scalefigure/FinPointFigure.java index cf5662574..a8688bec7 100644 --- a/swing/src/net/sf/openrocket/gui/scalefigure/FinPointFigure.java +++ b/swing/src/net/sf/openrocket/gui/scalefigure/FinPointFigure.java @@ -1,6 +1,7 @@ package net.sf.openrocket.gui.scalefigure; import java.awt.BasicStroke; +import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; @@ -56,6 +57,12 @@ public class FinPointFigure extends AbstractScaleFigure { private Rectangle2D.Double[] finPointHandles = null; private int selectedIndex = -1; + + private static Color finPointBodyLineColor; + private static Color finPointGridMajorLineColor; + private static Color finPointGridMinorLineColor; + private static Color finPointPointColor; + private static Color finPointSelectedPointColor; public FinPointFigure(FreeformFinSet finset) { this.finset = finset; @@ -63,9 +70,18 @@ public class FinPointFigure extends AbstractScaleFigure { setBackground(GUIUtil.getUITheme().getBackgroundColor()); setOpaque(true); + updateColors(); updateFigure(); } + private static void updateColors() { + finPointBodyLineColor = GUIUtil.getUITheme().getFinPointBodyLineColor(); + finPointGridMajorLineColor = GUIUtil.getUITheme().getFinPointGridMajorLineColor(); + finPointGridMinorLineColor = GUIUtil.getUITheme().getFinPointGridMinorLineColor(); + finPointPointColor = GUIUtil.getUITheme().getFinPointPointColor(); + finPointSelectedPointColor = GUIUtil.getUITheme().getFinPointSelectedPointColor(); + } + @Override public Point getAutoZoomPoint(){ return new Point( Math.max(0, (originLocation_px.x - borderThickness_px.width)), 0); @@ -122,11 +138,11 @@ public class FinPointFigure extends AbstractScaleFigure { Line2D.Double line = new Line2D.Double(); for (Tick t : verticalTicks) { if (t.major) { - g2.setColor(GUIUtil.getUITheme().getFinPointGridMajorLineColor()); + g2.setColor(finPointGridMajorLineColor); line.setLine( t.value, y0, t.value, y1); g2.draw(line); }else{ - g2.setColor(GUIUtil.getUITheme().getFinPointGridMinorLineColor()); + g2.setColor(finPointGridMinorLineColor); line.setLine( t.value, y0, t.value, y1); g2.draw(line); } @@ -136,11 +152,11 @@ public class FinPointFigure extends AbstractScaleFigure { Tick[] horizontalTicks = unit.getTicks(y0, y1, MINOR_TICKS / this.scale, MAJOR_TICKS / this.scale); for (Tick t : horizontalTicks) { if (t.major) { - g2.setColor(GUIUtil.getUITheme().getFinPointGridMajorLineColor()); + g2.setColor(finPointGridMajorLineColor); line.setLine( x0, t.value, x1, t.value); g2.draw(line); }else{ - g2.setColor(GUIUtil.getUITheme().getFinPointGridMinorLineColor()); + g2.setColor(finPointGridMinorLineColor); line.setLine( x0, t.value, x1, t.value); g2.draw(line); } @@ -163,7 +179,7 @@ public class FinPointFigure extends AbstractScaleFigure { // setup lines final float bodyLineWidth = (float) ( LINE_WIDTH_BODY_PIXELS / scale ); g2.setStroke(new BasicStroke( bodyLineWidth, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)); - g2.setColor(GUIUtil.getUITheme().getFinPointBodyLineColor()); + g2.setColor(finPointBodyLineColor); Transition body = (Transition) finset.getParent(); final float xResolution_m = 0.01f; // distance between draw points, in meters @@ -213,7 +229,7 @@ public class FinPointFigure extends AbstractScaleFigure { final float bodyLineWidth = (float) ( LINE_WIDTH_BODY_PIXELS / scale ); g2.setStroke(new BasicStroke( bodyLineWidth, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)); - g2.setColor(GUIUtil.getUITheme().getFinPointBodyLineColor()); + g2.setColor(finPointBodyLineColor); g2.draw(shape); } @@ -230,12 +246,12 @@ public class FinPointFigure extends AbstractScaleFigure { final float finEdgeWidth_m = (float) (LINE_WIDTH_FIN_PIXELS / scale ); g2.setStroke(new BasicStroke( finEdgeWidth_m, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)); - g2.setColor(GUIUtil.getUITheme().getFinPointBodyLineColor()); + g2.setColor(finPointBodyLineColor); g2.draw(shape); } private void paintFinHandles(final Graphics2D g2) { - // excludes fin tab points + // Excludes fin tab points final Coordinate[] drawPoints = finset.getFinPoints(); // Fin point boxes @@ -244,7 +260,7 @@ public class FinPointFigure extends AbstractScaleFigure { final float boxEdgeWidth_m = (float) ( LINE_WIDTH_BOX_PIXELS / scale ); g2.setStroke(new BasicStroke( boxEdgeWidth_m, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)); - g2.setColor(GUIUtil.getUITheme().getFinPointPointColor()); + g2.setColor(finPointPointColor); finPointHandles = new Rectangle2D.Double[ drawPoints.length]; for (int currentIndex = 0; currentIndex < drawPoints.length; currentIndex++) { @@ -256,15 +272,15 @@ public class FinPointFigure extends AbstractScaleFigure { final Rectangle2D.Double selectedPointHighlight = new Rectangle2D.Double(c.x - selBoxHalfWidth, c.y - selBoxHalfWidth, selBoxWidth, selBoxWidth); - // switch to the highlight color - g2.setColor(GUIUtil.getUITheme().getFinPointSelectedPointColor()); + // Switch to the highlight color + g2.setColor(finPointSelectedPointColor); g2.draw(selectedPointHighlight); - // reset to the normal color - g2.setColor(GUIUtil.getUITheme().getFinPointPointColor()); + // Reset to the normal color + g2.setColor(finPointPointColor); } - // normal boxes + // Normal boxes finPointHandles[currentIndex] = new Rectangle2D.Double(c.x - boxHalfWidth, c.y - boxHalfWidth, boxWidth, boxWidth); g2.draw(finPointHandles[currentIndex]);