src/Tools/jEdit/src/token_markup.scala
changeset 43491 7b7baa283434
parent 43489 132f99cc0a43
child 43502 736183a22fa4
equal deleted inserted replaced
43490:5e6f76cacb93 43491:7b7baa283434
     8 
     8 
     9 
     9 
    10 import isabelle._
    10 import isabelle._
    11 
    11 
    12 import java.awt.{Font, Color}
    12 import java.awt.{Font, Color}
    13 import java.awt.font.TextAttribute
    13 import java.awt.font.{TextAttribute, TransformAttribute}
       
    14 import java.awt.geom.AffineTransform
    14 
    15 
    15 import org.gjt.sp.util.SyntaxUtilities
    16 import org.gjt.sp.util.SyntaxUtilities
    16 import org.gjt.sp.jedit.Mode
    17 import org.gjt.sp.jedit.Mode
    17 import org.gjt.sp.jedit.syntax.{Token => JEditToken, TokenMarker, TokenHandler,
    18 import org.gjt.sp.jedit.syntax.{Token => JEditToken, TokenMarker, TokenHandler,
    18   ParserRuleSet, ModeProvider, XModeHandler, SyntaxStyle}
    19   ParserRuleSet, ModeProvider, XModeHandler, SyntaxStyle}
    45   }
    46   }
    46 
    47 
    47   private def bold_style(style: SyntaxStyle): SyntaxStyle =
    48   private def bold_style(style: SyntaxStyle): SyntaxStyle =
    48     font_style(style, _.deriveFont(Font.BOLD))
    49     font_style(style, _.deriveFont(Font.BOLD))
    49 
    50 
       
    51   private def hidden_font(font: Font): Font =
       
    52   {
       
    53     import scala.collection.JavaConversions._
       
    54     val base_font = new Font(font.getFamily, 0, 1)
       
    55     val transform =
       
    56       new TransformAttribute(AffineTransform.getScaleInstance(1.0, font.getSize.toDouble))
       
    57     base_font.deriveFont(Map(TextAttribute.TRANSFORM -> transform))
       
    58   }
       
    59 
    50   class Style_Extender(symbols: Symbol.Interpretation) extends SyntaxUtilities.StyleExtender
    60   class Style_Extender(symbols: Symbol.Interpretation) extends SyntaxUtilities.StyleExtender
    51   {
    61   {
    52     if (symbols.font_names.length > 2)
    62     if (symbols.font_names.length > 2)
    53       error("Too many user symbol fonts (max 2 permitted): " + symbols.font_names.mkString(", "))
    63       error("Too many user symbol fonts (max 2 permitted): " + symbols.font_names.mkString(", "))
    54 
    64 
    65           // FIXME adjust size
    75           // FIXME adjust size
    66           new_styles(user_font(idx, i.toByte)) =
    76           new_styles(user_font(idx, i.toByte)) =
    67             font_style(style, font => new Font(family, font.getStyle, font.getSize))
    77             font_style(style, font => new Font(family, font.getStyle, font.getSize))
    68         }
    78         }
    69       }
    79       }
    70       new_styles(hidden) =
    80       new_styles(hidden) = new SyntaxStyle(Color.white, null, hidden_font(styles(0).getFont))
    71         new SyntaxStyle(Color.white, null, new Font(styles(0).getFont.getFamily, 0, 1))
       
    72       new_styles
    81       new_styles
    73     }
    82     }
    74   }
    83   }
    75 
    84 
    76   def extended_styles(symbols: Symbol.Interpretation, text: CharSequence)
    85   def extended_styles(symbols: Symbol.Interpretation, text: CharSequence)