Esempio n. 1
0
        public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source,
            Shape imageShape)
        {
            designer.ApplyPseudoTextWhenNoTextShapes();

            if ((option.IsUseBannerStyle 
                || option.IsUseFrostedGlassBannerStyle)
                    && (option.GetTextBoxPosition() == Position.Left
                        || option.GetTextBoxPosition() == Position.Centre
                        || option.GetTextBoxPosition() == Position.Right))
            {
                designer.ApplyTextWrapping();
            }
            else if (option.IsUseCircleStyle
                     || option.IsUseOutlineStyle)
            {
                designer.ApplyTextWrapping();
            }
            else
            {
                designer.RecoverTextWrapping();
            }

            ApplyTextEffect(option, designer);
            designer.ApplyTextGlowEffect(option.IsUseTextGlow, option.TextGlowColor);

            return new List<Shape>();
        }
        public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape, Settings settings)
        {
            if (option.StyleName != TextCollection.PictureSlidesLabText.StyleNameDirectText
                && option.StyleName != TextCollection.PictureSlidesLabText.StyleNameBlur
                && option.StyleName != TextCollection.PictureSlidesLabText.StyleNameSpecialEffect
                && option.StyleName != TextCollection.PictureSlidesLabText.StyleNameOverlay)
            {
                designer.ApplyPseudoTextWhenNoTextShapes();
            }

            if ((option.IsUseBannerStyle 
                || option.IsUseFrostedGlassBannerStyle)
                    && (option.GetTextBoxPosition() == Position.Left
                        || (option.GetTextBoxPosition() == Position.Centre 
                            && option.GetBannerDirection() != BannerDirection.Horizontal)
                        || option.GetTextBoxPosition() == Position.Right))
            {
                designer.ApplyTextWrapping();
            }
            else if (option.IsUseCircleStyle
                     || option.IsUseOutlineStyle)
            {
                designer.ApplyTextWrapping();
            }
            else
            {
                designer.RecoverTextWrapping(option.GetTextBoxPosition(), option.GetTextAlignment());
            }

            ApplyTextEffect(option, designer);
            designer.ApplyTextGlowEffect(option.IsUseTextGlow, option.TextGlowColor);

            return new List<Shape>();
        }
        public PreviewInfo PreviewApplyStyle(ImageItem source, Slide contentSlide, 
            float slideWidth, float slideHeight, StyleOption option)
        {
            Logger.Log("PreviewApplyStyle begins");
            SetStyleOptions(option);
            SlideWidth = slideWidth;
            SlideHeight = slideHeight;

            var previewInfo = new PreviewInfo();
            EffectsDesignerForPreview.PreparePreviewing(contentSlide, slideWidth, slideHeight, source);

            // use thumbnail to apply, in order to speed up
            source.BackupFullSizeImageFile = source.FullSizeImageFile;
            var backupImageFile = source.ImageFile;
            source.FullSizeImageFile = null;
            source.ImageFile = source.CroppedThumbnailImageFile ?? source.ImageFile;

            GenerateStyle(EffectsDesignerForPreview, source, isActualSize: false);

            // recover the source back
            source.FullSizeImageFile = source.BackupFullSizeImageFile;
            source.ImageFile = backupImageFile;
            EffectsDesignerForPreview.GetNativeSlide().Export(previewInfo.PreviewApplyStyleImagePath, "JPG",
                    GetPreviewWidth(), PreviewHeight);
            Logger.Log("PreviewApplyStyle done");
            return previewInfo;
        }
