Exemplo n.º 1
0
            public void HorizontalyCenteredImagesLargerThanWidthWillBeCentered()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("", 0)
                {
                    ImageUrl = "url1", ExplicitWidth = 10, XOffset = new Position()
                    {
                        PositionMode = PositionMode.Direction, Direction = Direction.Center
                    }
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url1")).Returns(testable.Image18X18);

                testable.ClassUnderTest.AddImage(image1);

                var image  = testable.ClassUnderTest.First();
                var image2 = new Bitmap(new MemoryStream(testable.Image18X18));

                Assert.Equal(image2.Clone(new Rectangle(4, 0, 10, 18), image2.PixelFormat).GraphicsImage(), image.Image.Clone(new Rectangle(0, 0, 10, 18), image2.PixelFormat), new BitmapPixelComparer(true));
            }
Exemplo n.º 2
0
            public void RightPositionedImagesWillBeRightAlligned()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("", 0)
                {
                    ImageUrl = "url1", ExplicitWidth = 30, XOffset = new Position()
                    {
                        PositionMode = PositionMode.Direction, Direction = Direction.Right
                    }
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url1")).Returns(testable.Image15X17);

                testable.ClassUnderTest.AddImage(image1);

                var image  = testable.ClassUnderTest.First();
                var image2 = new Bitmap(new MemoryStream(testable.Image15X17));

                Assert.Equal(image2.GraphicsImage(), image.Image.Clone(new Rectangle(15, 0, 15, 17), image2.PixelFormat), new BitmapPixelComparer(true));
            }
Exemplo n.º 3
0
            public void WillNotCacheNonSprites()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("image1", 0)
                {
                    ImageUrl = "url", IsSprite = true
                };
                var image2 = new BackgroundImageClass("image2", 0)
                {
                    ImageUrl = "url2", IsSprite = false
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url")).Returns(testable.Image15X17);
                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url2")).Returns(testable.Image15X17);

                testable.ClassUnderTest.AddImage(image1);
                testable.ClassUnderTest.AddImage(image2);

                Assert.True(testable.ClassUnderTest.DownloadedImages.ContainsKey("url"));
                Assert.False(testable.ClassUnderTest.DownloadedImages.ContainsKey("url2"));
            }
Exemplo n.º 4
0
            public void WillAddSpriteToSpriteManager()
            {
                var testable = new TestableCssReducer();

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadString <CssResource>(It.IsAny <string>())).Returns("css");
                var image1 = new BackgroundImageClass("", "http://server/content/style.css")
                {
                    ImageUrl = "image1"
                };
                var image2 = new BackgroundImageClass("", "http://server/content/style.css")
                {
                    ImageUrl = "image2"
                };
                var css = "css";

                testable.Mock <ICssImageTransformer>().Setup(x => x.ExtractImageUrls(ref css, It.IsAny <string>())).Returns(new BackgroundImageClass[] { image1, image2 });

                testable.ClassUnderTest.Process("http://host/css2.css");

                testable.Mock <ISpriteManager>().Verify(x => x.Add(image1), Times.Once());
            }
            public void WillCopySpritesToContainerButAddDistinctCssClass()
            {
                var testable = new TestableSpriteManager();
                var image    = new BackgroundImageClass("", 0)
                {
                    ImageUrl = "url", Selector = ".class"
                };

                testable.ClassUnderTest.Add(image);
                var image2 = new BackgroundImageClass("", 0)
                {
                    ImageUrl = "url", Selector = ".class2"
                };

                testable.ClassUnderTest.Add(image2);

                Assert.Equal(2, testable.ClassUnderTest.SpriteList.Count);
                Assert.Equal(image, testable.ClassUnderTest.SpriteList[0].Value.CssClass);
                Assert.Equal(image2, testable.ClassUnderTest.SpriteList[1].Value.CssClass);
                Assert.Equal(testable.ClassUnderTest.SpriteList[0].Key, testable.ClassUnderTest.SpriteList[1].Key);
            }
