edid.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 130 行

JAVA
130
字号
/*
 * $Id: EDID.java,v 1.1 2003/11/25 11:51:41 epr Exp $
 */
package org.jnode.driver.video.ddc;

/**
 * @author Ewout Prangsma (epr@users.sourceforge.net)
 */
public class EDID implements EDIDConstants {

	private final byte[] data;

	public EDID(byte[] data) {
		this.data = data;
	}
	
	public String getManufacturer() {
		final int x0 = data[VENDOR_SECTION + V_MANUFACTURER] & 0xff;
		final int x1 = data[VENDOR_SECTION + V_MANUFACTURER + 1] & 0xff;
		final char[] m = new char[3];
		m[0] = (char) ('@' + ((x0 & 0x7c) >> 2));
		m[1] = (char) ('@' + ((x0 & 0x03) << 3) + ((x1 & 0xE0) >> 5));
		m[2] = (char) ('@' + (x1 & 0x1F));
		return new String(m);
	}

	public int getProductID() {
		final int x0 = data[VENDOR_SECTION + V_PROD_ID] & 0xff;
		final int x1 = data[VENDOR_SECTION + V_PROD_ID + 1] & 0xff;
		return x0 | (x1 << 8);
	}
	
	public int getSerialNumber() {
		final int x0 = data[VENDOR_SECTION + V_SERIAL] & 0xff;
		final int x1 = data[VENDOR_SECTION + V_SERIAL + 1] & 0xff;
		final int x2 = data[VENDOR_SECTION + V_SERIAL + 2] & 0xff;
		final int x3 = data[VENDOR_SECTION + V_SERIAL + 3] & 0xff;
		return x0 | (x1 << 8) | (x2 << 16) | (x3 << 24);		
	}

	public int getYear() {
		final int x0 = data[VENDOR_SECTION + V_YEAR] & 0xff;
		return x0 + 1990;
	}
	
	public int getWeek() {
		final int x0 = data[VENDOR_SECTION + V_WEEK] & 0xff;
		return x0;
	}
	
	public int getEDIDVersion() {
		final int x0 = data[VERSION_SECTION + V_VERSION] & 0xff;
		return x0;
	}
	
	public int getEDIDRevision() {
		final int x0 = data[VERSION_SECTION + V_REVISION] & 0xff;
		return x0;
	}
	
	public int getInputType() {
		final int x0 = data[DISPLAY_SECTION + D_INPUT] & 0xff;
		return (x0 & 0x80) >> 7;
	}
	
	public int getInputVoltage() {
		final int x0 = data[DISPLAY_SECTION + D_INPUT] & 0xff;
		return (x0 & 0x60) >> 5;
	}
	
	public int getInputSetup() {
		final int x0 = data[DISPLAY_SECTION + D_INPUT] & 0xff;
		return (x0 & 0x10) >> 4;
	}
	
	public int getInputSync() {
		final int x0 = data[DISPLAY_SECTION + D_INPUT] & 0xff;
		return (x0 & 0x0f);
	}
	
	public int getHSize() {
		final int x0 = data[DISPLAY_SECTION + D_HSIZE] & 0xff;
		return x0;
	}
	
	public int getVSize() {
		final int x0 = data[DISPLAY_SECTION + D_VSIZE] & 0xff;
		return x0;
	}
	
	public float getGamma() {
		final int x0 = data[DISPLAY_SECTION + D_GAMMA] & 0xff;
		return (x0 + 100.0f) / 100.0f;
	}
	
	public int getDPMS() {
		final int x0 = data[DISPLAY_SECTION + FEAT_S] & 0xff;
		return (x0 & 0xE0) >> 5;
	}
	
	public int getDisplayType() {
		final int x0 = data[DISPLAY_SECTION + FEAT_S] & 0xff;
		return (x0 & 0x18) >> 3;
	}
	
	public String toString() {
		return "Vendor(" + getManufacturer() + ", "  
			+ getProductID() + ", "
			+ getSerialNumber() + ", "
			+ "wk" + getWeek() + "-" + getYear() 
			+ ")\n"
			+ "EDID-Version(" + getEDIDVersion() + "." + getEDIDRevision() + ")\n"
			+ "Display(" 
			+ getInputType() + ", "
			+ getInputVoltage() + ", "
			+ getInputSetup() + ", "
			+ getInputSync() + ", "
			+ getHSize() + ", "
			+ getVSize() + ", "
			+ getGamma() + ", "
			+ getDPMS() + ", "
			+ getDisplayType()
			+ ")";
	}
	
	public byte[] getRawData() {
		return data;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?