1 /* 2 * ProGuard -- shrinking, optimization, obfuscation, and preverification 3 * of Java bytecode. 4 * 5 * Copyright (c) 2002-2014 Eric Lafortune (eric@graphics.cornell.edu) 6 * 7 * This program is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License as published by the Free 9 * Software Foundation; either version 2 of the License, or (at your option) 10 * any later version. 11 * 12 * This program is distributed in the hope that it will be useful, but WITHOUT 13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15 * more details. 16 * 17 * You should have received a copy of the GNU General Public License along 18 * with this program; if not, write to the Free Software Foundation, Inc., 19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 */ 21 package proguard.gui.splash; 22 23 import java.awt.*; 24 25 /** 26 * This VariableFont varies in size with respect to its Timing. 27 * 28 * @author Eric Lafortune 29 */ 30 public class VariableSizeFont implements VariableFont 31 { 32 private final Font font; 33 private final VariableDouble size; 34 35 private float cachedSize = -1.0f; 36 private Font cachedFont; 37 38 39 /** 40 * Creates a new VariableSizeFont 41 * @param font the base font. 42 * @param size the variable size of the font. 43 */ VariableSizeFont(Font font, VariableDouble size)44 public VariableSizeFont(Font font, VariableDouble size) 45 { 46 this.font = font; 47 this.size = size; 48 } 49 50 51 // Implementation for VariableFont. 52 getFont(long time)53 public Font getFont(long time) 54 { 55 float s = (float)size.getDouble(time); 56 57 if (s != cachedSize) 58 { 59 cachedSize = s; 60 cachedFont = font.deriveFont((float)s); 61 } 62 63 return cachedFont; 64 } 65 } 66