Exemplo n.º 6
0
            public void WillCountUniqueColorsOfAddedImages()
            {
                var testable       = new TestableSpriteContainer();
                var fiveColorImage = new BackgroundImageClass("image1", "")
                {
                    ImageUrl = "url"
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url")).Returns(TestableSpriteContainer.GetFiveColorImage());
                var fourColorImage = new BackgroundImageClass("image2", "")
                {
                    ImageUrl = "url2"
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url2")).Returns(TestableSpriteContainer.GetFourColorImage());

                testable.ClassUnderTest.AddImage(fiveColorImage);
                testable.ClassUnderTest.AddImage(fourColorImage);

                Assert.Equal(7, testable.ClassUnderTest.Colors);
            }
Exemplo n.º 7
0
            public void HeightWillBeTheTallestOfAddedImages()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("", 0)
                {
                    ImageUrl = "url1"
                };
                var image2 = new BackgroundImageClass("", 0)
                {
                    ImageUrl = "url2"
                };

                testable.Mock <IWebClientWrapper>().Setup(Xunit => Xunit.DownloadBytes("url1")).Returns(
                    testable.Image15X17);
                testable.Mock <IWebClientWrapper>().Setup(Xunit => Xunit.DownloadBytes("url2")).Returns(
                    testable.Image18X18);

                testable.ClassUnderTest.AddImage(image1);
                testable.ClassUnderTest.AddImage(image2);

                Assert.Equal(18, testable.ClassUnderTest.Height);
            }
Exemplo n.º 8
0
            public void WillClipLeftEdgeOfBackgroundClassWhenOffsetIsNegative()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("", 0)
                {
                    ImageUrl      = "url1",
                    ExplicitWidth = 5,
                    XOffset       = new Position()
                    {
                        PositionMode = PositionMode.Unit, Offset = -5
                    }
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url1")).Returns(
                    testable.Image15X17);
                var bitMap = new Bitmap(new MemoryStream(testable.Image15X17));

                testable.ClassUnderTest.AddImage(image1);

                Assert.Equal(bitMap.Clone(new Rectangle(5, 0, 5, 17), bitMap.PixelFormat).GraphicsImage(),
                             testable.ClassUnderTest.First().Image, new BitmapPixelComparer(true));
            }
Exemplo n.º 9
0
            public void WidthWillBeAggregateOfAddedImageWidthsPlusOnePixelEach()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("", 0)
                {
                    ImageUrl = "url1"
                };
                var image2 = new BackgroundImageClass("", 0)
                {
                    ImageUrl = "url2"
                };

                testable.Mock <IWebClientWrapper>().Setup(Xunit => Xunit.DownloadBytes("url1")).Returns(
                    testable.Image15X17);
                testable.Mock <IWebClientWrapper>().Setup(Xunit => Xunit.DownloadBytes("url2")).Returns(
                    testable.Image18X18);

                testable.ClassUnderTest.AddImage(image1);
                testable.ClassUnderTest.AddImage(image2);

                Assert.Equal(35, testable.ClassUnderTest.Width);
            }
Exemplo n.º 10
0
            public void WillNotClipUpperEdgeOfBackgroundClassWhenOffsetIsPositive()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("", "http://server/content/style.css")
                {
                    ImageUrl = "url1",
                    Height   = 5,
                    YOffset  = new Position()
                    {
                        PositionMode = PositionMode.Percent, Offset = 50
                    }
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url1")).Returns(
                    testable.Image15X17);
                var bitMap = new Bitmap(new MemoryStream(testable.Image15X17));

                testable.ClassUnderTest.AddImage(image1);

                Assert.Equal(bitMap.Clone(new Rectangle(0, 0, 15, 5), bitMap.PixelFormat).GraphicsImage(),
                             testable.ClassUnderTest.First().Image, new BitmapPixelComparer(true));
            }
