コード例 #1
0
ファイル: HtmCover.cs プロジェクト: davelondon/dontstayin
		/// <summary>
		/// Use the legacy text interface to build a region.
		/// </summary>
		/// <param name="textSpec">Legacy style descritption of region</param>
		/// <param name="directory">Trace information is deposited here.
		///                    Use <i>null</i> if no trace is require</param>
		/// <returns>A table of HtmIDs or null</returns>
		public static Int64[,] Region(String textSpec, string directory){
			Int64[,] returnResult;
			Region reg = new Region(directory);
			Parser par;
			Parser.Geometry g;
			ArrayList lohis = new ArrayList();
			
			par = new Parser();
			par.input = textSpec;
			g = par.peekGeometry(); // Peeking into the spec decides what kind of object we build
			switch(g){
				case Parser.Geometry.Region:
				case Parser.Geometry.Convex:
				case Parser.Geometry.Rect:
				case Parser.Geometry.Circle:
				case Parser.Geometry.Poly:
					par.buildto(reg); //We give the location of the target object. There parser will assemble the region here
					if (par.parse() == false){ // Start the parser. if it returns true, all is well, else error
						return null;
					}
					reg.intersect(false,
						HtmState.Instance.minlevel,
						HtmState.Instance.maxlevel, lohis); // lohis remains unchanged when called from polygon
					break;
				case Parser.Geometry.Chull:
					par.buildto(reg);
					if (par.parse() == false){
						return null;
					}
					reg.intersect(false,
						HtmState.Instance.minlevel,
						HtmState.Instance.maxlevel, lohis);
					break;
				case Parser.Geometry.Null:
					return null;
			}
			int rows = lohis.Count/2;
			int cols = 2;
			int k = 0;
			returnResult = new Int64[rows,cols];
			for(int i=0; i<rows; i++){
				returnResult[i,0] = (Int64) lohis[k++];
				returnResult[i,1] = (Int64) lohis[k++];
			}
			return returnResult;
		}