Begin forwarded message:
> From: Igor Stasenko <[email protected]> > Subject: Re: Some question and request for Athens > Date: March 25, 2013 2:57:33 PM GMT+01:00 > To: Tristan Bourgois <[email protected]> > Cc: Stéphane Ducasse <[email protected]>, LE PORS Eric > <[email protected]> > > On 25 March 2013 11:45, Tristan Bourgois <[email protected]> wrote: >> Hi Igor! >> >> I have some questions and request for Athens :) >> >> 1 Do exist a possibility in Athens to draw a Surface on a Surface? >> For example : >> aSurf drawSurface: anOtherSurface at: aPosition >> (I need it for draw image on a surface) > > yes. You can use Forms or surfaces as paints so they act like 2D textures: > > canvas setPaint: someSurface. > canvas drawShape: myRect. > >> >> 2 About my first question, I try to draw a png image on a Surface and >> I get some strange behavior. When nothing is applied on my first >> surface and draw the image in a rectangle path I crash the VM! >> This an example I tried and crash my VM: >> >> |surf pharoLogo ref path patternPaint| >> surf := AthensCairoSurface extent: 600@600. >> >> ref := 'pharo.png' asFileReference. >> pharoLogo := AthensCairoSurface createFromFile: ref fullName ifFailed:[nil]. >> >> surf drawDuring: [:can| >> surf clear. >> patternPaint := can setPaint: pharoLogo. >> patternPaint setExtend: #None. >> can drawShape: (0@0 extent: pharoLogo extent). >> ]. >> Display getCanvas drawImage: surf asForm at: 0@0. >> >> If you need more information about the crash and my environment ask it :) >> > weird... it should be working fine. > >> 3. Do exist something in Athens to create some text and get the extent >> of the text? I tried to draw text but I only succeed to draw a text >> without font (only width) and I don't found how to get the extent of >> this text :( This is really important for the next of the porting >> because I'm blocking on that and the textModel is not necessary for >> the next of my work because they already have a layoutManager for the >> text. >> > You can use freetype to measure text extent. Please look how i doing it with > AthensTextScanner. > Because the default methods of freetype using rounding for font size(s), > which is not really nice. > I added more precise methods, which do not do any rounding and using > them for measuring > text extent. > > Try this: > > text := 'asdsdgs' asText. > lines := (AthensTextComposer scan: text for: AthensTextScanner new) lines. > > lines first width. > > will give you the width. > > (but for that to work, your default font should be TTF font) > >> Thanks Igor :) >> >> Tristan >> >> PS: The porting advance as well :) I have animation and that's really >> amazing :) > > > > -- > Best regards, > Igor Stasenko.
