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/Font.java

    r4256 r6002  
    11/*
    2  * Font.java
    3  *
    4  *
    5  *  The Salamander Project - 2D and 3D graphics libraries in Java
    6  *  Copyright (C) 2004 Mark McKay
    7  *
    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
     2 * SVG Salamander
     3 * Copyright (c) 2004, Mark McKay
     4 * All rights reserved.
     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:
     9 *
     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.
     17 *
     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 20, 2004, 10:00 PM
    2635 */
    27 
    2836package com.kitfox.svg;
    2937
    3038import com.kitfox.svg.xml.StyleAttribute;
    31 import com.kitfox.svg.xml.*;
    32 import org.xml.sax.*;
    33 
    34 import java.util.*;
     39import java.util.HashMap;
    3540
    3641/**
     
    4449public class Font extends SVGElement
    4550{
     51
     52    public static final String TAG_NAME = "font";
    4653    int horizOriginX = 0;
    4754    int horizOriginY = 0;
     
    5057    int vertOriginY = -1;  //Defaults to font's ascent
    5158    int vertAdvY = -1;  //Defaults to one 'em'.  See font-face
    52 
    5359    FontFace fontFace = null;
    5460    MissingGlyph missingGlyph = null;
    5561    final HashMap glyphs = new HashMap();
    5662
    57     /** Creates a new instance of Font */
     63    /**
     64     * Creates a new instance of Font
     65     */
    5866    public Font()
    5967    {
    6068    }
    61 /*
    62     public void loaderStartElement(SVGLoaderHelper helper, Attributes attrs, SVGElement parent)
    63     {
    64                 //Load style string
    65         super.loaderStartElement(helper, attrs, parent);
    66 
    67         String horizOriginX = attrs.getValue("horiz-origin-x");
    68         String horizOriginY = attrs.getValue("horiz-origin-y");
    69         String horizAdvX = attrs.getValue("horiz-adv-x");
    70         String vertOriginX = attrs.getValue("vert-origin-x");
    71         String vertOriginY = attrs.getValue("vert-origin-y");
    72         String vertAdvY = attrs.getValue("vert-adv-y");
    73 
    74         if (horizOriginX != null) this.horizOriginX = XMLParseUtil.parseInt(horizOriginX);
    75         if (horizOriginY != null) this.horizOriginY = XMLParseUtil.parseInt(horizOriginY);
    76         if (horizAdvX != null) this.horizAdvX = XMLParseUtil.parseInt(horizAdvX);
    77         if (vertOriginX != null) this.vertOriginX = XMLParseUtil.parseInt(vertOriginX);
    78         if (vertOriginY != null) this.vertOriginY = XMLParseUtil.parseInt(vertOriginY);
    79         if (vertAdvY != null) this.vertAdvY = XMLParseUtil.parseInt(vertAdvY);
    80 
    81     }
    82 */
     69
     70    public String getTagName()
     71    {
     72        return TAG_NAME;
     73    }
     74
    8375    /**
    8476     * Called after the start element but before the end element to indicate
     
    8779    public void loaderAddChild(SVGLoaderHelper helper, SVGElement child) throws SVGElementException
    8880    {
    89                 super.loaderAddChild(helper, child);
     81        super.loaderAddChild(helper, child);
    9082
    9183        if (child instanceof Glyph)
    9284        {
    93             glyphs.put(((Glyph)child).getUnicode(), child);
    94         }
    95         else if (child instanceof MissingGlyph)
    96         {
    97             missingGlyph = (MissingGlyph)child;
    98         }
    99         else if (child instanceof FontFace)
    100         {
    101             fontFace = (FontFace)child;
     85            glyphs.put(((Glyph) child).getUnicode(), child);
     86        } else if (child instanceof MissingGlyph)
     87        {
     88            missingGlyph = (MissingGlyph) child;
     89        } else if (child instanceof FontFace)
     90        {
     91            fontFace = (FontFace) child;
    10292        }
    10393    }
     
    10898
    10999        //build();
    110        
     100
    111101        helper.universe.registerFont(this);
    112102    }
    113    
     103
    114104    protected void build() throws SVGException
    115105    {
    116106        super.build();
    117        
     107
    118108        StyleAttribute sty = new StyleAttribute();
    119        
    120         if (getPres(sty.setName("horiz-origin-x"))) horizOriginX = sty.getIntValue();
    121        
    122         if (getPres(sty.setName("horiz-origin-y"))) horizOriginY = sty.getIntValue();
    123        
    124         if (getPres(sty.setName("horiz-adv-x"))) horizAdvX = sty.getIntValue();
    125        
    126         if (getPres(sty.setName("vert-origin-x"))) vertOriginX = sty.getIntValue();
    127        
    128         if (getPres(sty.setName("vert-origin-y"))) vertOriginY = sty.getIntValue();
    129        
    130         if (getPres(sty.setName("vert-adv-y"))) vertAdvY = sty.getIntValue();
    131     }
    132    
    133     public FontFace getFontFace() { return fontFace; }
     109
     110        if (getPres(sty.setName("horiz-origin-x")))
     111        {
     112            horizOriginX = sty.getIntValue();
     113        }
     114
     115        if (getPres(sty.setName("horiz-origin-y")))
     116        {
     117            horizOriginY = sty.getIntValue();
     118        }
     119
     120        if (getPres(sty.setName("horiz-adv-x")))
     121        {
     122            horizAdvX = sty.getIntValue();
     123        }
     124
     125        if (getPres(sty.setName("vert-origin-x")))
     126        {
     127            vertOriginX = sty.getIntValue();
     128        }
     129
     130        if (getPres(sty.setName("vert-origin-y")))
     131        {
     132            vertOriginY = sty.getIntValue();
     133        }
     134
     135        if (getPres(sty.setName("vert-adv-y")))
     136        {
     137            vertAdvY = sty.getIntValue();
     138        }
     139    }
     140
     141    public FontFace getFontFace()
     142    {
     143        return fontFace;
     144    }
    134145
    135146    public MissingGlyph getGlyph(String unicode)
    136147    {
    137         Glyph retVal = (Glyph)glyphs.get(unicode);
    138         if (retVal == null) return missingGlyph;
     148        Glyph retVal = (Glyph) glyphs.get(unicode);
     149        if (retVal == null)
     150        {
     151            return missingGlyph;
     152        }
    139153        return retVal;
    140154    }
    141155
    142     public int getHorizOriginX() { return horizOriginX; }
    143     public int getHorizOriginY() { return horizOriginY; }
    144     public int getHorizAdvX() { return horizAdvX; }
     156    public int getHorizOriginX()
     157    {
     158        return horizOriginX;
     159    }
     160
     161    public int getHorizOriginY()
     162    {
     163        return horizOriginY;
     164    }
     165
     166    public int getHorizAdvX()
     167    {
     168        return horizAdvX;
     169    }
    145170
    146171    public int getVertOriginX()
    147172    {
    148         if (vertOriginX != -1) return vertOriginX;
     173        if (vertOriginX != -1)
     174        {
     175            return vertOriginX;
     176        }
    149177        vertOriginX = getHorizAdvX() / 2;
    150178        return vertOriginX;
     
    153181    public int getVertOriginY()
    154182    {
    155         if (vertOriginY != -1) return vertOriginY;
     183        if (vertOriginY != -1)
     184        {
     185            return vertOriginY;
     186        }
    156187        vertOriginY = fontFace.getAscent();
    157188        return vertOriginY;
     
    160191    public int getVertAdvY()
    161192    {
    162         if (vertAdvY != -1) return vertAdvY;
     193        if (vertAdvY != -1)
     194        {
     195            return vertAdvY;
     196        }
    163197        vertAdvY = fontFace.getUnitsPerEm();
    164198        return vertAdvY;
    165199    }
    166    
     200
    167201    /**
    168      * Updates all attributes in this diagram associated with a time event.
    169      * Ie, all attributes with track information.
     202     * Updates all attributes in this diagram associated with a time event. Ie,
     203     * all attributes with track information.
     204     *
    170205     * @return - true if this node has changed state as a result of the time
    171206     * update
     
    176211        return false;
    177212        /*
    178         if (trackManager.getNumTracks() == 0) return false;
    179        
    180         //Get current values for parameters
    181         StyleAttribute sty = new StyleAttribute();
    182         boolean stateChange = false;
    183        
    184         if (getPres(sty.setName("horiz-origin-x")))
    185         {
    186             int newVal = sty.getIntValue();
    187             if (newVal != horizOriginX)
    188             {
    189                 horizOriginX = newVal;
    190                 stateChange = true;
    191             }
    192         }
    193        
    194         if (getPres(sty.setName("horiz-origin-y")))
    195         {
    196             int newVal = sty.getIntValue();
    197             if (newVal != horizOriginY)
    198             {
    199                 horizOriginY = newVal;
    200                 stateChange = true;
    201             }
    202         }
    203        
    204         if (getPres(sty.setName("horiz-adv-x")))
    205         {
    206             int newVal = sty.getIntValue();
    207             if (newVal != horizAdvX)
    208             {
    209                 horizAdvX = newVal;
    210                 stateChange = true;
    211             }
    212         }
    213        
    214         if (getPres(sty.setName("vert-origin-x")))
    215         {
    216             int newVal = sty.getIntValue();
    217             if (newVal != vertOriginX)
    218             {
    219                 vertOriginX = newVal;
    220                 stateChange = true;
    221             }
    222         }
    223        
    224         if (getPres(sty.setName("vert-origin-y")))
    225         {
    226             int newVal = sty.getIntValue();
    227             if (newVal != vertOriginY)
    228             {
    229                 vertOriginY = newVal;
    230                 stateChange = true;
    231             }
    232         }
    233        
    234         if (getPres(sty.setName("vert-adv-y")))
    235         {
    236             int newVal = sty.getIntValue();
    237             if (newVal != vertAdvY)
    238             {
    239                 vertAdvY = newVal;
    240                 stateChange = true;
    241             }
    242         }
    243        
    244         return shapeChange;
    245         */
     213         if (trackManager.getNumTracks() == 0) return false;
     214       
     215         //Get current values for parameters
     216         StyleAttribute sty = new StyleAttribute();
     217         boolean stateChange = false;
     218       
     219         if (getPres(sty.setName("horiz-origin-x")))
     220         {
     221         int newVal = sty.getIntValue();
     222         if (newVal != horizOriginX)
     223         {
     224         horizOriginX = newVal;
     225         stateChange = true;
     226         }
     227         }
     228       
     229         if (getPres(sty.setName("horiz-origin-y")))
     230         {
     231         int newVal = sty.getIntValue();
     232         if (newVal != horizOriginY)
     233         {
     234         horizOriginY = newVal;
     235         stateChange = true;
     236         }
     237         }
     238       
     239         if (getPres(sty.setName("horiz-adv-x")))
     240         {
     241         int newVal = sty.getIntValue();
     242         if (newVal != horizAdvX)
     243         {
     244         horizAdvX = newVal;
     245         stateChange = true;
     246         }
     247         }
     248       
     249         if (getPres(sty.setName("vert-origin-x")))
     250         {
     251         int newVal = sty.getIntValue();
     252         if (newVal != vertOriginX)
     253         {
     254         vertOriginX = newVal;
     255         stateChange = true;
     256         }
     257         }
     258       
     259         if (getPres(sty.setName("vert-origin-y")))
     260         {
     261         int newVal = sty.getIntValue();
     262         if (newVal != vertOriginY)
     263         {
     264         vertOriginY = newVal;
     265         stateChange = true;
     266         }
     267         }
     268       
     269         if (getPres(sty.setName("vert-adv-y")))
     270         {
     271         int newVal = sty.getIntValue();
     272         if (newVal != vertAdvY)
     273         {
     274         vertAdvY = newVal;
     275         stateChange = true;
     276         }
     277         }
     278       
     279         return shapeChange;
     280         */
    246281    }
    247282}
Note: See TracChangeset for help on using the changeset viewer.