On 26.07.2011 19:31, W Wlourf wrote:
> Hi, 
> 
> 
> Thanks for your answer. 
> 
> I think I have a wrong version of awesome (awesome debian/3.4.6-1 (Hooch)) 
> because I didn't manage to install oopango and the textbox.lua is not the 
> same as in your message.

Uhm, 3.4.6 doesn't use oocairo, only the git/master branch does so.

> Anyway, I will use the function cr:show_text(), thank for the tip. It's for 
> writing vertical text from bottom to top. It's quite easy with :
>     cr:translate(w/2,h/2)
>     cr:rotate(-math.pi/2)

How does this work with awesome 3.4.6? Oo

> Browing the oocairo lib, I found theses functions :
> scaled_font_create, font_options_create, toy_font_face_create
> Do you know where I can find
> documentation on theses functions. I think I can change the font with
> them but didn't find how to do !
> Forget that, I just found "man lua-oocairo" if someone has the same question 
> ! I will read that now!

Most functions are straight-forward wrappers of the cairo C api.

http://cairographics.org/manual/

> I don't know if the text API is
> buggy but I had fun with it when I used it with Conky
> (http://wlourf.deviantart.com/gallery/28062900#/d36njc0 it's an
> example, not a conky).
> I've just had problems with "cairo_text_extents" method which is difficult 
> too understand (for me).

In the C API, this just returns the extents of said text. Sounds easy to me.

oocairo wraps this as 'local result = cr:text_extents("foo")'. result will be a
table with the relevant fields ("x_bearing", "y_bearing", "width", "height",
"x_advance", "y_advance").

Cheers,
Uli

> ----- Mail original -----
>> De : Uli Schlachter <psyc...@znc.in>
>> À : awesome@naquadah.org
>> Cc : 
>> Envoyé le : Samedi 23 Juillet 2011 9h20
>> Objet : Re: text with oocairo
>>
>> On 23.07.2011 00:24, W Wlourf wrote:
>>>  I'm looking for an example for drawing a text with oocairo. Is it 
>> possible ?
>>
>> Let's look at what awesome is doing (wibox/widget/textbox.lua):
>>
>> The "magic" starts in the function draw(). I'll inline all the 
>> various functions
>> here, in the code there is more than one function, because similar code is
>> needed for getting the text extents:
>>
>> local l = oopango.cairo.layout_create(cr) -- We are drawing to this context
>> l:set_alignment("left") -- Align left (not right or center)
>> l:set_ellipsize("end") -- Shorten the text at the end if too long
>> l:set_wrap("word_char") -- Try wrapping at words, but use chars if 
>> necessary
>> l;set_width(width) -- Available width for the text
>> l:set_height(height) -- Available height
>> l:set_font_description(beautiful.get_font("font name here, leave empty for 
>> default")
>> if markup then
>>    l:set_markup(text)
>> else
>>    l:set_text(text)
>> end
>>
>> [Here comes some magic to align text vertically, can be found at the end of
>> setup_layout() if you really care]
>>
>> oopango.cairo.update_layout(cr, layout)
>> oopango.cairo.show_layout(cr, layout)
>>
>> And the text is drawn. :-)
>>
>> All the various set_foo() calls can be skipped to use the defaults. So if you
>> just want to say "Hi":
>>
>> local l = oopango.cairo.layout_create(cr)
>> l:set_text("Hi")
>> oopango.cairo.update_layout(cr, layout)
>> oopango.cairo.show_layout(cr, layout)
>>
>>
>> The difference between set_markup and set_text is that set_text doesn't
>> interpret pango markup. This means that <b>Hi</b> would be drawn 
>> as-is by
>> set_text() while set_markup() would show "Hi" in bold.
>>
>> For the other set_foo() calls, check out the pango documentation:
>>
>> http://developer.gnome.org/pango/stable/pango-Layout-Objects.html
>>
>> This is what beautiful.get_font() basically does:
>>
>> return oopango.font_description_from_string(name)
>>
>> This is pango_font_description_from_string() in the C API:
>>
>> http://developer.gnome.org/pango/stable/pango-Fonts.html#pango-font-description-from-string
>>
>>
>> I hope this helps you with drawing text with oopango. May I ask what you are
>> trying to do?
>>
>> Uli
>>
>> P.S.: There was an API change in oopango. Your version might use
>> oopango.cairo_update_layout and oopango.cairo_show_layout instead of the 
>> above
>> version with an extra dot.
>>
>> P.P.S.: You asked about drawing text with oocairo. The cairo devs say their 
>> text
>> API is only a toy and shouldn't be used, because it got lots of 
>> shortcomings. If
>> you *really* want to draw text with oocairo, use:
>>   cr:show_text("Hi")
>>
>> P.P.P.S: All the text drawing uses the current point for the text position. 
>> So
>> use cr:move_to(x, y) for positioning the text.
>>
>> -- 
>> - Buck, when, exactly, did you lose your mind?
>> - Three months ago. I woke up one morning married to a pineapple.
>>   An ugly pineapple... But I loved her.
>>
>> -- 
>> To unsubscribe, send mail to awesome-unsubscr...@naquadah.org.
>>
> 


-- 
- Buck, when, exactly, did you lose your mind?
- Three months ago. I woke up one morning married to a pineapple.
  An ugly pineapple... But I loved her.

-- 
To unsubscribe, send mail to awesome-unsubscr...@naquadah.org.

Reply via email to