pdfbox-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dave Smith (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PDFBOX-1443) Images are rendered blank
Date Fri, 09 Nov 2012 15:56:12 GMT

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

Dave Smith commented on PDFBOX-1443:
------------------------------------

Only off list. I can send it directly to you ...

                
> Images are rendered blank
> -------------------------
>
>                 Key: PDFBOX-1443
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-1443
>             Project: PDFBox
>          Issue Type: Bug
>            Reporter: Dave Smith
>
> We are not processing the following segment correctly.. I have added the -> and command
for clarity
> q   -> GSave
> Q   -> QRestore
> q   -> GSave
> W   -> ClipNonZeroRule
> 0 0 m  -> MoveTo
> 612 0 l -> LineTo
> 612 792 l -> LineTo
> 0 792 l   -> LineTo
> h   ->  ClosePath
> n    -> EndPath
> q    -> GSave
> 612 0 0 792 0 0 cm  ->Concatenate
> /I13 Do   -> Invoke
> Q   -> QRestore
> Q   -> QRestore
> The problem is 'W' or ClipNonZeroRule. According to the spec 8.5.4 
> Although the clipping path operator appears before the painting operator, it shall not
alter the clipping path at the point where it appears. Rather, it shall modify the effect
of the succeeding painting operator. After the path has been painted, the clipping path in
the graphics state shall be set to the intersection of the current clipping path and the newly
constructed path.
> About the n (EndPath) operator 
> The n operator (see Table 60) is a no-op path-painting operator; it shall cause no marks
to be placed on the page, but can be used with a clipping path operator to establish a new
clipping path. That is, after a path has been constructed, the sequence W n shall intersect
that path with the current clipping path and shall establish a new clipping path.
> Currently in ClipNonZeroRule.java and ClipEvenOddRule.java we do 
> drawer.setClippingPath(GeneralPath.WIND_NON_ZERO); 
> This applies the current path and resets. 
> I believe we should ...
>             drawer.setCurrentWindingRule(GeneralPath.WIND_NON_ZERO);
> and 
>             drawer.setCurrentWindingRule(GeneralPath.WIND_NON_ZERO);
> and in PageDrawer.java add
>  int currentWindingRule = -1;
>     
>     public void setCurrentWindingRule(int windingRule)
>     {
>     	currentWindingRule=windingRule;
>     }
>     
>     public void setClippingWindingRule()
>     {
>     	if(currentWindingRule == -1)
>     	{
>     		return;
>     	}
>     	setClippingPath(currentWindingRule);
>     	currentWindingRule=-1;
>     }
> Then in EndPath.java
>  drawer.setClippingWindingRule(); 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message