/// <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; }