/// <summary> /// Opens the json. /// </summary> /// <param name="objects">The objects.</param> public void OpenJson(List <JsonObject> objects) { List <KeyValuePair <int, Control> > ctrls = new List <KeyValuePair <int, Control> >(); foreach (JsonObject obj in objects) { if (obj is Config) { Config config = obj as Config; Enum.TryParse <Paper>(config.Paper, out Paper paper); Enum.TryParse <ColorType>(config.Color, out ColorType color); Enum.TryParse <Sticky>(config.Sticky, out Sticky sticky); (this.Parent as NemonicForm).ChangePaper(paper); (this.Parent as NemonicForm).ChangeColor(color); this.ChangeSticky(paper, sticky); } else if (obj is TemplateLayer) { TemplateLayer layer = obj as TemplateLayer; this.ChangeTemplate(NemonicApp.ByteToImage(layer.image)); } else if (obj is TransparentImage.ImageLayer) { TransparentImage.ImageLayer layer = obj as TransparentImage.ImageLayer; TransparentImage imageBox = new TransparentImage() { Location = new Point(layer.x, layer.y), Image = NemonicApp.ByteToImage(layer.image), Size = new Size(layer.width, layer.height) }; ctrls.Add(new KeyValuePair <int, Control>(layer.priority, imageBox)); } else if (obj is TransparentRichText.RichTextLayer) { TransparentRichText.RichTextLayer layer = obj as TransparentRichText.RichTextLayer; this.Layer_TextField.Font = layer.font; this.Layer_TextField.SelectAll(); this.Layer_TextField.SelectionAlignment = layer.align; this.Layer_TextField.DeselectAll(); this.Layer_TextField.Text = layer.text; } } ctrls.Sort(delegate(KeyValuePair <int, Control> A, KeyValuePair <int, Control> B) { return(B.Key.CompareTo(A.Key)); }); foreach (KeyValuePair <int, Control> element in ctrls) { this.AddCtrl(element.Value); } }
/// <summary> /// Saves the json. /// </summary> /// <param name="config">The configuration.</param> /// <param name="thumbnail">The thumbnail.</param> /// <returns></returns> public IList <JsonObject> SaveJson(Config config, Image thumbnail) { LinkedList <Control> src = this.CtrlList; IList <JsonObject> objects = new List <JsonObject>(); config.Sticky = Convert.ToString(this.Layer_Sticky.CurrentSticky); objects.Add(config); int index = src.Count; for (LinkedListNode <Control> node = src.First; node != src.Last.Next; node = node.Next) { int priority = --index; //Layer Template만이 PictureBox일 경우를 가정하여 작성 if (node.Value is StickyCtrl) { continue; } if (node.Value is PictureBox) { TemplateLayer layer = new TemplateLayer() { priority = priority, x = node.Value.Location.X, y = node.Value.Location.Y, image = NemonicApp.ImageToByte((node.Value as PictureBox).Image) }; objects.Add(layer); } else if (node.Value is TransparentImage) { TransparentImage.ImageLayer layer = new TransparentImage.ImageLayer() { priority = priority, x = node.Value.Location.X, y = node.Value.Location.Y, width = node.Value.Size.Width, height = node.Value.Size.Height, image = NemonicApp.ImageToByte((node.Value as TransparentImage).Image) }; objects.Add(layer); } else if (node.Value is TransparentRichText) { TransparentRichText.RichTextLayer layer = new TransparentRichText.RichTextLayer() { priority = priority, x = node.Value.Location.X, y = node.Value.Location.Y, text = (node.Value as TransparentRichText).Text, font = (node.Value as TransparentRichText).Font }; (node.Value as TransparentRichText).SelectAll(); layer.align = (node.Value as TransparentRichText).SelectionAlignment; (node.Value as TransparentRichText).DeselectAll(); objects.Add(layer); } } Thumbnail thumbNailData = new Thumbnail() { image = NemonicApp.ImageToByte(thumbnail) }; objects.Add(thumbNailData); return(objects); }