Crossfire JXClient, Trunk
DefaultBuffer.java
Go to the documentation of this file.
1 package com.realtime.crossfire.jxclient.gui.log;
2 
3 import java.awt.Color;
4 import java.awt.Font;
5 import java.awt.font.FontRenderContext;
6 import java.awt.font.LineMetrics;
7 import java.awt.geom.RectangularShape;
8 import org.jetbrains.annotations.NotNull;
9 
13 public class DefaultBuffer extends Buffer {
14 
18  private static final int MAX_LINES = 1000;
19 
23  @NotNull
24  private final Fonts fonts;
25 
29  @NotNull
30  private final FontRenderContext context;
31 
38  protected DefaultBuffer(@NotNull final Fonts fonts, @NotNull final FontRenderContext context, final int renderWidth) {
39  super(MAX_LINES, renderWidth);
40  this.fonts = fonts;
41  this.context = context;
42  }
43 
44  @NotNull
45  @Override
46  protected TextSegment newTextSegment(final @NotNull String text, final boolean bold, final boolean italic, final boolean underline, final @NotNull FontID fontID, final @NotNull Color color, final @NotNull Color selectionColor) {
47  final Font font = fonts.getFont(fontID, bold);
48  final RectangularShape size = font.getStringBounds(text, context);
49  final LineMetrics metrics = font.getLineMetrics(text, context);
50  final int ascentOffset = Math.round(metrics.getAscent());
51  final int underlineOffset = Math.round(metrics.getUnderlineOffset());
52  return new TextSegment(text, font, bold, italic, underline, fontID, color, size, ascentOffset, underlineOffset, selectionColor);
53  }
54 
55  @Override
56  protected int getSegmentWidth(@NotNull final TextSegment segment, final int characters) {
57  return segment.getWidth(characters, context);
58  }
59 
60 }
com.realtime.crossfire.jxclient.gui.log.Fonts.getFont
Font getFont(@NotNull final FontID font, final boolean bold)
Definition: Fonts.java:82
com.realtime.crossfire.jxclient.gui.log.DefaultBuffer.newTextSegment
TextSegment newTextSegment(final @NotNull String text, final boolean bold, final boolean italic, final boolean underline, final @NotNull FontID fontID, final @NotNull Color color, final @NotNull Color selectionColor)
Definition: DefaultBuffer.java:46
com.realtime.crossfire.jxclient.gui.log.Buffer
Definition: Buffer.java:41
com.realtime.crossfire.jxclient.gui.log.TextSegment
Definition: TextSegment.java:40
com.realtime.crossfire.jxclient.gui.log.DefaultBuffer.MAX_LINES
static final int MAX_LINES
Definition: DefaultBuffer.java:18
com.realtime.crossfire.jxclient.gui.log.DefaultBuffer.getSegmentWidth
int getSegmentWidth(@NotNull final TextSegment segment, final int characters)
Definition: DefaultBuffer.java:56
com.realtime.crossfire.jxclient.gui.log.Buffer.renderWidth
int renderWidth
Definition: Buffer.java:57
com.realtime.crossfire.jxclient.gui.log.FontID
Definition: FontID.java:29
com.realtime.crossfire.jxclient.gui.log.DefaultBuffer.DefaultBuffer
DefaultBuffer(@NotNull final Fonts fonts, @NotNull final FontRenderContext context, final int renderWidth)
Definition: DefaultBuffer.java:38
com.realtime.crossfire.jxclient.gui.log.Fonts
Definition: Fonts.java:32
com.realtime.crossfire.jxclient.gui.log.DefaultBuffer.fonts
final Fonts fonts
Definition: DefaultBuffer.java:24
com.realtime.crossfire.jxclient.gui.log.Buffer.size
int size()
Definition: Buffer.java:300
com.realtime.crossfire.jxclient.gui.log.DefaultBuffer.context
final FontRenderContext context
Definition: DefaultBuffer.java:30
com.realtime.crossfire.jxclient.gui.log.DefaultBuffer
Definition: DefaultBuffer.java:13