harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vasily Zakharov (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-4386) [classlib][awt]Exception when trying to use java.awt.font.LineBreakMeasurer
Date Fri, 13 Jul 2007 00:17:04 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-4386?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12512314
] 

Vasily Zakharov commented on HARMONY-4386:
------------------------------------------

I investigated this issue. It is caused by the following line:

Font value = (Font)attributes.get(TextAttribute.CHAR_REPLACEMENT);

TextAttribute.CHAR_REPLACEMENT needs to be of class GraphicAttribute, per specification, and
is used by the test appropriately.

Casting this attribute's value to Font seems trivially incorrect. And it can be easily corrected
by changing the value type to Object and changing the casting type.

However, it seems logical to put the extracted GraphicAttribute value to the fonts table,
so it's also necessary to change the fonts table type from HashMap<Integer, Font> to
HashMap<Integer, Object>.

The attached patch makes the necessary corrections.


> [classlib][awt]Exception when trying to use java.awt.font.LineBreakMeasurer
> ---------------------------------------------------------------------------
>
>                 Key: HARMONY-4386
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4386
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Dmitriy Matveev
>
> Exception when trying to use java.awt.font.LineBreakMeasurer with AttributedCharacterIterator
and ShapeGraphicAttribute.
> Example below:
> import java.awt.Frame;
> import java.awt.Graphics;
> import java.awt.Graphics2D;
> import java.awt.Shape;
> import java.awt.event.WindowAdapter;
> import java.awt.event.WindowEvent;
> import java.awt.font.FontRenderContext;
> import java.awt.font.GraphicAttribute;
> import java.awt.font.LineBreakMeasurer;
> import java.awt.font.ShapeGraphicAttribute;
> import java.awt.font.TextAttribute;
> import java.awt.Rectangle;
> import java.text.AttributedString;
> import java.text.AttributedCharacterIterator;
> public class TextTest {
>     public static void main(String[] args) {
>         Frame f = new Frame("Test"){
>             public void paint(Graphics g){
>                 Graphics2D g2 = (Graphics2D)g;
>                 AttributedString as = new AttributedString("Abc");
>                 Shape s = new Rectangle();
>                 ShapeGraphicAttribute sga = new ShapeGraphicAttribute(s, GraphicAttribute.TOP_ALIGNMENT,
false);
>                 as.addAttribute(TextAttribute.CHAR_REPLACEMENT, sga, 0, 1);
>                 AttributedCharacterIterator aci = as.getIterator();
>                 FontRenderContext frc = g2.getFontRenderContext();
>                 LineBreakMeasurer lbm = new LineBreakMeasurer(aci, frc);
>             }
>         };
>         
>         f.setBounds(0, 0, 800, 600);
>         f.setVisible(true);
>         f.addWindowListener(new WindowAdapter() {
>             public void windowClosing(WindowEvent ev) {               
>                 System.exit(0);
>             }
>         });        
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message