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

Andreas Lehmkühler commented on PDFBOX-2423:
--------------------------------------------

{quote}
I had a look at the existing SoftMaskPaint.java and IMHO it is incorrect and 
the code either does nothing, or something that doesn't make sense (writing to 
a band that is higher than the existing band count).
{code}
result.setSample(i, j, numColorComponents, alpha);
{code}
{quote}
IMHO everything is fine here. The raster has numColorComponents (=3) + 1 bands 
and the last band represents the alpha channel.

{quote}
By changing that to
{code}
for (int colorComponent = 0; colorComponent < numColorComponents; 
++colorComponent)
{
    alpha = alpha * result.getSample(i, j, colorComponent) / 255;
    result.setSample(i, j, colorComponent, alpha);
}
{code}
(and a bit more) I was able to improve 7 files, 5 are differently incorrect 
now, 1 is really wrong, which is related to us not using the /BC color.
{quote}
This makes sense if the the raster uses premultiplied alpha values, but it 
doesn't. BTW, the calculation of the alpha value is wrong. I must not be 
multiplied with itself for every color component. It just works accidentically 
for alpha sample values of 0 and 255. It should be something like the following:
{code}
int premultiplied = alpha * result.getSample(i, j, colorComponent) / 255;
{code}



> Page tree handling needs rewriting
> ----------------------------------
>
>                 Key: PDFBOX-2423
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-2423
>             Project: PDFBox
>          Issue Type: Improvement
>          Components: PDModel
>    Affects Versions: 1.8.7, 2.0.0
>            Reporter: John Hewson
>            Assignee: John Hewson
>            Priority: Blocker
>             Fix For: 2.0.0
>
>         Attachments: 025957.pdf, 26101_Colors.ai-1.png, 
> 26101_Colors.ai-1.png-diff.png, Basiswissen-Vorschriften.pdf-3.png, 
> Basiswissen-Vorschriften.pdf-3.png-diff.png, 
> Basiswissen-Vorschriften.pdf-4.png, 
> Basiswissen-Vorschriften.pdf-4.png-diff.png, PDFBOX-1058.pdf-1.png, 
> PDFBOX-1058.pdf-1.png-diff.png, PDFBOX-1058.pdf-4.png, 
> PDFBOX-1058.pdf-4.png-diff.png, PDFBOX-1094-tiling_pattern.pdf, 
> PDFBOX-1711-cmyk.pdf-1.png, PDFBOX-1711-cmyk.pdf-1.png-diff.png, 
> PDFBOX-1794-vattenfall.pdf-1.png, PDFBOX-1794-vattenfall.pdf-1.png-diff.png, 
> PDFBOX-1917.pdf-1.png, PDFBOX-1917.pdf-1.png-diff.png, 
> Transparency_group_rewrite3.patch, asy-functionshading.pdf-1.png, 
> asy-functionshading.pdf-1.png-diff.png, bugzilla869140.pdf, 
> example_026.pdf-1.png, gs-bugilla691763.pdf, gs-bugzilla688601.pdf, 
> gs-bugzilla689518.pdf, gs-bugzilla690467.pdf, gs-bugzilla693322.pdf, 
> gs-bugzilla694385.pdf, jagpdf_doc_patterns.pdf, samsung_galaxy_s_4_um-p1.pdf
>
>
> The way in which PDFBox handles the Page tree needs to be rewritten, 
> preferably from scratch. Currently the document catalog returns the raw 
> objects from the page tree, wrapped in either a PDPage or PDPageNode.
> We need to abstract over the page tree and get rid of PDPageNode, we should 
> provide methods which can add/remove PDPage objects *only*. The existing 
> low-level access to the page tree is not needed at the PD-level.
> Inheritance of page properties such as crop box, resources, and rotation 
> should be reimplemented to use whatever new page tree abstraction we invent. 
> We can finally remove the old broken methods which didn't look up the 
> inheritance tree when retrieving these values.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to