public MIFTestClass(string file) { using (MIFFileReader mfr = new MIFFileReader(file)) { while (mfr.Read()) { // Console.WriteLine(mfr.mifType.ToString()); switch (mfr.mifType) { case MIFUnit.Point: { MIFPoint obj = (MIFPoint)mfr.Get( ); break; } case MIFUnit.Region: { MIFRegion obj = (MIFRegion)mfr.Get(); /* for ( int i = 0; i < obj.parts; i++ ) * for ( int j = 0; j < obj.points[ i ].Length; j++ ) * Console.WriteLine( "[" + i.ToString( ) + "][" + j.ToString( ) + "] = " + * obj.points[ i ][ j ].X.ToString( ) + " " + * obj.points[ i ][ j ].Y.ToString( ) ); * */ break; } case MIFUnit.Polyline: { MIFPolyline obj = (MIFPolyline)mfr.Get( ); /* for ( int i = 0; i < obj.parts; i++ ) * for ( int j = 0; j < obj.points[ i ].Length; j++ ) * Console.WriteLine( "[" + i.ToString( ) + "][" + j.ToString( ) + "] = " + * obj.points[ i ][ j ].X.ToString( ) + " " + * obj.points[ i ][ j ].Y.ToString( ) ); * */ break; } case MIFUnit.Line: { MIFLine obj = (MIFLine)mfr.Get( ); /* Console.WriteLine( * obj.point1.X.ToString( ) + " " + obj.point1.Y.ToString( ) + " " + * obj.point2.X.ToString( ) + " " + obj.point2.Y.ToString( ), * mfr.mifType.ToString( ) ); */ break; } } // Console.WriteLine( mfr.mifType.ToString() ); // Console.WriteLine( mfr.RowLine().ToString() ); string attrs = null; for (int i = 0; i < mfr.attrs.Length; i++) { attrs += mfr.GetAttrNames()[i].ToString() + "(" + mfr.GetAttrTypes()[i].ToString() + ")" + " = " + mfr.attrs[i].ToString() + "\n"; } // Console.WriteLine(attrs); } Console.WriteLine(MIFPolyline.cnt.ToString(), "Polyline"); Console.WriteLine(MIFLine.cnt.ToString(), "Line"); Console.WriteLine(MIFPoint.cnt.ToString(), "Point"); Console.WriteLine(MIFRegion.cnt.ToString(), "Region"); Console.WriteLine(MIFArc.cnt.ToString(), "Arc"); Console.WriteLine(MIFText.cnt.ToString(), "Text"); Console.WriteLine(MIFRectangle.cnt.ToString(), "Rect"); Console.WriteLine(MIFRectangle.cnt.ToString(), "RoundRect"); Console.WriteLine(MIFRectangle.cnt.ToString(), "Ellipse"); /* Console.WriteLine( mfr.version, "version" ); * Console.WriteLine( mfr.charset , "charset" ); * Console.WriteLine( mfr.delimiter , "delimiter" ); * Console.WriteLine( mfr.unique , "unique" ); * Console.WriteLine( mfr.index , "index" ); * Console.WriteLine( mfr.coordsys , "coordsys" ); * Console.WriteLine( mfr.transform , "transform" ); * */ /* for( int i = 0; i < mfr.fieldcount; i++ ) * Console.WriteLine( mfr.fieldname[i] + " " + mfr.fieldtype[i] ); */ } }
public void Load(string filename, NumberFormatInfo nfi) { using (/*MIFFileReader*/ mr = new MIFFileReader(filename, /*false*/ true, true, nfi)) { mr.keepOriginalBounds = /*true*/ false; Dictionary <MIFUnit, GType> types = new Dictionary <MIFUnit, GType>( ); captionFilename = Path.ChangeExtension(filename, ".caption"); readCaption = File.Exists(captionFilename); nameFilename = Path.ChangeExtension(filename, ".name"); readName = File.Exists(nameFilename); if (readCaption) { using (StreamReader sr = new StreamReader(captionFilename)) { string str = sr.ReadLine( ); captionNames = str.Split(' '); } } if (readName) { using (StreamReader sr = new StreamReader(nameFilename)) { string str = sr.ReadLine( ); nameNames = str.Split(' '); } } while (mr.Read( )) { GType gType = GetType(filename, mr.GetUnitType(), types); // Ёто пока закомментировано // if( sr.mifType != type ) // throw new MIFReaderException( "Type \'" + sr.mifType + "\' not matches type \'" + type + "\'", sr.mifNLine ); switch (mr.GetUnitType()) { // case MIFUnit.Arc: // break; case MIFUnit.Point: Read((MIFPoint)mr.Get( ), gType); break; case MIFUnit.Region: Read((MIFRegion)mr.Get(), gType); break; case MIFUnit.Line: Read((MIFLine)mr.Get( ), gType); break; case MIFUnit.Polyline: Read((MIFPolyline)mr.Get( ), gType); break; case MIFUnit.Text: Read((MIFText)mr.Get( ), gType); break; default: throw new MIFReaderException("Type \'" + mr.GetUnitType().ToString( ) + "\' not implemented", mr.mifNLine); } } if (mr.keepOriginalBounds) { left = (int)(mr.coordsys.p1.X * 100); bottom = (int)(mr.coordsys.p1.Y * 100); right = (int)(mr.coordsys.p2.X * 100); top = (int)(mr.coordsys.p2.Y * 100); } } }