From bb311f297941e0a33f75eb7dc856d246d35e2378 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Thu, 27 Nov 2014 21:02:28 -0500 Subject: [PATCH] Added Vector Image ObjectModel and one DataFormat (Expression Blend) (incomplete) --- .../VectorImage/VectorImageEditor.Designer.cs | 37 ++++++++++++++ .../VectorImage/VectorImageEditor.cs | 43 ++++++++++++++++ ...ltimedia.UserInterface.WindowsForms.csproj | 8 ++- .../ExpressionDesignDataFormat.cs | 50 +++++++++++++++++++ .../VectorImage/VectorImageObjectModel.cs | 30 +++++++++++ .../UniversalEditor.Plugins.Multimedia.csproj | 2 + 6 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/Editors/Multimedia/VectorImage/VectorImageEditor.Designer.cs create mode 100644 CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/Editors/Multimedia/VectorImage/VectorImageEditor.cs create mode 100644 CSharp/Plugins/UniversalEditor.Plugins.Multimedia/DataFormats/Multimedia/VectorImage/Microsoft/ExpressionDesign/ExpressionDesignDataFormat.cs create mode 100644 CSharp/Plugins/UniversalEditor.Plugins.Multimedia/ObjectModels/Multimedia/VectorImage/VectorImageObjectModel.cs diff --git a/CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/Editors/Multimedia/VectorImage/VectorImageEditor.Designer.cs b/CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/Editors/Multimedia/VectorImage/VectorImageEditor.Designer.cs new file mode 100644 index 00000000..a0905500 --- /dev/null +++ b/CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/Editors/Multimedia/VectorImage/VectorImageEditor.Designer.cs @@ -0,0 +1,37 @@ +namespace UniversalEditor.Editors.Multimedia.VectorImage +{ + partial class VectorImageEditor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + } + + #endregion + } +} diff --git a/CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/Editors/Multimedia/VectorImage/VectorImageEditor.cs b/CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/Editors/Multimedia/VectorImage/VectorImageEditor.cs new file mode 100644 index 00000000..70c79a38 --- /dev/null +++ b/CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/Editors/Multimedia/VectorImage/VectorImageEditor.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Text; +using System.Windows.Forms; +using UniversalEditor.ObjectModels.Multimedia.VectorImage; +using UniversalEditor.UserInterface; +using UniversalEditor.UserInterface.WindowsForms; + +namespace UniversalEditor.Editors.Multimedia.VectorImage +{ + public partial class VectorImageEditor : Editor + { + public VectorImageEditor() + { + InitializeComponent(); + } + + private static EditorReference _er = null; + public override EditorReference MakeReference() + { + if (_er == null) + { + _er = base.MakeReference(); + _er.Title = "Vector Image"; + _er.SupportedObjectModels.Add(typeof(VectorImageObjectModel)); + } + return _er; + } + + protected override void OnObjectModelChanged(EventArgs e) + { + base.OnObjectModelChanged(e); + + VectorImageObjectModel vector = (ObjectModel as VectorImageObjectModel); + if (vector != null) + { + + } + } + } +} diff --git a/CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms.csproj b/CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms.csproj index f96d7bb1..8f016f0e 100644 --- a/CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms.csproj +++ b/CSharp/Engines/WindowsForms/Plugins/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms/UniversalEditor.Plugins.Multimedia.UserInterface.WindowsForms.csproj @@ -33,11 +33,9 @@ - - @@ -144,6 +142,12 @@ SubtitleEditor.cs + + UserControl + + + VectorImageEditor.cs + UserControl diff --git a/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/DataFormats/Multimedia/VectorImage/Microsoft/ExpressionDesign/ExpressionDesignDataFormat.cs b/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/DataFormats/Multimedia/VectorImage/Microsoft/ExpressionDesign/ExpressionDesignDataFormat.cs new file mode 100644 index 00000000..a8a1e759 --- /dev/null +++ b/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/DataFormats/Multimedia/VectorImage/Microsoft/ExpressionDesign/ExpressionDesignDataFormat.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UniversalEditor.IO; +using UniversalEditor.ObjectModels.Multimedia.VectorImage; + +namespace UniversalEditor.DataFormats.Multimedia.VectorImage.Microsoft.ExpressionDesign +{ + public class ExpressionDesignDataFormat : DataFormat + { + private static DataFormatReference _dfr = null; + public override DataFormatReference MakeReference() + { + if (_dfr == null) + { + _dfr = base.MakeReference(); + _dfr.Capabilities.Add(typeof(VectorImageObjectModel), DataFormatCapabilities.All); + _dfr.Filters.Add("Microsoft Expression Design image", new byte?[][] { new byte?[] { (byte)'<', (byte)'X', (byte)'D', (byte)'F', (byte)'V', (byte)':', (byte)'9', (byte)'>', (byte)0x0A } }, new string[] { "*.design" }); + } + return _dfr; + } + + protected override void LoadInternal(ref ObjectModel objectModel) + { + VectorImageObjectModel vector = (objectModel as VectorImageObjectModel); + if (vector == null) throw new ObjectModelNotSupportedException(); + + Reader reader = base.Accessor.Reader; + + string signature = reader.ReadFixedLengthString(9); + if (signature != "\n") throw new InvalidDataFormatException(); + + reader.Accessor.Seek(32, SeekOrigin.Begin); + byte[] compressedData = reader.ReadToEnd(); + + System.IO.File.WriteAllBytes(@"C:\Users\Mike Becker\Documents\Expression\Expression Design\Untitled1.compressed", compressedData); + + UniversalEditor.Compression.CompressionModule module = UniversalEditor.Compression.CompressionModule.FromKnownCompressionMethod(Compression.CompressionMethod.Zlib); + byte[] decompressedData = module.Decompress(compressedData); + + System.IO.File.WriteAllBytes(@"C:\Users\Mike Becker\Documents\Expression\Expression Design\Untitled1.decompressed", decompressedData); + } + + protected override void SaveInternal(ObjectModel objectModel) + { + throw new NotImplementedException(); + } + } +} diff --git a/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/ObjectModels/Multimedia/VectorImage/VectorImageObjectModel.cs b/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/ObjectModels/Multimedia/VectorImage/VectorImageObjectModel.cs new file mode 100644 index 00000000..b0fd30d9 --- /dev/null +++ b/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/ObjectModels/Multimedia/VectorImage/VectorImageObjectModel.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace UniversalEditor.ObjectModels.Multimedia.VectorImage +{ + public class VectorImageObjectModel : ObjectModel + { + private static ObjectModelReference _omr = null; + public override ObjectModelReference MakeReference() + { + if (_omr == null) + { + _omr = base.MakeReference(); + _omr.Title = "Vector image"; + _omr.Path = new string[] { "Multimedia", "Picture" }; + } + return _omr; + } + + public override void Clear() + { + } + + public override void CopyTo(ObjectModel where) + { + } + } +} diff --git a/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/UniversalEditor.Plugins.Multimedia.csproj b/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/UniversalEditor.Plugins.Multimedia.csproj index 25f9d49d..b185484a 100644 --- a/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/UniversalEditor.Plugins.Multimedia.csproj +++ b/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/UniversalEditor.Plugins.Multimedia.csproj @@ -136,6 +136,7 @@ + @@ -233,6 +234,7 @@ + Code