示例#1
0
        public override async void OnInvalidate(InvalidateArgs invalidateArgs)
        {
            additonalInvalidate = invalidateArgs.InvalidateType;

            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 if (invalidateArgs.InvalidateType.HasFlag(InvalidateType.Properties) ||
                     invalidateArgs.InvalidateType.HasFlag(InvalidateType.Matrix) ||
                     invalidateArgs.InvalidateType.HasFlag(InvalidateType.Mesh) ||
                     invalidateArgs.InvalidateType.HasFlag(InvalidateType.Children))
            {
                base.OnInvalidate(invalidateArgs);
            }

            base.OnInvalidate(invalidateArgs);

            additonalInvalidate = InvalidateType.None;
        }
        public override async void OnInvalidate(InvalidateArgs invalidateType)
        {
            if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children) ||
                 invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix) ||
                 invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh)) &&
                invalidateType.Source != this &&
                !RebuildLocked)
            {
                await Rebuild();
            }
            else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties) &&
                     invalidateType.Source == this)
            {
                await Rebuild();
            }
            else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties) ||
                     invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix) ||
                     invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh) ||
                     invalidateType.InvalidateType.HasFlag(InvalidateType.Children))
            {
                cacheThisMatrix = Matrix4X4.Identity;
                base.OnInvalidate(invalidateType);
            }

            base.OnInvalidate(invalidateType);
        }
示例#3
0
        public override void OnInvalidate(InvalidateArgs invalidateType)
        {
            if ((invalidateType.InvalidateType == InvalidateType.Content ||
                 invalidateType.InvalidateType == InvalidateType.Matrix ||
                 invalidateType.InvalidateType == InvalidateType.Mesh) &&
                invalidateType.Source != this &&
                !RebuildLocked)
            {
                Rebuild(null);
            }
            else if (invalidateType.InvalidateType == InvalidateType.Color)
            {
                var sourceItem = OperationSourceObject3D.GetOrCreateSourceContainer(this).Children.FirstOrDefault();
                foreach (var item in Children)
                {
                    if (item != sourceItem)
                    {
                        item.Color = sourceItem.Color;
                    }
                }

                base.OnInvalidate(invalidateType);
            }
            else if (invalidateType.InvalidateType == InvalidateType.Properties &&
                     invalidateType.Source == this)
            {
                Rebuild(null);
            }
            else
            {
                base.OnInvalidate(invalidateType);
            }
        }
示例#4
0
 public override void OnInvalidate(InvalidateArgs invalidateType)
 {
     if ((invalidateType.InvalidateType == InvalidateType.Content ||
          invalidateType.InvalidateType == InvalidateType.Matrix ||
          invalidateType.InvalidateType == InvalidateType.Mesh) &&
         invalidateType.Source != this &&
         !RebuildLocked)
     {
         Rebuild(null);
     }
     else if (invalidateType.InvalidateType == InvalidateType.Properties &&
              invalidateType.Source == this)
     {
         Rebuild(null);
     }
     else if ((invalidateType.InvalidateType == InvalidateType.Properties ||
               invalidateType.InvalidateType == InvalidateType.Matrix ||
               invalidateType.InvalidateType == InvalidateType.Mesh ||
               invalidateType.InvalidateType == InvalidateType.Content))
     {
         cacheThisMatrix = Matrix4X4.Identity;
         base.OnInvalidate(invalidateType);
     }
     else
     {
         base.OnInvalidate(invalidateType);
     }
 }
示例#5
0
        public override async void OnInvalidate(InvalidateArgs invalidateType)
        {
            if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties) &&
                invalidateType.Source == this)
            {
                await Rebuild();
            }

            base.OnInvalidate(invalidateType);
        }
示例#6
0
 public override void OnInvalidate(InvalidateArgs invalidateType)
 {
     if (invalidateType.InvalidateType == InvalidateType.Properties &&
         invalidateType.Source == this)
     {
         Rebuild(null);
     }
     else
     {
         base.OnInvalidate(invalidateType);
     }
 }
示例#7
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);
        }
示例#8
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);
     }
 }
示例#9
0
        public override async void OnInvalidate(InvalidateArgs invalidateType)
        {
            if (invalidateType.InvalidateType.HasFlag(InvalidateType.Image) &&
                invalidateType.Source != this &&
                !RebuildLocked)
            {
                await Rebuild();
            }
            else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties) &&
                     invalidateType.Source == this)
            {
                UpdateHistogramDisplay();
                await Rebuild();
            }

            base.OnInvalidate(invalidateType);
        }
示例#10
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();
            }

            base.OnInvalidate(invalidateArgs);
        }
