The RGBColor interface is used to represent any RGB color value. This interface reflects the values in the underlying style property. Hence, modifications made to the CSSPrimitiveValue objects modify the style property. A specified RGB color is not clipped (even if the number is outside the range 0-255 or 0%-100%). A computed RGB color is clipped depending on the device. Even if a style sheet can only contain an integer for a color value, the internal storage of this integer is a float, and this can be used as a float in the specified or the computed style. A color percentage value can always be converted to a number and vice versa
상속: IRgbColor
예제 #1
0
 public void TestPercentageRgb()
 {
     color = new RgbColor("rgb(50%,	12%, 100%)");
             Assert.AreEqual(255*0.5, color.Red.GetFloatValue(CssPrimitiveType.Number));
             Assert.AreEqual(255*0.12, color.Green.GetFloatValue(CssPrimitiveType.Number));
             Assert.AreEqual(255, color.Blue.GetFloatValue(CssPrimitiveType.Number));
 }
예제 #2
0
 public void TestHex()
 {
     color = new RgbColor("#12C2a4  ");
             Assert.AreEqual(18, color.Red.GetFloatValue(CssPrimitiveType.Number));
             Assert.AreEqual(194, color.Green.GetFloatValue(CssPrimitiveType.Number));
             Assert.AreEqual(164, color.Blue.GetFloatValue(CssPrimitiveType.Number));
 }
예제 #3
0
    public void TestCssNames()
    {
        Hashtable table = new Hashtable();
                table.Add("maroon", "#800000");
                table.Add("red", "#ff0000");
                table.Add("orange", "#ffA500");
                table.Add("yellow", "#ffff00");
                table.Add("olive", "#808000");
                table.Add("purple", "#800080");
                table.Add("fuchsia", "#ff00ff");
                table.Add("white", "#ffffff");
                table.Add("lime", "#00ff00");
                table.Add("green", "#008000");
                table.Add("navy", "#000080");
                table.Add("blue", "#0000ff");
                table.Add("aqua", "#00ffff");
                table.Add("teal", "#008080");
                table.Add("black", "#000000");
                table.Add("silver", "#c0c0c0");
                table.Add("gray", "#808080");

                IEnumerator colorEnum = table.Keys.GetEnumerator();
                while(colorEnum.MoveNext())
                {
                    string name = (string)colorEnum.Current;
                    string hexColor = (string)table[name];

                    color = new RgbColor(name);
                    RgbColor color2 = new RgbColor(hexColor);

                    Assert.AreEqual(color2.Red.GetFloatValue(CssPrimitiveType.Number), color.Red.GetFloatValue(CssPrimitiveType.Number), name + " red");
                    Assert.AreEqual(color2.Green.GetFloatValue(CssPrimitiveType.Number), color.Green.GetFloatValue(CssPrimitiveType.Number), name + " green");
                    Assert.AreEqual(color2.Blue.GetFloatValue(CssPrimitiveType.Number), color.Blue.GetFloatValue(CssPrimitiveType.Number), name + " blue");
                }
    }
예제 #4
0
 public void TestAbsoluteRgb()
 {
     color = new RgbColor("rgb( 100  ,	123,15)");
             Assert.AreEqual(100, color.Red.GetFloatValue(CssPrimitiveType.Number));
             Assert.AreEqual(123, color.Green.GetFloatValue(CssPrimitiveType.Number));
             Assert.AreEqual(15, color.Blue.GetFloatValue(CssPrimitiveType.Number));
 }
예제 #5
0
        public void TestColorRgbPercValue()
        {
            CssPrimitiveValue primValue = (CssPrimitiveValue)colorRules.GetPropertyCssValue("rgbperc");

            Assert.AreEqual("rgb(59,115,171)", primValue.CssText);
            Assert.AreEqual(CssValueType.PrimitiveValue, primValue.CssValueType);
            Assert.AreEqual(CssPrimitiveType.RgbColor, primValue.PrimitiveType);
            RgbColor color = (RgbColor)primValue.GetRgbColorValue();

            Assert.AreEqual(0.23 * 255, color.Red.GetFloatValue(CssPrimitiveType.Number));
            Assert.AreEqual(0.45 * 255, color.Green.GetFloatValue(CssPrimitiveType.Number));
            Assert.AreEqual(0.67 * 255, color.Blue.GetFloatValue(CssPrimitiveType.Number));
        }
예제 #6
0
        public void TestColorRgbAbsValue()
        {
            CssPrimitiveValue primValue = (CssPrimitiveValue)colorRules.GetPropertyCssValue("rgbabs");

            Assert.AreEqual("rgb(45,78,98)", primValue.CssText);
            Assert.AreEqual(CssValueType.PrimitiveValue, primValue.CssValueType);
            Assert.AreEqual(CssPrimitiveType.RgbColor, primValue.PrimitiveType);
            RgbColor color = (RgbColor)primValue.GetRgbColorValue();

            Assert.AreEqual(45, color.Red.GetFloatValue(CssPrimitiveType.Number));
            Assert.AreEqual(78, color.Green.GetFloatValue(CssPrimitiveType.Number));
            Assert.AreEqual(98, color.Blue.GetFloatValue(CssPrimitiveType.Number));
        }
