Hello,The function is something used mostly by shading types 1, 2 and 3. It uses as input either the coordinates, or the result of a formula based on them. Enter "FunctionType" in the PDF spec.
Re: the proposal, no I don't have a sample. I don't even know how the google format looks like. What I'd expect to see is your background, what you are studying, what are you mostly focused on in these studies, what are your skills / experiences, and why do you think you're "the one" for this project. And maybe a few lines how you're going to crack the two core problems (1. point inside/outside, 2. color). If you don't know, then maybe a few lines explaining what you will want to learn to know it.
Tilman Am 12.03.2014 14:39, schrieb Thimal Kempitiya:
Hi Tilman, Thanks for the feedback. What you mean by the function calculations is it function evaluation method can you please give more information on it. About the proposal what advise can you give, is there specific way that pdfbox expect apart form the gsoc format and is there any sample proposal that we can get idea about writing proposal. On Sun, Mar 9, 2014 at 8:42 PM, Tilman Hausherr <[email protected]>wrote:Hello, Yes this is an interesting idea. It would save the recalculation of "y1y0 * (y + j - coords[1])" everytime. (Unless the java compiler detects this already) But don't expect too much from it - I believe more time is lost in function calculation (at least for types 1, 2 and 3 where functions are mandatory). Tilman Am 09.03.2014 15:12, schrieb Thimal Kempitiya: Thanks Tilmanfor optimization in speed I think we need to facus on methods which use again and again like getRaster for the axial shading part current implementation in the getRaster method we calculate the x' value for the raster inside the for by for loop for (int j = 0; j < h; j++) { for (int i = 0; i < w; i++) { useBackground = false; double inputValue = x1x0 * (x + i - coords[0]); inputValue += y1y0 * (y + j - coords[1]); but all the time changing happen in the i and j values and they vary from 0<j<h and 0<i<w so the contribution form i and j values can be calculation in separate 2 for loops which run from 0 to h and 0 to w and calculate these values separately and put them in 2 arrays and when we need to evaluate we can add to the input value this will reduce the calculations inside the for by for loop and put them inside a 2 for loops this may be speed up the axial shading what you think about it On Fri, Mar 7, 2014 at 11:44 PM, Tilman Hausherr <[email protected]wrote:Am 07.03.2014 15:03, schrieb Thimal Kempitiya:Thanks Tilman for the feedbackhttp://www.particleincell.com/blog/2012/quad-interpolation/ seems like opposite of what we are going need to check whether its work with this by implementing it (but can easily implement if we used library with matrix manipulations) This is really up to you :-) Re: the pure math parts, its rather mewho is learning something. Re: library, you can use the java standard library, or any library with Apache license or compatible license. can I know more about the optional part in the issue"Optional: Review and optimize the complete shading package; implement cubic spline interpolation for type 0 (sampled) functions." where I can get more information about the cubic spline interpolation for type 0 (sampled) functions and in what aspects do you expect the optimization. Optimization for speed. Especially the axial shading. It gets slow whenthe shaded area is very large. The cubic spline interpolation is mentioned in the PDF spec at the type 0 (sampled) functions, it is the part where order = 3. In the PDF spec, search for it, or for "Additional entries specific to a type 0 function dictionary". Its really just a "nice to have" and of low priority. There's a note from adobe telling that it is not done for printing. TilmanOn Tue, Mar 4, 2014 at 10:13 PM, Tilman Hausherr <[email protected]wrote:Am 04.03.2014 15:19, schrieb Thimal Kempitiya:Hi, I checked the code related to the shading and studied the pdf specrelated to the type 6. As I see it is going same as the type 4 From what I feel this is need to be done correct me if I'm wrong first need to get the 12 control points and colors related to each unit from stream Yescreate the 4 cubic Bézier curves which are boundaries of each patch ( to find a Bézier curve it need 4 control points, two points are part ofthe curve ) Yes, although they are not painted as a curve, the curve is part of aformula to find out whether a point is inside or outside the patch. given point need to find the point which patch (I think this can be done[1]<http://en.wikipedia.org/wiki/Plane_%28geometry%29>but needresearch on that) find the color of the point using bi linear interpolation Probably. Although I'm not sure if the bilinear interpolation is thesame as used for a rectangle. http://www.particleincell.com/blog/2012/quad-interpolation/ I also don't know if the curves needs to be taken into account. This has the same structure as the other shading types but need to structure to keep Bézier curves and patchesand patches are connected as in the type4 Yes, the data structure is similar. You can use existing code and dolot of copy & paste there, although there is some rearrangement needed as there are more points. I have to study the type 7 but I think its similar to thisAccording to the spec, type 6 is a special case of type 7. I cannottell whether it is enough to implement type 7 only and derive type 6 from it, i.e. I don't know if the performance would be worse. Tilman please give feedback on my approach[1]http://en.wikipedia.org/wiki/Plane_%28geometry%29<http ://en.wikipedia.org/wiki/Plane_%28geometry%29> On Sun, Mar 2, 2014 at 11:18 AM, Thimal Kempitiya < [email protected] wrote:yeah I'm using trunk code(2.0) and I wanted to render the imagegot it, thanks. I'm currently studying the 1 to 5 shading implementations andthe pdf spec related to 6 and 7 type shading and i'll buzz you if i got issue. Once again thanks for quick reply On Sat, Mar 1, 2014 at 2:38 AM, John Hewson <[email protected]> wrote: You'll need to use the latest 2.0.0 snapshot jar, which is the unstable version from trunkand the place where new development occurs. -- John On 28 Feb 2014, at 05:04, Thimal Kempitiya <[email protected]> wrote: Hi, I'm Thimal Kempitiya, third year computer science and engineeringundergraduate at university of moratuwa. I'm interested in the project idea"implement shading with Coons and tensor-product patch meshes". Ihave thebasic knowledge about the cubic Bézier curves", , "bilinearinterpolation"," and "Bernstein polynomials and i think can manage rest of themathematicsneeded for this project. Also I have the java knowledge to do theimplementation part. I clone the PDFBOX repository and checked the code regarding to the shadingand I tried some examples in pdfbox cook book.Also I tried code to work with the type 1 shading type. File f=new File("C:\\asy-latticeshading.pdf"); try { PDDocument doc=PDDocument.load(f); PDPage p; p=(PDPage)doc.getDocumentCatalog(). getAllPages().get(0); PDShadingType1 pdst1=new PDShadingType1(p. getCOSDictionary()); PDRectangle pdr=p.findCropBox(); PDGraphicsState pdg=new PDGraphicsState(pdr); Matrix m=pdg.getCurrentTransformationMatrix(); Type1ShadingPaint t1sp=new Type1ShadingPaint(pdst1, m, (int)p.findCropBox().getHeight()); But this give me error saying unknown shading type 0 java.io.IOException: Error: Unknown shading type 0 can you please tell me what I'm doing wrong here and how can i solve this.--*Thimal Kempitiya <http://www.facebook.com/thimalk> UndergraduateDepartmentof Computer Science and Engineering University of Moratuwa.*--*Thimal Kempitiya <http://www.facebook.com/thimalk> UndergraduateDepartment of Computer Science and Engineering University of Moratuwa.*