Esempio n. 4
0
        public PreviewInfo PreviewApplyStyle(ImageItem source, Slide contentSlide, 
            float slideWidth, float slideHeight, StyleOption option)
        {
            SetStyleOptions(option);
            SlideWidth = slideWidth;
            SlideHeight = slideHeight;

            var previewInfo = new PreviewInfo();
            var handler = CreateEffectsHandlerForPreview(source, contentSlide);

            // use thumbnail to apply, in order to speed up
            var fullSizeImgPath = source.FullSizeImageFile;
            var originalThumbnail = source.ImageFile;
            source.FullSizeImageFile = null;
            source.ImageFile = source.CroppedThumbnailImageFile ?? source.ImageFile;

            ApplyStyle(handler, source, isActualSize: false);

            // recover the source back
            source.FullSizeImageFile = fullSizeImgPath;
            source.ImageFile = originalThumbnail;
            handler.GetNativeSlide().Export(previewInfo.PreviewApplyStyleImagePath, "JPG",
                    GetPreviewWidth(), PreviewHeight);

            handler.Delete();
            return previewInfo;
        }
 public void TestApply()
 {
     variant.Set("OptionName", "test option name");
     var option = new StyleOption();
     variant.Apply(option);
     Assert.AreEqual("test option name", option.OptionName);
 }
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape)
 {
     if (option.IsUseTextBoxStyle)
     {
         designer.ApplyTextboxEffect(option.TextBoxColor, option.TextBoxTransparency);
     }
     return new List<Shape>();
 }
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source,
     Shape imageShape)
 {
     // store style options information into original image shape
     // return original image and cropped image
     return designer.EmbedStyleOptionsInformation(
         source.OriginalImageFile, source.FullSizeImageFile,
         source.ContextLink, source.Rect, option);
 }
 public void Apply(StyleOption opt)
 {
     foreach (var pair in _variants)
     {
         var type = opt.GetType();
         var prop = type.GetProperty(pair.Key);
         prop.SetValue(opt, pair.Value, null);
     }
 }
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape)
 {
     var result = new List<Shape>();
     if (option.IsUseOverlayStyle)
     {
         var backgroundOverlayShape = designer.ApplyOverlayEffect(option.OverlayColor, option.Transparency);
         result.Add(backgroundOverlayShape);
     }
     return result;
 }
Esempio n. 10
0
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape)
 {
     var result = new List<Shape>();
     if (option.IsUseBannerStyle)
     {
         var bannerOverlayShape = ApplyBannerStyle(option, designer, imageShape);
         result.Add(bannerOverlayShape);
     }
     return result;
 }
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape, Settings settings)
 {
     var result = new List<Shape>();
     if (option.IsUseOutlineStyle)
     {
         var outlineOverlayShape = designer.ApplyRectOutlineEffect(imageShape, option.OutlineColor, 0);
         result.Add(outlineOverlayShape);
     }
     return result;
 }
Esempio n. 12
0
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape)
 {
     var result = new List<Shape>();
     if (option.IsUseCircleStyle)
     {
         var circleOverlayShape = designer.ApplyCircleRingsEffect(option.CircleColor, option.CircleTransparency);
         result.Add(circleOverlayShape);
     }
     return result;
 }
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape, Settings settings)
 {
     var result = new List<Shape>();
     if (option.IsUseFrameStyle)
     {
         var frameOverlayShape = designer.ApplyAlbumFrameEffect(option.FrameColor, option.FrameTransparency);
         result.Add(frameOverlayShape);
     }
     return result;
 }
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape)
 {
     designer.ApplyImageReference(source.ContextLink);
     if (option.IsInsertReference)
     {
         designer.ApplyImageReferenceInsertion(source.ContextLink, option.GetFontFamily(), option.FontColor,
             option.CitationFontSize, option.ImageReferenceTextBoxColor, option.GetCitationTextBoxAlignment());
     }
     return new List<Shape>();
 }
Esempio n. 15
0
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape)
 {
     var result = new List<Shape>();
     if (option.IsUseTriangleStyle)
     {
         var triangleOverlayShape = designer.ApplyTriangleEffect(option.TriangleColor, option.FontColor,
             option.TriangleTransparency);
         result.Add(triangleOverlayShape);
     }
     return result;
 }
Esempio n. 16
0
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape)
 {
     var result = new List<Shape>();
     if (option.IsUseBlurStyle)
     {
         var blurImageShape = option.IsUseSpecialEffectStyle
             ? designer.ApplyBlurEffect(source.SpecialEffectImageFile, option.BlurDegree)
             : designer.ApplyBlurEffect(degree: option.BlurDegree);
         result.Add(blurImageShape);
     }
     return result;
 }
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape, Settings settings)
 {
     // in previewing 
     if (source.FullSizeImageFile == null)
     {
         return new List<Shape>();
     }
     // store style options information into original image shape
     // return original image and cropped image
     return designer.EmbedStyleOptionsInformation(
         source.BackupFullSizeImageFile, source.FullSizeImageFile,
         source.ContextLink, source.Source, source.Rect, option);
 }
Esempio n. 18
0
 private void ApplyTextEffect(StyleOption option, EffectsDesigner effectsDesigner)
 {
     if (option.IsUseTextFormat)
     {
         effectsDesigner.ApplyTextEffect(option.GetFontFamily(), option.FontColor, option.FontSizeIncrease);
         effectsDesigner.ApplyTextPositionAndAlignment(option.GetTextBoxPosition(), option.GetTextAlignment());
     }
     else
     {
         effectsDesigner.ApplyOriginalTextEffect();
         effectsDesigner.ApplyTextPositionAndAlignment(Position.Original, Alignment.Auto);
     }
 }
