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; }
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); } } }
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; }
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; } }