libbluray | branch: master | hpi1 <[email protected]> | Thu Nov 20 10:28:32 2014 +0200| [dc1c2a0b6b7b15633cc2e3aafc95b252ad0a9a3c] | committer: hpi1
BDGraphics: lazy init font metrics. Avoid loading fonts unless those are actually used. > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=dc1c2a0b6b7b15633cc2e3aafc95b252ad0a9a3c --- src/libbluray/bdj/java/java/awt/BDGraphicsBase.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/libbluray/bdj/java/java/awt/BDGraphicsBase.java b/src/libbluray/bdj/java/java/awt/BDGraphicsBase.java index bc06f43..e6a1dc7 100644 --- a/src/libbluray/bdj/java/java/awt/BDGraphicsBase.java +++ b/src/libbluray/bdj/java/java/awt/BDGraphicsBase.java @@ -111,7 +111,7 @@ abstract class BDGraphicsBase extends Graphics2D implements ConstrainableGraphic font = DEFAULT_FONT; } } - fontMetrics = BDFontMetrics.getFontMetrics(font); + fontMetrics = null; composite = AlphaComposite.SrcOver; setupClip(); @@ -141,7 +141,7 @@ abstract class BDGraphicsBase extends Graphics2D implements ConstrainableGraphic font = DEFAULT_FONT; } } - fontMetrics = BDFontMetrics.getFontMetrics(font); + fontMetrics = null; composite = AlphaComposite.SrcOver; setupClip(); @@ -159,7 +159,7 @@ abstract class BDGraphicsBase extends Graphics2D implements ConstrainableGraphic public void setFont(Font font) { if (font != null && !font.equals(this.font)) { this.font = font; - fontMetrics = BDFontMetrics.getFontMetrics(font); + fontMetrics = null; } } @@ -168,6 +168,9 @@ abstract class BDGraphicsBase extends Graphics2D implements ConstrainableGraphic } public FontMetrics getFontMetrics() { + if (font != null && fontMetrics == null) { + fontMetrics = BDFontMetrics.getFontMetrics(font); + } return fontMetrics; } @@ -1115,8 +1118,11 @@ abstract class BDGraphicsBase extends Graphics2D implements ConstrainableGraphic /** Draws the given string. */ public void drawString(String string, int x, int y) { + getFontMetrics(); if (fontMetrics != null) { fontMetrics.drawString((BDGraphics)this, string, x, y, foreground.getRGB()); + } else { + logger.error("drawString skipped: no font metrics. string=\"" + string + "\""); } } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