Esempio n. 19
0
        public StylesDesigner(Application app = null)
        {
            Path = TempPath.TempFolder;
            Name = "PictureSlidesLabPreview";
            Option = new StyleOption();
            Application = app;
            OpenInBackground();

            var catalog = new AggregateCatalog(
                new AssemblyCatalog(Assembly.GetExecutingAssembly()));
            var container = new CompositionContainer(catalog);
            container.ComposeParts(this);
        }
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape, Settings settings)
 {
     if (option.IsUseFrostedGlassTextBoxStyle)
     {
         var blurDegreeForFrostedGlass = EffectsDesigner.BlurDegreeForFrostedGlassEffect;
         var blurImageShape = option.IsUseSpecialEffectStyle
             ? designer.ApplyBlurEffect(source.SpecialEffectImageFile, blurDegreeForFrostedGlass)
             : designer.ApplyBlurEffect(degree: blurDegreeForFrostedGlass);
         designer.ApplyFrostedGlassTextBoxEffect(option.FrostedGlassTextBoxColor, option.FrostedGlassTextBoxTransparency,
             blurImageShape, option.FontSizeIncrease);
         blurImageShape.Delete();
     }
     return new List<Shape>();
 }
        public void TestCopy()
        {
            variant.Set("TextBoxPosition", 999);
            variant.Set("OptionName", "test option name");
            variant = variant.Copy(new StyleOption());

            var option = new StyleOption();
            option.TextBoxPosition = 999;
            option.OptionName = "test option name";

            variant.Apply(option);
            Assert.AreEqual(5, option.TextBoxPosition);
            Assert.AreEqual("Reloaded", option.OptionName);
        }
        public void TestIsNoEffect()
        {
            variant.Set("TextBoxPosition", 999);
            variant.Set("OptionName", "test option name");

            var option = new StyleOption();
            option.TextBoxPosition = 999;
            option.OptionName = "test option name";

            Assert.IsTrue(variant.IsNoEffect(option));

            option.TextBoxPosition = 4;

            Assert.IsFalse(variant.IsNoEffect(option));
        }
        public StylesDesigner(Application app = null)
        {
            Path = TempPath.TempFolder;
            Name = "PictureSlidesLabPreview" + Guid.NewGuid().ToString().Substring(0, 7);
            Option = new StyleOption();
            Application = app;
            OpenInBackground();
            // re use effects designer (a background slide) to
            // generate styles
            EffectsDesignerForPreview = CreateEffectsHandlerForPreview();

            var catalog = new AggregateCatalog(
                new AssemblyCatalog(Assembly.GetExecutingAssembly()));
            var container = new CompositionContainer(catalog);
            container.ComposeParts(this);
        }
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape)
 {
     var result = new List<Shape>();
     if (option.IsUseFrostedGlassBannerStyle)
     {
         var blurDegreeForFrostedGlass = EffectsDesigner.BlurDegreeForFrostedGlassEffect;
         var blurImageShape = option.IsUseSpecialEffectStyle
             ? designer.ApplyBlurEffect(source.SpecialEffectImageFile, blurDegreeForFrostedGlass)
             : designer.ApplyBlurEffect(degree: blurDegreeForFrostedGlass);
         var banner = designer.ApplyFrostedGlassBannerEffect(option.GetBannerDirection(), option.GetTextBoxPosition(),
             blurImageShape, option.FrostedGlassBannerColor, option.FrostedGlassBannerTransparency);
         result.Add(banner);
         blurImageShape.Delete();
     }
     return result;
 }
        /// <summary>
        /// embed style information into the image shapes,
        /// and then return a list of shape in which
        /// index-0 is the original image
        /// index-1 is the cropped image
        /// </summary>
        /// <param name="originalImageFile"></param>
        /// <param name="croppedImageFile"></param>
        /// <param name="imageContext"></param>
        /// <param name="imageSource"></param>
        /// <param name="rect"></param>
        /// <param name="opt"></param>
        /// <returns></returns>
        public List<PowerPoint.Shape> EmbedStyleOptionsInformation(string originalImageFile, string croppedImageFile,
            string imageContext, string imageSource, Rect rect, StyleOption opt)
        {
            if (originalImageFile == null) return new List<PowerPoint.Shape>();

            var originalImage = AddPicture(originalImageFile, EffectName.Original_DO_NOT_REMOVE);
            var slideWidth = SlideWidth;
            var slideHeight = SlideHeight;
            FitToSlide.AutoFit(originalImage, slideWidth, slideHeight);
            originalImage.Visible = MsoTriState.msoFalse;

            var croppedImage = AddPicture(croppedImageFile, EffectName.Cropped_DO_NOT_REMOVE);
            FitToSlide.AutoFit(croppedImage, slideWidth, slideHeight);
            croppedImage.Visible = MsoTriState.msoFalse;

            var result = new List<PowerPoint.Shape>();
            result.Add(originalImage);
            result.Add(croppedImage);

            // store source image info
            AddTag(originalImage, Tag.ReloadOriginImg, originalImageFile);
            AddTag(originalImage, Tag.ReloadCroppedImg, croppedImageFile);
            AddTag(originalImage, Tag.ReloadImgContext, imageContext);
            AddTag(originalImage, Tag.ReloadImgSource, imageSource);
            AddTag(originalImage, Tag.ReloadRectX, rect.X.ToString(CultureInfo.InvariantCulture));
            AddTag(originalImage, Tag.ReloadRectY, rect.Y.ToString(CultureInfo.InvariantCulture));
            AddTag(originalImage, Tag.ReloadRectWidth, rect.Width.ToString(CultureInfo.InvariantCulture));
            AddTag(originalImage, Tag.ReloadRectHeight, rect.Height.ToString(CultureInfo.InvariantCulture));

            // store style info
            var type = opt.GetType();
            var props = type.GetProperties();
            foreach (var propertyInfo in props)
            {
                try
                {
                    AddTag(originalImage, Tag.ReloadPrefix + propertyInfo.Name,
                        propertyInfo.GetValue(opt, null).ToString());
                }
                catch (Exception e)
                {
                    Logger.LogException(e, "EmbedStyleOptionsInformation");
                }
            }
            return result;
        }
 public IList<Shape> Execute(StyleOption option, EffectsDesigner designer, ImageItem source, Shape imageShape, Settings settings)
 {
     designer.ApplyImageReference(source.Source);
     if (settings != null && settings.IsInsertCitation)
     {
         designer.ApplyImageReferenceInsertion(source.Source, "Calibri", settings.CitationFontColor,
             settings.CitationFontSize, 
             settings.IsUseCitationTextBox ? settings.CitationTextBoxColor : "", 
             settings.GetCitationTextBoxAlignment());
     }
     else if (option.IsInsertReference)
     {
         designer.ApplyImageReferenceInsertion(source.Source, option.GetFontFamily(), option.FontColor,
             option.CitationFontSize, option.ImageReferenceTextBoxColor, option.GetCitationTextBoxAlignment());
     }
     return new List<Shape>();
 }
 /// <summary>
 /// Copy corresponding variant info from the given style
 /// </summary>
 public StyleVariant Copy(StyleOption opt, string givenOptionName = null)
 {
     var newVariants = new Dictionary<string, object>();
     foreach (var pair in _variants)
     {
         if (pair.Key.Equals("OptionName"))
         {
             newVariants["OptionName"] = givenOptionName ?? "Reloaded";
         }
         else
         {
             var type = opt.GetType();
             var prop = type.GetProperty(pair.Key);
             var optValue = prop.GetValue(opt, null);
             newVariants[pair.Key] = optValue;
         }
     }
     return new StyleVariant(newVariants);
 }
        /// <summary>
        /// return true, when applying variant to this style options has no effect (still same)
        /// </summary>
        /// <param name="opt"></param>
        public bool IsNoEffect(StyleOption opt)
        {
            foreach (var pair in _variants)
            {
                if (pair.Key.Equals("OptionName") || pair.Value is bool)
                {
                    continue;
                }

                var type = opt.GetType();
                var prop = type.GetProperty(pair.Key);
                var optValue = prop.GetValue(opt, null);
                if (!pair.Value.Equals(optValue))
                {
                    return false;
                }
            }
            return true;
        }
Esempio n. 29
0
        public void ApplyStyle(ImageItem source, Slide contentSlide,
            float slideWidth, float slideHeight, StyleOption option = null)
        {
            if (option != null)
            {
                SetStyleOptions(option);
            }

            // try to use cropped/adjusted image to apply
            var fullsizeImage = source.FullSizeImageFile;
            source.FullSizeImageFile = source.CroppedImageFile ?? source.FullSizeImageFile;
            source.OriginalImageFile = fullsizeImage;

            var effectsHandler = EffectsDesigner.CreateEffectsDesignerForApply(contentSlide,
                slideWidth, slideHeight, source);

            ApplyStyle(effectsHandler, source, isActualSize: true);

            // recover the source back
            source.FullSizeImageFile = fullsizeImage;
            source.OriginalImageFile = null;
        }
Esempio n. 30
0
 public void SetStyleOptions(StyleOption opt)
 {
     Option = opt;
 }