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.

Reply via email to