On 11 April 2013 10:44, Tristan Bourgois <tristan.bourg...@gmail.com> wrote: > > > > 2013/4/11 Igor Stasenko <siguc...@gmail.com> >> >> On 11 April 2013 08:55, Tristan Bourgois <tristan.bourg...@gmail.com> >> wrote: >> > >> > >> > >> > 2013/4/10 Igor Stasenko <siguc...@gmail.com> >> >> >> >> >> >> >> >> On 10 April 2013 09:14, Tristan Bourgois <tristan.bourg...@gmail.com> >> >> wrote: >> >>> >> >>> >> >>> >> >>> >> >>> 2013/4/9 Igor Stasenko <siguc...@gmail.com> >> >>>> >> >>>> Yes, this is a known bug actually, which i demonstrated to audience >> >>>> during >> >>>> tutorial presentation.. >> >>>> i/cairo miss the correct font matrix setup.. and i need to see what's >> >>>> there. >> >>>> Cairo caching the glyphs in a strange way (so if you never drawn >> >>>> anything with given font before and your first drawing will use some >> >>>> rotation >> >>>> then everything will be rendered correctly, but if you already drawn >> >>>> anything >> >>>> it will render them like you shown).. >> >>>> I'm going to fix that issue when i come back from Lviv. >> >>>> >> >>> >> >>> Super :) >> >>> >> >>> Did you also see the cairo_text_path() method? It's very interesting >> >>> if >> >>> you want to stroke the letter! >> >> >> >> >> >> Yes but this is more for fancy artistic text. For rendering large >> >> amounts >> >> of text (like big lists/source code) you don't want to do that, >> >> because it will be too slow. >> >> >> > >> > Thanks for the advice I will share it to my team because they want >> > performance and use text_path instead of show_text. >> > >> >> yes, the freetype library (and i guess you using it) is highly >> optimized for font rendering. >> sure thing, cairo path rendering is fast as well, but it is not as >> specialized for just font rendering as freetype, >> therefore, i have no doubts that it will be slower. >> >> > > > I only use Athens to rendering the graphics framework :) And I try to not > use directly some AthensCairo object to benefit of futur new backend of > Athens :) and sincerely you really make a good job of the Athens interface! > It's very easy to use it! In one case I use AthensCairo object. I have to > use AthensCairoMatrix instead of AthensAffineTransform to represent the > transformation of a shape because I have to make an inversion of the matrix > to make a global position to the local position of the shape. > Ah, you mean this:
AthensAffineTransform>>inverted "answer an inverse transformation of receiver" self notYetImplemented yes, someone has to implement it ;) But actually you can just use #inverseTransform: aPoint i.e. if: pt := m transform: somePoint. then somePoint closeTo: (m inverseTransform: pt) ==> true. (close to instead of #= because of float rounding errors) -- Best regards, Igor Stasenko.