示例#11
0
 public override async void OnInvalidate(InvalidateArgs eventArgs)
 {
     if ((eventArgs.InvalidateType.HasFlag(InvalidateType.Path) ||
          eventArgs.InvalidateType.HasFlag(InvalidateType.Children)) &&
         eventArgs.Source != this &&
         !RebuildLocked)
     {
         await Rebuild();
     }
     else if (eventArgs.InvalidateType.HasFlag(InvalidateType.Properties) &&
              eventArgs.Source == this)
     {
         await Rebuild();
     }
     else
     {
         base.OnInvalidate(eventArgs);
     }
 }
        public override void OnInvalidate(InvalidateArgs invalidateType)
        {
            var firstChild = this.Children.FirstOrDefault();

            if (firstChild != null)
            {
                if (invalidateType.InvalidateType == InvalidateType.Color)
                {
                    this.Color = firstChild.Color;
                }

                if (invalidateType.InvalidateType == InvalidateType.Material)
                {
                    this.MaterialIndex = firstChild.MaterialIndex;
                }
            }

            base.OnInvalidate(invalidateType);
        }
示例#13
0
 public override void OnInvalidate(InvalidateArgs invalidateType)
 {
     if ((invalidateType.InvalidateType == InvalidateType.Content ||
          invalidateType.InvalidateType == InvalidateType.Matrix ||
          invalidateType.InvalidateType == InvalidateType.Path) &&
         invalidateType.Source != this &&
         !RebuildLocked)
     {
         Rebuild(null);
     }
     else if (invalidateType.InvalidateType == InvalidateType.Properties &&
              invalidateType.Source == this)
     {
         Rebuild(null);
     }
     else
     {
         base.OnInvalidate(invalidateType);
     }
 }
 public override void OnInvalidate(InvalidateArgs invalidateType)
 {
     if (invalidateType.InvalidateType == InvalidateType.Image &&
         invalidateType.Source != this &&
         !RebuildLocked)
     {
         Rebuild(null);
     }
     else if (invalidateType.InvalidateType == InvalidateType.Properties &&
              invalidateType.Source == this)
     {
         UpdateHistogramDisplay();
         Rebuild(null);
         base.OnInvalidate(invalidateType);
     }
     else
     {
         base.OnInvalidate(invalidateType);
     }
 }
示例#15
0
 public override async void OnInvalidate(InvalidateArgs invalidateType)
 {
     if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children) ||
          invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix) ||
          invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh)) &&
         invalidateType.Source != this &&
         !RebuildLocked)
     {
         await Rebuild();
     }
     else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties) &&
              invalidateType.Source == this)
     {
         await Rebuild();
     }
     else
     {
         // and also always pass back the actual type
         base.OnInvalidate(invalidateType);
     }
 }
示例#16
0
 public override void OnInvalidate(InvalidateArgs invalidateArgs)
 {
     if ((invalidateArgs.InvalidateType.HasFlag(InvalidateType.Children) ||
          invalidateArgs.InvalidateType.HasFlag(InvalidateType.Matrix) ||
          invalidateArgs.InvalidateType.HasFlag(InvalidateType.Mesh)) &&
         invalidateArgs.Source != this &&
         !RebuildLocked)
     {
         Rebuild();
     }
     else if ((invalidateArgs.InvalidateType.HasFlag(InvalidateType.Properties) && invalidateArgs.Source == this))
     {
         Rebuild();
     }
     else if (SheetObject3D.NeedsRebuild(this, invalidateArgs))
     {
         Rebuild();
     }
     else
     {
         base.OnInvalidate(invalidateArgs);
     }
 }
 public override async void OnInvalidate(InvalidateArgs invalidateType)
 {
     // TODO: color and output type could have special consideration that would not require a rebuild
     // They could just propagate the color and output type to the correctly child and everything would be good
     if ((invalidateType.InvalidateType.HasFlag(InvalidateType.Children) ||
          invalidateType.InvalidateType.HasFlag(InvalidateType.Matrix) ||
          invalidateType.InvalidateType.HasFlag(InvalidateType.Mesh) ||
          invalidateType.InvalidateType.HasFlag(InvalidateType.Color) ||
          invalidateType.InvalidateType.HasFlag(InvalidateType.OutputType)) &&
         invalidateType.Source != this &&
         !RebuildLocked)
     {
         await Rebuild();
     }
     else if (invalidateType.InvalidateType.HasFlag(InvalidateType.Properties) &&
              invalidateType.Source == this)
     {
         await Rebuild();
     }
     else
     {
         base.OnInvalidate(invalidateType);
     }
 }