Fix .ork file indentation for appearance

This commit is contained in:
SiboVG 2022-10-19 23:07:34 +02:00
parent 9f5fb060d2
commit 3daa050d5f
2 changed files with 28 additions and 18 deletions

View File

@ -46,6 +46,7 @@ public class OpenRocketSaver extends RocketSaver {
private static final String METHOD_PACKAGE = "net.sf.openrocket.file.openrocket.savers";
private static final String METHOD_SUFFIX = "Saver";
public static final String INDENT = " ";
// Estimated storage used by different portions
@ -636,10 +637,7 @@ public class OpenRocketSaver extends RocketSaver {
dest.write("\n");
return;
}
String s = "";
for (int i = 0; i < indent; i++)
s = s + " ";
s = s + str + "\n";
String s = INDENT.repeat(Math.max(0, indent)) + str + "\n";
dest.write(s);
}

View File

@ -9,6 +9,7 @@ import java.util.Map;
import net.sf.openrocket.appearance.Appearance;
import net.sf.openrocket.appearance.Decal;
import net.sf.openrocket.appearance.Decal.EdgeMode;
import net.sf.openrocket.file.openrocket.OpenRocketSaver;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.material.Material;
import net.sf.openrocket.motor.Motor;
@ -57,8 +58,8 @@ public class RocketComponentSaver {
Appearance ap_in = handler.getInsideAppearance();
if (ap_in != null) {
elements.add("<inside-appearance>");
elements.add("<edgesSameAsInside>" + handler.isEdgesSameAsInside() + "</edgesSameAsInside>");
elements.add("<insideSameAsOutside>" + handler.isSeparateInsideOutside() + "</insideSameAsOutside>");
appendElement(elements, "edgesSameAsInside", handler.isEdgesSameAsInside(), 1);
appendElement(elements, "insideSameAsOutside", handler.isSeparateInsideOutside(), 1);
buildAppearanceElements(elements, ap_in);
elements.add("</inside-appearance>");
}
@ -67,7 +68,7 @@ public class RocketComponentSaver {
// Save color and line style if significant
if (!(c instanceof Rocket || c instanceof ComponentAssembly)) {
Color color = c.getColor();
emitColor("color", elements, color);
emitColor("color", elements, color, 0);
LineStyle style = c.getLineStyle();
if (style != null) {
@ -154,21 +155,21 @@ public class RocketComponentSaver {
private void buildAppearanceElements(List<String> elements, Appearance a) {
Color paint = a.getPaint();
emitColor("paint", elements, paint);
elements.add("<shine>" + a.getShine() + "</shine>");
emitColor("paint", elements, paint, 1);
appendElement(elements, "shine", a.getShine(), 1);
Decal decal = a.getTexture();
if (decal != null) {
String name = decal.getImage().getName();
double rotation = decal.getRotation();
EdgeMode edgeMode = decal.getEdgeMode();
elements.add("<decal name=\"" + TextUtil.escapeXML(name) + "\" rotation=\"" + rotation + "\" edgemode=\"" + edgeMode.name() + "\">");
elements.add(OpenRocketSaver.INDENT + "<decal name=\"" + TextUtil.escapeXML(name) + "\" rotation=\"" + rotation + "\" edgemode=\"" + edgeMode.name() + "\">");
Coordinate center = decal.getCenter();
elements.add("<center x=\"" + center.x + "\" y=\"" + center.y + "\"/>");
elements.add(OpenRocketSaver.INDENT.repeat(2) + "<center x=\"" + center.x + "\" y=\"" + center.y + "\"/>");
Coordinate offset = decal.getOffset();
elements.add("<offset x=\"" + offset.x + "\" y=\"" + offset.y + "\"/>");
elements.add(OpenRocketSaver.INDENT.repeat(2) + "<offset x=\"" + offset.x + "\" y=\"" + offset.y + "\"/>");
Coordinate scale = decal.getScale();
elements.add("<scale x=\"" + scale.x + "\" y=\"" + scale.y + "\"/>");
elements.add("</decal>");
elements.add(OpenRocketSaver.INDENT.repeat(2) + "<scale x=\"" + scale.x + "\" y=\"" + scale.y + "\"/>");
elements.add(OpenRocketSaver.INDENT + "</decal>");
}
}
@ -268,12 +269,11 @@ public class RocketComponentSaver {
return elements;
}
private final static void emitColor(String elementName, List<String> elements, Color color) {
private final static void emitColor(String elementName, List<String> elements, Color color, int indents) {
if (color != null) {
elements.add("<" + elementName + " red=\"" + color.getRed() + "\" green=\"" + color.getGreen()
elements.add(OpenRocketSaver.INDENT.repeat(Math.max(0, indents)) + "<" + elementName + " red=\"" + color.getRed() + "\" green=\"" + color.getGreen()
+ "\" blue=\"" + color.getBlue() + "\" alpha=\"" + color.getAlpha() + "\"/>");
}
}
protected static void emitDouble( final List<String> elements, final String enclosingTag, final double value){
@ -300,8 +300,20 @@ public class RocketComponentSaver {
return buf.toString();
}
protected static void appendElement( final List<String> elements, final String openTag, final String closeTag, final String elementValue, final int indents){
elements.add(OpenRocketSaver.INDENT.repeat(Math.max(0, indents)) + "<"+openTag+">" + elementValue + "</"+closeTag+">");
}
protected static void appendElement( final List<String> elements, final String tag, final double elementValue, final int indents){
appendElement(elements, tag, tag, Double.toString(elementValue), indents);
}
protected static void appendElement( final List<String> elements, final String tag, final boolean elementValue, final int indents){
appendElement(elements, tag, tag, Boolean.toString(elementValue), indents);
}
protected static void appendElement( final List<String> elements, final String openTag, final String closeTag, final String elementValue ){
elements.add("<"+openTag+">" + elementValue + "</"+closeTag+">");
appendElement(elements, openTag, closeTag, elementValue, 0);
}
}