亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? alignmentpattern.java

?? QR code是日本人開發的現在很流行的國際通用的二維條形碼
?? JAVA
字號:
package jp.sourceforge.qrcode.pattern;import jp.sourceforge.qrcode.QRCodeDecoder;import jp.sourceforge.qrcode.reader.*;import jp.sourceforge.qrcode.exception.AlignmentPatternNotFoundException;import jp.sourceforge.qrcode.exception.InvalidVersionException;import jp.sourceforge.qrcode.geom.*;import jp.sourceforge.qrcode.util.*;public class AlignmentPattern {	static final int RIGHT = 1;	static final int BOTTOM = 2;	static final int LEFT = 3;	static final int TOP = 4;	static DebugCanvas canvas = QRCodeDecoder.getCanvas();	Point[][] center;	//int sqrtCenters;  ///The number per 1 sides of alignment pattern	int patternDistance;		AlignmentPattern(Point[][] center, int patternDistance) {		this.center = center;		this.patternDistance = patternDistance;	}		public static AlignmentPattern findAlignmentPattern(boolean[][] image, FinderPattern finderPattern) 		throws AlignmentPatternNotFoundException, InvalidVersionException {		Point[][] logicalCenters = getLogicalCenter(finderPattern);		int logicalDistance = logicalCenters[1][0].getX() - logicalCenters[0][0].getX();		//With it converts in order to handle in the same way		Point[][] centers = null;		centers = getCenter(image, finderPattern, logicalCenters);		return new AlignmentPattern(centers, logicalDistance);	}		public Point[][] getCenter() {		return center;	}		// for only trancparency access in version 1, which has no alignment pattern	public void setCenter(Point[][] center) {		this.center = center;	}		public int getLogicalDistance() {		return patternDistance;	}		static Point[][] getCenter(boolean[][] image, FinderPattern finderPattern, Point[][] logicalCenters) 			throws AlignmentPatternNotFoundException {		int moduleSize = finderPattern.getModuleSize();		Axis axis = new Axis(finderPattern.getAngle(), moduleSize);		int sqrtCenters = logicalCenters.length;		Point[][] centers = new Point[sqrtCenters][sqrtCenters];				axis.setOrigin(finderPattern.getCenter(FinderPattern.UL));		centers[0][0] = axis.translate(3, 3);		canvas.drawCross(centers[0][0], Color.BLUE);		axis.setOrigin(finderPattern.getCenter(FinderPattern.UR));		centers[sqrtCenters - 1][0] = axis.translate(-3, 3);		canvas.drawCross(centers[sqrtCenters - 1][0], Color.BLUE);		axis.setOrigin(finderPattern.getCenter(FinderPattern.DL));		centers[0][sqrtCenters - 1] = axis.translate(3, -3);		canvas.drawCross(centers[0][sqrtCenters - 1], Color.BLUE);		Point tmpPoint=centers[0][0];		for (int y = 0; y < sqrtCenters; y++) {			for (int x = 0; x < sqrtCenters; x++) {				if ((x==0 && y==0) || (x==0 && y==sqrtCenters-1) || (x==sqrtCenters-1 && y==0)) {//					canvas.drawCross(centers[x][y], java.awt.Color.MAGENTA);					continue;				}				Point target = null;				if (y == 0) {					if (x > 0 && x < sqrtCenters - 1) {						target = axis.translate(centers[x - 1][y], logicalCenters[x][y].getX() - logicalCenters[x - 1][y].getX(), 0);            centers[x][y] = new Point(target.getX(), target.getY());            canvas.drawCross(centers[x][y],Color.RED);					}				}				else if (x == 0) {					if (y > 0 && y < sqrtCenters - 1) {						target = axis.translate(centers[x][y - 1], 0, logicalCenters[x][y].getY() - logicalCenters[x][y - 1].getY());            centers[x][y] = new Point(target.getX(), target.getY());            canvas.drawCross(centers[x][y], Color.RED);					}				}				else {					Point t1 = axis.translate(centers[x - 1][y], logicalCenters[x][y].getX() - logicalCenters[x - 1][y].getX(), 0);					Point t2 = axis.translate(centers[x][y - 1], 0, logicalCenters[x][y].getY() - logicalCenters[x][y - 1].getY());					centers[x][y] = new Point((t1.getX() + t2.getX()) / 2, (t1.getY() + t2.getY()) / 2 + 1);				}				if (finderPattern.getVersion() > 1) {					Point precisionCenter = getPrecisionCenter(image, centers[x][y]);						//if (centers[x][y].distanceOf(precisionCenter) < 6) {						canvas.drawCross(centers[x][y],Color.RED);						int dx = precisionCenter.getX() - centers[x][y].getX();						int dy = precisionCenter.getY() - centers[x][y].getY();						canvas.println("Adjust AP(" + x + ","+ y+") to d("+dx+","+dy+")");																centers[x][y] = precisionCenter;					//}				}				canvas.drawCross(centers[x][y], Color.BLUE);				canvas.drawLine(new Line(tmpPoint, centers[x][y]), Color.LIGHTBLUE);				tmpPoint=centers[x][y];				// Top row/*				if (x >= 1 && x<(sqrtCenters-1) && y == 0 && sqrtCenters >= 3) {					//center-top alignment pattern in version 7-13					centers[x][y] = Point.getCenter(centers[0][0], centers[sqrtCenters - 1][0]);				}				// left column				else if (x == 0 && y<(sqrtCenters-1) && y >= 1 && sqrtCenters >= 3) {					//left-center alignment pattern in version 7-13					centers[x][y] = Point.getCenter(centers[0][0], centers[0][sqrtCenters - 1]);									}				// inside				else if (x >= 1 && y >= 1){					Line[] additionalLines = { 							new Line(centers[x - 1][y - 1], centers[x][y - 1]),							new Line(centers[x - 1][y - 1], centers[x - 1][y])};					int dx = centers[x - 1][y].getX() - centers[x - 1][y - 1].getX();					int dy = centers[x - 1][y].getY() - centers[x - 1][y - 1].getY();					additionalLines[0].translate(dx,dy);					dx = centers[x][y - 1].getX() - centers[x - 1][y - 1].getX();					dy = centers[x][y - 1].getY() - centers[x - 1][y - 1].getY();					additionalLines[1].translate(dx,dy);					centers[x][y] = Point.getCenter(additionalLines[0].getP2(), additionalLines[1].getP2());				}*///				Sorry but I hate continue//				else // dummy alignment pattern (source is finder pattern)//					continue;				/*canvas.drawLine(tmpPoint, centers[x][y], java.awt.Color.YELLOW);				tmpPoint=centers[x][y];				// if it is not one of the 3 big alignment patter,				if(!(x==0 && y==0) && !(x==0 && y==sqrtCenters-1) && !(x==sqrtCenters-1 && y==0))				{					try {						centers[x][y] = getPrecisionCenter(image, centers[x][y]);						canvas.drawCross(getPrecisionCenter(image, centers[x][y]), java.awt.Color.YELLOW);					} catch (AlignmentPatternEdgeNotFoundException e) {						e.printStackTrace();						throw e;					}					canvas.drawCross(centers[x][y], java.awt.Color.RED);				}				else				{					canvas.drawCross(centers[x][y], java.awt.Color.GREEN);				}*/			}		}		return centers;	}/*		static Point[][] getCenter(boolean[][] image, FinderPattern finderPattern, Point[][] logicalCenters) 			throws AlignmentPatternEdgeNotFoundException {		int moduleSize = finderPattern.getModuleSize();		int sin = finderPattern.getAngle()[0];		int cos = finderPattern.getAngle()[1];		Axis axis = new Axis(sin, cos, moduleSize);		int sqrtCenters = logicalCenters.length;		Point[][] centers = new Point[sqrtCenters][sqrtCenters];				axis.setOrigin(finderPattern.getCenter(FinderPattern.UL));		centers[0][0] = axis.translate(3, 3);		//centers[0][0] = finderPattern.getCenter(FinderPattern.UL);		axis.setOrigin(finderPattern.getCenter(FinderPattern.UR));		centers[sqrtCenters - 1][0] = axis.translate(-3, 3);		//centers[sqrtCenters - 1][0] = finderPattern.getCenter(FinderPattern.UR);		axis.setOrigin(finderPattern.getCenter(FinderPattern.DL));		centers[0][sqrtCenters - 1] = axis.translate(3, -3);		//centers[0][sqrtCenters - 1] = finderPattern.getCenter(FinderPattern.DL);		for (int y = 0; y < sqrtCenters; y++) {			for (int x = 0; x < sqrtCenters; x++) {				if (x == 1 && y == 0 && sqrtCenters == 3) { //型番7?13の中央上の位置合せパターン					centers[x][y] = Point.getCenter(centers[0][0], centers[sqrtCenters - 1][0]);				}				else if (x == 0 && y == 1 && sqrtCenters == 3) {//型番7?13の左中央の位置合せパターン					centers[x][y] = Point.getCenter(centers[0][0], centers[0][sqrtCenters - 1]);									}				else if (x >= 1 && y >= 1){					Line[] additionalLines = { 							new Line(centers[x - 1][y - 1], centers[x][y - 1]),							new Line(centers[x - 1][y - 1], centers[x - 1][y])};					int dx = centers[x - 1][y].getX() - centers[x - 1][y - 1].getX();					int dy = centers[x - 1][y].getY() - centers[x - 1][y - 1].getY();					additionalLines[0].translate(dx,dy);					dx = centers[x][y - 1].getX() - centers[x - 1][y - 1].getX();					dy = centers[x][y - 1].getY() - centers[x - 1][y - 1].getY();					additionalLines[1].translate(dx,dy);					centers[x][y] = Point.getCenter(additionalLines[0].getP2(), additionalLines[1].getP2());				}				else // dummy alignment pattern (source is finder pattern)					continue;				try {					centers[x][y] = getPrecisionCenter(image, centers[x][y]);				} catch (AlignmentPatternEdgeNotFoundException e) {					e.printStackTrace();					throw e;				}				canvas.drawCross(centers[x][y], java.awt.Color.RED);			}			//System.out.println("");		}		return centers;	}*/	static Point getPrecisionCenter(boolean[][] image, Point targetPoint) 		throws AlignmentPatternNotFoundException {		// find nearest dark point and update it as new rough center point 		// when original rough center points light point 		int tx = targetPoint.getX(), ty = targetPoint.getY();		if ((tx < 0 || ty < 0) || (tx > image.length - 1 || ty > image[0].length -1))			throw new AlignmentPatternNotFoundException("Alignment Pattern finder exceeded out of image");					if (image[targetPoint.getX()][targetPoint.getY()] == QRCodeImageReader.POINT_LIGHT) {			int scope = 0;			boolean found = false;			while (!found) {				scope++;				for (int dy = scope; dy > -scope; dy--) {					for (int dx = scope; dx > -scope; dx--) {						int x = targetPoint.getX() + dx;						int y = targetPoint.getY() + dy;						if ((x < 0 || y < 0) || (x > image.length - 1 || y > image[0].length -1))							throw new AlignmentPatternNotFoundException("Alignment Pattern finder exceeded out of image");						if (image[x][y] == QRCodeImageReader.POINT_DARK) {							targetPoint = new Point(targetPoint.getX() + dx,targetPoint.getY() + dy);              canvas.drawPoint(targetPoint, Color.RED);							found = true;						}					}				}			}		}		int x, lx, rx, y, uy, dy;		x = lx = rx = targetPoint.getX();		y = uy = dy = targetPoint.getY();		// GuoQing Hu's FIX		while (lx >= 1                   && !targetPointOnTheCorner(image, lx, y, lx - 1, y)) lx--;		while (rx < image.length - 1     && !targetPointOnTheCorner(image, rx, y, rx + 1, y)) rx++;		while (uy >= 1                   && !targetPointOnTheCorner(image, x, uy, x, uy - 1)) uy--;		while (dy < image[0].length - 1  && !targetPointOnTheCorner(image, x, dy, x, dy + 1)) dy++;				return new Point((lx + rx + 1) / 2, (uy + dy + 1) / 2);	}	static boolean targetPointOnTheCorner(boolean[][] image, int x, int y, int nx, int ny) {		if( x < 0 || y < 0 || nx < 0 || ny < 0 || x > image.length || y > image[0].length || nx > image.length || ny > image[0].length) {			// System.out.println("Overflow: x="+x+", y="+y+" nx="+nx+" ny="+ny+" x.max="+image.length+", y.max="+image[0].length);			throw new AlignmentPatternNotFoundException("Alignment Pattern Finder exceeded image edge");			//return true;		}		else {			return(image[x][y] == QRCodeImageReader.POINT_LIGHT &&			image[nx][ny] == QRCodeImageReader.POINT_DARK);		}	}		//get logical center coordinates of each alignment patterns	public static Point[][] getLogicalCenter(FinderPattern finderPattern) {		int version = finderPattern.getVersion();		Point[][] logicalCenters = new Point[1][1];		int[] logicalSeeds = new int[1];		//create "column(row)-coordinates" which based on relative coordinates			//int sqrtCenters = (version / 7) + 2;			//logicalSeeds = new int[sqrtCenters];			//for(int i=0 ; i<sqrtCenters ; i++) {			//	logicalSeeds[i] = 6 + i * (4 + 4 * version) / (sqrtCenters - 1);			//	logicalSeeds[i] -= (logicalSeeds[i] - 2) % 4;			//}		logicalSeeds = LogicalSeed.getSeed(version);		logicalCenters = new Point[logicalSeeds.length][logicalSeeds.length];				//create real relative coordinates		for (int col = 0; col < logicalCenters.length; col++) { //列 ///Line			for (int row = 0; row < logicalCenters.length; row++) { //行 ///Line				logicalCenters[row][col] = new Point(logicalSeeds[row], logicalSeeds[col]);			}		}		return logicalCenters;			}	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一级片网址| 亚洲国产乱码最新视频| 亚洲黄色免费网站| 青青草成人在线观看| 91在线观看视频| 精品国产免费一区二区三区香蕉| 亚洲女同一区二区| 国产永久精品大片wwwapp| 91精品福利视频| 日本一区二区三区四区| 肉色丝袜一区二区| 在线亚洲人成电影网站色www| 久久久国产一区二区三区四区小说| 一区二区三区在线视频免费观看| 国产精品资源网站| 精品国精品自拍自在线| 五月激情六月综合| 91福利在线播放| 成人免费小视频| 成人小视频在线| 国产三级三级三级精品8ⅰ区| 蜜臀91精品一区二区三区| 在线视频你懂得一区二区三区| 国产精品乱码妇女bbbb| 韩日av一区二区| 26uuu亚洲| 国产一区二区三区四区五区入口 | 精品一区二区免费视频| 欧美三级韩国三级日本三斤| 亚洲六月丁香色婷婷综合久久 | 国产成人小视频| 欧美r级电影在线观看| 午夜激情一区二区| 制服视频三区第一页精品| 亚洲aⅴ怡春院| 欧美日韩久久一区二区| 亚洲福利一区二区三区| 91.com在线观看| 美女精品一区二区| 久久久久久久久久美女| 国产成人亚洲精品青草天美| 中文字幕一区二区不卡 | 国产一区二区在线看| ww亚洲ww在线观看国产| 国产99久久久久久免费看农村| 精品久久人人做人人爱| 狠狠久久亚洲欧美| 国产亚洲一区字幕| jiyouzz国产精品久久| 亚洲另类中文字| 欧美一区二区在线播放| 国产一区二区主播在线| 成人免费在线播放视频| 欧美日韩另类国产亚洲欧美一级| 午夜视频在线观看一区二区三区| 777午夜精品视频在线播放| 久久精品噜噜噜成人88aⅴ| 国产欧美一区在线| 在线视频国内自拍亚洲视频| 美美哒免费高清在线观看视频一区二区 | 国产精品丝袜一区| 色婷婷亚洲综合| 美女诱惑一区二区| 亚洲色欲色欲www在线观看| 欧美色视频一区| 国产伦精品一区二区三区视频青涩 | 成人自拍视频在线观看| 一区二区三区在线视频观看| 日韩一区二区在线观看视频播放| 国产精品1区二区.| 性感美女极品91精品| 久久久久久久网| 欧美电影一区二区| 91在线一区二区三区| 秋霞影院一区二区| 国产精品福利一区二区三区| 91麻豆精品91久久久久同性| 国产超碰在线一区| 日韩在线卡一卡二| 亚洲男人的天堂一区二区 | 久久99国内精品| 亚洲美腿欧美偷拍| www精品美女久久久tv| 精品视频在线看| 91丝袜国产在线播放| 九九九久久久精品| 午夜欧美一区二区三区在线播放| 国产欧美日韩卡一| 日韩欧美一区二区三区在线| 91蝌蚪porny九色| 国产成人av电影在线| 美女国产一区二区三区| 午夜精品久久久久久久蜜桃app| 亚洲欧洲另类国产综合| 国产日本欧美一区二区| 精品精品国产高清a毛片牛牛| 欧美日韩精品高清| 在线视频亚洲一区| 色av成人天堂桃色av| 99久久精品免费观看| 国产999精品久久| 国产91露脸合集magnet| 久草精品在线观看| 美女网站色91| 理论片日本一区| 日韩精品视频网站| 亚洲成人av在线电影| 亚洲愉拍自拍另类高清精品| 亚洲欧美综合在线精品| 国产精品美女久久久久久久网站| 久久久电影一区二区三区| 久久综合九色综合欧美98| 精品精品国产高清a毛片牛牛 | 91在线视频网址| 成年人国产精品| av一区二区三区| av影院午夜一区| 欧美亚洲综合色| 4438成人网| 精品国产区一区| 欧美国产精品中文字幕| 亚洲婷婷国产精品电影人久久| 亚洲日本一区二区| 亚洲午夜免费电影| 日韩av一级片| 国产一区二区三区不卡在线观看 | 69精品人人人人| 日韩一级高清毛片| 日韩欧美的一区二区| 国产午夜精品美女毛片视频| 国产精品色噜噜| 亚洲国产中文字幕在线视频综合| 天天亚洲美女在线视频| 美女一区二区在线观看| 国产不卡视频在线播放| 99精品欧美一区| 欧美精品电影在线播放| 欧美精品一区二区三区四区 | 在线观看网站黄不卡| 欧美日韩一级黄| 亚洲精品一区二区三区四区高清 | 国产亚洲成aⅴ人片在线观看| 中文字幕国产一区二区| 亚洲卡通欧美制服中文| 美女脱光内衣内裤视频久久网站 | 色88888久久久久久影院按摩 | 极品瑜伽女神91| 岛国av在线一区| 欧美三级欧美一级| 久久老女人爱爱| 亚洲国产日韩在线一区模特| 麻豆精品视频在线观看免费| 成人小视频免费观看| 91精品欧美久久久久久动漫| 国产人成一区二区三区影院| 亚洲国产美女搞黄色| 国产剧情av麻豆香蕉精品| 在线视频国产一区| 国产亚洲午夜高清国产拍精品| 尤物在线观看一区| 国产精品资源站在线| 欧美精品在线观看一区二区| 国产精品婷婷午夜在线观看| 日韩高清在线不卡| 99v久久综合狠狠综合久久| 日韩欧美色电影| 亚洲午夜激情网页| 91影院在线免费观看| 久久女同精品一区二区| 午夜精品福利久久久| 色噜噜狠狠成人中文综合| 国产三级精品三级| 麻豆一区二区三区| 精品视频123区在线观看| 成人欧美一区二区三区1314| 国产盗摄精品一区二区三区在线| 欧美视频在线一区二区三区| 中文字幕一区二区三区不卡 | 国产成人啪免费观看软件| 欧美精品 国产精品| 一区二区三区在线免费观看| 国产99久久久国产精品| 欧美精品一区二区久久久| 日韩精品电影一区亚洲| 欧美性生活久久| 亚洲另类一区二区| 91日韩精品一区| 亚洲精品国产高清久久伦理二区| 丁香激情综合五月| 国产婷婷色一区二区三区在线| 黄网站免费久久| 精品剧情v国产在线观看在线| 另类欧美日韩国产在线| 日韩欧美亚洲国产另类| 久久aⅴ国产欧美74aaa| 日韩亚洲电影在线| 久久99精品国产麻豆婷婷洗澡| 精品欧美黑人一区二区三区| 日韩国产欧美三级| 91精品国产高清一区二区三区|