Indicator.java
     1: //========================================================================================
     2: //  Indicator.java
     3: //    en:Indicator -- Displays MPU, frequency and load factor
     4: //    ja:インジケータ -- MPUと周波数と負荷率を表示します
     5: //  Copyright (C) 2003-2024 Makoto Kamada
     6: //
     7: //  This file is part of the XEiJ (X68000 Emulator in Java).
     8: //  You can use, modify and redistribute the XEiJ if the conditions are met.
     9: //  Read the XEiJ License for more details.
    10: //  https://stdkmd.net/xeij/
    11: //========================================================================================
    12: 
    13: package xeij;
    14: 
    15: import java.awt.*;
    16: import java.awt.image.*;
    17: import java.util.*;
    18: import javax.swing.*;
    19: 
    20: public class Indicator {
    21: 
    22:   //  |          111111111122222|
    23:   //  |0123456789012345678901234|
    24:   //  |MC68EC030 999.9MHz 100.0%|
    25:   public static final int IND_MPU_X = 0;
    26:   public static final int IND_CLOCK_X = 10;
    27:   public static final int IND_RATIO_X = 19;
    28:   public static final int IND_COLS = 25;
    29:   public static final int IND_FONT_WIDTH = 6;
    30:   public static final int IND_FONT_HEIGHT = 8;
    31:   public static final int IND_PADDING_LEFT = 6;
    32:   public static final int IND_PADDING_RIGHT = 6;
    33:   public static final int IND_PADDING_TOP = 3;
    34:   public static final int IND_PADDING_BOTTOM = 2;
    35:   public static final int IND_WIDTH = IND_PADDING_LEFT + IND_FONT_WIDTH * IND_COLS + IND_PADDING_RIGHT;
    36:   public static final int IND_HEIGHT = IND_PADDING_TOP + IND_FONT_HEIGHT + IND_PADDING_BOTTOM;
    37: 
    38:   public static int indBackGround;  //背景色
    39:   public static int indColor00;  //文字色 黒 負荷率0%
    40:   public static int indColor20;  //       水 負荷率20%
    41:   public static int indColor40;  //       緑 負荷率40%
    42:   public static int indColor60;  //       黄 負荷率60%
    43:   public static int indColor80;  //       赤 負荷率80%
    44: 
    45:   public static int indLastMPU;
    46: 
    47:   public static BufferedImage indImage;
    48:   public static int[] indBitmap;
    49:   public static Box indBox;
    50: 
    51:   public static void indInit () {
    52:     indBackGround = LnF.lnfRGB[0];
    53:     indColor00 = LnF.lnfRGB[14];
    54:     indColor20 = 0xff00ffff;
    55:     indColor40 = 0xff00ff00;
    56:     indColor60 = 0xffffff00;
    57:     indColor80 = 0xffff0000;
    58: 
    59:     indLastMPU = 0;
    60: 
    61:     indImage = new BufferedImage (IND_WIDTH, IND_HEIGHT, BufferedImage.TYPE_INT_RGB);
    62:     indBitmap = ((DataBufferInt) indImage.getRaster ().getDataBuffer ()).getData ();
    63:     Arrays.fill (indBitmap, indBackGround);
    64:     indBox = ComponentFactory.setFixedSize (
    65:       new Box (BoxLayout.LINE_AXIS) {
    66:         @Override public void paint (Graphics g) {
    67:           g.drawImage (indImage, 0, 0, null);
    68:         }
    69:         @Override protected void paintComponent (Graphics g) {
    70:         }
    71:         @Override protected void paintBorder (Graphics g) {
    72:         }
    73:         @Override protected void paintChildren (Graphics g) {
    74:         }
    75:         @Override public void update (Graphics g) {
    76:         }
    77:       },
    78:       IND_WIDTH, IND_HEIGHT);
    79:   }
    80: 
    81:   public static void indUpdate (double actualPercent) {
    82:     //  |          111111111122222|
    83:     //  |0123456789012345678901234|
    84:     //  |MC68EC030 999.9MHz 100.0%|
    85:     //MPU
    86:     if (indLastMPU != XEiJ.currentMPU) {
    87:       indLastMPU = XEiJ.currentMPU;
    88:       int color = indColor00;
    89:       String s = Model.mpuNameOf (XEiJ.currentMPU);
    90:       int l = s.length ();
    91:       for (int i = 0; i < 9; i++) {
    92:         indPutChar (IND_MPU_X + i, i < l ? s.charAt (i) : ' ', color);
    93:       }
    94:     }
    95:     //周波数
    96:     {
    97:       int color = indColor00;
    98:       int t = XEiJ.FMT_BCD4[Math.max (0, Math.min (9999, (int) (10.0 * XEiJ.mpuCurrentMHz + 0.5)))];
    99:       indPutChar (IND_CLOCK_X + 0, t < 0x1000 ? ' ' :  (t >> 12)       + '0', color);
   100:       indPutChar (IND_CLOCK_X + 1, t < 0x0100 ? ' ' : ((t >>  8) & 15) + '0', color);
   101:       indPutChar (IND_CLOCK_X + 2,                    ((t >>  4) & 15) + '0', color);
   102:       indPutChar (IND_CLOCK_X + 3, '.', color);
   103:       indPutChar (IND_CLOCK_X + 4,                    ( t        & 15) + '0', color);
   104:       indPutChar (IND_CLOCK_X + 5, 'M', color);
   105:       indPutChar (IND_CLOCK_X + 6, 'H', color);
   106:       indPutChar (IND_CLOCK_X + 7, 'z', color);
   107:     }
   108:     //負荷率
   109:     {
   110:       int t = XEiJ.FMT_BCD4[Math.max (0, Math.min (9999, (int) (10.0 * actualPercent + 0.5)))];
   111:       int color = (t < 0x0200 ? indColor00 :
   112:                    t < 0x0400 ? indColor20 :
   113:                    t < 0x0600 ? indColor40 :
   114:                    t < 0x0800 ? indColor60 :
   115:                    indColor80);
   116:       indPutChar (IND_RATIO_X + 0, t < 0x1000 ? ' ' :  (t >> 12)       + '0', color);
   117:       indPutChar (IND_RATIO_X + 1, t < 0x0100 ? ' ' : ((t >>  8) & 15) + '0', color);
   118:       indPutChar (IND_RATIO_X + 2,                    ((t >>  4) & 15) + '0', color);
   119:       indPutChar (IND_RATIO_X + 3, '.', color);
   120:       indPutChar (IND_RATIO_X + 4,                    ( t        & 15) + '0', color);
   121:       indPutChar (IND_RATIO_X + 5, '%', color);
   122:     }
   123:     indBox.repaint ();
   124:   }
   125: 
   126:   public static void indPutChar (int col, int c, int color) {
   127:     if (IND_FONT_HEIGHT == 8) {  //6x8
   128:       int src = IND_FONT_HEIGHT * c;
   129:       int dst = IND_PADDING_LEFT + IND_FONT_WIDTH * col + IND_WIDTH * IND_PADDING_TOP;
   130:       for (int v = 0; v < IND_FONT_HEIGHT; v++) {
   131:         int t = FontPage.Lcd.LCD6X8_FONT[src] << (32 - 8);
   132:         for (int u = 0; u < IND_FONT_WIDTH; u++) {
   133:           indBitmap[dst + u] = t < 0 ? color : indBackGround;
   134:           t <<= 1;
   135:         }
   136:         src++;
   137:         dst += IND_WIDTH;
   138:       }
   139:     } else {  //6x12
   140:       int src = 0x00fef400 - 0x00fc0000 + IND_FONT_HEIGHT * c;
   141:       int dst = IND_PADDING_LEFT + IND_FONT_WIDTH * col + IND_WIDTH * IND_PADDING_TOP;
   142:       for (int v = 0; v < IND_FONT_HEIGHT; v++) {
   143:         int t = ROM.iplrom16scsi256[src] << (32 - 8);
   144:         for (int u = 0; u < IND_FONT_WIDTH; u++) {
   145:           indBitmap[dst + u] = t < 0 ? color : indBackGround;
   146:           t <<= 1;
   147:         }
   148:         src++;
   149:         dst += IND_WIDTH;
   150:       }
   151:     }
   152:   }
   153: 
   154: /*
   155:   public static final short[] IND_ASCII_3X5 = {
   156:     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   157:     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   158:     //20
   159:     (0b000 << 12 |
   160:      0b000 <<  9 |
   161:      0b000 <<  6 |
   162:      0b000 <<  3 |
   163:      0b000),
   164:     //21 !
   165:     (0b010 << 12 |
   166:      0b010 <<  9 |
   167:      0b010 <<  6 |
   168:      0b000 <<  3 |
   169:      0b010),
   170:     //22 "
   171:     (0b101 << 12 |
   172:      0b101 <<  9 |
   173:      0b000 <<  6 |
   174:      0b000 <<  3 |
   175:      0b000),
   176:     //23 #
   177:     (0b101 << 12 |
   178:      0b111 <<  9 |
   179:      0b101 <<  6 |
   180:      0b111 <<  3 |
   181:      0b101),
   182:     //24 $
   183:     (0b011 << 12 |
   184:      0b110 <<  9 |
   185:      0b010 <<  6 |
   186:      0b011 <<  3 |
   187:      0b110),
   188:     //25 %
   189:     (0b101 << 12 |
   190:      0b110 <<  9 |
   191:      0b010 <<  6 |
   192:      0b011 <<  3 |
   193:      0b101),
   194:     //26 &
   195:     (0b110 << 12 |
   196:      0b110 <<  9 |
   197:      0b010 <<  6 |
   198:      0b101 <<  3 |
   199:      0b110),
   200:     //27 '
   201:     (0b010 << 12 |
   202:      0b010 <<  9 |
   203:      0b000 <<  6 |
   204:      0b000 <<  3 |
   205:      0b000),
   206:     //28 (
   207:     (0b001 << 12 |
   208:      0b010 <<  9 |
   209:      0b010 <<  6 |
   210:      0b010 <<  3 |
   211:      0b001),
   212:     //29 )
   213:     (0b100 << 12 |
   214:      0b010 <<  9 |
   215:      0b010 <<  6 |
   216:      0b010 <<  3 |
   217:      0b100),
   218:     //2a *
   219:     (0b000 << 12 |
   220:      0b101 <<  9 |
   221:      0b010 <<  6 |
   222:      0b101 <<  3 |
   223:      0b000),
   224:     //2b +
   225:     (0b000 << 12 |
   226:      0b010 <<  9 |
   227:      0b111 <<  6 |
   228:      0b010 <<  3 |
   229:      0b000),
   230:     //2c ,
   231:     (0b000 << 12 |
   232:      0b000 <<  9 |
   233:      0b000 <<  6 |
   234:      0b010 <<  3 |
   235:      0b010),
   236:     //2d -
   237:     (0b000 << 12 |
   238:      0b000 <<  9 |
   239:      0b111 <<  6 |
   240:      0b000 <<  3 |
   241:      0b000),
   242:     //2e .
   243:     (0b000 << 12 |
   244:      0b000 <<  9 |
   245:      0b000 <<  6 |
   246:      0b000 <<  3 |
   247:      0b010),
   248:     //2f /
   249:     (0b000 << 12 |
   250:      0b001 <<  9 |
   251:      0b010 <<  6 |
   252:      0b100 <<  3 |
   253:      0b000),
   254:     //30 0
   255:     (0b111 << 12 |
   256:      0b101 <<  9 |
   257:      0b101 <<  6 |
   258:      0b101 <<  3 |
   259:      0b111),
   260:     //31 1
   261:     (0b010 << 12 |
   262:      0b010 <<  9 |
   263:      0b010 <<  6 |
   264:      0b010 <<  3 |
   265:      0b010),
   266:     //32 2
   267:     (0b111 << 12 |
   268:      0b001 <<  9 |
   269:      0b111 <<  6 |
   270:      0b100 <<  3 |
   271:      0b111),
   272:     //33 3
   273:     (0b111 << 12 |
   274:      0b001 <<  9 |
   275:      0b111 <<  6 |
   276:      0b001 <<  3 |
   277:      0b111),
   278:     //34 4
   279:     (0b101 << 12 |
   280:      0b101 <<  9 |
   281:      0b111 <<  6 |
   282:      0b001 <<  3 |
   283:      0b001),
   284:     //35 5
   285:     (0b111 << 12 |
   286:      0b100 <<  9 |
   287:      0b111 <<  6 |
   288:      0b001 <<  3 |
   289:      0b111),
   290:     //36 6
   291:     (0b111 << 12 |
   292:      0b100 <<  9 |
   293:      0b111 <<  6 |
   294:      0b101 <<  3 |
   295:      0b111),
   296:     //37 7
   297:     (0b111 << 12 |
   298:      0b001 <<  9 |
   299:      0b001 <<  6 |
   300:      0b001 <<  3 |
   301:      0b001),
   302:     //38 8
   303:     (0b111 << 12 |
   304:      0b101 <<  9 |
   305:      0b111 <<  6 |
   306:      0b101 <<  3 |
   307:      0b111),
   308:     //39 9
   309:     (0b111 << 12 |
   310:      0b101 <<  9 |
   311:      0b111 <<  6 |
   312:      0b001 <<  3 |
   313:      0b111),
   314:     //3a :
   315:     (0b000 << 12 |
   316:      0b010 <<  9 |
   317:      0b000 <<  6 |
   318:      0b010 <<  3 |
   319:      0b000),
   320:     //3b ;
   321:     (0b000 << 12 |
   322:      0b010 <<  9 |
   323:      0b000 <<  6 |
   324:      0b010 <<  3 |
   325:      0b010),
   326:     //3c <
   327:     (0b001 << 12 |
   328:      0b010 <<  9 |
   329:      0b100 <<  6 |
   330:      0b010 <<  3 |
   331:      0b001),
   332:     //3d =
   333:     (0b000 << 12 |
   334:      0b111 <<  9 |
   335:      0b000 <<  6 |
   336:      0b111 <<  3 |
   337:      0b000),
   338:     //3e >
   339:     (0b100 << 12 |
   340:      0b010 <<  9 |
   341:      0b001 <<  6 |
   342:      0b010 <<  3 |
   343:      0b100),
   344:     //3f ?
   345:     (0b110 << 12 |
   346:      0b001 <<  9 |
   347:      0b010 <<  6 |
   348:      0b000 <<  3 |
   349:      0b010),
   350:     //40 @
   351:     (0b010 << 12 |
   352:      0b101 <<  9 |
   353:      0b111 <<  6 |
   354:      0b100 <<  3 |
   355:      0b011),
   356:     //41 A
   357:     (0b010 << 12 |
   358:      0b101 <<  9 |
   359:      0b111 <<  6 |
   360:      0b101 <<  3 |
   361:      0b101),
   362:     //42 B
   363:     (0b110 << 12 |
   364:      0b101 <<  9 |
   365:      0b110 <<  6 |
   366:      0b101 <<  3 |
   367:      0b110),
   368:     //43 C
   369:     (0b011 << 12 |
   370:      0b100 <<  9 |
   371:      0b100 <<  6 |
   372:      0b100 <<  3 |
   373:      0b011),
   374:     //44 D
   375:     (0b110 << 12 |
   376:      0b101 <<  9 |
   377:      0b101 <<  6 |
   378:      0b101 <<  3 |
   379:      0b110),
   380:     //45 E
   381:     (0b111 << 12 |
   382:      0b100 <<  9 |
   383:      0b111 <<  6 |
   384:      0b100 <<  3 |
   385:      0b111),
   386:     //46 F
   387:     (0b111 << 12 |
   388:      0b100 <<  9 |
   389:      0b111 <<  6 |
   390:      0b100 <<  3 |
   391:      0b100),
   392:     //47 G
   393:     (0b011 << 12 |
   394:      0b100 <<  9 |
   395:      0b101 <<  6 |
   396:      0b101 <<  3 |
   397:      0b011),
   398:     //48 H
   399:     (0b101 << 12 |
   400:      0b101 <<  9 |
   401:      0b111 <<  6 |
   402:      0b101 <<  3 |
   403:      0b101),
   404:     //49 I
   405:     (0b111 << 12 |
   406:      0b010 <<  9 |
   407:      0b010 <<  6 |
   408:      0b010 <<  3 |
   409:      0b111),
   410:     //4a J
   411:     (0b001 << 12 |
   412:      0b001 <<  9 |
   413:      0b001 <<  6 |
   414:      0b001 <<  3 |
   415:      0b110),
   416:     //4b K
   417:     (0b101 << 12 |
   418:      0b101 <<  9 |
   419:      0b110 <<  6 |
   420:      0b101 <<  3 |
   421:      0b101),
   422:     //4c L
   423:     (0b100 << 12 |
   424:      0b100 <<  9 |
   425:      0b100 <<  6 |
   426:      0b100 <<  3 |
   427:      0b111),
   428:     //4d M
   429:     (0b101 << 12 |
   430:      0b111 <<  9 |
   431:      0b111 <<  6 |
   432:      0b101 <<  3 |
   433:      0b101),
   434:     //4e N
   435:     (0b110 << 12 |
   436:      0b101 <<  9 |
   437:      0b101 <<  6 |
   438:      0b101 <<  3 |
   439:      0b101),
   440:     //4f O
   441:     (0b010 << 12 |
   442:      0b101 <<  9 |
   443:      0b101 <<  6 |
   444:      0b101 <<  3 |
   445:      0b010),
   446:     //50 P
   447:     (0b110 << 12 |
   448:      0b101 <<  9 |
   449:      0b110 <<  6 |
   450:      0b100 <<  3 |
   451:      0b100),
   452:     //51 Q
   453:     (0b010 << 12 |
   454:      0b101 <<  9 |
   455:      0b101 <<  6 |
   456:      0b111 <<  3 |
   457:      0b011),
   458:     //52 R
   459:     (0b110 << 12 |
   460:      0b101 <<  9 |
   461:      0b110 <<  6 |
   462:      0b101 <<  3 |
   463:      0b101),
   464:     //53 S
   465:     (0b011 << 12 |
   466:      0b100 <<  9 |
   467:      0b010 <<  6 |
   468:      0b001 <<  3 |
   469:      0b110),
   470:     //54 T
   471:     (0b111 << 12 |
   472:      0b010 <<  9 |
   473:      0b010 <<  6 |
   474:      0b010 <<  3 |
   475:      0b010),
   476:     //55 U
   477:     (0b101 << 12 |
   478:      0b101 <<  9 |
   479:      0b101 <<  6 |
   480:      0b101 <<  3 |
   481:      0b111),
   482:     //56 V
   483:     (0b101 << 12 |
   484:      0b101 <<  9 |
   485:      0b101 <<  6 |
   486:      0b101 <<  3 |
   487:      0b010),
   488:     //57 W
   489:     (0b101 << 12 |
   490:      0b101 <<  9 |
   491:      0b111 <<  6 |
   492:      0b111 <<  3 |
   493:      0b101),
   494:     //58 X
   495:     (0b101 << 12 |
   496:      0b101 <<  9 |
   497:      0b010 <<  6 |
   498:      0b101 <<  3 |
   499:      0b101),
   500:     //59 Y
   501:     (0b101 << 12 |
   502:      0b101 <<  9 |
   503:      0b010 <<  6 |
   504:      0b010 <<  3 |
   505:      0b010),
   506:     //5a Z
   507:     (0b111 << 12 |
   508:      0b001 <<  9 |
   509:      0b010 <<  6 |
   510:      0b100 <<  3 |
   511:      0b111),
   512:     //5b [
   513:     (0b011 << 12 |
   514:      0b010 <<  9 |
   515:      0b010 <<  6 |
   516:      0b010 <<  3 |
   517:      0b011),
   518:     //5c \ 
   519:     (0b000 << 12 |
   520:      0b100 <<  9 |
   521:      0b010 <<  6 |
   522:      0b001 <<  3 |
   523:      0b000),
   524:     //5d ]
   525:     (0b110 << 12 |
   526:      0b010 <<  9 |
   527:      0b010 <<  6 |
   528:      0b010 <<  3 |
   529:      0b110),
   530:     //5e ^
   531:     (0b010 << 12 |
   532:      0b101 <<  9 |
   533:      0b000 <<  6 |
   534:      0b000 <<  3 |
   535:      0b000),
   536:     //5f _
   537:     (0b000 << 12 |
   538:      0b000 <<  9 |
   539:      0b000 <<  6 |
   540:      0b000 <<  3 |
   541:      0b111),
   542:     //60 `
   543:     (0b010 << 12 |
   544:      0b001 <<  9 |
   545:      0b000 <<  6 |
   546:      0b000 <<  3 |
   547:      0b000),
   548:     //61 a
   549:     (0b000 << 12 |
   550:      0b011 <<  9 |
   551:      0b101 <<  6 |
   552:      0b101 <<  3 |
   553:      0b011),
   554:     //62 b
   555:     (0b100 << 12 |
   556:      0b110 <<  9 |
   557:      0b101 <<  6 |
   558:      0b101 <<  3 |
   559:      0b110),
   560:     //63 c
   561:     (0b000 << 12 |
   562:      0b011 <<  9 |
   563:      0b100 <<  6 |
   564:      0b100 <<  3 |
   565:      0b011),
   566:     //64 d
   567:     (0b001 << 12 |
   568:      0b011 <<  9 |
   569:      0b101 <<  6 |
   570:      0b101 <<  3 |
   571:      0b011),
   572:     //65 e
   573:     (0b000 << 12 |
   574:      0b011 <<  9 |
   575:      0b101 <<  6 |
   576:      0b110 <<  3 |
   577:      0b011),
   578:     //66 f
   579:     (0b011 << 12 |
   580:      0b111 <<  9 |
   581:      0b010 <<  6 |
   582:      0b010 <<  3 |
   583:      0b010),
   584:     //67 g
   585:     (0b011 << 12 |
   586:      0b101 <<  9 |
   587:      0b111 <<  6 |
   588:      0b001 <<  3 |
   589:      0b110),
   590:     //68 h
   591:     (0b100 << 12 |
   592:      0b110 <<  9 |
   593:      0b101 <<  6 |
   594:      0b101 <<  3 |
   595:      0b101),
   596:     //69 i
   597:     (0b010 << 12 |
   598:      0b000 <<  9 |
   599:      0b010 <<  6 |
   600:      0b010 <<  3 |
   601:      0b010),
   602:     //6a j
   603:     (0b001 << 12 |
   604:      0b000 <<  9 |
   605:      0b001 <<  6 |
   606:      0b001 <<  3 |
   607:      0b110),
   608:     //6b k
   609:     (0b100 << 12 |
   610:      0b101 <<  9 |
   611:      0b110 <<  6 |
   612:      0b110 <<  3 |
   613:      0b101),
   614:     //6c l
   615:     (0b110 << 12 |
   616:      0b010 <<  9 |
   617:      0b010 <<  6 |
   618:      0b010 <<  3 |
   619:      0b010),
   620:     //6d m
   621:     (0b000 << 12 |
   622:      0b110 <<  9 |
   623:      0b111 <<  6 |
   624:      0b111 <<  3 |
   625:      0b101),
   626:     //6e n
   627:     (0b000 << 12 |
   628:      0b110 <<  9 |
   629:      0b101 <<  6 |
   630:      0b101 <<  3 |
   631:      0b101),
   632:     //6f o
   633:     (0b000 << 12 |
   634:      0b010 <<  9 |
   635:      0b101 <<  6 |
   636:      0b101 <<  3 |
   637:      0b010),
   638:     //70 p
   639:     (0b000 << 12 |
   640:      0b110 <<  9 |
   641:      0b101 <<  6 |
   642:      0b110 <<  3 |
   643:      0b100),
   644:     //71 q
   645:     (0b000 << 12 |
   646:      0b011 <<  9 |
   647:      0b101 <<  6 |
   648:      0b011 <<  3 |
   649:      0b001),
   650:     //72 r
   651:     (0b000 << 12 |
   652:      0b011 <<  9 |
   653:      0b100 <<  6 |
   654:      0b100 <<  3 |
   655:      0b100),
   656:     //73 s
   657:     (0b000 << 12 |
   658:      0b011 <<  9 |
   659:      0b010 <<  6 |
   660:      0b001 <<  3 |
   661:      0b110),
   662:     //74 t
   663:     (0b010 << 12 |
   664:      0b111 <<  9 |
   665:      0b010 <<  6 |
   666:      0b010 <<  3 |
   667:      0b001),
   668:     //75 u
   669:     (0b000 << 12 |
   670:      0b101 <<  9 |
   671:      0b101 <<  6 |
   672:      0b101 <<  3 |
   673:      0b011),
   674:     //76 v
   675:     (0b000 << 12 |
   676:      0b101 <<  9 |
   677:      0b101 <<  6 |
   678:      0b101 <<  3 |
   679:      0b010),
   680:     //77 w
   681:     (0b000 << 12 |
   682:      0b101 <<  9 |
   683:      0b111 <<  6 |
   684:      0b111 <<  3 |
   685:      0b011),
   686:     //78 x
   687:     (0b000 << 12 |
   688:      0b101 <<  9 |
   689:      0b010 <<  6 |
   690:      0b010 <<  3 |
   691:      0b101),
   692:     //79 y
   693:     (0b000 << 12 |
   694:      0b101 <<  9 |
   695:      0b101 <<  6 |
   696:      0b010 <<  3 |
   697:      0b100),
   698:     //7a z
   699:     (0b000 << 12 |
   700:      0b111 <<  9 |
   701:      0b001 <<  6 |
   702:      0b010 <<  3 |
   703:      0b111),
   704:     //7b {
   705:     (0b001 << 12 |
   706:      0b010 <<  9 |
   707:      0b110 <<  6 |
   708:      0b010 <<  3 |
   709:      0b001),
   710:     //7c |
   711:     (0b010 << 12 |
   712:      0b010 <<  9 |
   713:      0b000 <<  6 |
   714:      0b010 <<  3 |
   715:      0b010),
   716:     //7d }
   717:     (0b100 << 12 |
   718:      0b010 <<  9 |
   719:      0b011 <<  6 |
   720:      0b010 <<  3 |
   721:      0b100),
   722:     //7e ~
   723:     (0b111 << 12 |
   724:      0b000 <<  9 |
   725:      0b000 <<  6 |
   726:      0b000 <<  3 |
   727:      0b000),
   728:   };
   729: */
   730:   //  perl misc/itoc.pl xeij/Indicator.java IND_ASCII_3X5
   731:   public static final char[] IND_ASCII_3X5 = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\u2482\u5a00\u5f7d\u3c9e\u5c9d\u6cae\u2400\u1491\u4494\u0aa8\u05d0\22\u01c0\2\u02a0\u7b6f\u2492\u73e7\u73cf\u5bc9\u79cf\u79ef\u7249\u7bef\u7bcf\u0410\u0412\u1511\u0e38\u4454\u6282\u2be3\u2bed\u6bae\u3923\u6b6e\u79e7\u79e4\u396b\u5bed\u7497\u124e\u5bad\u4927\u5fed\u6b6d\u2b6a\u6ba4\u2b7b\u6bad\u388e\u7492\u5b6f\u5b6a\u5bfd\u5aad\u5a92\u72a7\u3493\u0888\u6496\u2a00\7\u2200\u076b\u4d6e\u0723\u176b\u0773\u3e92\u3bce\u4d6d\u2092\u104e\u4bb5\u6492\u0dfd\u0d6d\u056a\u0d74\u0759\u0724\u068e\u2e91\u0b6b\u0b6a\u0bfb\u0a95\u0b54\u0e57\u1591\u2412\u44d4\u7000".toCharArray ();
   732: 
   733: }