public MaterialSetOLD ProvideNext(ProviderContext context) { if (currentIndex > context.CycleLength) { currentIndex = 0; } var position = 1.0 / context.CycleLength * currentIndex; var gradientStepSpan = GradientStepData.Sum(step => step.Offset); var additivestepPercentage = 0d; MaterialSetOLD interpolatedMaterialSet = MaterialPalette.Sets.BrownBrushSet; if (position >= 1) { currentIndex++; return(GradientStepData.Last().MaterialSet); } for (var x = 0; x <= GradientStepData.Count - 2; x++) { var stepPercentage = GradientStepData[x].Offset / gradientStepSpan; var stepProgression = position - additivestepPercentage; var stepProgressionPercentage = stepProgression / stepPercentage; if (position >= additivestepPercentage && position < (additivestepPercentage + stepPercentage)) { interpolatedMaterialSet = MediaExtensions.Interpolate(GradientStepData[x].MaterialSet, GradientStepData[x + 1].MaterialSet, stepProgressionPercentage); break; } additivestepPercentage += stepPercentage; } currentIndex++; return(interpolatedMaterialSet); }
public static MaterialSetOLD Interpolate(MaterialSetOLD a, MaterialSetOLD b, double p) { var materials = new List <Material>(); var mc = a.Materials.Count.Smallest(b.Materials.Count); if (mc < 1) { throw new Exception("materialset no materials to interpolate"); } for (var x = 0; x < mc; x++) { var materialA = a.Materials[x]; var materialB = b.Materials[x]; var colorMixed = Interpolate(materialA.Color, materialB.Color, p); if (materialA.Luminosity == null) { throw new Exception("luminosity must not be null"); } if (!Equals(materialA.Luminosity, materialB.Luminosity)) { throw new Exception("luminosity must be the same."); } materials.Add(new Material(colorMixed.Color, materialA.Luminosity, "interpolated")); } return(new MaterialSetOLD(materials.ToArray())); }
public override Material GetMaterial(MaterialSetOLD materialSet) { return materialSet.GetMaterial(Luminosity).WithOpacity(Opacity); }
public AlternatingMaterialProvider(MaterialSetOLD materialSet1, MaterialSetOLD materialSet2) { MaterialSet1 = materialSet1; MaterialSet2 = materialSet2; }
public override Material GetMaterial(MaterialSetOLD materialSet) { return(materialSet.GetMaterial(Luminosity).WithOpacity(Opacity)); }
public abstract Material GetMaterial(MaterialSetOLD materialSet);
public override Material GetMaterial(MaterialSetOLD materialSet) => LiteralMaterial.WithOpacity(Opacity);
public override Material GetMaterial(MaterialSetOLD materialSet) => LiteralMaterial.WithOpacity(Opacity);
public GradientMaterialStop(MaterialSetOLD materialSet, double offset = 1) { MaterialSet = materialSet; Offset = offset; }
public abstract Material GetMaterial(MaterialSetOLD materialSet);
public AlternatingMaterialProvider(MaterialSetOLD materialSet1, MaterialSetOLD materialSet2) { MaterialSet1 = materialSet1; MaterialSet2 = materialSet2; }