/// <inheritdoc/>
 protected override void WriteCanvasGeometryCombinationFactory(CodeBuilder builder, CanvasGeometry.Combination obj, string typeName, string fieldName)
 {
     builder.WriteLine($"{typeName} result;");
     builder.WriteLine("ID2D1Geometry *geoA = nullptr, *geoB = nullptr;");
     builder.WriteLine($"{CallFactoryFor(obj.A)}->GetGeometry(&geoA);");
     builder.WriteLine($"{CallFactoryFor(obj.B)}->GetGeometry(&geoB);");
     builder.WriteLine("ComPtr<ID2D1PathGeometry> path;");
     builder.WriteLine($"{FailFastWrapper("_d2dFactory->CreatePathGeometry(&path)")};");
     builder.WriteLine("ComPtr<ID2D1GeometrySink> sink;");
     builder.WriteLine($"{FailFastWrapper("path->Open(&sink)")};");
     builder.WriteLine($"FFHR(geoA->CombineWithGeometry(");
     builder.Indent();
     builder.WriteLine($"geoB,");
     builder.WriteLine($"{_stringifier.CanvasGeometryCombine(obj.CombineMode)},");
     builder.WriteLine($"{_stringifier.Matrix3x2(obj.Matrix)},");
     builder.WriteLine($"sink.Get()));");
     builder.UnIndent();
     builder.WriteLine("geoA->Release();");
     builder.WriteLine("geoB->Release();");
     builder.WriteLine($"{FailFastWrapper("sink->Close()")};");
     builder.WriteLine($"result = {FieldAssignment(fieldName)}new GeoSource(path.Get());");
 }
Beispiel #2
0
        /// <inheritdoc/>
        protected override void WriteCanvasGeometryCombinationFactory(CodeBuilder builder, CanvasGeometry.Combination obj, string typeName, string fieldName)
        {
            builder.WriteLine($"var result = {FieldAssignment(fieldName)}{CallFactoryFor(obj.A)}.");
            builder.Indent();
            builder.WriteLine($"CombineWith({CallFactoryFor(obj.B)},");
            if (obj.Matrix.IsIdentity)
            {
                builder.WriteLine("Matrix3x2.Identity,");
            }
            else
            {
                builder.WriteLine($"{_stringifier.Matrix3x2(obj.Matrix)},");
            }

            builder.WriteLine($"{_stringifier.CanvasGeometryCombine(obj.CombineMode)});");
            builder.UnIndent();
        }