Hi, There is a feature request about implementing 1.5 wide lines for rendering https://sourceforge.net/p/jump-pilot/feature-requests/189/. User interface does not allow anything else than integers and I even had a look at the code. I got to think that java renderer could take sub-pixels widths but in OpenJUMP code widths are defined to be integers.
Am I right with my conclusion that sub-pixel line widths would be doable with java and also allowed in SLD standard but it would require some changes to how basic styles are implemented in OpenJUMP and also to SLD import/export handling? Reasoning: a) For java the line width is of type "float" https://docs.oracle.com/javase/1.5.0/docs/api/java/awt/BasicStroke.html?is-external=true BasicStroke public BasicStroke(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase) b) OpenJUMP accepts only integers as line width Test by hand editing an OpenJUMP project file <line enabled="true" width="4"> <pattern enabled="false">3</pattern> <color>125, 0, 0, 255</color> </line> Changing width to integer values is OK but a try with value 1.5 gives ava.lang.Exception: Loading project file 'C:\temp\poista\linew.jmp' failed with the error: For input string: "1.5". at org.openjump.core.ui.plugin.file.open.OpenProjectWizard.open(OpenProjectWizard.java:167) at org.openjump.core.ui.plugin.file.open.OpenProjectWizard.open(OpenProjectWizard.java:106) at org.openjump.core.ui.plugin.file.open.OpenProjectWizard.run(OpenProjectWizard.java:101) at org.openjump.core.ui.plugin.AbstractWizardPlugin.run(AbstractWizardPlugin.java:73) at com.vividsolutions.jump.workbench.ui.task.TaskMonitorManager$TaskWrapper.run(TaskMonitorManager.java:152) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NumberFormatException: For input string: "1.5" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.<init>(Unknown Source) at com.vividsolutions.jump.util.java2xml.XMLBinder$6.toJava(XMLBinder.java:161) at com.vividsolutions.jump.util.java2xml.XMLBinder.toJava(XMLBinder.java:373) at com.vividsolutions.jump.util.java2xml.XML2Java$1.attributeSpecFound(XML2Java.java:146) at com.vividsolutions.jump.util.java2xml.XMLBinder.visit(XMLBinder.java:366) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:75) at com.vividsolutions.jump.util.java2xml.XML2Java.access$000(XML2Java.java:39) at com.vividsolutions.jump.util.java2xml.XML2Java$1.fillerTagSpecFound(XML2Java.java:87) at com.vividsolutions.jump.util.java2xml.XML2Java$1.tagSpecFound(XML2Java.java:109) at com.vividsolutions.jump.util.java2xml.XMLBinder.visit(XMLBinder.java:360) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:75) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:217) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:165) at com.vividsolutions.jump.util.java2xml.XML2Java.setValueFromTag(XML2Java.java:239) at com.vividsolutions.jump.util.java2xml.XML2Java.setValuesFromTags(XML2Java.java:234) at com.vividsolutions.jump.util.java2xml.XML2Java.access$100(XML2Java.java:39) at com.vividsolutions.jump.util.java2xml.XML2Java$1.normalTagSpecFound(XML2Java.java:92) at com.vividsolutions.jump.util.java2xml.XML2Java$1.tagSpecFound(XML2Java.java:111) at com.vividsolutions.jump.util.java2xml.XMLBinder.visit(XMLBinder.java:360) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:75) at com.vividsolutions.jump.util.java2xml.XML2Java.access$000(XML2Java.java:39) at com.vividsolutions.jump.util.java2xml.XML2Java$1.fillerTagSpecFound(XML2Java.java:87) at com.vividsolutions.jump.util.java2xml.XML2Java$1.tagSpecFound(XML2Java.java:109) at com.vividsolutions.jump.util.java2xml.XMLBinder.visit(XMLBinder.java:360) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:75) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:217) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:165) at com.vividsolutions.jump.util.java2xml.XML2Java.setValueFromTag(XML2Java.java:239) at com.vividsolutions.jump.util.java2xml.XML2Java.setValuesFromTags(XML2Java.java:234) at com.vividsolutions.jump.util.java2xml.XML2Java.access$100(XML2Java.java:39) at com.vividsolutions.jump.util.java2xml.XML2Java$1.normalTagSpecFound(XML2Java.java:92) at com.vividsolutions.jump.util.java2xml.XML2Java$1.tagSpecFound(XML2Java.java:111) at com.vividsolutions.jump.util.java2xml.XMLBinder.visit(XMLBinder.java:360) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:75) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:217) at com.vividsolutions.jump.util.java2xml.XML2Java.setValueFromTag(XML2Java.java:239) at com.vividsolutions.jump.util.java2xml.XML2Java.setValuesFromTags(XML2Java.java:234) at com.vividsolutions.jump.util.java2xml.XML2Java.access$100(XML2Java.java:39) at com.vividsolutions.jump.util.java2xml.XML2Java$1.normalTagSpecFound(XML2Java.java:92) at com.vividsolutions.jump.util.java2xml.XML2Java$1.tagSpecFound(XML2Java.java:111) at com.vividsolutions.jump.util.java2xml.XMLBinder.visit(XMLBinder.java:360) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:75) at com.vividsolutions.jump.util.java2xml.XML2Java.access$000(XML2Java.java:39) at com.vividsolutions.jump.util.java2xml.XML2Java$1.fillerTagSpecFound(XML2Java.java:87) at com.vividsolutions.jump.util.java2xml.XML2Java$1.tagSpecFound(XML2Java.java:109) at com.vividsolutions.jump.util.java2xml.XMLBinder.visit(XMLBinder.java:360) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:75) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:217) at com.vividsolutions.jump.util.java2xml.XML2Java.read(XML2Java.java:57) at org.openjump.core.ui.plugin.file.open.OpenProjectWizard.open(OpenProjectWizard.java:124) ... 5 more Also SLDImported defines line width to be integer in http://jump-pilot.sourceforge.net/javadoc/openjump_javadoc/org/openjump/util/SLDImporter.StrokeStyle.html. However, according to SLD standard " Reference number of this OGC(r) document: OGC 05-077r4" fractional line widths are allowed: "The "stroke-width" SvgParameter element gives the absolute width (thickness) of a stroke in units of measure as defined in the LineSymbolizer encoded as a float. The default is 1.0. Fractional numbers are allowed (with a system-dependent interpretation) but negative numbers are not." -Jukka Rahkonen- ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk _______________________________________________ Jump-pilot-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
