[#2344] Optimize UI color fetching

This commit is contained in:
SiboVG 2023-09-22 11:56:05 +02:00
parent 2ce09e8f90
commit 248ca23a50

View File

@ -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]);