Ejemplo n.º 1
0
        private FlowDocument CloneDocument(FlowDocument flowDocument)
        {
            MathDocument mathDocument             = _serializer.Serialize(flowDocument);
            FlowDocument deserializedFlowDocument = _serializer.Deserialize(mathDocument);

            return(deserializedFlowDocument);
        }
Ejemplo n.º 2
0
        private static void Serialize(IndexNotation indexNotation, MathDocument document, int offset)
        {
            var element = new IndexElement();

            element.StartOffset = offset;

            if (!indexNotation.Main.IsEmpty())
            {
                element.Main = new MathDocument();
                Serialize(indexNotation.Main, element.Main);
            }

            if (!indexNotation.Upperscript.IsEmpty())
            {
                element.Upperscript = new MathDocument();
                Serialize(indexNotation.Upperscript, element.Upperscript);
            }

            if (!indexNotation.Underscript.IsEmpty())
            {
                element.Underscript = new MathDocument();
                Serialize(indexNotation.Underscript, element.Underscript);
            }

            document.MathElements.Add(element);
        }
Ejemplo n.º 3
0
        public MathDocument Serialize(FlowDocument flowDocument)
        {
            var mathDocument = new MathDocument();

            Serialize(flowDocument, mathDocument);
            return(mathDocument);
        }
Ejemplo n.º 4
0
 private static void Serialize(InlineUIContainer container, MathDocument document)
 {
     if (container.Child is NotationBase)
     {
         Serialize((dynamic)container.Child, document, container.GetOffset());
     }
 }
Ejemplo n.º 5
0
        public FlowDocument Deserialize(MathDocument mathDocument)
        {
            var flowDocument = new FlowDocument();

            Deserialize(mathDocument, flowDocument);
            return(flowDocument);
        }
Ejemplo n.º 6
0
 private static void Deserialize(MathDocument mathDocument, MathBox mathBox)
 {
     if (mathDocument?.IsEmpty() ?? true)
     {
         return;
     }
     Deserialize(mathDocument, mathBox.Document);
 }
Ejemplo n.º 7
0
 private static void Deserialize(MathDocument mathDocument, FlowDocument flowDocument)
 {
     DeserializeTextContent(mathDocument, flowDocument);
     foreach (var mathElement in mathDocument.MathElements)
     {
         Deserialize((dynamic)mathElement, flowDocument);
     }
 }
Ejemplo n.º 8
0
        private static void Serialize(FlowDocument flowDocument, MathDocument mathDocument)
        {
            SerializeTextContent(flowDocument, mathDocument);
            var containers = flowDocument.FindChildren <InlineUIContainer>(1);

            foreach (var container in containers)
            {
                Serialize(container, mathDocument);
            }
        }
Ejemplo n.º 9
0
        private void Save()
        {
            MathDocument document = mathBox.SaveDocument();

            var dialog = new SaveFileDialog(document);

            dialog.ShowDialog();

            documentLibrary.LoadDocuments();
        }
Ejemplo n.º 10
0
        private static void DeserializeTextContent(MathDocument document, FlowDocument destination)
        {
            if (document == null)
            {
                return;
            }
            var range = new TextRange(destination.ContentStart, destination.ContentEnd);

            using (var stream = GenerateStreamFromString(document.TextContent))
            {
                range.Load(stream, DataFormats.Xaml);
            }
        }
Ejemplo n.º 11
0
        private static void SerializeTextContent(FlowDocument flowDocument, MathDocument document)
        {
            var documentRange = new TextRange(flowDocument.ContentStart, flowDocument.ContentEnd);

            using (var memoryStream = new MemoryStream())
            {
                documentRange.Save(memoryStream, DataFormats.Xaml);
                memoryStream.Seek(0, SeekOrigin.Begin);
                using (var reader = new StreamReader(memoryStream))
                {
                    document.TextContent = reader.ReadToEnd();
                }
            }
        }
Ejemplo n.º 12
0
        private void LoadDocument(string path)
        {
            if (path == null)
            {
                return;
            }
            string serializedDocument = File.ReadAllText(path);
            var    settings           = new JsonSerializerSettings();

            settings.TypeNameHandling = TypeNameHandling.All;
            MathDocument document = JsonConvert.DeserializeObject <MathDocument>(serializedDocument, settings);

            mathBox.LoadDocument(document);
        }
Ejemplo n.º 13
0
 public FlowDocument Deserialize(MathDocument mathDocument)
 {
     return(new FlowDocument());
 }
Ejemplo n.º 14
0
 private static void Serialize(MathBox mathBox, MathDocument document)
 {
     Serialize(mathBox.Document, document);
 }