public override async void OnInvalidate(InvalidateArgs invalidateArgs) { if (invalidateArgs.InvalidateType.HasFlag(InvalidateType.Image) && invalidateArgs.Source != this && !RebuildLocked) { // try to pick the best processing mode if (SourceImage.HasTransparency) { AnalysisType = AnalysisTypes.Transparency; Histogram.RangeStart = 0; Histogram.RangeEnd = .9; } else if (ColorDetected(SourceImage, out double hue)) { AnalysisType = AnalysisTypes.Colors; Histogram.RangeStart = Math.Max(0, hue - .2); Histogram.RangeEnd = Math.Min(1, hue + .2); } else { AnalysisType = AnalysisTypes.Intensity; Histogram.RangeStart = 0; Histogram.RangeEnd = .9; } if (AnalysisType != AnalysisTypes.Transparency) { Histogram.BuildHistogramFromImage(SourceImage, AnalysisType); var _ = Image; // call this to make sure it is built Histogram.RebuildAlphaImage(SourceImage, alphaImage, Image, AnalysisType); } else { Image?.CopyFrom(SourceImage); } await Rebuild(); this.ReloadEditorPannel(); } else if ((invalidateArgs.InvalidateType.HasFlag(InvalidateType.Properties) && invalidateArgs.Source == this)) { await Rebuild(); } else if (SheetObject3D.NeedsRebuild(this, invalidateArgs)) { await Rebuild(); } base.OnInvalidate(invalidateArgs); }
public override async void OnInvalidate(InvalidateArgs invalidateArgs) { if ((invalidateArgs.InvalidateType.HasFlag(InvalidateType.Properties) && invalidateArgs.Source == this)) { await Rebuild(); } else if (SheetObject3D.NeedsRebuild(this, invalidateArgs)) { await Rebuild(); } else { base.OnInvalidate(invalidateArgs); } }
public override async void OnInvalidate(InvalidateArgs invalidateArgs) { if ((invalidateArgs.InvalidateType.HasFlag(InvalidateType.Children) || invalidateArgs.InvalidateType.HasFlag(InvalidateType.Matrix) || invalidateArgs.InvalidateType.HasFlag(InvalidateType.Mesh)) && invalidateArgs.Source != this && !RebuildLocked) { await Rebuild(); } else if ((invalidateArgs.InvalidateType.HasFlag(InvalidateType.Properties) && invalidateArgs.Source == this)) { await Rebuild(); } else if (SheetObject3D.NeedsRebuild(this, invalidateArgs)) { await Rebuild(); } else { base.OnInvalidate(invalidateArgs); } }