public async Task SaveInkPageAsync(InkCanvas inkCanvas, InkPage inkPage, StorageFile file) { await FileIO.WriteBytesAsync(file, new byte[0]); CachedFileManager.DeferUpdates(file); IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite); using (IOutputStream outputStream = stream.GetOutputStreamAt(0)) { using (var dataWriter = new DataWriter(outputStream)) { var json = JsonConvert.SerializeObject(inkPage, Formatting.Indented); dataWriter.WriteString(json); await dataWriter.StoreAsync(); } } using (IOutputStream outputStream = stream.GetOutputStreamAt(100)) { await inkCanvas.InkPresenter.StrokeContainer.SaveAsync(outputStream); await outputStream.FlushAsync(); } stream.Dispose(); }
protected override async void OnNavigatedTo(NavigationEventArgs e) { printHelper.register(); save_ink("blank.gif"); // create a blank file to create new pages later Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder; IReadOnlyList <StorageFile> files = Task.Run(async() => { return(await storageFolder.GetFilesAsync()); }).GetAwaiter().GetResult(); List <Task> tasks = new List <Task>(); int numPages = 0; foreach (var file in files) { // TODO should check that it starts with number and no missing pages (e.g. 0,1,3...) if (file.Name.EndsWith(page_file_name)) { int pageID = int.Parse(file.Name.Split('_')[0]); InkPage ip = new InkPage(pageID); // AsyncHelpers.RunSync(() => ip.loadAsync()); await ip.loadAsync(); pageBuffers.Add(pageID, ip); numPages++; } } if (pageBuffers.Count > 0) { // TODO not needed? last_page = numPages - 1; // load 0_Page.gif // load_ink(cur_page.ToString() + page_file_name); } // else last_page=0, which is the current blank page else { pageBuffers.Add(0, new InkPage(0)); } replaceCanvas(pageBuffers[0]); }
protected async override Task SetContent(string content) { SerializedCanvasCollection collection = PortableConfigHelper.ReadConfig <SerializedCanvasCollection>(content: ref content); int p = 1; foreach (SerializedCanvas ink in collection.Pages) { InkPage inkPage = new InkPage(p++); inkPage.PreloadedInk = ink; (this.DefaultViewModel["Pages"] as ObservableCollection <InkPage>).Add(inkPage); } for (int q = 0; q < 5; q++) { InkPage inkPage = new InkPage(p + q++); (this.DefaultViewModel["Pages"] as ObservableCollection <InkPage>).Add(inkPage); } }
public async Task OpenInkPageAsync(InkCanvas inkCanvas, InkPage inkPage, StorageFile file) { IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read); using (var inputStream = stream.GetInputStreamAt(0)) { using (var dataReader = new DataReader(inputStream)) { InkPage ip = new InkPage(); await dataReader.LoadAsync(100); var json = dataReader.ReadString(100); ip = (InkPage)JsonConvert.DeserializeObject <InkPage>(json); inkPage.IsGridVisible = ip.IsGridVisible; } } using (var inputStream = stream.GetInputStreamAt(100)) { await inkCanvas.InkPresenter.StrokeContainer.LoadAsync(inputStream); } stream.Dispose(); }
private void replaceCanvas(InkPage inkPage) { _PageCanvas.Children.Clear(); _PageCanvas.Children.Add(inkPage._grid); inkToolbar.TargetInkCanvas = inkPage.GetInkCanvas(); }