コード例 #1
0
        private static CreateNodeCommand GetAddImageCommand(IEditor editor, Point location, Image img)
        {
            using (editor.Figure.DirtManager.BeginDirty()) {
                if (img == null)
                {
                    return(null);
                }

                var codec = ImageUtil.GetCodec(img);
                if (codec == null)
                {
                    codec = ImageUtil.GetCodec(ImageFormat.Png);
                }

                using (var encoderParams = ImageUtil.CreateEncoderParameters(100L)) {
                    var imgFilePath = GetNewImageFilePath();
                    img.Save(imgFilePath, codec, encoderParams);

                    var desc = new FileImageDescription(Path.GetFileName(imgFilePath));

                    var req = new CreateNodeRequest();
                    req.ModelFactory = new DelegatingModelFactory <MemoImage>(
                        () => {
                        var ret   = MemoFactory.CreateImage();
                        ret.Image = desc;
                        return(ret);
                    }
                        );
                    req.Bounds           = new Rectangle(location, new Size(img.Width, img.Height));
                    req.AdjustSizeToGrid = false;

                    return(editor.GetCommand(req) as CreateNodeCommand);
                }
            }
        }
コード例 #2
0
ファイル: ConverterForm.cs プロジェクト: rajeshwarn/MochaNote
        private void ConvertModel()
        {
            var oldModelRoot = MemopadConstsV1.ModelRoot;

            var classDirs = Directory.GetDirectories(oldModelRoot);

            foreach (var classDir in classDirs)
            {
                var typeName = Path.GetFileName(classDir);

                var entityDirs = Directory.GetDirectories(classDir);
                foreach (var entityDir in entityDirs)
                {
                    var id = Path.GetFileName(entityDir);

                    var isMemoImage   = string.Equals(typeName, "Mkamo.Model.Memo.MemoImage", StringComparison.OrdinalIgnoreCase);
                    var fileImageDesc = default(FileImageDescription);

                    if (isMemoImage)
                    {
                        /// ByteImageDescriptionからFileImageDescriptionに変換
                        using (var stream = new FileStream(Path.Combine(entityDir, "Image.ser"), FileMode.Open, FileAccess.Read)) {
                            var formatter = new BinaryFormatter();
                            var bytesDesc = (BytesImageDescription)formatter.Deserialize(stream);
                            var filepath  = GetNewImageFilePath();
                            PathUtil.EnsureDirectoryExists(Path.GetDirectoryName(filepath));
                            File.WriteAllBytes(filepath, bytesDesc.Bytes);
                            fileImageDesc = new FileImageDescription(Path.GetFileName(filepath));
                        }
                    }

                    var files           = Directory.GetFiles(entityDir);
                    var hasSerializable = files.Any(
                        file => string.Equals(Path.GetExtension(file), ".ser", StringComparison.OrdinalIgnoreCase)
                        );
                    foreach (var file in files)
                    {
                        var fileName = Path.GetFileName(file);
                        var fileExt  = Path.GetExtension(file);

                        if (string.Equals(fileName, "entity.xml", StringComparison.OrdinalIgnoreCase))
                        {
                            var xml = File.ReadAllText(file);
                            if (hasSerializable)
                            {
                                xml = ReplaceSerralizableProperty(xml);
                            }
                            _memoAccessor.InsertEntity(typeName, id, xml);
                        }
                        else if (string.Equals(fileExt, ".dat", StringComparison.OrdinalIgnoreCase))
                        {
                            var key  = Path.GetFileNameWithoutExtension(file);
                            var text = File.ReadAllText(file);
                            _exDataAccessor.InsertExtendedTextData(typeName, id, key, text);
                        }
                        else if (string.Equals(fileExt, ".obj", StringComparison.OrdinalIgnoreCase))
                        {
                            var key   = Path.GetFileNameWithoutExtension(file);
                            var bytes = File.ReadAllBytes(file);
                            _exDataAccessor.InsertExtendedBlobData(typeName, id, key, bytes);
                        }
                        else if (string.Equals(fileExt, ".ser", StringComparison.OrdinalIgnoreCase))
                        {
                            if (isMemoImage)
                            {
                                //if (fileImageDesc != null) {
                                var bytes = default(byte[]);
                                using (var stream = new MemoryStream()) {
                                    var formatter = new BinaryFormatter();
                                    formatter.Serialize(stream, fileImageDesc);
                                    bytes = stream.GetBuffer();
                                }
                                _memoAccessor.InsertSerializableProperty(typeName, id, "Image", bytes);
                                //}
                            }
                            else
                            {
                                var key   = Path.GetFileNameWithoutExtension(file);
                                var bytes = File.ReadAllBytes(file);
                                _memoAccessor.InsertSerializableProperty(typeName, id, key, bytes);
                            }
                        }
                    }
                }
            }
        }
コード例 #3
0
        public static IEnumerable <IEditor> AddMetafile(IEditor editor, Point location, Metafile meta, bool useCommandExecutor, bool arrange)
        {
            using (editor.Figure.DirtManager.BeginDirty())
                using (var mem = new MemoryStream()) {
                    if (useCommandExecutor && arrange)
                    {
                        editor.Site.CommandExecutor.BeginChain();
                    }

                    var existingEditorBounds = default(Rectangle[]);
                    if (arrange)
                    {
                        existingEditorBounds = editor.Children.Select(e => e.Figure.Bounds).ToArray();
                    }

                    using (var bmp = new Bitmap(1, 1))
                        using (var bmpg = Graphics.FromImage(bmp)) {
                            var hdc = bmpg.GetHdc();
                            using (var mf = new Metafile(mem, hdc)) {
                                bmpg.ReleaseHdc(hdc);
                                using (var g = Graphics.FromImage(mf)) {
                                    g.DrawImage(meta, Point.Empty);
                                }
                            }
                        }

                    var imgFilePath = GetNewImageFilePath();
                    File.WriteAllBytes(imgFilePath, mem.GetBuffer());
                    var desc = new FileImageDescription(Path.GetFileName(imgFilePath));

                    var req = new CreateNodeRequest();
                    req.ModelFactory = new DelegatingModelFactory <MemoImage>(
                        () => {
                        var ret   = MemoFactory.CreateImage();
                        ret.Image = desc;
                        return(ret);
                    }
                        );
                    req.Bounds           = new Rectangle(location, meta.Size);
                    req.AdjustSizeToGrid = false;

                    var cmd = editor.GetCommand(req) as CreateNodeCommand;
                    if (useCommandExecutor)
                    {
                        editor.Site.CommandExecutor.Execute(cmd);
                    }
                    else
                    {
                        cmd.Execute();
                    }

                    meta.Dispose();


                    if (arrange)
                    {
                        var newLoc = RectUtil.GetPreferredLocation(
                            cmd.CreatedEditor.Figure.Bounds,
                            existingEditorBounds,
                            editor.Root.Figure.Right,
                            MemopadConsts.DefaultCaretPosition.X,
                            MemopadConsts.DefaultCaretPosition.Y
                            );
                        var move = new ChangeBoundsCommand(
                            cmd.CreatedEditor,
                            (Size)newLoc - (Size)cmd.CreatedEditor.Figure.Location,
                            Size.Empty,
                            Directions.None,
                            new [] { cmd.CreatedEditor }
                            );
                        if (useCommandExecutor)
                        {
                            editor.Site.CommandExecutor.Execute(move);
                        }
                        else
                        {
                            move.Execute();
                        }
                        if (useCommandExecutor)
                        {
                            editor.Site.CommandExecutor.EndChain();
                        }
                    }

                    return(new[] { cmd.CreatedEditor });
                }
        }