📄 defaultpainter.java
字号:
/**
* Pxb dc Tool
* Copyright (C) 2008 Panxiaobo.
* $Id: DefaultPainter.java 2 2008-10-15 12:07:18Z Panxiaobo $
*/
package pxb.dc;
import java.awt.Color;
import java.awt.Graphics;
/**
* @author Panxiaobo [pxb1988@126.com]
*/
public class DefaultPainter implements Painter
{
protected int[] signals = {};
protected Code[] codes = {};
public void paint(final Graphics g, final int x1, final int y1,
final int x2, final int y2)
{
final int xStart = x1 + 80;
final int yStart = y1 + 25;
final int yEnd = y2 - 20;
// y
final int yt = (yEnd - yStart) / codes.length;
for (int i = 0; i < codes.length; i++)
{
final int iy = (yStart + yt * i + yStart + yt * i + yt) / 2;
g.setColor(Color.BLACK);
g.drawString(codes[i].getName(), x1, iy);
g.setColor(Color.GRAY);
g.drawLine(x1, yStart + yt * i, x2, yStart + yt * i);
}
g.setColor(Color.GRAY);
g.drawLine(x1, yStart + yt * codes.length, x2, yStart + yt
* codes.length);
// x
final int xt = (x2 - xStart) / signals.length;
for (int i = 0; i < signals.length; i++)
{
final int ix = (xStart + xt * i + xStart + xt + xt * i) / 2;
g.setColor(Color.LIGHT_GRAY);
g.drawLine(xStart + xt * i, y1, xStart + xt * i, yEnd);
g.setColor(Color.BLACK);
g.drawString("" + signals[i], ix, y1 + 15);
}
g.setColor(Color.LIGHT_GRAY);
g.drawLine(xStart + xt * signals.length, y1, xStart + xt
* signals.length, yEnd);
//
for (int i = 0; i < signals.length; i++)
{
final int ix1 = xStart + i * xt;
final int ix2 = xStart + i * xt + xt;
for (int j = 0; j < codes.length; j++)
{
int iy1 = yStart + j * yt + 10;
int iy2 = yStart + j * yt + yt - 10;
Code code = codes[j];
this.paintCodeSignal(g, code, i, ix1, iy1, ix2, iy2);
}
}
g.setColor(Color.LIGHT_GRAY);
g.drawString("Copyright (C) 2008 Panxiaobo.", x1, yEnd + 15);
}
protected void paintCodeSignal(final Graphics g, final Code code,
final int signalIndex, final int x1, final int y1, final int x2,
final int y2)
{
int lastLeve = code.getLastLeve();
int leves[] = code.paintBit(signalIndex);
int allLeve = code.getLeveCount();
if (leves.length == 0)
{
throw new RuntimeException("Error!");
}
int xt = (x2 - x1) / leves.length;
int yt = (y2 - y1) / allLeve;
for (int i = 0; i < leves.length; i++)
{
int xi1 = x1 + xt * i;
int xi2 = x1 + xt * i + xt;
int yi = y2 - yt * leves[i];
int lasty = y2 - yt * lastLeve;
g.setColor(Color.RED);
g.drawLine(xi1, lasty, xi1, yi);
g.drawLine(xi1, yi, xi2, yi);
lastLeve = leves[i];
}
}
public void setCodes(Code[] codes)
{
this.codes = codes;
}
public void setSignals(int[] signals)
{
this.signals = signals;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -