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
Inheritance: IRgbColor
コード例 #1
0
ファイル: RgbColorTests.cs プロジェクト: codebutler/savagesvg
 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
ファイル: RgbColorTests.cs プロジェクト: codebutler/savagesvg
 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
ファイル: RgbColorTests.cs プロジェクト: codebutler/savagesvg
    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
ファイル: RgbColorTests.cs プロジェクト: codebutler/savagesvg
 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
ファイル: CssTests.cs プロジェクト: nagyist/savagesvg
        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
ファイル: CssTests.cs プロジェクト: nagyist/savagesvg
        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
ファイル: CssTests.cs プロジェクト: nagyist/savagesvg
        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
ファイル: CssTests.cs プロジェクト: nagyist/savagesvg
        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
ファイル: CssTests.cs プロジェクト: nagyist/savagesvg
        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
ファイル: RgbColorTests.cs プロジェクト: codebutler/savagesvg
 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
ファイル: SvgColor.cs プロジェクト: codebutler/savagesvg
        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);
 }