/// <summary> /// A MultiPoint is simple if it has no repeated points. /// </summary> public bool IsSimple(IMultiPoint mp) { if (mp.IsEmpty) return true; ISet points = new ListSet(); for (int i = 0; i < mp.NumGeometries; i++) { IPoint pt = (IPoint) mp.GetGeometryN(i); ICoordinate p = pt.Coordinate; if (points.Contains(p)) return false; points.Add(p); } return true; }
public void SetSensors(List <ISensor> sensors, IDictionary <ISensor, Color> colors) { this.model.Series.Clear(); ListSet <SensorType> types = new ListSet <SensorType>(); foreach (ISensor sensor in sensors) { var series = new LineSeries(); if (sensor.SensorType == SensorType.Temperature) { series.ItemsSource = sensor.Values.Select(value => new DataPoint { X = (now - value.Time).TotalSeconds, Y = unitManager.TemperatureUnit == TemperatureUnit.Celsius ? value.Value : UnitManager.CelsiusToFahrenheit(value.Value).Value }); } else { series.ItemsSource = sensor.Values.Select(value => new DataPoint { X = (now - value.Time).TotalSeconds, Y = value.Value }); } series.Color = colors[sensor].ToOxyColor(); series.StrokeThickness = 1; series.YAxisKey = axes[sensor.SensorType].Key; series.Title = sensor.Hardware.Name + " " + sensor.Name; this.model.Series.Add(series); types.Add(sensor.SensorType); } foreach (var pair in axes.Reverse()) { var axis = pair.Value; var type = pair.Key; axis.IsAxisVisible = types.Contains(type); } UpdateAxesPosition(); InvalidatePlot(); }
/// <summary> /// A MultiPoint is simple if it has no repeated points. /// </summary> public bool IsSimple(IMultiPoint mp) { if (mp.IsEmpty) { return(true); } ISet points = new ListSet(); for (int i = 0; i < mp.NumGeometries; i++) { IPoint pt = (IPoint)mp.GetGeometryN(i); ICoordinate p = pt.Coordinate; if (points.Contains(p)) { return(false); } points.Add(p); } return(true); }
/// <summary> /// Check that a ring does not self-intersect, except at its endpoints. /// Algorithm is to count the number of times each node along edge occurs. /// If any occur more than once, that must be a self-intersection. /// </summary> private void CheckNoSelfIntersectingRing(EdgeIntersectionList eiList) { ISet nodeSet = new ListSet(); bool isFirst = true; foreach (EdgeIntersection ei in eiList) { if (isFirst) { isFirst = false; continue; } if (nodeSet.Contains(ei.Coordinate)) { _validErr = new TopologyValidationError(TopologyValidationErrorType.RingSelfIntersection, ei.Coordinate); return; } nodeSet.Add(ei.Coordinate); } }
private ListSet <ICharacterReference> PopulateCharacterRefList(ListSet <ICharacterReference> refs) { foreach (Frame f in FrameList) { foreach (IDisplayListItem dli in f.DisplayList) { if (dli is ICharacterReference) { ICharacterReference cr = (ICharacterReference)dli; refs.Add(cr); if (cr.Character is Sprite && !refs.Contains(cr)) { ((Sprite)cr.Character).PopulateCharacterRefList(refs); } } } } return(refs); }
private void WriteCharacter(ICharacter ch, ListSet <Timeline> unboundClasses) { int cid; if (ch == null) { return; } if (this.characterMarshal.HasMarshalled(ch)) { return; } int fontID = -1; if (ch is IFontUserProcessor) { IFontUserProcessor fup = (IFontUserProcessor)ch; fup.FontUserProc(delegate(IFontUser fu) { if (fu.HasFont && !characterMarshal.HasMarshalled(fu.Font)) { fontID = characterMarshal.GetIDFor(fu.Font); this.WriteFont(fu.Font, fontID); } else { fontID = characterMarshal.GetExistingIDFor(fu.Font); } }); } if (ch is IShape) { IImage[] images = ((IShape)ch).GetImages(); if (images != null) { foreach (IImage image in images) { this.WriteImage(image); } } Tag format; byte[] shapeBytes = ShapeWriter.ShapeToBytes((IShape)ch, out format); WriteBuffer shapeTag = this.OpenTag(format); cid = this.characterMarshal.GetIDFor(ch); shapeTag.WriteUI16((uint)cid); shapeTag.WriteBytes(shapeBytes); #if DEBUG this.LogMessage("char id=" + cid); #endif this.CloseTag(); } else if (ch is Sprite) { this.WriteSprite((Sprite)ch, unboundClasses); } else if (ch is EditText) { this.WriteEditText((EditText)ch, fontID); } else if (ch is StaticText) { this.WriteStaticText((StaticText)ch); } else { /* ISSUE 73 */ throw new SWFModellerException( SWFModellerError.UnimplementedFeature, "Character of type " + ch.GetType().ToString() + " not currently supported in writer"); } if (ch is Timeline) { Timeline tl = (Timeline)ch; if (tl.HasClass && !(tl.Class is AdobeClass) && !unboundClasses.Contains(tl)) { unboundClasses.Add(tl); } } }
/// <summary> /// Check that a ring does not self-intersect, except at its endpoints. /// Algorithm is to count the number of times each node along edge occurs. /// If any occur more than once, that must be a self-intersection. /// </summary> private void CheckNoSelfIntersectingRing(EdgeIntersectionList eiList) { ISet nodeSet = new ListSet(); bool isFirst = true; foreach(EdgeIntersection ei in eiList) { if (isFirst) { isFirst = false; continue; } if (nodeSet.Contains(ei.Coordinate)) { validErr = new TopologyValidationError(TopologyValidationErrors.RingSelfIntersection, ei.Coordinate); return; } else nodeSet.Add(ei.Coordinate); } }
public void SetSensors(List<ISensor> sensors, IDictionary<ISensor, Color> colors) { this.model.Series.Clear(); ListSet<SensorType> types = new ListSet<SensorType>(); foreach (ISensor sensor in sensors) { var series = new LineSeries(); if (sensor.SensorType == SensorType.Temperature) { series.ItemsSource = sensor.Values.Select(value => new DataPoint { X = (now - value.Time).TotalSeconds, Y = unitManager.TemperatureUnit == TemperatureUnit.Celsius ? value.Value : UnitManager.CelsiusToFahrenheit(value.Value).Value }); } else { series.ItemsSource = sensor.Values.Select(value => new DataPoint { X = (now - value.Time).TotalSeconds, Y = value.Value }); } series.Color = colors[sensor].ToOxyColor(); series.StrokeThickness = 1; series.YAxisKey = axes[sensor.SensorType].Key; series.Title = sensor.Hardware.Name + " " + sensor.Name; this.model.Series.Add(series); types.Add(sensor.SensorType); } foreach (var pair in axes.Reverse()) { var axis = pair.Value; var type = pair.Key; axis.IsAxisVisible = types.Contains(type); } UpdateAxesPosition(); InvalidatePlot(); }
private ListSet<ICharacterReference> PopulateCharacterRefList(ListSet<ICharacterReference> refs) { foreach (Frame f in FrameList) { foreach (IDisplayListItem dli in f.DisplayList) { if (dli is ICharacterReference) { ICharacterReference cr = (ICharacterReference)dli; refs.Add(cr); if (cr.Character is Sprite && !refs.Contains(cr)) { ((Sprite)cr.Character).PopulateCharacterRefList(refs); } } } } return refs; }
private void WriteSprite(Sprite s, ListSet<Timeline> unboundClasses) { foreach (ICharacterReference cr in s.CharacterRefs) { this.WriteCharacter(cr.Character, unboundClasses); } if (s.HasClass && !(s.Class is AdobeClass) && !unboundClasses.Contains(s)) { unboundClasses.Add(s); } int id = this.characterMarshal.GetIDFor(s); WriteBuffer tagWriter = this.OpenTag(Tag.DefineSprite, s.ToString() + ";id=" + id.ToString()); tagWriter.WriteUI16((uint)id); tagWriter.WriteUI16(s.FrameCount); #if DEBUG this.LogMessage("char id=" + id); #endif foreach (Frame f in s.Frames) { if (f.HasLabel) { #if DEBUG this.LogMessage("frame label=" + f.Label); #endif WriteBuffer labelWriter = this.OpenTag(Tag.FrameLabel); labelWriter.WriteString(f.Label); this.CloseTag(); } foreach (IDisplayListItem dli in f.DisplayList) { switch (dli.Type) { case DisplayListItemType.PlaceObjectX: this.WritePlaceObjectTag((PlaceObject)dli); break; case DisplayListItemType.RemoveObjectX: this.WriteRemoveObjectTag((RemoveObject)dli); break; default: /* ISSUE 73 */ throw new SWFModellerException( SWFModellerError.UnimplementedFeature, "Unsupported tag in SWF sprite writer: " + dli.GetType().ToString()); } } this.WriteBodylessTag(Tag.ShowFrame); } this.WriteBodylessTag(Tag.End, id.ToString()); this.CloseTag(); /* DefineSprite */ }
private void WriteCharacter(ICharacter ch, ListSet<Timeline> unboundClasses) { int cid; if (ch == null) { return; } if (this.characterMarshal.HasMarshalled(ch)) { return; } int fontID = -1; if (ch is IFontUserProcessor) { IFontUserProcessor fup = (IFontUserProcessor)ch; fup.FontUserProc(delegate(IFontUser fu) { if (fu.HasFont && !characterMarshal.HasMarshalled(fu.Font)) { fontID = characterMarshal.GetIDFor(fu.Font); this.WriteFont(fu.Font, fontID); } else { fontID = characterMarshal.GetExistingIDFor(fu.Font); } }); } if (ch is IShape) { IImage[] images = ((IShape)ch).GetImages(); if (images != null) { foreach (IImage image in images) { this.WriteImage(image); } } Tag format; byte[] shapeBytes = ShapeWriter.ShapeToBytes((IShape)ch, out format); WriteBuffer shapeTag = this.OpenTag(format); cid = this.characterMarshal.GetIDFor(ch); shapeTag.WriteUI16((uint)cid); shapeTag.WriteBytes(shapeBytes); #if DEBUG this.LogMessage("char id=" + cid); #endif this.CloseTag(); } else if (ch is Sprite) { this.WriteSprite((Sprite)ch, unboundClasses); } else if (ch is EditText) { this.WriteEditText((EditText)ch, fontID); } else if (ch is StaticText) { this.WriteStaticText((StaticText)ch); } else { /* ISSUE 73 */ throw new SWFModellerException( SWFModellerError.UnimplementedFeature, "Character of type " + ch.GetType().ToString() + " not currently supported in writer"); } if (ch is Timeline) { Timeline tl = (Timeline)ch; if (tl.HasClass && !(tl.Class is AdobeClass) && !unboundClasses.Contains(tl)) { unboundClasses.Add(tl); } } }