/// <summary> /// Builds the list of Custom Guids that were used by this particular stroke, either in the packet layout /// or in the drawing attributes, or in the buttons or in Extended properties or in the point properties /// and updates the guidlist with that information /// </summary> /// <param name="stroke"></param> /// <param name="guidList"></param> private void BuildStrokeGuidList(Stroke stroke, GuidList guidList) { int i = 0; // First drawing attributes // Ignore the default Guids/attributes in the DrawingAttributes int count; Guid[] guids = ExtendedPropertySerializer.GetUnknownGuids(stroke.DrawingAttributes.ExtendedProperties, out count); for (i = 0; i < count; i++) { guidList.Add(guids[i]); } Guid[] descriptionGuids = stroke.StylusPoints.Description.GetStylusPointPropertyIds(); for (i = 0; i < descriptionGuids.Length; i++) { guidList.Add(descriptionGuids[i]); } if (stroke.ExtendedProperties.Count > 0) { // Add the ExtendedProperty guids in the list for (i = 0; i < stroke.ExtendedProperties.Count; i++) { guidList.Add(stroke.ExtendedProperties[i].Id); } } }
/// <summary> /// Builds the GuidList based on ExtendedPropeties and StrokeCollection /// </summary> /// <returns></returns> private GuidList BuildGuidList() { GuidList guidList = new GuidList(); int i = 0; // First go through the list of ink properties ExtendedPropertyCollection attributes = _coreStrokes.ExtendedProperties; for (i = 0; i < attributes.Count; i++) { guidList.Add(attributes[i].Id); } // Next go through all the strokes for (int j = 0; j < _coreStrokes.Count; j++) { BuildStrokeGuidList(_coreStrokes[j], guidList); } return guidList; }