Exemplo n.º 11
0
            public void SizeWillBeAggregateOfAddedImages()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("", "http://server/content/style.css")
                {
                    ImageUrl = "url1"
                };
                var image2 = new BackgroundImageClass("", "http://server/content/style.css")
                {
                    ImageUrl = "url2"
                };

                testable.Mock <IWebClientWrapper>().Setup(Xunit => Xunit.DownloadBytes("url1")).Returns(
                    testable.Image15X17);
                testable.Mock <IWebClientWrapper>().Setup(Xunit => Xunit.DownloadBytes("url2")).Returns(
                    testable.Image18X18);

                testable.ClassUnderTest.AddImage(image1);
                testable.ClassUnderTest.AddImage(image2);

                Assert.Equal(testable.Image15X17.Length + testable.Image18X18.Length, testable.ClassUnderTest.Size);
            }
Exemplo n.º 12
0
            public void WillNotSpriteImagesWhenSpritingIsDisabled()
            {
                var testable = new TestableCssReducer();

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadString <CssResource>(It.IsAny <string>())).Returns("css");
                testable.Mock <IRRConfiguration>().Setup(x => x.ImageSpritingDisabled).Returns(true);
                var image1 = new BackgroundImageClass("", 0)
                {
                    ImageUrl = "image1"
                };
                var image2 = new BackgroundImageClass("", 0)
                {
                    ImageUrl = "image2"
                };
                var css = "css";

                testable.Mock <ICssImageTransformer>().Setup(x => x.ExtractImageUrls(css)).Returns(new BackgroundImageClass[] { image1, image2 });

                testable.ClassUnderTest.Process("http://host/css2.css");

                testable.Mock <ISpriteManager>().Verify(x => x.Add(image1), Times.Never());
            }
