You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "John Hewson (JIRA)" <ji...@apache.org> on 2014/12/15 21:29:13 UTC

[jira] [Comment Edited] (PDFBOX-2570) ClassCastException in PDCalGray: COSFloat cannot be cast to COSArray

    [ https://issues.apache.org/jira/browse/PDFBOX-2570?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14247174#comment-14247174 ] 

John Hewson edited comment on PDFBOX-2570 at 12/15/14 8:28 PM:
---------------------------------------------------------------

If you have a single-valued gray gamma _x_ then it is equivalent to the RGB gamma (r=x, g=x, b=x). All that is needed is to override getGamma() in CalGray so that parses a single float.

It's probably best to do this by adding a new constructor to PDGamma which takes a single float and populates the RGB value COSArray.


was (Author: jahewson):
If you have a single-valued gray gamma _x_ then it is equivalent to the RGB gamma (r=x, g=x, b=x). All that is needed is to override getGamma() in CalGray so that parses a single float.

> ClassCastException in PDCalGray: COSFloat cannot be cast to COSArray
> --------------------------------------------------------------------
>
>                 Key: PDFBOX-2570
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-2570
>             Project: PDFBox
>          Issue Type: Bug
>          Components: Parsing
>    Affects Versions: 2.0.0
>            Reporter: Tilman Hausherr
>            Assignee: Tilman Hausherr
>              Labels: CalGray, CalRGB, regression
>             Fix For: 2.0.0
>
>
> {code}
> INFORMATION: Rendering: PDFBOX-1724.pdf
> java.lang.ClassCastException: org.apache.pdfbox.cos.COSFloat cannot be cast to org.apache.pdfbox.cos.COSArray
> 	at org.apache.pdfbox.pdmodel.graphics.color.PDCalRGB.getGamma(PDCalRGB.java:158)
> 	at org.apache.pdfbox.pdmodel.graphics.color.PDCalRGB.toRGB(PDCalRGB.java:95)
> 	at org.apache.pdfbox.pdmodel.graphics.color.PDCalGray.toRGB(PDCalGray.java:81)
> 	at org.apache.pdfbox.pdmodel.graphics.color.PDCIEBasedColorSpace.toRGBImage(PDCIEBasedColorSpace.java:88)
> {code}
> The cause is that in one of the redesigns it was overseen that the Gamma is a single value for CalGray, and not an array like in CalRGB. Thus PDCalGray cannot be extended from PDCalRGB. The bug didn't have an effect because the gamma wasn't used before PDFBOX-2553. Instead I will extend it from PDCIEBasedColorSpace or from a new abstract class PDCalBasedColorSpace.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)