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("}}}}}"); }
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)); } }