⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaultpainter.java

📁 java实现的数据通信的八种编码方式(AMIcode码
💻 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 + -