Exemplo n.º 13
0
            public void UniqueColorsOfAddedImagesWillBe0WhenNotInFullTrust()
            {
                var testable       = new TestableSpriteContainer();
                var fiveColorImage = new BackgroundImageClass("image1", "")
                {
                    ImageUrl = "url"
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url")).Returns(TestableSpriteContainer.GetFiveColorImage());
                var fourColorImage = new BackgroundImageClass("image2", "")
                {
                    ImageUrl = "url2"
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url2")).Returns(TestableSpriteContainer.GetFourColorImage());
                testable.Mock <IRRConfiguration>().Setup(x => x.IsFullTrust).Returns(false);

                testable.ClassUnderTest.AddImage(fiveColorImage);
                testable.ClassUnderTest.AddImage(fourColorImage);

                Assert.Equal(0, testable.ClassUnderTest.Colors);
            }
            public void WillSetImageAbsoluteUrlFromBackgroundImageStyleAndReplaceRelativeUrl()
            {
                var css =
                    @"
.LocalNavigation .TabOn,.LocalNavigation .TabOn:hover {
    background-image: url(""subnav_on_technet.png"");
}";
                var expectedCss =
                    @"
.LocalNavigation .TabOn,.LocalNavigation .TabOn:hover {
    background-image: url(""newUrl"");
;background-position: -0px 0;}";
                var testable        = new TestableCssImageTransformer();
                var backgroundImage = new BackgroundImageClass(css, 0);
                var sprite          = new SpritedImage(1, backgroundImage, null)
                {
                    Url = "newUrl", Position = 0
                };

                var result = testable.ClassUnderTest.InjectSprite(css, sprite);

                Assert.Equal(expectedCss, result);
            }
Exemplo n.º 15
0
            public void PositivelyXOffsetImagesWillBecorrectlyPositionedInClonedImageSentToWriter()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("", 0)
                {
                    ImageUrl = "url1", ExplicitWidth = 30, ExplicitHeight = 30, XOffset = new Position()
                    {
                        PositionMode = PositionMode.Unit, Offset = 5
                    }, YOffset = new Position()
                    {
                        PositionMode = PositionMode.Unit, Offset = 0
                    }
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url1")).Returns(testable.Image18X18);

                testable.ClassUnderTest.AddImage(image1);

                var image  = testable.ClassUnderTest.First();
                var image2 = new Bitmap(new MemoryStream(testable.Image18X18));

                Assert.Equal(image2.GraphicsImage(), image.Image.Clone(new Rectangle(5, 0, 18, 18), image2.PixelFormat), new BitmapPixelComparer(true));
            }
Exemplo n.º 16
0
            public void BottomPositionedImagesLargerThanHeightWillBeBottomAlligned()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("", "http://server/content/style.css")
                {
                    ImageUrl = "url1", Width = 10, Height = 10, XOffset = new Position()
                    {
                        PositionMode = PositionMode.Direction, Direction = Direction.Right
                    }, YOffset = new Position()
                    {
                        PositionMode = PositionMode.Direction, Direction = Direction.Bottom
                    }
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url1")).Returns(testable.Image15X17);

                testable.ClassUnderTest.AddImage(image1);

                var image  = testable.ClassUnderTest.First();
                var image2 = new Bitmap(new MemoryStream(testable.Image15X17));

                Assert.Equal(image2.Clone(new Rectangle(5, 7, 10, 10), image2.PixelFormat).GraphicsImage(), image.Image.Clone(new Rectangle(0, 0, 10, 10), image2.PixelFormat), new BitmapPixelComparer(true));
            }
Exemplo n.º 17
0
            public void WillReturnAllImages()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("", "http://server/content/style.css")
                {
                    ImageUrl = "url1"
                };
                var image2 = new BackgroundImageClass("", "http://server/content/style.css")
                {
                    ImageUrl = "url2"
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url1")).Returns(
                    testable.Image15X17);
                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url2")).Returns(
                    testable.Image18X18);

                testable.ClassUnderTest.AddImage(image1);
                testable.ClassUnderTest.AddImage(image2);

                Assert.Contains(image1, testable.ClassUnderTest.Select(x => x.CssClass));
                Assert.Contains(image2, testable.ClassUnderTest.Select(x => x.CssClass));
            }
Exemplo n.º 18
0
            public void VerticallyCenteredImagesWillBeCenteredInClonedImageSentToWriter()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new BackgroundImageClass("", "http://server/content/style.css")
                {
                    ImageUrl = "url1", Width = 30, Height = 30, XOffset = new Position()
                    {
                        PositionMode = PositionMode.Direction, Direction = Direction.Center
                    }, YOffset = new Position()
                    {
                        PositionMode = PositionMode.Direction, Direction = Direction.Center
                    }
                };

                testable.Mock <IWebClientWrapper>().Setup(x => x.DownloadBytes("url1")).Returns(testable.Image18X18);

                testable.ClassUnderTest.AddImage(image1);

                var image  = testable.ClassUnderTest.First();
                var image2 = new Bitmap(new MemoryStream(testable.Image18X18));

                Assert.Equal(image2.GraphicsImage(), image.Image.Clone(new Rectangle(6, 6, 18, 18), image2.PixelFormat), new BitmapPixelComparer(true));
            }
Exemplo n.º 19
0
            public void WillReplaceOriginalCssWithAbsoluteUrl(string css)
            {
                var testable = new BackgroundImageClass(css, "http://server/content/style.css");

                Assert.Equal(css.Replace("subnav_on_technet.png", testable.ImageUrl), testable.OriginalClassString);
            }
Exemplo n.º 20
0
            public void WillSetImageAbsoluteUrlFromBackgroundImageStyle(string css)
            {
                var testable = new BackgroundImageClass(css, "http://server/content/style.css");

                Assert.Equal("http://server/content/subnav_on_technet.png", testable.ImageUrl);
            }
