コード例 #1
0
        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();
        }
コード例 #2
0
ファイル: MainPage.xaml.cs プロジェクト: vatsal22/Notebook
        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]);
        }
コード例 #3
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);
            }
        }
コード例 #4
0
        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();
        }
コード例 #5
0
ファイル: MainPage.xaml.cs プロジェクト: vatsal22/Notebook
 private void replaceCanvas(InkPage inkPage)
 {
     _PageCanvas.Children.Clear();
     _PageCanvas.Children.Add(inkPage._grid);
     inkToolbar.TargetInkCanvas = inkPage.GetInkCanvas();
 }