Subject Re: OT: AggPasMod - a "modernized" AggPas fork
From Mattias Andersson <mattias@centaurix.com>
Date Mon, 26 Mar 2012 23:19:15 +0200
Newsgroups graphics32.general

Hi Christian,

Christian-W. Budde wrote:

> Under https://sourceforge.net/projects/aggpasmod/ I just published my
> fork of AggPas (based itself on Anti-Grain Geometry), which is another
> graphic library with a focus on vector graphics (beside other features
> that can be found in GR32 as well).
>
> The project is not perfectly compatible with the original releases,
> since I converted objects to classes/records and applied the Object
> Pascal Style Guide (see edn.embarcadero.com/article/10280) where
> possible. However, it should be fairly possible to convert existing
> projects using AggPas to the new "modernized" version.

Ah, this is an excellent initiative. Agg is a great library and the ported  
code looks very clean and well-structured.

> Note that the project ships without .dproj files (see
> http://delphitools.info/2011/11/10/dont-publish-your-dproj-groupproj/
> for the reason why). Thus paths must be adapted by the user and
> eventually example images must be copied manually in order to test some
> of the simple examples.

Note to self: check existing open source projects for .dproj files. ;)

> The project also contains a firemonkey canvas implementation, which can
> be used as a replacement for existing backends in FireMonkey HD
> applications. Although it should work for some simple examples, it is
> still only a proof of concept, which is likely to fail for large
> applications, especially when it comes to performance.

Very cool -- I did this myself (with VPR), so I know that you've invested  
a lot of time in this. I should try

> Speaking of performance, the fork has been slightly optimized using
> assembler language where suitable. In some simple cases a performance
> gain of factor 10 can be shown, but even with this the library is rather
> slow, especially if compared to solutions with GR32 in combination with
> VPR (for example), which are written directly in the pascal language.

I remember that I was benchmarking a library that was called "AggLite",  
which was performing slightly better than AggPas. It didn't perform as  
well as VPR, but in some of the tests it was almost comparable (e.g. when  
rendering text.) Of course, unless I'm mistaken, AGG's rasterizer is based  
on the FreeType engine, so perhaps it explains the good text rendering  
performance.

> One main goal of my approach was to understand how things work in AggPas
> / Anti-Grain Geometry. I hope to be able to transfer some of the
> knowledge (and not the code) into either GR32 / VPR, especially in
> regards of text rendering / font typography.

Maybe you would be interested in collaborating on my FMX.Canvas.VPR  
project? I know that the implementation still has some issues that need to  
be fixed.

Henri Gourvest sent me a notification about his "embedded chromium" web  
browser, which has a good demo project that shows some of the rendering  
problems when using FMX.Canvas.VPR:

http://code.google.com/p/delphichromiumembedded/

I was planning to do further debugging to try to fix these issues, but  
I've been too occupied with other projects.

Text rendering is a very interesting subject -- there are so many  
different aspects (antialiasing, cleartype rendering, kerning, subpixel  
alignment, spline to polygon conversion, complex scripts, etc.)

Mattias