Exemplo n.º 21
0
            public void WillSetOriginalClassStringToPassedString()
            {
                var testable = new BackgroundImageClass("original string", "http://server/content/style.css");

                Assert.Equal("original string", testable.OriginalClassString);
            }
Exemplo n.º 22
0
        private static void InheritMissingProperties(BackgroundImageClass derrivableClass, BackgroundImageClass imageClass)
        {
            if (DerivableHasMissingProperty(derrivableClass, imageClass, PropertyCompletion.HasYOffset))
            {
                imageClass.YOffset = derrivableClass.YOffset;
            }

            if (DerivableHasMissingProperty(derrivableClass, imageClass, PropertyCompletion.HasXOffset))
            {
                imageClass.XOffset = derrivableClass.XOffset;
            }

            if (DerivableHasMissingProperty(derrivableClass, imageClass, PropertyCompletion.HasRepeat))
            {
                imageClass.Repeat = derrivableClass.Repeat;
            }

            if (DerivableHasMissingProperty(derrivableClass, imageClass, PropertyCompletion.HasImage))
            {
                imageClass.ImageUrl = derrivableClass.ImageUrl;
            }

            if (DerivableHasMissingProperty(derrivableClass, imageClass, PropertyCompletion.HasPaddingBottom))
            {
                imageClass.PaddingBottom = derrivableClass.PaddingBottom;
            }

            if (DerivableHasMissingProperty(derrivableClass, imageClass, PropertyCompletion.HasPaddingTop))
            {
                imageClass.PaddingTop = derrivableClass.PaddingTop;
            }

            if (DerivableHasMissingProperty(derrivableClass, imageClass, PropertyCompletion.HasPaddingLeft))
            {
                imageClass.PaddingLeft = derrivableClass.PaddingLeft;
            }

            if (DerivableHasMissingProperty(derrivableClass, imageClass, PropertyCompletion.HasPaddingRight))
            {
                imageClass.PaddingRight = derrivableClass.PaddingRight;
            }

            if (DerivableHasMissingProperty(derrivableClass, imageClass, PropertyCompletion.HasWidth))
            {
                imageClass.ExplicitWidth = derrivableClass.ExplicitWidth;
            }

            if (DerivableHasMissingProperty(derrivableClass, imageClass, PropertyCompletion.HasHeight))
            {
                imageClass.ExplicitHeight = derrivableClass.ExplicitHeight;
            }
        }
Exemplo n.º 23
0
 public SpriteFilterContext(BackgroundImageClass image)
 {
     BackgroundImage = image;
 }
