public void processInfo(DustInfoTray tray) { int kfi = kf.indexOf((DustEntity)tray.key); if (-1 != kfi) { object kfk = kf.keyOf(kfi); if (GeometryAtts.ShapePathClosed == kfk) { ((ShapePath)tray.readerObject).closed = (bool)tray.value; } if (null != readingGeoData) { if (null != readingCoord) { readingGeoData[readingCoord] = (Double)tray.value; readingCoord = null; } } } Console.WriteLine("DrawVisitor processInfo {0} = {1}", tray.key, tray.value); }
public void processVisitEvent(VisitEvent visitEvent, DustVisitTray tray) { int kfi = kf.indexOf((DustEntity)tray.key); object kfk = kf.keyOf(kfi); // Console.WriteLine("DrawVisitor processVisitEvent {0} - {1}", visitEvent, tray.value); // return; switch (visitEvent) { case VisitEvent.entityStartOpt: DustEntity pt = DustUtils.getValue(tray.entity, (DustEntity)null, DataLinks.EntityPrimaryType); if (OB_TYPES.ContainsKey(pt)) { tray.readerObject = Activator.CreateInstance(OB_TYPES[pt]); var geo = tray.readerObject as GeometricData; if (null != geo) { readingGeoData = geo; } } break; case VisitEvent.keyStartOpt: if (-1 == kfi) { tray.resp = VisitResponse.skip; } else { if (COORDS.Contains(kfk)) { readingCoord = (GeometryValues)kfk; } else if (ROLES.Contains(kfk)) { readingRole = (GeometryValues)kfk; } Console.WriteLine("Entering {0} ", kf.keyOf(kfi)); } break; case VisitEvent.keyEnd: if (CollectionLinks.SequenceMembers == kfk) { var sp = tray.readerParent as ShapePath; if (null != sp) { sp.Add((GeometricData)tray.readerObject); } var sc = tray.readerParent as ShapeComposite; if (null != sc) { sc.Add((GeometricInclusion)tray.readerObject); } } else if (GeometryLinks.GeometricInclusionTarget == kfk) { var gi = tray.readerParent as GeometricInclusion; if (null != gi) { gi.target = (ShapeSource)tray.readerObject; } } else if (GeometryLinks.GeometricInclusionParameters == kfk) { var gi = tray.readerParent as GeometricInclusion; if ((null != gi) && (readingRole != null)) { gi[readingRole] = (GeometricData)tray.readerObject; } } Console.WriteLine("Leaving {0} ", kf.keyOf(kfi)); break; case VisitEvent.entityEnd: if (null != tray.readerObject) { lastReadObject = tray.readerObject; } break; } }