private void OnImageDragDrop(object sender, DragEventArgs e)
        {
            if (e.Data != null && e.Data.GetDataPresent(DataFormats.FileDrop, true) &&
                e.Data.GetData(DataFormats.FileDrop, true) is String[])
            {
                var filePath = (e.Data.GetData(DataFormats.FileDrop) as String[] ?? new string[] { }).FirstOrDefault();
                if (filePath == null)
                {
                    return;
                }

                ClipartObject clipartObject = null;
                if (FileFormatHelper.IsImageFile(filePath))
                {
                    clipartObject = ImageClipartObject.FromFile(filePath);
                }
                else if (FileFormatHelper.IsVideoFile(filePath))
                {
                    clipartObject = GenererateVideoClipart(filePath);
                }
                if (clipartObject != null)
                {
                    LoadData(clipartObject);
                    EditValueChanged?.Invoke(sender, e);
                }
            }
        }
 private void OnInsertFileItemClick(object sender, ItemClickEventArgs e)
 {
     using (var openFileDialog = new OpenFileDialog())
     {
         openFileDialog.Title            = "Inser Image or Video file";
         openFileDialog.DefaultExt       = "*.png;*.bmp;*.jpg;*.jpeg;*.mp4;*.avi;*.wmv";
         openFileDialog.Filter           = "Image or Video files|*.png;*.bmp;*.jpg;*.jpeg;*.mp4;*.avi;*.wmv";
         openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
         if (openFileDialog.ShowDialog() == DialogResult.OK)
         {
             var           filePath      = openFileDialog.FileName;
             ClipartObject clipartObject = null;
             if (FileFormatHelper.IsImageFile(filePath))
             {
                 clipartObject = ImageClipartObject.FromFile(filePath);
             }
             else if (FileFormatHelper.IsVideoFile(filePath))
             {
                 clipartObject = GenererateVideoClipart(filePath);
             }
             if (clipartObject != null)
             {
                 LoadData(clipartObject);
                 EditValueChanged?.Invoke(sender, e);
             }
         }
     }
 }
        public void Init(ClipartObject defaultClipartObject, ClipartConfiguration configuration, IScheduleResourceHolder resourceHolder)
        {
            _defaultClipartObject = defaultClipartObject;
            _resourceHolder       = resourceHolder;
            ResetToDefault();

            pictureEdit.Properties.PictureAlignment = configuration.Alignment;
            pictureEdit.Properties.SizeMode         = configuration.SizeMode;
        }
        public void LoadData(ClipartObject clipartObject)
        {
            if (_currentClipartObject != null && _currentClipartObject != _defaultClipartObject)
            {
                if (_currentClipartObject.Type == ClipartObjectType.Video)
                {
                    var videoCipartObject = (VideoClipartObject)_currentClipartObject;
                    var videoResource     =
                        _resourceHolder.ResourceContainer.Items.FirstOrDefault(item => item.Id == videoCipartObject.ResourceId);
                    if (videoResource != null)
                    {
                        _resourceHolder.ResourceContainer.RemoveResource(videoResource);
                    }
                }
            }
            _currentClipartObject = clipartObject ?? _defaultClipartObject;
            pictureEdit.Tag       = _currentClipartObject;
            if (_currentClipartObject != null)
            {
                switch (_currentClipartObject.Type)
                {
                case ClipartObjectType.Image:
                    var imageObject = (ImageClipartObject)_currentClipartObject;
                    pictureEdit.Image = imageObject.Image;
                    break;

                case ClipartObjectType.Video:
                    var videoClipartObject = (VideoClipartObject)_currentClipartObject;
                    pictureEdit.Image = videoClipartObject.Thumbnail;
                    break;

                case ClipartObjectType.YouTube:
                    var youtubeObject = (YouTubeClipartObject)_currentClipartObject;
                    pictureEdit.Image = youtubeObject.Thumbnail;
                    break;

                default:
                    throw new ArgumentOutOfRangeException("Undefined clipart type found");
                }
            }
        }
        private static Shape AddClipartObject(this Shapes shapes, ClipartObject clipartObject, Shape shapeTemplate)
        {
            Shape shape = null;

            switch (clipartObject.Type)
            {
            case ClipartObjectType.Image:
            {
                var imageObject = (ImageClipartObject)clipartObject;
                var fileName    = Path.GetTempFileName();
                if (imageObject.Image != null)
                {
                    imageObject.Image.Save(fileName);

                    var originalWidth = imageObject.Image.Width;
                    var originalHeight = imageObject.Image.Height;
                    var percentWidth = shapeTemplate.Width / originalWidth;
                    var percentHeight = shapeTemplate.Height / originalHeight;
                    var percent = new[] { 1, percentWidth, percentHeight }.Min();
                    var width  = (Int32)(originalWidth * percent);
                    var height = (Int32)(originalHeight * percent);

                    shape = shapes.AddPicture(fileName,
                                              MsoTriState.msoFalse,
                                              MsoTriState.msoCTrue,
                                              shapeTemplate.Left + (shapeTemplate.Width - width) / 2,
                                              shapeTemplate.Top + (shapeTemplate.Height - height) / 2,
                                              width,
                                              height);
                }
            }
            break;

            case ClipartObjectType.Video:
            {
                var videoClipartObject = (VideoClipartObject)clipartObject;

                var originalWidth = videoClipartObject.Thumbnail.Width;
                var originalHeight = videoClipartObject.Thumbnail.Height;
                var percentWidth = shapeTemplate.Width / originalWidth;
                var percentHeight = shapeTemplate.Height / originalHeight;
                var percent = new[] { 1, percentWidth, percentHeight }.Min();
                var width  = (Int32)(originalWidth * percent);
                var height = (Int32)(originalHeight * percent);

                shape = shapes.AddMediaObject2(videoClipartObject.SourceFilePath, MsoTriState.msoFalse, MsoTriState.msoCTrue,
                                               shapeTemplate.Left + (shapeTemplate.Width - width) / 2,
                                               shapeTemplate.Top + (shapeTemplate.Height - height) / 2,
                                               width,
                                               height);

                var fileName = Path.GetTempFileName();
                videoClipartObject.Thumbnail.Save(fileName);
                shape.MediaFormat.SetDisplayPictureFromFile(fileName);
            }
            break;

            case ClipartObjectType.YouTube:
            {
                var youTubeObject = (YouTubeClipartObject)clipartObject;

                var width  = (Int32)shapeTemplate.Width;
                var height = (Int32)(shapeTemplate.Width * 9 / 16);

                var youTubeTag = String.Format("<object><embed src='{0}' type='application/x-shockwave-flash'></embed></object>", youTubeObject.EmbeddedUrl);

                shape = shapes.AddMediaObjectFromEmbedTag(youTubeTag,
                                                          shapeTemplate.Left + (shapeTemplate.Width - width) / 2,
                                                          shapeTemplate.Top + (shapeTemplate.Height - height) / 2,
                                                          width,
                                                          height);
            }
            break;

            default:
                throw new ArgumentOutOfRangeException("Undefined clipart type found");
            }
            return(shape);
        }