예제 #7
0
        public void TestColorShortHexValue()
        {
            CssPrimitiveValue primValue = (CssPrimitiveValue)colorRules.GetPropertyCssValue("shorthex");

            Assert.AreEqual("rgb(17,34,51)", primValue.CssText);
            Assert.AreEqual(CssValueType.PrimitiveValue, primValue.CssValueType);
            Assert.AreEqual(CssPrimitiveType.RgbColor, primValue.PrimitiveType);
            RgbColor color = (RgbColor)primValue.GetRgbColorValue();

            Assert.AreEqual(17, color.Red.GetFloatValue(CssPrimitiveType.Number));
            Assert.AreEqual(34, color.Green.GetFloatValue(CssPrimitiveType.Number));
            Assert.AreEqual(51, color.Blue.GetFloatValue(CssPrimitiveType.Number));
        }
예제 #8
0
        public void TestColorLongHexValue()
        {
            CssValue val = (CssValue)colorRules.GetPropertyCssValue("longhex");

            Assert.IsTrue(val is CssPrimitiveValue, "1");
            CssPrimitiveValue primValue = (CssPrimitiveValue)colorRules.GetPropertyCssValue("longhex");

            Assert.AreEqual("rgb(101,67,33)", primValue.CssText, "2");
            Assert.AreEqual(CssValueType.PrimitiveValue, primValue.CssValueType, "3");
            Assert.AreEqual(CssPrimitiveType.RgbColor, primValue.PrimitiveType, "4");
            RgbColor color = (RgbColor)primValue.GetRgbColorValue();

            Assert.AreEqual(101, color.Red.GetFloatValue(CssPrimitiveType.Number), "5");
            Assert.AreEqual(67, color.Green.GetFloatValue(CssPrimitiveType.Number), "6");
            Assert.AreEqual(33, color.Blue.GetFloatValue(CssPrimitiveType.Number), "7");
            Assert.AreEqual(ColorTranslator.FromHtml("#654321"), color.GdiColor, "8");
        }
예제 #9
0
        public void TestColorNameValue()
        {
            CssPrimitiveValue primValue = (CssPrimitiveValue)colorRules.GetPropertyCssValue("name");

            Assert.AreEqual("rgb(60,179,113)", primValue.CssText);
            Assert.AreEqual(CssValueType.PrimitiveValue, primValue.CssValueType);
            Assert.AreEqual(CssPrimitiveType.RgbColor, primValue.PrimitiveType);
            RgbColor color = (RgbColor)primValue.GetRgbColorValue();

            Assert.AreEqual(60, color.Red.GetFloatValue(CssPrimitiveType.Number));
            Assert.AreEqual(179, color.Green.GetFloatValue(CssPrimitiveType.Number));
            Assert.AreEqual(113, color.Blue.GetFloatValue(CssPrimitiveType.Number));

            primValue = (CssPrimitiveValue)colorRules.GetPropertyCssValue("grey-name");
            color     = (RgbColor)primValue.GetRgbColorValue();
            Assert.AreEqual(119, color.Red.GetFloatValue(CssPrimitiveType.Number));
            Assert.AreEqual(136, color.Green.GetFloatValue(CssPrimitiveType.Number));
            Assert.AreEqual(153, color.Blue.GetFloatValue(CssPrimitiveType.Number));
        }
예제 #10
0
 protected internal override void _setCssText(string cssText)
 {
     colorValue = new RgbColor(cssText);
     _setType(CssPrimitiveType.RgbColor);
 }
예제 #11
0
 public void TestShortHex()
 {
     color = new RgbColor("  #C8f");
             Assert.AreEqual(204, color.Red.GetFloatValue(CssPrimitiveType.Number));
             Assert.AreEqual(136, color.Green.GetFloatValue(CssPrimitiveType.Number));
             Assert.AreEqual(255, color.Blue.GetFloatValue(CssPrimitiveType.Number));
 }
예제 #12
0
        public void SetColor(SvgColorType colorType, string rgbColor, string iccColor )
        {
            _colorType = colorType;
            if(rgbColor != null && rgbColor.Length > 0)
            {
                try
                {
                    _rgbColor = new RgbColor(rgbColor);
                }
                catch(DomException domExc)
                {
                    throw new SvgException(SvgExceptionType.SvgInvalidValueErr, "Invalid color value: " + rgbColor, domExc);
                }
            }
            else
            {
                _rgbColor = new RgbColor("black");
            }

            ///TODO: deal with ICC colors
        }
예제 #13
0
 protected internal override void _setCssText(string cssText)
 {
     colorValue = new RgbColor(cssText);
     _setType(CssPrimitiveType.RgbColor);
 }