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);
            }
        }
Beispiel #3
0
        public IInkStroke CreateStroke(Spline newSpline, IInkStroke originalStroke, int firstPointIndex, int pointsCount)
        {
            VectorInkStroke stroke = new VectorInkStroke(newSpline, originalStroke, firstPointIndex, pointsCount);

            return(stroke);
        }