private static Polygon RenderHighlight(BookmarkModel bookmarkModel, Panel canvas, PageRenderData context)
        {
            int tokenID = bookmarkModel.TokenID;
            TextRenderData firstHighlightedText = context.Texts.FirstOrDefault(t => t.TokenID == tokenID) ??
                                        (context.Texts).FirstOrDefault();

            if (firstHighlightedText == null) 
                return null;

            int endTokenID = bookmarkModel.EndTokenID;
            TextRenderData lastHighlightedText = context.Texts.LastOrDefault(t => t.TokenID == endTokenID) ??
                                                    (context.Texts).LastOrDefault();
            if (lastHighlightedText == null) 
                return null;

            Rect firtstRect = firstHighlightedText.Rect;
            Rect lastRect = lastHighlightedText.Rect;
            var pointCollection = SelectionHelper.GetSelectionPolygon(
                firtstRect, 
                lastRect,
                canvas.ActualWidth, 
                context.OffsetX,
                Convert.ToDouble(AppSettings.Default.FontSettings.FontInterval));

            var polygon = new Polygon
                              {
                                  Width = canvas.ActualWidth,
                                  Height = canvas.ActualHeight,
                                  Fill = new SolidColorBrush(ColorHelper.ToColor(bookmarkModel.Color)) {Opacity = 0.3},
                                  Points = pointCollection,
                                  Visibility = Visibility.Visible
                              };
            return polygon;
            
        }
Beispiel #2
0
 public void SaveBookmark(string path, BookmarkModel bookmark)
 {
     using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
     {
         var exist = storage.FileExists(path);
         var document = new XDocument();
         var isAdded = false;
         if (exist)
         {
             using (var inFile = storage.OpenFile(path, FileMode.Open, FileAccess.Read))
             {
                 document = XDocument.Load(inFile);
                 var root = document.Root;
                 root.Add(PrepareBookmark(bookmark));
                 isAdded = true;
                 inFile.Dispose();
             }
         }
         using (var outFile = storage.OpenFile(path, FileMode.Create, FileAccess.Write))
         {
             var root = document.Root ?? new XElement("bookmarks");
             if (document.Root == null) document.Add(root);
             if (!isAdded)
                 root.Add(PrepareBookmark(bookmark));
             document.Save(outFile);
         }
     }
 }
Beispiel #3
0
 public XElement PrepareBookmark(BookmarkModel bookmark)
 {
     var bookmarkElem = new XElement("bookmark");
     bookmarkElem.Add(new XAttribute("id", bookmark.BookmarkID));
     bookmarkElem.Add(new XAttribute("tokenId", bookmark.TokenID));
     bookmarkElem.Add(new XAttribute("percent", bookmark.Percent));
     bookmarkElem.Add(new XAttribute("currentPage", bookmark.CurrentPage));
     bookmarkElem.Add(new XAttribute("pages", bookmark.Pages));
     bookmarkElem.Add(new XAttribute("chapter", bookmark.Chapter));
     bookmarkElem.Add(new XAttribute("text", bookmark.Text ?? string.Empty));
     return bookmarkElem;
 }
Beispiel #4
0
 public List<BookmarkModel> LoadBookmarks(string path)
 {
     try
     {
         using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
         {
             var document = new XDocument();
             using (var inFile = storage.OpenFile(path, FileMode.Open, FileAccess.Read))
             {
                 document = XDocument.Load(inFile);
                 inFile.Dispose();
             }
             var list = new List<BookmarkModel>();
             foreach (var xElement in document.Root.Elements())
             {
                 var bookmark = new BookmarkModel();
                 foreach (var attr in xElement.Attributes())
                 {
                     switch (attr.Name.ToString())
                     {
                         case "id":
                             bookmark.BookmarkID = attr.Value;
                             break;
                         case "tokenId":
                             bookmark.TokenID = int.Parse(attr.Value);
                             break;
                         case "percent":
                             bookmark.Percent = attr.Value;
                             break;
                         case "currentPage":
                             bookmark.CurrentPage = int.Parse(attr.Value);
                             break;
                         case "pages":
                             bookmark.Pages = int.Parse(attr.Value);
                             break;
                         case "chapter":
                             bookmark.Chapter = attr.Value;
                             break;
                         case "text":
                             bookmark.Text = attr.Value;
                             break;
                     }
                 }
                 list.Add(bookmark);
             }
             return list;
         }
     }
     catch (Exception)
     {
         return null;
     }
 }