<Swing Dev> [9] Review request for 8132119 Provide public API for text related methods in SwingUtilities2
Alexander Scherbatiy
alexandr.scherbatiy at oracle.com
Mon Sep 7 09:27:11 UTC 2015
On 9/2/2015 8:09 PM, Phil Race wrote:
> I don't remember or know how Swing resolves this but the measurement ones
> are not reliable since they do not take a Graphics context, so you cannot
> measure the string properly. You need a FontRenderContext to measure.
The provided methods use
SwingUtilities2.getFontRenderContext(JComponent) method which returns
the FontRenderContext associated with the component.
>
> So as it stands these APIs do not appear suitable to be made public as
> they
> are not reliable.
>
> Whilst I could look at the code, if I instead just look at the API, I
> am scratching my
> head over :-
>
> public static void drawString(JComponent c, Graphics g, String text,
> int x, int y)
>
> Here you provide the Graphics *and* the Component.
> And it says the JComponent may be null.
> So I am supposing that there is optional information that may be
> pulled from the
> JComponent regarding rendering mode ?
The optional information provided by the component is:
- java.awt.font.NumericShaper
- java.awt.font.FontRenderContext
- antialiasing hints
>
> drawStringUnderlineCharAt(..) probably needs to explain if the index
> is code point
> or UTF16 char index and what happens if there is not 1:1 code
> point:glyph mapping.
I will update this.
>
> Are we sure that (any of) these really ought/need to be public -
> particularly given the
> resolution of https://bugs.openjdk.java.net/browse/JDK-6302464
These methods are used by JDK L&Fs to draw text. The initial
request was to provide public methods that can be used by a custom L&F
to draw strings consistently with other L&Fs.
They are also designed to properly render text for printing. To do
that they use call to internal ProxyPrintGraphics class to obtain the
print graphics context.
Even if printing staff will be public, these methods are just
utility methods (in the same way as other text methods in the
javax.swing.text.Utilities class) that help easily to draw and print
text in the same way as JDK L&Fs do that.
Thanks,
Alexandr.
>
> -phil.
>
> On 09/02/2015 08:28 AM, Alexander Scherbatiy wrote:
>>
>> Hello,
>>
>> Could you review the fix:
>> bug: https://bugs.openjdk.java.net/browse/JDK-8132119
>> webrev: http://cr.openjdk.java.net/~alexsch/8132119/webrev.00
>>
>> The suggested drawString, drawStringUnderlineCharAt,
>> clipStringIfNecessary, and stringWidth methods are
>> added to the javax.swing.text.Utilities class.
>>
>> Thanks,
>> Alexandr.
>>
>
More information about the swing-dev
mailing list