xeij/Bubble.java- Source code ソースコード - XEiJ - STUDIO KAMADA
xeij/Bubble.java

    //========================================================================================
    //  Bubble.java
    //    en:Bubble
    //    ja:バブル
    //  Copyright (C) 2003-2025 Makoto Kamada
    //
    //  This file is part of the XEiJ (X68000 Emulator in Java).
    //  You can use, modify and redistribute the XEiJ if the conditions are met.
    //  Read the XEiJ License for more details.
    //  https://stdkmd.net/xeij/
    //========================================================================================

    package xeij;

    import java.awt.*;  //RenderingHints
    import java.awt.font.*;  //TextLayout
    import java.awt.geom.*;  //Rectangle2D

    //class Bubble
    //  バブル
    public class Bubble {

      public static final boolean BBL_ON = true;
      public static final int BBL_FONT_SIZE = 24;  //フォントサイズ
      public static final int BBL_Y = BBL_FONT_SIZE * 2;  //Y座標
      public static final int BBL_PADDING_X = BBL_FONT_SIZE * 1;  //X方向パディング
      public static final int BBL_PADDING_Y = BBL_FONT_SIZE / 2;  //Y方向パディング
      public static final Font BBL_FONT = new Font ("SansSerif", Font.PLAIN, BBL_FONT_SIZE);  //フォント

      public static Color bblBackground;  //背景色
      public static Color bblForeground;  //文字色
      public static String bblText;  //テキスト
      public static long bblEndTime;  //終了時刻

      public static void bblInit () {
        bblBackground = new Color (LnF.lnfRGB[14]);
        bblForeground = new Color (LnF.lnfRGB[0]);
        bblText = null;
        bblEndTime = 0L;
      }  //bblInit

      //bblStart (text, time)
      //  開始
      public static void bblStart (String text, long time) {
        bblText = text;
        bblEndTime = System.currentTimeMillis () + time;
      }  //bblStart

      //bblDraw (g2)
      //  表示
      public static void bblDraw (Graphics2D g2) {
        if (bblText != null) {
          g2.setRenderingHint (RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
          g2.setFont (BBL_FONT);
          TextLayout tl = new TextLayout (bblText, BBL_FONT, g2.getFontRenderContext ());
          Rectangle2D r = tl.getBounds ();
          int x = (XEiJ.pnlWidth >> 1) - ((int) r.getWidth () >> 1);
          int y = BBL_Y;
          g2.setColor (bblBackground);
          g2.fillRect ((int) r.getX () + x - BBL_PADDING_X,
                       (int) r.getY () + y - BBL_PADDING_Y,
                       (int) r.getWidth () + (BBL_PADDING_X << 1),
                       (int) r.getHeight () + (BBL_PADDING_Y << 1));
          g2.setColor (bblForeground);
          tl.draw (g2, x, y);
          if (bblEndTime <= System.currentTimeMillis ()) {  //終了
            bblEnd ();
          }
        }
      }  //bblDraw

      //bblEnd ()
      //  終了
      public static void bblEnd () {
        bblText = null;
        bblEndTime = 0L;
      }  //bblEnd

    }  //class Bubble

STUDIO KAMADA
Copyright © 1999-2026 Makoto Kamada