public async Task <bool> InitFile() { if (await StorageHelper.Default.IsFolderExist(ApplicationData.Current.LocalCacheFolder, TmpSourceFolderName)) { await(await ApplicationData.Current.LocalCacheFolder.GetFolderAsync(TmpSourceFolderName)).DeleteAsync(); } try { await DeWarpper(); var ser = new DataContractSerializer(typeof(List <CanvasData>)); var file = await TmpFolder.GetFileAsync(XmlDocName); using (var fs = await file.OpenAsync(FileAccessMode.Read)) { using (var reader = XmlReader.Create(fs.AsStream())) { datas = (List <CanvasData>)ser.ReadObject(reader); } } isInitSucceed = true; } catch (Exception e) { Debug.Fail(e.Message); } return(isInitSucceed); }
public async Task <bool> ReadInFolderAsync() { Debug.Assert(IsDeWrapper); var folders = (await TmpFolder.GetFoldersAsync()).Where(folder => folder.DisplayName == InkStrokesFolderName).ToList(); if (folders.Count != 0) { var folder = folders[0]; var files = (await folder.GetFilesAsync()).Where(f => f.FileType.ToLower() == ".isf"); foreach (var file in files) { var ic = new InkCanvas(); var filename = file.Name.Substring(0, file.Name.Length - 4); using (var fs = await file.OpenAsync(FileAccessMode.ReadWrite)) { await ic.InkPresenter.StrokeContainer.LoadAsync(fs); } var strokes = ic.InkPresenter.StrokeContainer.GetStrokes().ToList(); var gslength = Enum.GetValues(typeof(GraphicsTypes)).Length; var layer = new LayerModel(); foreach (var stroke in strokes) { var gi = stroke.StrokeDuration.Value.Ticks; if (gi > 0 && gi < gslength) { var gr = (GraphicsRectSizeBase)GraphicsInstCreateManager.CreateGraphics((GraphicsTypes)gi, layer.LocPenModel, layer, layer); Debug.Assert(gr != null); stroke.GetInkPoints().ToList().ForEach(p => gr.Points.Add(p)); gr.PenAttribute = PenModel.ToPenModel(stroke.DrawingAttributes); layer.GraphicsRects.Add(gr); } } layer.Name = filename; layer.CanvasSize = CanvasSize; Debug.Assert(XmlDoc != null); var xmlEle = XmlDoc.SelectSingleNode(filename); if (xmlEle != null) { var layerData = xmlEle.ChildNodes.Where(xmlNode => xmlNode.NodeName == "IsLock" || xmlNode.NodeName == "IsAppear").ToArray(); Debug.Assert(layerData.Count() == 2); layer.IsLock = Convert.ToBoolean(layerData[0].InnerText); layer.IsAppear = Convert.ToBoolean(layerData[1].InnerText); } //TODO:Init Others Reading?.Invoke(XmlDoc); Layers.Add(layer); } return(true); } return(false); }
public async Task <bool> InitFile() { if ((await ApplicationData.Current.LocalCacheFolder.GetFoldersAsync()) .Where(folder => folder.Name == TmpSourceFolderName).Count() > 0) { await(await ApplicationData.Current.LocalCacheFolder.GetFolderAsync(TmpSourceFolderName)).DeleteAsync(); } await DeWarpper(); try { xmlDoc = await XmlDocument.LoadFromFileAsync(await TmpFolder.GetFileAsync(XmlDocName)); } catch (Exception) { return(false); } return(false); }
public async Task <bool> ReadInFolderAsync() { Debug.Assert(IsDeWrapper && IsInitSucceed); var folders = (await TmpFolder.GetFoldersAsync()) .Where(folder => folder.DisplayName == InkStrokesFolderName) .ToList(); if (folders.Count != 0) { var folder = folders[0]; var files = (await folder.GetFilesAsync()).Where(f => f.FileType.ToLower() == ".isf"); foreach (var file in files) { var ic = new InkCanvas(); var filename = file.Name.Substring(0, file.Name.Length - 4); using (var fs = await file.OpenAsync(FileAccessMode.ReadWrite)) { await ic.InkPresenter.StrokeContainer.LoadAsync(fs); } var strokes = ic.InkPresenter.StrokeContainer.GetStrokes().ToList(); var gslength = Enum.GetValues(typeof(GraphicsTypes)).Length; var layer = new LayerModel(); foreach (var stroke in strokes) { var gi = stroke.StrokeDuration.Value.Ticks; if (gi > 0 && gi < gslength) { var gr = (GraphicsRectSizeBase)GraphicsInstCreateManager.CreateGraphics((GraphicsTypes)gi, layer.LocPenModel, layer, layer); Debug.Assert(gr != null); stroke.GetInkPoints().ToList().ForEach(p => gr.Points.Add(p)); gr.PenAttribute = PenModel.ToPenModel(stroke.DrawingAttributes); layer.GraphicsRects.Add(gr); } } layer.Name = filename; layer.CanvasSize = CanvasSize; FileRead?.Invoke(this); Layers.Add(layer); } return(true); } return(false); }
public async void Dispose() { await TmpFolder?.DeleteAsync(StorageDeleteOption.PermanentDelete); }