internal static void Load(TextRange thisRange, Stream stream, string dataFormat) { if (stream == null) { throw new ArgumentNullException("stream"); } if (dataFormat == null) { throw new ArgumentNullException("dataFormat"); } NormalizeRange(thisRange); // Reset the stream position to the beginning if (stream.CanSeek) { stream.Seek(0, SeekOrigin.Begin); } if (dataFormat == DataFormats.Text) { StreamReader textStreamReader = new StreamReader(stream); string text = textStreamReader.ReadToEnd(); thisRange.Text = text; } else if (dataFormat == DataFormats.Xaml) { StreamReader xamlStreamReader = new StreamReader(stream); string xamlText = xamlStreamReader.ReadToEnd(); thisRange.Xml = xamlText; } else if (dataFormat == DataFormats.XamlPackage && SecurityHelper.CheckUnmanagedCodePermission()) { object element = WpfPayload.LoadElement(stream); if (!(element is Section) && !(element is Span)) { throw new ArgumentException(SR.Get(SRID.TextRange_UnrecognizedStructureInDataFormat, dataFormat), "stream"); } thisRange.SetXmlVirtual((TextElement)element); } else if (dataFormat == DataFormats.Rtf && SecurityHelper.CheckUnmanagedCodePermission()) { // StreamReader rtfStreamReader = new StreamReader(stream); string rtfText = rtfStreamReader.ReadToEnd(); MemoryStream memoryStream = TextEditorCopyPaste.ConvertRtfToXaml(rtfText); if (memoryStream == null) { throw new ArgumentException(SR.Get(SRID.TextRange_UnrecognizedStructureInDataFormat, dataFormat), "stream"); } TextElement textElement = WpfPayload.LoadElement(memoryStream) as TextElement; if (!(textElement is Section) && !(textElement is Span)) { throw new ArgumentException(SR.Get(SRID.TextRange_UnrecognizedStructureInDataFormat, dataFormat), "stream"); } thisRange.SetXmlVirtual(textElement); } else { // Unsupported format - thows exception throw new ArgumentException(SR.Get(SRID.TextRange_UnsupportedDataFormat, dataFormat), "dataFormat"); } }