Ignore:
Timestamp:
2013-06-11T01:01:28+02:00 (11 years ago)
Author:
Don-vip
Message:

fix #8742 - update svgsalamander to release 0.1.18+patch (fix bug SVGSALAMANDER-26) -> allow to open more SVG files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/com/kitfox/svg/xml/XMLParseUtil.java

    r4256 r6002  
    11/*
    2  * XMLParseUtil.java
     2 * SVG Salamander
     3 * Copyright (c) 2004, Mark McKay
     4 * All rights reserved.
    35 *
     6 * Redistribution and use in source and binary forms, with or
     7 * without modification, are permitted provided that the following
     8 * conditions are met:
    49 *
    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.
    717 *
    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
    2433 *
    2534 * Created on February 18, 2004, 1:49 PM
     
    2837package com.kitfox.svg.xml;
    2938
     39import com.kitfox.svg.SVGConst;
    3040import org.w3c.dom.*;
    3141import java.awt.*;
     
    3444import java.util.regex.*;
    3545import java.lang.reflect.*;
     46import java.util.logging.Level;
     47import java.util.logging.Logger;
    3648
    3749/**
     
    140152        catch (StringIndexOutOfBoundsException e)
    141153        {
    142             System.err.println("XMLParseUtil: regex parse problem: '" + val + "'");
    143             e.printStackTrace();
     154            Logger.getLogger(SVGConst.SVG_LOGGER).log(Level.WARNING,
     155                "XMLParseUtil: regex parse problem: '" + val + "'", e);
    144156        }
    145157
     
    537549
    538550            ReadableXMLElement newObj = null;
    539             try { newObj = (ReadableXMLElement)classType.newInstance(); }
    540             catch (Exception e) { e.printStackTrace(); continue; }
     551            try
     552            {
     553                newObj = (ReadableXMLElement)classType.newInstance();
     554            }
     555            catch (Exception e)
     556            {
     557                Logger.getLogger(SVGConst.SVG_LOGGER).log(Level.WARNING, null, e);
     558                continue;
     559            }
    541560            newObj.read(ele, docRoot);
    542561
     
    567586        HashMap retMap = new HashMap();
    568587
    569 /*
    570         Class[] params = {Element.class, URL.class};
    571         Method loadMethod = null;
    572         try { loadMethod = classType.getMethod("load", params); }
    573         catch (Exception e) { e.printStackTrace(); return null; }
    574 
    575  */
    576588        NodeList nl = root.getChildNodes();
    577589        int size = nl.getLength();
     
    584596
    585597            ReadableXMLElement newObj = null;
    586             try { newObj = (ReadableXMLElement)classType.newInstance(); }
    587             catch (Exception e) { e.printStackTrace(); continue; }
     598            try
     599            {
     600                newObj = (ReadableXMLElement)classType.newInstance();
     601            }
     602            catch (Exception e)
     603            {
     604                Logger.getLogger(SVGConst.SVG_LOGGER).log(Level.WARNING, null, e);
     605                continue;
     606            }
    588607            newObj.read(ele, docRoot);
    589 /*
    590             Object[] args = {ele, source};
    591             Object obj = null;
    592             try { obj = loadMethod.invoke(null, args); }
    593             catch (Exception e) { e.printStackTrace(); }
    594 
    595  */
     608
    596609            if (newObj == null) continue;
    597610
     
    614627
    615628        HashSet retSet = new HashSet();
    616 
    617         /*
    618         Class[] params = {Element.class, URL.class};
    619         Method loadMethod = null;
    620         try { loadMethod = classType.getMethod("load", params); }
    621         catch (Exception e) { e.printStackTrace(); return null; }
    622         */
    623629
    624630        NodeList nl = root.getChildNodes();
     
    632638
    633639            ReadableXMLElement newObj = null;
    634             try { newObj = (ReadableXMLElement)classType.newInstance(); }
    635             catch (Exception e) { e.printStackTrace(); continue; }
     640            try
     641            {
     642                newObj = (ReadableXMLElement)classType.newInstance();
     643            }
     644            catch (Exception e)
     645            {
     646                Logger.getLogger(SVGConst.SVG_LOGGER).log(Level.WARNING, null, e);
     647                continue;
     648            }
    636649            newObj.read(ele, docRoot);
    637             /*
    638             Object[] args = {ele, source};
    639             Object obj = null;
    640             try { obj = loadMethod.invoke(null, args); }
    641             catch (Exception e) { e.printStackTrace(); }
    642              */
    643 
    644             if (newObj == null) continue;
     650
     651            if (newObj == null)
     652            {
     653                continue;
     654            }
    645655
    646656            retSet.add(newObj);
     
    672682
    673683            ReadableXMLElement newObj = null;
    674             try { newObj = (ReadableXMLElement)classType.newInstance(); }
    675             catch (Exception e) { e.printStackTrace(); continue; }
     684            try
     685            {
     686                newObj = (ReadableXMLElement)classType.newInstance();
     687            }
     688            catch (Exception e)
     689            {
     690                Logger.getLogger(SVGConst.SVG_LOGGER).log(Level.WARNING, null, e);
     691                continue;
     692            }
    676693            newObj.read(ele, docRoot);
    677694
     
    790807    public static HashMap parseStyle(String styleString, HashMap map) {
    791808        final Pattern patSemi = Pattern.compile(";");
    792         final Pattern patColonSpace = Pattern.compile(":");
    793 
    794         //Strips left and right whitespace
    795         final Matcher matcherContent = Pattern.compile("\\s*([^\\s](.*[^\\s])?)\\s*").matcher("");
    796809
    797810        String[] styles = patSemi.split(styleString);
     
    804817            }
    805818
    806             String[] vals = patColonSpace.split(styles[i]);
    807 
    808             matcherContent.reset(vals[0]);
    809             matcherContent.matches();
    810             vals[0] = matcherContent.group(1);
    811 
    812             matcherContent.reset(vals[1]);
    813             matcherContent.matches();
    814             vals[1] = matcherContent.group(1);
    815 
    816             map.put(vals[0], new StyleAttribute(vals[0], vals[1]));
     819            int colon = styles[i].indexOf(':');
     820            if (colon == -1)
     821            {
     822                continue;
     823            }
     824
     825            String key = styles[i].substring(0, colon).trim();
     826            String value = styles[i].substring(colon + 1).trim();
     827
     828            map.put(key, new StyleAttribute(key, value));
    817829        }
    818830
Note: See TracChangeset for help on using the changeset viewer.