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

ASF subversion and git services commented on PDFBOX-1915:
---------------------------------------------------------

Commit 1615722 from [~tilman] in branch 'pdfbox/trunk'
[ https://svn.apache.org/r1615722 ]

PDFBOX-1915: fix BBox if coordinates are inverted; add BBox to shading 1,3,6,7 
as suggested by Shaola Ren; drop empty BBox because of trouble with eci file

> Implement shading with Coons and tensor-product patch meshes
> ------------------------------------------------------------
>
>                 Key: PDFBOX-1915
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-1915
>             Project: PDFBox
>          Issue Type: Improvement
>          Components: Rendering
>    Affects Versions: 1.8.5, 1.8.6, 2.0.0
>            Reporter: Tilman Hausherr
>            Assignee: Shaola Ren
>              Labels: graphical, gsoc2014, java, math, shading
>             Fix For: 2.0.0
>
>         Attachments: CIB-coons-vs-tensormesh.pdf, CIB-coonsmesh.pdf, 
> CONICAL.pdf, DECAHED.pdf, GWG060_Shading_x1a.pdf, GWG060_Shading_x1a_1.png, 
> HSBWHEEL.pdf, Kommunikationsbedingungen-Einlagen_FIDOR-Bank.pdf, 
> LATTICE1.pdf, LATTICE2.pdf, McAfee-ShadingType7.pdf, 
> Shading2Function2LargeDomain.pdf, Shading2Function2LargeDomain.pdf-1-bad.png, 
> Shading2Function2LargeDomain.pdf-1-good.png, Shading2Function2LargeDomain.ps, 
> Shadingtype6week1.pdf, TENSOR.pdf, TRITYP4.pdf, XYZsweep.pdf, 
> _gwg060_shading_x1a.pdf-1.png, _mcafee-shadingtype7.pdf-1.png, 
> asy-coons-but-really-tensor.pdf, asy-tensor-rainbow.pdf, asy-tensor.pdf, 
> axsh02.pdf, axsh02_1_withBBox.png, axsh02_1_withoutBBox.png, ch14.pdf, 
> coons-function.pdf, coons-function.ps, coons-nofunction-CMYK.pdf, 
> coons-nofunction-CMYK.ps, coons-nofunction-Duotone.pdf, 
> coons-nofunction-Duotone.ps, coons-nofunction-Gray.pdf, 
> coons-nofunction-Gray.ps, coons-nofunction-RGB.pdf, coons-nofunction-RGB.ps, 
> coons2-function.pdf, coons2-function.ps, coons4-function.ps, crestron-p9.pdf, 
> eci_altona-test-suite-v2_technical_H.pdf, example_030.pdf, failedTest.rar, 
> lamp_cairo.pdf, lamp_cairo7_0.png, lamp_cairo7_1.png, lamp_cairo7_1.png, 
> lineRasterization.jpg, mcafeeU5.pdf, mcafeeU5_1.png, mcafeeu5.pdf-1.png, 
> pass4FlagTest.rar, patchCases.jpg, patchMap.jpg, 
> pattern-shading-2-4-idMatrix.pdf, shading6ContourTest.rar, shading6Done.rar, 
> shading7.rar, tensor-nofunction-RGB.pdf, tensor-nofunction-RGB.ps, 
> tensor-nofunction-RGB_1.png, tensor4-nofunction.pdf, tensor4-nofunction.ps, 
> tensor4-nofunction_1.png, type45.pdf, updateshading6ContourTest.rar
>
>
> Of the seven shading methods described in the PDF specification, type 6 
> (Coons patch meshes) and type 7 (Tensor-product patch meshes) haven't been 
> implemented. I have done type 1, 4 and 5, but I don't know the math for type 
> 6 and 7. My math days are decades away.
> Knowledge prerequisites: 
> - java, although you don't have to be a java ace, just feel confortable
> - math: you should know what "cubic Bézier curves", "Degenerate Bézier 
> curves", "bilinear interpolation", "tensor-product", "affine transform 
> matrix" and "Bernstein polynomials" are, or be able to learn it
> - maven (basic)
> - svn (basic)
> - an IDE like Netbeans or Eclipse or IntelliJ (basic)
> - ideally, you are either a math student who likes to program, or a computer 
> science student who is specializing in graphics.
> A first look at PDFBOX: try the command utility here:
> https://pdfbox.apache.org/commandline/#pdfToImage
> and use your favorite PDF, or the PDFs mentioned in PDFBOX-615, these have 
> the shading types that are already implemented.
> Some simple source code to convert to images:
> String filename = "blah.pdf";
> PDDocument document = PDDocument.loadNonSeq(new File(filename), null);
> List<PDPage> pdPages = document.getDocumentCatalog().getAllPages();
> int page = 0;
> for (PDPage pdPage : pdPages)
> {
> ++page;
> BufferedImage bim = RenderUtil.convertToImage(pdPage, 
> BufferedImage.TYPE_BYTE_BINARY, 300);
> ImageIO.write(bim, "png", new File(filename+page+".png"));
> }
> document.close();
> You are not starting from scratch. The implementation of type 4 and 5 shows 
> you how to read parameters from the PDF and set the graphics. You don't have 
> to learn the complete PDF spec, only 15 pages related to the two shading 
> types, and 6 pages about shading in general. The PDF specification is here:
> http://www.adobe.com/devnet/pdf/pdf_reference.html
> The tricky parts are:
> - decide whether a point(x,y) is inside or outside a patch
> - decide the color of a point within the patch
> To get an idea about the code, look at the classes GouraudTriangle, 
> GouraudShadingContext, Type4ShadingContext and Vertex here
> https://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/
> or download the whole project from the repository.
> https://pdfbox.apache.org/downloads.html#scm
> If you want to see the existing code in the debugger with a Gouraud shading, 
> try this file:
> http://asymptote.sourceforge.net/gallery/Gouraud.pdf
> Testing:
> I have attached several example PDFs. To see which one has which shading, 
> open them with an editor like NOTEPAD++, and search for "/ShadingType" 
> (without the quotes). If your images are rendering like the example PDFs, 
> then you were successful.
> Optional:
> Review and optimize the complete shading package for speed; implement cubic 
> spline interpolation for type 0 (sampled) functions (that one is really 
> low-low priority, see details by looking up "cubic spline interpolation" in 
> the PDF spec, which tells that it is disregarded in printing, and I don't 
> have a test PDF).
> Mentor: Tilman Hausherr (European timezone, languages: german, english, 
> french)



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to