/* ======================================================================== * PlantUML : a free UML diagram generator * ======================================================================== * * (C) Copyright 2009-2020, Arnaud Roques * * Project Info: http://plantuml.com * * If you like this project or if you find it useful, you can support us at: * * http://plantuml.com/patreon (only 1$ per month!) * http://plantuml.com/paypal * * This file is part of PlantUML. * * PlantUML is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PlantUML distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public * License for more details. * * You should have received a copy of the GNU General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA. * * * Original Author: Arnaud Roques * * */ package net.sourceforge.plantuml.svek; import java.awt.geom.Point2D; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import java.util.Locale; import net.sourceforge.plantuml.Log; public class SvekUtils { static public void traceString(final File f, String text) throws IOException { PrintWriter pw = null; try { Log.info("Creating intermediate file " + f.getAbsolutePath()); pw = new PrintWriter(new FileWriter(f)); pw.print(text); } finally { if (pw != null) { pw.close(); } } } static public double getValue(String svg, int starting, String varName) { final String varNameString = varName + "=\""; int p1 = svg.indexOf(varNameString, starting); if (p1 == -1) { throw new IllegalStateException(); } p1 += varNameString.length(); final int p2 = svg.indexOf('\"', p1); return Double.parseDouble(svg.substring(p1, p2)); } public static double getMaxX(List points) { double result = points.get(0).x; for (int i = 1; i < points.size(); i++) { if (points.get(i).x > result) { result = points.get(i).x; } } return result; } public static double getMinX(List points) { double result = points.get(0).x; for (int i = 1; i < points.size(); i++) { if (points.get(i).x < result) { result = points.get(i).x; } } return result; } public static Point2D.Double getMinXY(List points) { return new Point2D.Double(getMinX(points), getMinY(points)); } public static double getMaxY(List points) { double result = points.get(0).y; for (int i = 1; i < points.size(); i++) { if (points.get(i).y > result) { result = points.get(i).y; } } return result; } public static double getMinY(List points) { double result = points.get(0).y; for (int i = 1; i < points.size(); i++) { if (points.get(i).y < result) { result = points.get(i).y; } } return result; } public static void println(StringBuilder sb) { sb.append('\n'); } public static String pixelToInches(double pixel) { final double v = pixel / 72.0; return String.format(Locale.US, "%6.6f", v); } }