From 83ef3f2baee87742cab68eecfd60e4cc85c9b528 Mon Sep 17 00:00:00 2001 From: Jerry Quinn Date: Thu, 22 Apr 2004 05:34:30 +0000 Subject: [PATCH] Font.java (deriveFont): Implement missing variants. 2004-04-22 Jerry Quinn * java/awt/Font.java (deriveFont): Implement missing variants. * gnu/java/awt/peer/ClasspathFontPeer.java (deriveFont): Implement missing variants. From-SVN: r81002 --- libjava/ChangeLog | 6 +++ .../gnu/java/awt/peer/ClasspathFontPeer.java | 35 ++++++++++++++++- libjava/java/awt/Font.java | 39 ++++++++++++++++++- 3 files changed, 78 insertions(+), 2 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index b5a60bd1216..ae285939f42 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2004-04-22 Jerry Quinn + + * java/awt/Font.java (deriveFont): Implement missing variants. + * gnu/java/awt/peer/ClasspathFontPeer.java (deriveFont): Implement + missing variants. + 2004-04-21 Bryce McKinlay * java/lang/natClass.cc (_Jv_LayoutInterfaceMethods): New method. diff --git a/libjava/gnu/java/awt/peer/ClasspathFontPeer.java b/libjava/gnu/java/awt/peer/ClasspathFontPeer.java index 287c271ba2f..6b753aa15ec 100644 --- a/libjava/gnu/java/awt/peer/ClasspathFontPeer.java +++ b/libjava/gnu/java/awt/peer/ClasspathFontPeer.java @@ -1,5 +1,5 @@ /* ClasspathFontPeer.java -- Font peer used by GNU Classpath. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -394,6 +394,23 @@ public abstract class ClasspathFontPeer return ((style & Font.ITALIC) == Font.ITALIC); } + /** + * Implementation of {@link Font#deriveFont(int, float)} + * + * @param font the font this peer is being called from. This may be + * useful if you are sharing peers between Font objects. Otherwise it may + * be ignored. + */ + + public Font deriveFont (Font font, int style, float size) + { + Map attrs = new HashMap (); + getStandardAttributes (attrs); + copyStyleToAttrs (style, attrs); + copySizeToAttrs (size, attrs); + return tk().getFont (logicalName, attrs); + } + /** * Implementation of {@link Font#deriveFont(float)} * @@ -443,6 +460,22 @@ public abstract class ClasspathFontPeer return tk().getFont (logicalName, attrs); } + /** + * Implementation of {@link Font#deriveFont(AffineTransform)} + * + * @param font the font this peer is being called from. This may be + * useful if you are sharing peers between Font objects. Otherwise it may + * be ignored. + */ + + public Font deriveFont (Font font, AffineTransform t) + { + Map attrs = new HashMap (); + getStandardAttributes (attrs); + copyTransformToAttrs (t, attrs); + return tk().getFont (logicalName, attrs); + } + /** * Implementation of {@link Font#deriveFont(Map)} * diff --git a/libjava/java/awt/Font.java b/libjava/java/awt/Font.java index 42f9f7b85eb..4c70c735797 100644 --- a/libjava/java/awt/Font.java +++ b/libjava/java/awt/Font.java @@ -1,5 +1,5 @@ /* Font.java -- Font object - Copyright (C) 1999, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2002, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -648,6 +648,22 @@ private static final long serialVersionUID = -4206021311591459213L; return peer.createGlyphVector (this, ctx, glyphCodes); } +/** + * Produces a new {@link Font} based on the current font, adjusted to a + * new size and style. + * + * @param style The style of the newly created font. + * @param size The size of the newly created font. + * + * @return A clone of the current font, with the specified size and style. + * + * @since 1.2 + */ + public Font deriveFont (int style, float size) +{ + return peer.deriveFont (this, style, size); +} + /** * Produces a new {@link Font} based on the current font, adjusted to a * new size. @@ -701,6 +717,27 @@ private static final long serialVersionUID = -4206021311591459213L; return peer.deriveFont (this, style, a); } +/** + * Produces a new {@link Font} based on the current font, subjected + * to a new affine transformation. + * + * @param a The transformation to apply. + * + * @return A clone of the current font, with the specified transform. + * + * @throws IllegalArgumentException If transformation is + * null. + * + * @since 1.2 + */ + public Font deriveFont (AffineTransform a) +{ + if (a == null) + throw new IllegalArgumentException ("Affine transformation is null"); + + return peer.deriveFont (this, a); +} + /** * Produces a new {@link Font} based on the current font, adjusted to a * new set of attributes. -- 2.30.2