public static void Render(FormulaTree formulaTree, Range[] ranges, Size imageSize, ColorTransformation colorTransformation, bool reevaluateValues, int threadsCount, FormulaRenderResult formulaRenderResult) { using (ProgressReporter.CreateScope()) { double evaluationSpan = 0; if (reevaluateValues) { evaluationSpan = 0.93; using (ProgressReporter.CreateScope(evaluationSpan)) { EvaluateFormula(formulaTree, ranges, imageSize, threadsCount, formulaRenderResult.EvaluatedValuesBuffer); } } using (ProgressReporter.CreateScope(1 - evaluationSpan)) { Render(colorTransformation, formulaRenderResult, threadsCount); } } }
public FormulaRenderArguments(FormulaTree formulaTree, Range[] ranges, ColorTransformation colorTransformation) { FormulaTree = formulaTree; Ranges = ranges; ColorTransformation = colorTransformation; }
private static void Render(ColorTransformation colorTransformation, FormulaRenderResult formulaRenderResult, int threadsCount) { Stopwatch mapToRgbStopwatch = new Stopwatch(); mapToRgbStopwatch.Start(); ProgressReporter.CreateScope(3); MapToColorChannel(colorTransformation.RedChannelTransformation, formulaRenderResult.EvaluatedValuesBuffer, threadsCount, formulaRenderResult.ColorTranformedValuesBuffer, formulaRenderResult.RedChannel); ProgressReporter.Increase(); MapToColorChannel(colorTransformation.GreenChannelTransformation, formulaRenderResult.EvaluatedValuesBuffer, threadsCount, formulaRenderResult.ColorTranformedValuesBuffer, formulaRenderResult.GreenChannel); ProgressReporter.Increase(); MapToColorChannel(colorTransformation.BlueChannelTransformation, formulaRenderResult.EvaluatedValuesBuffer, threadsCount, formulaRenderResult.ColorTranformedValuesBuffer, formulaRenderResult.BlueChannel); ProgressReporter.Complete(); mapToRgbStopwatch.Stop(); }