Exemplo n.º 24
0
        public SpritedImage AddImage(BackgroundImageClass image)
        {
            byte[] imageBytes;
            if (DownloadedImages.ContainsKey(image.ImageUrl) && image.IsSprite)
            {
                imageBytes = DownloadedImages[image.ImageUrl];
            }
            else
            {
                imageBytes = ImageLoader.GetImageBytes(image.ImageUrl);
                if (image.IsSprite)
                {
                    DownloadedImages.Add(image.ImageUrl, imageBytes);
                }
            }
            Bitmap bitmap;

            using (var originalBitmap = new Bitmap(new MemoryStream(imageBytes)))
            {
                var width  = image.Width ?? originalBitmap.Width; //cliped width of original image
                var height = image.Height ?? originalBitmap.Height;
                using (var writer = new SpriteWriter(width, height))
                {
                    var x          = image.XOffset.Offset < 0 ? Math.Abs(image.XOffset.Offset) : 0; //offset on original
                    var y          = image.YOffset.Offset < 0 ? Math.Abs(image.YOffset.Offset) : 0;
                    var imageWidth = width;                                                         //canvas width
                    if (width + x > originalBitmap.Width)
                    {
                        width = originalBitmap.Width - x;
                    }
                    var imageHeight = height;
                    if (height + y > originalBitmap.Height)
                    {
                        height = originalBitmap.Height - y;
                    }
                    var offsetX = 0;
                    var offsetY = 0;
                    if (image.XOffset.PositionMode == PositionMode.Direction)
                    {
                        switch (image.XOffset.Direction)
                        {
                        case Direction.Left:
                            image.XOffset = new Position {
                                PositionMode = PositionMode.Percent, Offset = 0
                            };
                            break;

                        case Direction.Center:
                            image.XOffset = new Position {
                                PositionMode = PositionMode.Percent, Offset = 50
                            };
                            break;

                        case Direction.Right:
                            image.XOffset = new Position {
                                PositionMode = PositionMode.Percent, Offset = 100
                            };
                            break;
                        }
                    }
                    if (image.YOffset.PositionMode == PositionMode.Direction)
                    {
                        switch (image.YOffset.Direction)
                        {
                        case Direction.Top:
                            image.YOffset = new Position {
                                PositionMode = PositionMode.Percent, Offset = 0
                            };
                            break;

                        case Direction.Center:
                            image.YOffset = new Position {
                                PositionMode = PositionMode.Percent, Offset = 50
                            };
                            break;

                        case Direction.Bottom:
                            image.YOffset = new Position {
                                PositionMode = PositionMode.Percent, Offset = 100
                            };
                            break;
                        }
                    }
                    if (image.XOffset.PositionMode == PositionMode.Percent)
                    {
                        if (originalBitmap.Width > imageWidth)
                        {
                            x = (int)Math.Round((originalBitmap.Width - imageWidth) * (image.XOffset.Offset / 100f), 0);
                        }
                        else
                        {
                            offsetX = (int)Math.Round((imageWidth - originalBitmap.Width) * (image.XOffset.Offset / 100f), 0);
                        }
                    }
                    else if (image.XOffset.PositionMode == PositionMode.Unit && image.XOffset.Offset > 0)
                    {
                        offsetX = image.XOffset.Offset;
                        if (originalBitmap.Width + offsetX > imageWidth)
                        {
                            width = imageWidth - offsetX;
                        }
                    }

                    if (image.YOffset.PositionMode == PositionMode.Percent)
                    {
                        if (originalBitmap.Height > imageHeight)
                        {
                            y = (int)Math.Round((originalBitmap.Height - height) * (image.YOffset.Offset / 100f), 0);
                        }
                        else
                        {
                            offsetY = (int)Math.Round((imageHeight - originalBitmap.Height) * (image.YOffset.Offset / 100f), 0);
                        }
                    }

                    try
                    {
                        using (var bm = originalBitmap.Clone(new Rectangle(x, y, width, height), originalBitmap.PixelFormat))
                        {
                            writer.WriteImage(bm, offsetX, offsetY);
                        }
                    }
                    catch (OutOfMemoryException)
                    {
                        throw new InvalidOperationException(string.Format("Unable to Add {0} to Sprite.", image.ImageUrl));
                    }
                    bitmap = writer.SpriteImage;
                    if ((originalBitmap.Width * originalBitmap.Height) > (bitmap.Width * bitmap.Height))
                    {
                        Size += writer.GetBytes("image/png").Length;
                    }
                    else
                    {
                        Size += imageBytes.Length;
                    }
                }
            }
            var avgColor     = settings.IsFullTrust ? GetColors(bitmap) : 0;
            var spritedImage = new SpritedImage(avgColor, image, bitmap);

            Images.Add(spritedImage);
            Width += bitmap.Width + 1;
            if (Height < bitmap.Height)
            {
                Height = bitmap.Height;
            }
            return(spritedImage);
        }
Exemplo n.º 25
0
 private static bool DerivableHasMissingProperty(BackgroundImageClass derrivableClass, BackgroundImageClass imageClass, PropertyCompletion property)
 {
     if ((imageClass.PropertyCompletion & property) != property && (derrivableClass.PropertyCompletion & property) == property)
     {
         imageClass.PropertyCompletion = imageClass.PropertyCompletion | property;
         return(true);
     }
     return(false);
 }