Congratulations!

Cheers,
Mario

2015-03-05 23:50 GMT+01:00 Jim Graham <james.gra...@oracle.com>:
> Some progress!  It looks like Laurent is now an official committer to the
> graphics-rasterizer project!
>
> http://openjdk.java.net/census#lbourges
>
> Have you gotten access to http://cr.openjdk.java.net/~lbourges/ yet?
>
>                         ...jim
>
>
> On 2/26/15 2:41 AM, Mario Torre wrote:
>>
>> Hi Laurent,
>>
>> Let's move the process forward so that you can become an Author, at
>> that point you'll be able to file bug reports and create webrevs:
>>
>> http://openjdk.java.net/projects/#project-author
>>
>> I don't know what was decided regarding the specific project, but
>> since Jim is lead of the rasteriser project and I believe the general
>> consensus was for you to start from there, this may be the appropriate
>> forum, here are some links:
>>
>> http://openjdk.java.net/census#graphics-rasterizer
>>
>> http://openjdk.java.net/projects/graphics-rasterizer/
>>
>> http://mail.openjdk.java.net/mailman/listinfo/graphics-rasterizer-dev
>>
>> As soon as this process is done, you'll be finally free from a lot of
>> this crazy overhead :)
>>
>> @Jim, @Phil is that right?
>>
>> Cheers,
>> Mario
>>
>> 2015-02-26 9:31 GMT+01:00 Laurent Bourgès <bourges.laur...@gmail.com>:
>>>
>>> Jim,
>>>
>>> I made a Path2D patch but I sent the webrev by email.
>>> Did you got it ? Could you review it ?
>>>
>>> I got a size limit issue: Your message to 2d-dev awaits moderator
>>> approval !
>>>
>>> Looking forward having an openjdk id ro push my webrev to cr.openjdk.net
>>> !
>>>
>>> Regards,
>>> Laurent
>>>
>>> Le 25 févr. 2015 02:06, "Jim Graham" <james.gra...@oracle.com> a écrit :
>>>>
>>>>
>>>> Those changes were exactly what I was referring to.  I don't see why we
>>>> shouldn't make trimmed arrays when copying the shape.  I'm pretty sure
>>>> that
>>>> the copy constructors are going to be overwhelmingly used to make a
>>>> protected copy of an existing shape/path2d which is likely meant mostly
>>>> for
>>>> reading.  In particular, in the case of the return value from
>>>> createStrokedShape() I don't think the intention is to create the shape
>>>> and
>>>> then scribble on it, the intent is to treat the answer as if it were
>>>> immutable - at least the 99.9% case - so I think a perfectly sized shape
>>>> is
>>>> OK.
>>>>
>>>> Be sure to add a test case that creates an empty Path2D, clones it, copy
>>>> constructs it (to both .Double() and .Float() variants) and then tries
>>>> to
>>>> add new segments to it - to make sure that the array growth code doesn't
>>>> get
>>>> ArrayIndexOutOfBounds exceptions due to making assumptions about the
>>>> lengths
>>>> of the arrays (I eyeballed the makeRoom() code and it looks good, but we
>>>> should test it if we are making arrays that are potentially zero length
>>>> or
>>>> very tiny)...
>>>>
>>>>                          ...jim
>>>>
>>>> On 2/24/15 9:58 AM, Laurent Bourgčs wrote:
>>>>>
>>>>>
>>>>> Jim,
>>>>>
>>>>>> Ah, wait, those constructors do copy the arrays without having to
>>>>>> iterate the segments and grow the arrays, but they don't trim them.
>>>>>> I'm
>>>>>> trying to remember if there was a specific reason that we decided not
>>>>>> to
>>>>>> trim the arrays in those constructors, but the only "advantage" I can
>>>>>> think
>>>>>> of is that the new copy will have the same potential spare room for
>>>>>> growth
>>>>>> that the original had.  But that is of questionable value so we should
>>>>>> probably just patch the existing "construct from a Shape" constructors
>>>>>> to
>>>>>> trim the arrays to the required length instead...
>>>>>
>>>>>
>>>>>
>>>>> In marlin github, I have the patched Path2D class (not used at
>>>>> runtime):
>>>>>
>>>>> public Float(Shape s, AffineTransform at) {
>>>>>               super(); // LBO: invoke empty constructor explicitely !
>>>>>               if (s instanceof Path2D) {
>>>>>                   Path2D p2d = (Path2D) s;
>>>>>                   setWindingRule(p2d.windingRule);
>>>>>                   this.numTypes = p2d.numTypes;
>>>>>                   // LBO: trim arrays:
>>>>>                   this.pointTypes = Arrays.copyOf(p2d.pointTypes,
>>>>> this.numTypes);
>>>>> // this.pointTypes = Arrays.copyOf(p2d.pointTypes,
>>>>> // p2d.pointTypes.length);
>>>>>                   this.numCoords = p2d.numCoords;
>>>>>                   this.floatCoords = p2d.cloneCoordsFloat(at);
>>>>>               } else {
>>>>>                   PathIterator pi = s.getPathIterator(at);
>>>>>                   setWindingRule(pi.getWindingRule());
>>>>>                   this.pointTypes = new byte[INIT_SIZE];
>>>>>                   this.floatCoords = new float[INIT_SIZE * 2];
>>>>>                   append(pi, false);
>>>>>               }
>>>>>           }
>>>>>
>>>>> float[] cloneCoordsFloat(AffineTransform at) {
>>>>>               float ret[];
>>>>>               if (at == null) {
>>>>>                   // LBO: trim arrays:
>>>>>                   ret = Arrays.copyOf(floatCoords, numCoords);
>>>>> // ret = Arrays.copyOf(this.floatCoords, this.floatCoords.length);
>>>>>               } else {
>>>>>                   // LBO: trim arrays:
>>>>>                   ret = new float[numCoords];
>>>>> // ret = new float[floatCoords.length];
>>>>>                   at.transform(floatCoords, 0, ret, 0, numCoords / 2);
>>>>>               }
>>>>>               return ret;
>>>>>           }
>>>>>
>>>>> What do you think?
>>>>>
>>>>> FYI my use case in createStrokedShape () is to allocate (and reuse) a
>>>>> path2d (4k arrays), fill it and then return a new path whose arrays are
>>>>> trimmed.
>>>>>
>>>>> Laurent
>>>>>
>>>
>>
>>
>>
>



-- 
pgp key: http://subkeys.pgp.net/ PGP Key ID: 80F240CF
Fingerprint: BA39 9666 94EC 8B73 27FA  FC7C 4086 63E3 80F2 40CF

Java Champion - Blog: http://neugens.wordpress.com - Twitter: @neugens
Proud GNU Classpath developer: http://www.classpath.org/
OpenJDK: http://openjdk.java.net/projects/caciocavallo/

Please, support open standards:
http://endsoftpatents.org/

Reply via email to