From d9566dd5583789928ac9c2d38dc5605950cc082e Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Sun, 25 Jul 2021 23:46:31 +0200 Subject: [PATCH] [fixes #969] Switched right/left tab + switched checkbox position + mirrored right side decal --- core/resources/l10n/messages.properties | 8 ++++---- .../gui/configdialog/AppearancePanel.java | 16 ++++++++-------- .../gui/figure3d/geometry/FinRenderer.java | 12 +++++++++--- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 86757cfd9..6faa2e52e 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -809,14 +809,14 @@ AppearanceCfg.lbl.texture.offset = Offset: AppearanceCfg.lbl.texture.center = Center: AppearanceCfg.lbl.texture.rotation = Rotation: AppearanceCfg.lbl.texture.repeat = Repeat: -AppearanceCfg.lbl.InsideSameAsOutside = Same as outside +AppearanceCfg.lbl.InsideSameAsOutside = Same as inside AppearanceCfg.lbl.LeftSideSameAsRightSide = Same as right side AppearanceCfg.lbl.ttip.InsideSameAsOutside = Use the same appearance for the inside as for the outside -AppearanceCfg.lbl.ttip.LeftSideSameAsRightSide = Use the same appearance for the left side as for the right side +AppearanceCfg.lbl.ttip.LeftSideSameAsRightSide = Use the same appearance for the right side as for the left side AppearanceCfg.lbl.EdgesSameAsInside = Use inside appearance for edges -AppearanceCfg.lbl.EdgesSameAsLeftSide = Use left side appearance for edges +AppearanceCfg.lbl.EdgesSameAsRightSide = Use right side appearance for edges AppearanceCfg.lbl.ttip.EdgesSameAsInside = Use the inside appearance (checked) or outside appearance (unchecked) for the edges -AppearanceCfg.lbl.ttip.EdgesSameAsLeftSide = Use the left side appearance (checked) or right side appearance (unchecked) for the edges +AppearanceCfg.lbl.ttip.EdgesSameAsRightSide = Use the right side appearance (checked) or left side appearance (unchecked) for the edges ! Texture Wrap Modes TextureWrap.Repeat = Repeat diff --git a/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java b/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java index 9149f995c..08a5b5615 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java @@ -313,10 +313,10 @@ public class AppearancePanel extends JPanel { // Get translator keys String tr_outside, tr_inside, tr_edges, tr_edges_ttip; if (c instanceof FinSet) { - tr_outside = "RocketCompCfg.tab.RightSide"; - tr_inside = "RocketCompCfg.tab.LeftSide"; - tr_edges = "AppearanceCfg.lbl.EdgesSameAsLeftSide"; - tr_edges_ttip = "AppearanceCfg.lbl.ttip.EdgesSameAsLeftSide"; + tr_outside = "RocketCompCfg.tab.LeftSide"; + tr_inside = "RocketCompCfg.tab.RightSide"; + tr_edges = "AppearanceCfg.lbl.EdgesSameAsRightSide"; + tr_edges_ttip = "AppearanceCfg.lbl.ttip.EdgesSameAsRightSide"; } else { tr_outside = "RocketCompCfg.tab.Outside"; @@ -418,9 +418,9 @@ public class AppearancePanel extends JPanel { }); materialDefault.setText(trans.get("AppearanceCfg.lbl.Usedefault")); if (insideBuilder) - panel.add(materialDefault); - else panel.add(materialDefault, "wrap"); + else + panel.add(materialDefault); // Get translation keys String tr_insideOutside, tr_insideOutside_ttip; @@ -433,8 +433,8 @@ public class AppearancePanel extends JPanel { tr_insideOutside_ttip = "AppearanceCfg.lbl.ttip.InsideSameAsOutside"; } - // Custom inside color - if (insideBuilder) { + // Custom inside color checkbox on outside tab + if (!insideBuilder) { InsideColorComponentHandler handler = ((InsideColorComponent)c).getInsideColorComponentHandler(); BooleanModel b = new BooleanModel(handler.isInsideSameAsOutside()); JCheckBox customInside = new JCheckBox(b); diff --git a/swing/src/net/sf/openrocket/gui/figure3d/geometry/FinRenderer.java b/swing/src/net/sf/openrocket/gui/figure3d/geometry/FinRenderer.java index 1fb457e1e..a7e526394 100644 --- a/swing/src/net/sf/openrocket/gui/figure3d/geometry/FinRenderer.java +++ b/swing/src/net/sf/openrocket/gui/figure3d/geometry/FinRenderer.java @@ -23,7 +23,13 @@ public class FinRenderer { BoundingBox bounds = finSet.getInstanceBoundingBox(); gl.glMatrixMode(GL.GL_TEXTURE); gl.glPushMatrix(); - gl.glScaled(1 / (bounds.max.x - bounds.min.x), 1 / (bounds.max.y - bounds.min.y), 0); + // Mirror the right side fin texture to avoid e.g. mirrored decal text + if (which == Surface.INSIDE) { + gl.glScaled(-1 / (bounds.max.x - bounds.min.x), 1 / (bounds.max.y - bounds.min.y), 0); + } + else { + gl.glScaled(1 / (bounds.max.x - bounds.min.x), 1 / (bounds.max.y - bounds.min.y), 0); + } gl.glTranslated(-bounds.min.x, -bounds.min.y - finSet.getBodyRadius(), 0); gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); @@ -62,7 +68,7 @@ public class FinRenderer { GLU.gluTessCallback(tobj, GLU.GLU_TESS_END, cb); // fin side: +z - if (which == Surface.OUTSIDE) { + if (which == Surface.INSIDE) { // Right side GLU.gluTessBeginPolygon(tobj, null); GLU.gluTessBeginContour(tobj); gl.glNormal3f(0, 0, 1); @@ -78,7 +84,7 @@ public class FinRenderer { } // fin side: -z - if (which == Surface.INSIDE) { + if (which == Surface.OUTSIDE) { // Left side GLU.gluTessBeginPolygon(tobj, null); GLU.gluTessBeginContour(tobj); gl.glNormal3f(0, 0, -1);