Changeset 6002 in josm for trunk/src/com/kitfox/svg/ShapeElement.java
- Timestamp:
- 2013-06-11T01:01:28+02:00 (13 years ago)
- File:
-
- 1 edited
-
trunk/src/com/kitfox/svg/ShapeElement.java (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/com/kitfox/svg/ShapeElement.java
r4256 r6002 1 1 /* 2 * ShapeElement.java 2 * SVG Salamander 3 * Copyright (c) 2004, Mark McKay 4 * All rights reserved. 3 5 * 6 * Redistribution and use in source and binary forms, with or 7 * without modification, are permitted provided that the following 8 * conditions are met: 4 9 * 5 * The Salamander Project - 2D and 3D graphics libraries in Java 6 * Copyright (C) 2004 Mark McKay 10 * - Redistributions of source code must retain the above 11 * copyright notice, this list of conditions and the following 12 * disclaimer. 13 * - Redistributions in binary form must reproduce the above 14 * copyright notice, this list of conditions and the following 15 * disclaimer in the documentation and/or other materials 16 * provided with the distribution. 7 17 * 8 * This library is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public 10 * License as published by the Free Software Foundation; either 11 * version 2.1 of the License, or (at your option) any later version. 12 * 13 * This library is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with this library; if not, write to the Free Software 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 * 22 * Mark McKay can be contacted at mark@kitfox.com. Salamander and other 23 * projects can be found at http://www.kitfox.com 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 21 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 22 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 23 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 27 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 29 * OF THE POSSIBILITY OF SUCH DAMAGE. 30 * 31 * Mark McKay can be contacted at mark@kitfox.com. Salamander and other 32 * projects can be found at http://www.kitfox.com 24 33 * 25 34 * Created on January 26, 2004, 5:21 PM … … 96 105 } 97 106 107 private Paint handleCurrentColor(StyleAttribute styleAttrib) throws SVGException 108 { 109 if (styleAttrib.getStringValue().equals("currentColor")) 110 { 111 StyleAttribute currentColorAttrib = new StyleAttribute(); 112 if (getStyle(currentColorAttrib.setName("color"))) 113 { 114 if (!currentColorAttrib.getStringValue().equals("none")) 115 { 116 return currentColorAttrib.getColorValue(); 117 } 118 } 119 return null; 120 } 121 else 122 { 123 return styleAttrib.getColorValue(); 124 } 125 } 126 98 127 protected void renderShape(Graphics2D g, Shape shape) throws SVGException 99 128 { … … 120 149 else 121 150 { 122 fillPaint = styleAttrib .getColorValue();151 fillPaint = handleCurrentColor(styleAttrib); 123 152 if (fillPaint == null) 124 153 { … … 130 159 131 160 SVGElement ele = diagram.getUniverse().getElement(uri); 132 fillPaint = ((FillElement)ele).getPaint(bounds, xform); 161 if (ele != null) 162 { 163 fillPaint = ((FillElement)ele).getPaint(bounds, xform); 164 } 133 165 } 134 166 } … … 156 188 else 157 189 { 158 strokePaint = styleAttrib .getColorValue();190 strokePaint = handleCurrentColor(styleAttrib); 159 191 if (strokePaint == null) 160 192 { … … 166 198 167 199 SVGElement ele = diagram.getUniverse().getElement(uri); 168 strokePaint = ((FillElement)ele).getPaint(bounds, xform); 200 if (ele != null) 201 { 202 strokePaint = ((FillElement)ele).getPaint(bounds, xform); 203 } 169 204 } 170 205 } … … 303 338 } 304 339 305 Shape strokeShape = stroke.createStrokedShape(shape); 340 Shape strokeShape; 341 AffineTransform cacheXform = g.getTransform(); 342 if (vectorEffect == VECTOR_EFFECT_NON_SCALING_STROKE) 343 { 344 strokeShape = cacheXform.createTransformedShape(shape); 345 strokeShape = stroke.createStrokedShape(strokeShape); 346 } 347 else 348 { 349 strokeShape = stroke.createStrokedShape(shape); 350 } 306 351 307 352 if (strokeOpacity <= 0) … … 309 354 //Do nothing 310 355 } 311 else if (strokeOpacity < 1f)356 else 312 357 { 313 358 Composite cachedComposite = g.getComposite(); 314 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, strokeOpacity)); 359 360 if (strokeOpacity < 1f) 361 { 362 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, strokeOpacity)); 363 } 364 365 if (vectorEffect == VECTOR_EFFECT_NON_SCALING_STROKE) 366 { 367 //Set to identity 368 g.setTransform(new AffineTransform()); 369 } 315 370 316 371 g.setPaint(strokePaint); 317 372 g.fill(strokeShape); 318 373 319 g.setComposite(cachedComposite); 320 } 321 else 322 { 323 g.setPaint(strokePaint); 324 g.fill(strokeShape); 374 if (vectorEffect == VECTOR_EFFECT_NON_SCALING_STROKE) 375 { 376 //Set to identity 377 g.setTransform(cacheXform); 378 } 379 380 if (strokeOpacity < 1f) 381 { 382 g.setComposite(cachedComposite); 383 } 325 384 } 326 385 }
Note:
See TracChangeset
for help on using the changeset viewer.
