Example #1
0
        public static float[] GetColorArray(BaseColor color)
        {
            int type = ExtendedColor.GetType(color);

            switch (type)
            {
            case ExtendedColor.TYPE_GRAY:
            {
                return(new[] { ((GrayColor)color).Gray });
            }

            case ExtendedColor.TYPE_CMYK:
            {
                CmykColor cmyk = (CmykColor)color;
                return(new[] { cmyk.Cyan, cmyk.Magenta, cmyk.Yellow, cmyk.Black });
            }

            case ExtendedColor.TYPE_SEPARATION:
            {
                return(new[] { ((SpotColor)color).Tint });
            }

            case ExtendedColor.TYPE_RGB:
            {
                return(new[] { color.R / 255f, color.G / 255f, color.B / 255f });
            }
            }
            ThrowColorSpaceError();
            return(null);
        }
        public override bool Equals(object obj)
        {
            if (!(obj is CmykColor))
            {
                return(false);
            }
            CmykColor c2 = (CmykColor)obj;

            return(Cyan.ApproxEquals(c2.Cyan) && Magenta.ApproxEquals(c2.Magenta) && Yellow.ApproxEquals(c2.Yellow) && Black.ApproxEquals(c2.Black));
        }
Example #3
0
        protected internal PdfObject GetSpotObject(PdfWriter writer)
        {
            PdfArray array = new PdfArray(PdfName.Separation);

            array.Add(Name);
            PdfFunction func = null;

            if (Altcs is ExtendedColor)
            {
                int type = ((ExtendedColor)Altcs).Type;
                switch (type)
                {
                case ExtendedColor.TYPE_GRAY:
                    array.Add(PdfName.Devicegray);
                    func = PdfFunction.Type2(writer, new float[] { 0, 1 }, null, new float[] { 0 }, new[] { ((GrayColor)Altcs).Gray }, 1);
                    break;

                case ExtendedColor.TYPE_CMYK:
                    array.Add(PdfName.Devicecmyk);
                    CmykColor cmyk = (CmykColor)Altcs;
                    func = PdfFunction.Type2(writer, new float[] { 0, 1 }, null, new float[] { 0, 0, 0, 0 },
                                             new[] { cmyk.Cyan, cmyk.Magenta, cmyk.Yellow, cmyk.Black }, 1);
                    break;

                default:
                    throw new Exception("Only RGB, Gray and CMYK are supported as alternative color spaces.");
                }
            }
            else
            {
                array.Add(PdfName.Devicergb);
                func = PdfFunction.Type2(writer, new float[] { 0, 1 }, null, new float[] { 1, 1, 1 },
                                         new[] { (float)Altcs.R / 255, (float)Altcs.G / 255, (float)Altcs.B / 255 }, 1);
            }
            array.Add(func.Reference);
            return(array);
        }
Example #4
0
        public static PdfArray GetMkColor(BaseColor color)
        {
            PdfArray array = new PdfArray();
            int      type  = ExtendedColor.GetType(color);

            switch (type)
            {
            case ExtendedColor.TYPE_GRAY:
            {
                array.Add(new PdfNumber(((GrayColor)color).Gray));
                break;
            }

            case ExtendedColor.TYPE_CMYK:
            {
                CmykColor cmyk = (CmykColor)color;
                array.Add(new PdfNumber(cmyk.Cyan));
                array.Add(new PdfNumber(cmyk.Magenta));
                array.Add(new PdfNumber(cmyk.Yellow));
                array.Add(new PdfNumber(cmyk.Black));
                break;
            }

            case ExtendedColor.TYPE_SEPARATION:
            case ExtendedColor.TYPE_PATTERN:
            case ExtendedColor.TYPE_SHADING:
                throw new Exception("Separations, patterns and shadings are not allowed in MK dictionary.");

            default:
                array.Add(new PdfNumber(color.R / 255f));
                array.Add(new PdfNumber(color.G / 255f));
                array.Add(new PdfNumber(color.B / 255f));
                break;
            }
            return(array);
        }