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; }
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; }
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; }
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>(); }
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; }
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); }
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); } }
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; }
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; }
public void SetStyleOptions(StyleOption opt) { Option = opt; }