Beispiel #1
0
        public void Load( Stream stream )
        {
            using ( SignatureStream signature = new SignatureStream ( "DWRT", stream ) )
            {
                using ( DeflateStream deflate = new DeflateStream ( stream, CompressionMode.Decompress, true ) )
                {
                    Initialize ();
                    pages.Clear ();

                    BinaryReader reader = new BinaryReader ( deflate );
                    switch ( reader.ReadByte () )
                    {
                        case 0:
                            Title = reader.ReadString ();
                            int authorCount = reader.ReadInt32 ();
                            for ( int i = 0; i < authorCount; ++i )
                                Authors.Add ( reader.ReadString () );
                            Copyright = reader.ReadString ();

                            int pageCount = reader.ReadInt32 ();
                            for ( int i = 0; i < pageCount; ++i )
                            {
                                dWriterPage page = new dWriterPage ();
                                page.Title = reader.ReadString ();
                                page.Created = DateTime.Parse ( reader.ReadString () );
                                page.Modified = DateTime.Parse ( reader.ReadString () );

                                switch ( reader.ReadByte () )
                                {
                                    case 0:
                                        MemoryStream tempStream = new MemoryStream ( Convert.FromBase64String ( reader.ReadString () ) );
                                        FlowDocument flowDocument = new FlowDocument ();
                                        var textRange = new TextRange ( flowDocument.ContentStart, flowDocument.ContentEnd );
                                        textRange.Load ( tempStream, DataFormats.Rtf );
                                        page.Text = flowDocument;
                                        tempStream.Dispose ();
                                        break;
                                }

                                pages.Add ( page );
                            }
                            break;
                    }
                }
            }
        }
Beispiel #2
0
 public void RemovePage( dWriterPage page )
 {
     pages.Remove ( page );
 }
Beispiel #3
0
 public void Insert( int index, dWriterPage page )
 {
     pages.Insert ( index, page );
 }