Beispiel #1
0
        protected void SetColorSpace(Color color)
        {
            cspace = color;
            int       type       = ExtendedColor.GetType(color);
            PdfObject colorSpace = null;

            switch (type)
            {
            case ExtendedColor.TYPE_GRAY: {
                colorSpace = PdfName.DEVICEGRAY;
                break;
            }

            case ExtendedColor.TYPE_CMYK: {
                colorSpace = PdfName.DEVICECMYK;
                break;
            }

            case ExtendedColor.TYPE_SEPARATION: {
                SpotColor spot = (SpotColor)color;
                colorDetails = writer.AddSimple(spot.PdfSpotColor);
                colorSpace   = colorDetails.IndirectReference;
                break;
            }

            case ExtendedColor.TYPE_PATTERN:
            case ExtendedColor.TYPE_SHADING: {
                ThrowColorSpaceError();
                break;
            }

            default:
                colorSpace = PdfName.DEVICERGB;
                break;
            }
            shading.Put(PdfName.COLORSPACE, colorSpace);
        }
Beispiel #2
0
 internal ColorDetails AddSimplePatternColorspace(Color color)
 {
     int type = ExtendedColor.GetType(color);
     if (type == ExtendedColor.TYPE_PATTERN || type == ExtendedColor.TYPE_SHADING)
         throw new Exception("An uncolored tile pattern can not have another pattern or shading as color.");
     switch (type) {
         case ExtendedColor.TYPE_RGB:
             if (patternColorspaceRGB == null) {
                 patternColorspaceRGB = new ColorDetails(GetColorspaceName(), body.PdfIndirectReference, null);
                 PdfArray array = new PdfArray(PdfName.PATTERN);
                 array.Add(PdfName.DEVICERGB);
                 AddToBody(array, patternColorspaceRGB.IndirectReference);
             }
             return patternColorspaceRGB;
         case ExtendedColor.TYPE_CMYK:
             if (patternColorspaceCMYK == null) {
                 patternColorspaceCMYK = new ColorDetails(GetColorspaceName(), body.PdfIndirectReference, null);
                 PdfArray array = new PdfArray(PdfName.PATTERN);
                 array.Add(PdfName.DEVICECMYK);
                 AddToBody(array, patternColorspaceCMYK.IndirectReference);
             }
             return patternColorspaceCMYK;
         case ExtendedColor.TYPE_GRAY:
             if (patternColorspaceGRAY == null) {
                 patternColorspaceGRAY = new ColorDetails(GetColorspaceName(), body.PdfIndirectReference, null);
                 PdfArray array = new PdfArray(PdfName.PATTERN);
                 array.Add(PdfName.DEVICEGRAY);
                 AddToBody(array, patternColorspaceGRAY.IndirectReference);
             }
             return patternColorspaceGRAY;
         case ExtendedColor.TYPE_SEPARATION: {
             ColorDetails details = AddSimple(((SpotColor)color).PdfSpotColor);
             ColorDetails patternDetails = (ColorDetails)documentSpotPatterns[details];
             if (patternDetails == null) {
                 patternDetails = new ColorDetails(GetColorspaceName(), body.PdfIndirectReference, null);
                 PdfArray array = new PdfArray(PdfName.PATTERN);
                 array.Add(details.IndirectReference);
                 AddToBody(array, patternDetails.IndirectReference);
                 documentSpotPatterns[details] = patternDetails;
             }
             return patternDetails;
         }
         default:
             throw new Exception("Invalid color type in PdfWriter.AddSimplePatternColorspace().");
     }
 }
Beispiel #3
0
 /**
 * Adds a <CODE>SpotColor</CODE> to the document but not to the page resources.
 * @param spc the <CODE>SpotColor</CODE> to add
 * @return an <CODE>Object[]</CODE> where position 0 is a <CODE>PdfName</CODE>
 * and position 1 is an <CODE>PdfIndirectReference</CODE>
 */
 internal ColorDetails AddSimple(PdfSpotColor spc)
 {
     ColorDetails ret = (ColorDetails)documentColors[spc];
     if (ret == null) {
         ret = new ColorDetails(GetColorspaceName(), body.PdfIndirectReference, spc);
         documentColors[spc] = ret;
     }
     return ret;
 }