예제 #1
0
        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);
        }
예제 #2
0
 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);
     }
 }
예제 #3
0
 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);
     }
 }