X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FTreeFontSet.java;h=a07c87ab51616109a9c6efbc60f027e5f1b99762;hb=17b76e136bdd9b46c3d15021cd2cf6bb224695b7;hp=d21e0b8b0dd145220459a98e51095de698d26910;hpb=04275071ecc44e04eaf6006397eae0b86514cc75;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/TreeFontSet.java b/forester/java/src/org/forester/archaeopteryx/TreeFontSet.java index d21e0b8..a07c87a 100644 --- a/forester/java/src/org/forester/archaeopteryx/TreeFontSet.java +++ b/forester/java/src/org/forester/archaeopteryx/TreeFontSet.java @@ -36,10 +36,10 @@ import java.awt.FontMetrics; */ public final class TreeFontSet { - final static float SMALL_FONTS_BASE = 8; - private final static String DEFAULT_FONT = "Verdana"; - private final static float FONT_SIZE_CHANGE_STEP = 1.0f; - static final int BOLD_AND_ITALIC = Font.BOLD + Font.ITALIC; + final static float SMALL_FONTS_BASE = 8; + private final static String DEFAULT_FONT = "Verdana"; + final static float FONT_SIZE_CHANGE_STEP = 1.0f; + static final int BOLD_AND_ITALIC = Font.BOLD + Font.ITALIC; // the owner (needed to get font metrics) private final MainPanel _owner; // The fonts @@ -52,6 +52,10 @@ public final class TreeFontSet { private Font _large_font_system; private Font _small_italic_font_system; private Font _large_italic_font_system; + private Font _small_font_memory; + private Font _large_font_memory; + private Font _small_italic_font_memory; + private Font _large_italic_font_memory; // Handy holders for font metrics public FontMetrics _fm_small; FontMetrics _fm_large; @@ -60,10 +64,11 @@ public final class TreeFontSet { FontMetrics _fm_large_italic; FontMetrics _fm_large_italic_bold; // hold font measurements - int _small_max_descent = 0; - int _small_max_ascent = 0; + int _small_max_descent = 0; + int _small_max_ascent = 0; private final int _min; private final int _max; + private boolean _decreased_size_by_system = false; TreeFontSet( final MainPanel owner ) { _owner = owner; @@ -76,11 +81,14 @@ public final class TreeFontSet { return _small_font; } - public Font getSmallFontSystem() { - return _small_font_system; - } - - void decreaseFontSize( final int min ) { + void decreaseFontSize( final int min, final boolean decreased_size_by_system ) { + if ( decreased_size_by_system && !isDecreasedSizeBySystem() ) { + _small_font_memory = _small_font; + _large_font_memory = _large_font; + _small_italic_font_memory = _small_italic_font; + _large_italic_font_memory = _large_italic_font; + } + setDecreasedSizeBySystem( decreased_size_by_system ); if ( _large_font.getSize() >= min ) { _small_font = _small_font.deriveFont( _small_font.getSize() - FONT_SIZE_CHANGE_STEP ); _large_font = _large_font.deriveFont( _large_font.getSize() - FONT_SIZE_CHANGE_STEP ); @@ -90,6 +98,10 @@ public final class TreeFontSet { } } + Font getLargeFontMemory() { + return _large_font_memory; + } + Font getBaseFont() { return _base_font; } @@ -106,6 +118,10 @@ public final class TreeFontSet { return _large_italic_font_system; } + Font getSmallFontSystem() { + return _small_font_system; + } + Font getSmallItalicFont() { return _small_italic_font; } @@ -122,7 +138,12 @@ public final class TreeFontSet { setupFontMetrics(); } + boolean isDecreasedSizeBySystem() { + return _decreased_size_by_system; + } + void largeFonts() { + setDecreasedSizeBySystem( false ); _small_font = _small_font.deriveFont( 12f ); _large_font = _large_font.deriveFont( 14f ); _small_italic_font = _small_italic_font.deriveFont( 12f ); @@ -131,6 +152,7 @@ public final class TreeFontSet { } void mediumFonts() { + setDecreasedSizeBySystem( false ); _small_font = _small_font.deriveFont( 8f ); _large_font = _large_font.deriveFont( 10f ); _small_italic_font = _small_italic_font.deriveFont( 8f ); @@ -148,6 +170,7 @@ public final class TreeFontSet { } void smallFonts() { + setDecreasedSizeBySystem( false ); _small_font = _small_font.deriveFont( SMALL_FONTS_BASE - 1 ); _large_font = _large_font.deriveFont( SMALL_FONTS_BASE ); _small_italic_font = _small_italic_font.deriveFont( SMALL_FONTS_BASE - 1 ); @@ -156,6 +179,7 @@ public final class TreeFontSet { } void superTinyFonts() { + setDecreasedSizeBySystem( false ); _small_font = _small_font.deriveFont( 2f ); _large_font = _large_font.deriveFont( 3f ); _small_italic_font = _small_italic_font.deriveFont( 2f ); @@ -164,6 +188,7 @@ public final class TreeFontSet { } void tinyFonts() { + setDecreasedSizeBySystem( false ); _small_font = _small_font.deriveFont( 5f ); _large_font = _large_font.deriveFont( 6f ); _small_italic_font = _small_italic_font.deriveFont( 5f ); @@ -189,9 +214,17 @@ public final class TreeFontSet { _large_font_system = new Font( getBaseFont().getFontName(), getBaseFont().getStyle(), getBaseFont().getSize() ); _small_italic_font_system = new Font( getBaseFont().getFontName(), italic, small_size ); _large_italic_font_system = new Font( getBaseFont().getFontName(), italic, getBaseFont().getSize() ); + _small_font_memory = _small_font; + _large_font_memory = _large_font; + _small_italic_font_memory = _small_italic_font; + _large_italic_font_memory = _large_italic_font; setupFontMetrics(); } + private void setDecreasedSizeBySystem( final boolean decreased_size_by_system ) { + _decreased_size_by_system = decreased_size_by_system; + } + private void setupFontMetrics() { _fm_small = _owner.getFontMetrics( _small_font ); _fm_large = _owner.getFontMetrics( _large_font );