public VectorInkStroke(Spline newSpline, IInkStroke originalStroke, int firstPointIndex, int pointsCount) { Id = Identifier.FromNewGuid(); // Cloning is needed, otherwise the spatial data is corrupted Spline = newSpline; Layout = originalStroke.Layout; VectorBrush = originalStroke.VectorBrush; SensorDataOffset = originalStroke.SensorDataOffset + (uint)firstPointIndex; // add the original stroke sensor data offset as a stroke can be split multiple times SensorDataId = ((VectorInkStroke)originalStroke).SensorDataId; if (originalStroke.SensorDataMappings != null) { // Calculate the sensor data mappings for the new spline List <uint> newSplineSensorDataMappings = new List <uint>(pointsCount); for (int i = 0; i < pointsCount; i++) { newSplineSensorDataMappings.Add(originalStroke.SensorDataMappings[firstPointIndex + i]); } SensorDataMappings = newSplineSensorDataMappings; } Constants = originalStroke.Constants; IStrokeAttributes originConstants = originalStroke.Constants; Color.R = (byte)(originConstants.Red * 255); Color.G = (byte)(originConstants.Green * 255); Color.B = (byte)(originConstants.Blue * 255); Color.A = (byte)(originConstants.Alpha * 255); }
private void OnSpatialModelStrokeAdded(object sender, IInkStroke stroke) { VectorSplineInkBuilder inkBuilder = new VectorSplineInkBuilder(); var result = inkBuilder.AddWholePath(stroke.Spline, stroke.Layout, stroke.VectorBrush); var vectStroke = (VectorInkStroke)stroke; vectStroke.SimplPoly = result.Merged.Addition; vectStroke.Polygon = PolygonUtil.ConvertPolygon(vectStroke.SimplPoly); lock (mDryStrokeLock) { mDryStrokes.Add(vectStroke); } }
public IInkStroke CreateStroke(Spline newSpline, IInkStroke originalStroke, int firstPointIndex, int pointsCount) { VectorInkStroke stroke = new VectorInkStroke(newSpline, originalStroke, firstPointIndex, pointsCount); return(stroke); }