public EffectController(WrapPanel parent, Effects.Effect effect) { InitializeComponent(); this.parent = parent; this.effect = effect; this.EfName.Text = effect.Name; if (this.effect.param == null || this.effect.param.Length == 0) { return; } int row = 1; for (int i = 0; i < this.effect.param.Length; i++) { Effects.Parameter prm = this.effect.param[i]; GridView.RowDefinitions.Add(new RowDefinition()); GridView.RowDefinitions.Add(new RowDefinition()); GridView.RowDefinitions.Add(new RowDefinition()); TextBlock block = new TextBlock(); this.GridView.Children.Add(block); block.Text = $"{prm.Name} {(float)prm.Default}{prm.Suffix}"; block.VerticalAlignment = VerticalAlignment.Top; block.HorizontalAlignment = HorizontalAlignment.Left; block.Foreground = EfName.Foreground; block.SetValue(Grid.RowProperty, row); row++; Slider slider = new Slider(); this.GridView.Children.Add(slider); slider.IsSnapToTickEnabled = true; slider.TickFrequency = (double)prm.Jump; slider.Minimum = prm.Min; slider.Maximum = prm.Max; slider.VerticalAlignment = VerticalAlignment.Top; slider.SetValue(Grid.RowProperty, row); slider.Tag = i; slider.ValueChanged += (s, e) => { this.effect.param[(int)slider.Tag].Value = (float)slider.Value; block.Text = $"{prm.Name} {(float)slider.Value}{prm.Suffix}"; effect.Update(); }; slider.Value = prm.Default; this.sliders.Add(slider); row += 2; this.h += block.Height * 2; } this.EnableEffect.Unchecked += (s, e) => this.effect.Enabled = false; this.EnableEffect.Checked += (s, e) => this.effect.Enabled = true; this.effect.Enabled = true; }
public static void OutputEffectCpp(Effects.Effect effect, Formatter output) { OutputDataTypes.OutputLeadingComment(output); bool isInputSizeFixed = !EffectHasVariableNumberOfInputs(effect); int inputsCount = isInputSizeFixed ? effect.Inputs.InputsList.Count : 0; output.WriteLine("#include \"pch.h\""); output.WriteLine("#include \"" + effect.ClassName + ".h\""); output.WriteLine(); output.WriteLine("namespace ABI { namespace Microsoft { namespace Graphics { namespace Canvas { namespace Effects"); output.WriteLine("{"); output.Indent(); output.WriteLine(effect.ClassName + "::" + effect.ClassName + "()"); output.WriteIndent(); output.WriteLine(": CanvasEffect(CLSID_D2D1" + EffectGenerator.FormatClassName(effect.Properties[0].Value) + ", " + (effect.Properties.Count(p => !p.IsHandCoded) - 4) + ", " + inputsCount + ", " + isInputSizeFixed.ToString().ToLower() + ")"); output.WriteLine("{"); output.Indent(); output.WriteLine("// Set default values"); foreach (var property in effect.Properties) { WritePropertyInitialization(output, property); } output.Unindent(); output.WriteLine("}"); output.WriteLine(); foreach (var property in effect.Properties) { WritePropertyImplementation(effect, output, property); } if (EffectHasVariableNumberOfInputs(effect)) { output.WriteLine("IMPLEMENT_EFFECT_SOURCES_PROPERTY(" + effect.ClassName + ")"); output.WriteLine(); } else { for (int i = 0; i < effect.Inputs.InputsList.Count; ++i) { var input = effect.Inputs.InputsList[i]; output.WriteLine("IMPLEMENT_EFFECT_SOURCE_PROPERTY(" + effect.ClassName + ","); output.Indent(); output.WriteLine(input.Name + ","); output.WriteLine(i.ToString() + ")"); output.Unindent(); output.WriteLine(); } } output.WriteLine("ActivatableClass(" + effect.ClassName + ");"); output.Unindent(); output.WriteLine("}}}}}"); }
public override void Draw() { Entities.Effect_Entity EffectEntity = (Entities.Effect_Entity)mEntity; Effects.Effect effect = EffectEntity.GetEffect(); UnityCard.transform.Find("Card").Find("CardName").gameObject.GetComponent <Text>().text = mEntity.Name; UnityEngine.Transform cardTextTransform = UnityCard.transform.Find("Card").Find("CardText"); if (cardTextTransform != null) { UnityEngine.UI.Text cardText = cardTextTransform.gameObject.GetComponent <Text>(); if (EffectEntity.IsPlaced) { if (effect.GetEffectType() == Assets.GameCode.Cards.Effects.EffectType.Order || effect.GetEffectType() == Assets.GameCode.Cards.Effects.EffectType.OrderWithUses) { cardText.text = ((Effects.Orders.Order)effect).IsOrderUsed() ? "Order used this turn" : "Order not used this turn"; } if (effect.GetEffectType() == Assets.GameCode.Cards.Effects.EffectType.OrderWithUses) { // TODO - Might need to worry about the action index? // Just assume only zero for now. cardText.text = cardText.text + "\nNumber of charges: " + ((Effects.Orders.OrderWithUses)effect).GetNumUses(0); } } else { cardText.text = ""; } } }
private static void EndVersionConditional(Effects.Effect effect, Formatter output) { if (effect.Overrides != null) { EndVersionConditional(effect.Overrides.WinVer, output); } }
public static void OutputEffectHeader(Effects.Effect effect, Formatter output) { OutputDataTypes.OutputLeadingComment(output); output.WriteLine("#pragma once"); output.WriteLine(); output.WriteLine("namespace ABI { namespace Microsoft { namespace Graphics { namespace Canvas { namespace Effects "); output.WriteLine("{"); output.Indent(); output.WriteLine("using namespace ::Microsoft::WRL;"); output.WriteLine("using namespace ABI::Microsoft::Graphics::Canvas;"); output.WriteLine(); output.WriteLine("class " + effect.ClassName + " : public RuntimeClass<"); output.Indent(); output.WriteLine(effect.InterfaceName + ","); output.WriteLine("MixIn<" + effect.ClassName + ", CanvasEffect>>,"); output.WriteLine("public CanvasEffect"); output.Unindent(); output.WriteLine("{"); output.Indent(); output.WriteLine("InspectableClass(RuntimeClass_Microsoft_Graphics_Canvas_Effects_" + effect.ClassName + ", BaseTrust);"); output.WriteLine(); output.Unindent(); output.WriteLine("public:"); output.Indent(); output.WriteLine(effect.ClassName + "();"); output.WriteLine(); foreach (var property in effect.Properties) { // Property with type string describes // name/author/category/description of effect but not input type if (property.Type == "string" || property.IsHidden) { continue; } var propertyMacro = property.IsArray ? "EFFECT_ARRAY_PROPERTY" : "EFFECT_PROPERTY"; output.WriteLine(propertyMacro + "(" + property.Name + ", " + property.TypeNameCpp + ");"); } if (EffectHasVariableNumberOfInputs(effect)) { output.WriteLine("EFFECT_SOURCES_PROPERTY();"); } else { for (int i = 0; i < effect.Inputs.InputsList.Count; ++i) { var input = effect.Inputs.InputsList[i]; output.WriteLine("EFFECT_PROPERTY(" + input.Name + ", IGraphicsEffectSource*);"); } } output.Unindent(); output.WriteLine("};"); output.Unindent(); output.WriteLine("}}}}}"); }
private void AvaiableEffects_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) { if (AvaiableEffects.SelectedIndex != -1) { AddEffect = AssemblyHelper.GetEffect(AvaiableEffects.SelectedIndex); DialogResult = true; } }
private static void ApplyEffectOverrides(Effects.Effect effect, Overrides.XmlBindings.Effect effectOverride, Dictionary <string, QualifiableType> typeDictionary) { effect.Overrides = effectOverride; // Override the effect name? if (effectOverride.ProjectedNameOverride != null) { effect.ClassName = effectOverride.ProjectedNameOverride; } // Override input names? foreach (var inputOverride in effectOverride.Inputs) { var input = effect.Inputs.InputsList.Find(p => p.Name == inputOverride.Name); input.Name = inputOverride.ProjectedNameOverride; } foreach (var propertyOverride in effectOverride.Properties) { var property = effect.Properties.Find(p => p.Name == propertyOverride.Name); if (property != null) { // Override settings of an existing property. if (propertyOverride.ProjectedNameOverride != null) { property.Name = propertyOverride.ProjectedNameOverride; } if (propertyOverride.DefaultValueOverride != null) { var defaultProperty = property.Properties.Single(p => p.Name == "Default"); defaultProperty.Value = propertyOverride.DefaultValueOverride; } property.IsHidden = propertyOverride.IsHidden; property.ConvertRadiansToDegrees = propertyOverride.ConvertRadiansToDegrees; } if (property == null || propertyOverride.IsHandCoded) { // Add a custom property that is part of our API surface but not defined by D2D. effect.Properties.Add(new Effects.Property { Name = propertyOverride.ProjectedNameOverride ?? propertyOverride.Name, TypeNameIdl = string.IsNullOrEmpty(propertyOverride.Type) ? property.TypeNameIdl : propertyOverride.Type, IsHandCoded = true }); // If we are masking a real D2D property with an alternative // hand-coded version, mark the real D2D property as hidden. if (property != null) { property.IsHidden = true; } } } }
private static string GetEffectCLSID(Effects.Effect effect) { if (effect.Overrides != null && !string.IsNullOrEmpty(effect.Overrides.CLSIDOverride)) { return(effect.Overrides.CLSIDOverride); } else { return("CLSID_D2D1" + EffectGenerator.FormatClassName(effect.Properties[0].Value)); } }
private static bool HasStatics(Effects.Effect effect) { if (effect.Overrides == null) { return(false); } return(effect.Overrides.CustomStaticMethodIdl.Count > 0 || effect.Overrides.CustomStaticMethodDecl.Count > 0 || !string.IsNullOrEmpty(effect.Overrides.IsSupportedCheck)); }
public static bool IsEffectEnabled(Effects.Effect effect) { switch (effect.Properties[0].Value) { // TODO #2648: figure out how to project effects that output computation results rather than images. case "Histogram": return(false); default: return(true); } }
private static Effects.Effect ParseEffectXML(string path) { Effects.Effect effect = null; XmlSerializer serializer = new XmlSerializer(typeof(Effects.Effect)); using (StreamReader reader = new StreamReader(path)) { effect = (Effects.Effect)serializer.Deserialize(reader); } return(effect); }
private static void WritePropertyMapping(Effects.Effect effect, Formatter output) { var query = from property in effect.Properties where IsGeneratablePropertyMapping(property) select new { Name = property.Name, Index = property.NativePropertyName, Mapping = GetPropertyMapping(property) }; var properties = query.ToList(); if (properties.Any()) { output.WriteLine("IMPLEMENT_EFFECT_PROPERTY_MAPPING(" + effect.ClassName + ","); output.Indent(); int maxNameLength = properties.Select(property => property.Name.Length).Max(); int maxIndexLength = properties.Select(property => property.Index.Length).Max(); int maxMappingLength = properties.Select(property => property.Mapping.Length).Max(); foreach (var property in properties) { string nameAlignment = new string(' ', maxNameLength - property.Name.Length); string indexAlignment = new string(' ', maxIndexLength - property.Index.Length); string mappingAlignment = new string(' ', maxMappingLength - property.Mapping.Length); string suffix = property.Equals(properties.Last()) ? ")" : ","; output.WriteLine("{ L\"" + property.Name + "\", " + nameAlignment + property.Index + ", " + indexAlignment + property.Mapping + mappingAlignment + " }" + suffix); } output.Unindent(); output.WriteLine(); } }
static bool EffectHasVariableNumberOfInputs(Effects.Effect effect) { return(effect.Inputs.Maximum == "0xFFFFFFFF"); }
private static void WritePropertyImplementation(Effects.Effect effect, Formatter output, Effects.Property property) { // Property with type string describes // name/author/category/description of effect but not input type if (property.Type == "string" || property.IsHandCoded || property.IsHidden) { return; } var min = property.Properties.Find(internalProperty => internalProperty.Name == "Min"); var max = property.Properties.Find(internalProperty => internalProperty.Name == "Max"); bool isWithUnsupported = (property.ExcludedEnumIndexes != null) && (property.ExcludedEnumIndexes.Count != 0); string customConversion = null; if (property.ConvertRadiansToDegrees) { customConversion = "ConvertRadiansToDegrees"; } else if (property.ConvertColorHdrToVector3) { customConversion = "ConvertColorHdrToVector3"; } else if (property.Name == "AlphaMode") { customConversion = "ConvertAlphaMode"; } bool isValidation = ((min != null) || (max != null) || isWithUnsupported) && (customConversion == null); string implementMacro = property.IsArray ? "IMPLEMENT_EFFECT_ARRAY_PROPERTY" : "IMPLEMENT_EFFECT_PROPERTY"; if (isValidation) { implementMacro += "_WITH_VALIDATION"; } output.WriteLine(implementMacro + "(" + effect.ClassName + ","); output.Indent(); output.WriteLine(property.Name + ","); output.WriteLine((customConversion ?? property.TypeNameBoxed) + ","); if (!property.IsArray) { output.WriteLine(property.TypeNameCpp + ","); } if (isValidation) { output.WriteLine(property.NativePropertyName + ","); var validationChecks = new List <string>(); if (min != null) { AddValidationChecks(validationChecks, property, min.Value, ">="); } if (max != null) { AddValidationChecks(validationChecks, property, max.Value, "<="); } if (isWithUnsupported) { foreach (var index in property.ExcludedEnumIndexes) { validationChecks.Add("value != static_cast<" + property.TypeNameCpp + ">(" + index + ")"); } } output.WriteLine("(" + string.Join(") && (", validationChecks) + "))"); } else { output.WriteLine(property.NativePropertyName + ")"); } output.Unindent(); output.WriteLine(); }
public static void OutputEffectCpp(Effects.Effect effect, Formatter output) { OutputDataTypes.OutputLeadingComment(output); bool isInputSizeFixed = !EffectHasVariableNumberOfInputs(effect); int inputsCount = isInputSizeFixed ? effect.Inputs.InputsList.Count : 0; output.WriteLine("#include \"pch.h\""); output.WriteLine("#include \"" + effect.ClassName + ".h\""); output.WriteLine(); OutputVersionConditional(effect, output); output.WriteLine("namespace ABI { namespace Microsoft { namespace Graphics { namespace Canvas { namespace Effects"); output.WriteLine("{"); output.Indent(); output.WriteLine(effect.ClassName + "::" + effect.ClassName + "(ICanvasDevice* device, ID2D1Effect* effect)"); output.WriteIndent(); output.WriteLine(": CanvasEffect(EffectId(), " + (effect.Properties.Count(p => (!p.IsHandCoded && !p.IsHdrAlias)) - 4) + ", " + inputsCount + ", " + isInputSizeFixed.ToString().ToLower() + ", " + "device, effect, static_cast<" + effect.InterfaceName + "*>(this))"); output.WriteLine("{"); output.Indent(); output.WriteLine("if (!effect)"); output.WriteLine("{"); output.Indent(); output.WriteLine("// Set default values"); foreach (var property in effect.Properties) { WritePropertyInitialization(output, property); } output.Unindent(); output.WriteLine("}"); output.Unindent(); output.WriteLine("}"); output.WriteLine(); foreach (var property in effect.Properties) { WritePropertyImplementation(effect, output, property); } if (EffectHasVariableNumberOfInputs(effect)) { output.WriteLine("IMPLEMENT_EFFECT_SOURCES_PROPERTY(" + effect.ClassName + ")"); output.WriteLine(); } else { for (int i = 0; i < effect.Inputs.InputsList.Count; ++i) { var input = effect.Inputs.InputsList[i]; output.WriteLine("IMPLEMENT_EFFECT_SOURCE_PROPERTY(" + effect.ClassName + ","); output.Indent(); output.WriteLine(input.Name + ","); output.WriteLine(i.ToString() + ")"); output.Unindent(); output.WriteLine(); } } WritePropertyMapping(effect, output); if (effect.Overrides == null || !effect.Overrides.HasStatics) { output.WriteLine("ActivatableClass(" + effect.ClassName + ");"); } output.Unindent(); output.WriteLine("}}}}}"); EndVersionConditional(effect, output); }
public static void OutputEffectHeader(Effects.Effect effect, Formatter output) { OutputDataTypes.OutputLeadingComment(output); output.WriteLine("#pragma once"); output.WriteLine(); OutputVersionConditional(effect, output); output.WriteLine("namespace ABI { namespace Microsoft { namespace Graphics { namespace Canvas { namespace Effects "); output.WriteLine("{"); output.Indent(); output.WriteLine("using namespace ::Microsoft::WRL;"); output.WriteLine("using namespace ABI::Microsoft::Graphics::Canvas;"); output.WriteLine(); output.WriteLine("class " + effect.ClassName + " : public RuntimeClass<"); output.Indent(); output.WriteLine(effect.InterfaceName + ","); output.WriteLine("MixIn<" + effect.ClassName + ", CanvasEffect>>,"); output.WriteLine("public CanvasEffect"); output.Unindent(); output.WriteLine("{"); output.Indent(); output.WriteLine("InspectableClass(RuntimeClass_Microsoft_Graphics_Canvas_Effects_" + effect.ClassName + ", BaseTrust);"); output.WriteLine(); output.Unindent(); output.WriteLine("public:"); output.Indent(); output.WriteLine(effect.ClassName + "(ICanvasDevice* device = nullptr, ID2D1Effect* effect = nullptr);"); output.WriteLine(); output.WriteLine("static IID const& EffectId() { return " + GetEffectCLSID(effect) + "; }"); output.WriteLine(); foreach (var property in effect.Properties) { // Property with type string describes // name/author/category/description of effect but not input type if (property.Type == "string" || property.IsHidden) { continue; } var propertyMacro = property.IsArray ? "EFFECT_ARRAY_PROPERTY" : "EFFECT_PROPERTY"; output.WriteLine(propertyMacro + "(" + property.Name + ", " + property.TypeNameCpp + ");"); } if (EffectHasVariableNumberOfInputs(effect)) { output.WriteLine("EFFECT_SOURCES_PROPERTY();"); } else { for (int i = 0; i < effect.Inputs.InputsList.Count; ++i) { var input = effect.Inputs.InputsList[i]; output.WriteLine("EFFECT_PROPERTY(" + input.Name + ", IGraphicsEffectSource*);"); } } bool hasPropertyMapping = effect.Properties.Any(IsGeneratablePropertyMapping); bool hasHandCodedPropertyMapping = effect.Properties.Any(p => p.IsHandCoded); if (hasPropertyMapping || hasHandCodedPropertyMapping) { output.WriteLine(); if (hasPropertyMapping) { output.WriteLine("EFFECT_PROPERTY_MAPPING();"); } if (hasHandCodedPropertyMapping) { output.WriteLine("EFFECT_PROPERTY_MAPPING_HANDCODED();"); } } output.Unindent(); output.WriteLine("};"); output.Unindent(); output.WriteLine("}}}}}"); EndVersionConditional(effect, output); }
public static void OutputEffectIdl(Effects.Effect effect, Formatter output) { OutputDataTypes.OutputLeadingComment(output); OutputVersionConditional(effect, output); output.WriteLine("namespace Microsoft.Graphics.Canvas.Effects"); output.WriteLine("{"); output.Indent(); // Output all enums specific to this effect foreach (var property in effect.Properties) { if (property.Type == "enum" && property.EnumFields.Usage == Effects.EnumValues.UsageType.UsedByOneEffect && property.ShouldProject) { OutputEnum(property, output); output.WriteLine(); } } output.WriteLine("runtimeclass " + effect.ClassName + ";"); output.WriteLine(); output.WriteLine("[version(VERSION), uuid(" + effect.Uuid + "), exclusiveto(" + effect.ClassName + ")]"); output.WriteLine("interface " + effect.InterfaceName + " : IInspectable"); output.WriteIndent(); output.WriteLine("requires ICanvasEffect"); output.WriteLine("{"); output.Indent(); foreach (var property in effect.Properties) { // Property with type string describes // name/author/category/description of effect but not input type if (property.Type == "string" || property.IsHidden) { continue; } output.WriteLine("[propget]"); if (property.IsArray) { output.WriteLine("HRESULT " + property.Name + "([out] UINT32* valueCount, [out, size_is(, *valueCount), retval] " + property.TypeNameIdl + "** valueElements);"); } else { output.WriteLine("HRESULT " + property.Name + "([out, retval] " + property.TypeNameIdl + "* value);"); } output.WriteLine(); output.WriteLine("[propput]"); if (property.IsArray) { output.WriteLine("HRESULT " + property.Name + "([in] UINT32 valueCount, [in, size_is(valueCount)] " + property.TypeNameIdl + "* valueElements);"); } else { output.WriteLine("HRESULT " + property.Name + "([in] " + property.TypeNameIdl + " value);"); } output.WriteLine(); } if (EffectHasVariableNumberOfInputs(effect)) { output.WriteLine("[propget]"); output.WriteLine("HRESULT Sources([out, retval] Windows.Foundation.Collections.IVector<IGRAPHICSEFFECTSOURCE*>** value);"); output.WriteLine(); } else { for (int i = 0; i < effect.Inputs.InputsList.Count; ++i) { var input = effect.Inputs.InputsList[i]; output.WriteLine("[propget]"); output.WriteLine("HRESULT " + input.Name + "([out, retval] IGRAPHICSEFFECTSOURCE** source);"); output.WriteLine(); output.WriteLine("[propput]"); output.WriteLine("HRESULT " + input.Name + "([in] IGRAPHICSEFFECTSOURCE* source);"); output.WriteLine(); } } output.Unindent(); output.WriteLine("};"); output.WriteLine(); string statics = ""; if (effect.Overrides != null && effect.Overrides.HasStatics) { statics = ", static(" + effect.InterfaceName + "Statics, VERSION)"; } output.WriteLine("[version(VERSION), activatable(VERSION)" + statics + "]"); output.WriteLine("runtimeclass " + effect.ClassName); output.WriteLine("{"); output.Indent(); output.WriteLine("[default] interface " + effect.InterfaceName + ";"); output.Unindent(); output.WriteLine("}"); output.Unindent(); output.WriteLine("}"); EndVersionConditional(effect, output); }
protected override void EmitEffect(Effects.Effect effect) { Writer.AppendLine(effect.ToString()); }
/// <summary> /// Constructs EffectNote /// </summary> /// <param name="time"></param> /// <param name="effect"></param> /// <param name="length"></param> public EffectNote(double time, Effects.Effect effect, double length) : base(time) { Effect = effect; Length = length; }
public static void OutputEffectIdl(Effects.Effect effect, Formatter output) { OutputDataTypes.OutputLeadingComment(output); output.WriteLine("namespace Microsoft.Graphics.Canvas.Effects"); output.WriteLine("{"); output.Indent(); // Output all enums specific to this effect foreach (var property in effect.Properties) { if (property.Type == "enum" && property.EnumFields.Usage == Effects.EnumValues.UsageType.UsedByOneEffect && property.ShouldProject) { OutputEnum(property, output); output.WriteLine(); } } output.WriteLine("runtimeclass " + effect.ClassName + ";"); output.WriteLine(); output.WriteLine("[version(VERSION), uuid(" + effect.Uuid + "), exclusiveto(" + effect.ClassName + ")]"); output.WriteLine("interface " + effect.InterfaceName + " : IInspectable"); output.WriteIndent(); output.WriteLine("requires Microsoft.Graphics.Canvas.ICanvasImage"); output.WriteLine("{"); output.Indent(); foreach (var property in effect.Properties) { // Property with type string describes // name/author/category/description of effect but not input type if (property.Type == "string" || property.IsHidden) { continue; } output.WriteLine("[propget]"); if (property.IsArray) { output.WriteLine("HRESULT " + property.Name + "([out] UINT32* valueCount, [out, size_is(, *valueCount), retval] " + property.TypeNameIdl + "** valueElements);"); } else { output.WriteLine("HRESULT " + property.Name + "([out, retval] " + property.TypeNameIdl + "* value);"); } output.WriteLine(); output.WriteLine("[propput]"); if (property.IsArray) { output.WriteLine("HRESULT " + property.Name + "([in] UINT32 valueCount, [in, size_is(valueCount)] " + property.TypeNameIdl + "* valueElements);"); } else { output.WriteLine("HRESULT " + property.Name + "([in] " + property.TypeNameIdl + " value);"); } output.WriteLine(); } // Check if inputs specify maximum attribute in xml and if it is marked as unlimited if (!(effect.Inputs.Maximum != null && effect.Inputs.Maximum == "0xFFFFFFFF")) { for (int i = 0; i < effect.Inputs.InputsList.Count; ++i) { var input = effect.Inputs.InputsList[i]; output.WriteLine("[propget]"); output.WriteLine("HRESULT " + input.Name + "([out, retval] IEffectInput** input);"); output.WriteLine(); output.WriteLine("[propput]"); output.WriteLine("HRESULT " + input.Name + "([in] IEffectInput* input);"); output.WriteLine(); } } output.Unindent(); output.WriteLine("};"); output.WriteLine(); output.WriteLine("[version(VERSION), activatable(VERSION)]"); output.WriteLine("runtimeclass " + effect.ClassName); output.WriteLine("{"); output.Indent(); output.WriteLine("[default] interface " + effect.InterfaceName + ";"); output.WriteLine("interface IEffect;"); output.Unindent(); output.WriteLine("}"); output.Unindent(); output.WriteLine("}"); }
public static void OutputEffectCpp(Effects.Effect effect, Formatter output) { OutputDataTypes.OutputLeadingComment(output); bool isInputSizeFixed = !EffectHasVariableNumberOfInputs(effect); int inputsCount = isInputSizeFixed ? effect.Inputs.InputsList.Count : 0; output.WriteLine("#include \"pch.h\""); output.WriteLine("#include \"" + effect.ClassName + ".h\""); output.WriteLine(); OutputVersionConditional(effect, output); output.WriteLine("namespace ABI { namespace Microsoft { namespace Graphics { namespace Canvas { namespace Effects"); output.WriteLine("{"); output.Indent(); output.WriteLine(effect.ClassName + "::" + effect.ClassName + "(ICanvasDevice* device, ID2D1Effect* effect)"); output.WriteIndent(); output.WriteLine(": CanvasEffect(EffectId(), " + (effect.Properties.Count(p => (!p.IsHandCoded && !p.IsHdrAlias)) - 4) + ", " + inputsCount + ", " + isInputSizeFixed.ToString().ToLower() + ", " + "device, effect, static_cast<" + effect.InterfaceName + "*>(this))"); output.WriteLine("{"); output.Indent(); if (effect.Overrides != null && !string.IsNullOrEmpty(effect.Overrides.IsSupportedCheck)) { output.WriteLine("if (!SharedDeviceState::GetInstance()->Is" + effect.Overrides.IsSupportedCheck + "Supported())"); output.Indent(); output.WriteLine("ThrowHR(E_NOTIMPL, Strings::NotSupportedOnThisVersionOfWindows);"); output.Unindent(); output.WriteLine(); } output.WriteLine("if (!effect)"); output.WriteLine("{"); output.Indent(); output.WriteLine("// Set default values"); foreach (var property in effect.Properties) { WritePropertyInitialization(output, property); } output.Unindent(); output.WriteLine("}"); output.Unindent(); output.WriteLine("}"); output.WriteLine(); foreach (var property in effect.Properties) { WritePropertyImplementation(effect, output, property); } if (EffectHasVariableNumberOfInputs(effect)) { output.WriteLine("IMPLEMENT_EFFECT_SOURCES_PROPERTY(" + effect.ClassName + ")"); output.WriteLine(); } else { for (int i = 0; i < effect.Inputs.InputsList.Count; ++i) { var input = effect.Inputs.InputsList[i]; output.WriteLine("IMPLEMENT_EFFECT_SOURCE_PROPERTY(" + effect.ClassName + ","); output.Indent(); output.WriteLine(input.Name + ","); output.WriteLine(i.ToString() + ")"); output.Unindent(); output.WriteLine(); } } WritePropertyMapping(effect, output); if (HasStatics(effect)) { output.WriteLine("IFACEMETHODIMP " + effect.ClassName + "Factory::ActivateInstance(IInspectable** instance)"); output.WriteLine("{"); output.Indent(); output.WriteLine("return ExceptionBoundary([&]"); output.WriteLine("{"); output.Indent(); output.WriteLine("auto effect = Make<" + effect.ClassName + ">();"); output.WriteLine("CheckMakeResult(effect);"); output.WriteLine(); output.WriteLine("ThrowIfFailed(effect.CopyTo(instance));"); output.Unindent(); output.WriteLine("});"); output.Unindent(); output.WriteLine("}"); output.WriteLine(); if (!string.IsNullOrEmpty(effect.Overrides.IsSupportedCheck)) { output.WriteLine("IFACEMETHODIMP " + effect.ClassName + "Factory::get_IsSupported(_Out_ boolean* result)"); output.WriteLine("{"); output.Indent(); output.WriteLine("return ExceptionBoundary([&]"); output.WriteLine("{"); output.Indent(); output.WriteLine("CheckInPointer(result);"); output.WriteLine("*result = SharedDeviceState::GetInstance()->Is" + effect.Overrides.IsSupportedCheck + "Supported();"); output.Unindent(); output.WriteLine("});"); output.Unindent(); output.WriteLine("}"); output.WriteLine(); } output.WriteLine("ActivatableClassWithFactory(" + effect.ClassName + ", " + effect.ClassName + "Factory);"); } else { output.WriteLine("ActivatableClassWithFactory(" + effect.ClassName + ", SimpleAgileActivationFactory<" + effect.ClassName + ">);"); } output.Unindent(); output.WriteLine("}}}}}"); EndVersionConditional(effect, output); }
public RemovedLink(Entities.Entity Parent, Effects.Effect LinkedEffect) { this.Parent = (Entities.Unit)Parent; mLinkedEffect = LinkedEffect; }
public static int IndexOf(Effects.Effect effect) { return(GetEffects().ToList().IndexOf(effect.GetType())); }