On 25 March 2013 11:45, Tristan Bourgois <tristan.bourg...@gmail.com> 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, or set the text font via text attributes, e.g.: text addAttribute: (TextFontReference toFont: (LogicalFont familyName: 'Arial' pointSize: 10)) -- Best regards, Igor Stasenko.