[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Re : loop through cairo_path_data_t
- From: HyperHacker <hyperhacker@...>
- Date: Thu, 21 Oct 2010 12:42:12 -0600
On Thu, Oct 21, 2010 at 12:15, W Wlourf <wlourf1@yahoo.com> wrote:
> Hello Hakki,
>
> Thanks for your answer, and for your bindings !
>
> The way I've done it in python, with pyCairo is like that :
> ****
> i=0
> path=ctx.copy_path()
>
> for type, points in ctx.copy_path():
> i+=1
> if type == cairo.PATH_MOVE_TO:
> if first:
> ctx.new_path()
> first = False
>
> x, y = function(*points)
> ctx.move_to(x, y)
>
> elif type == cairo.PATH_LINE_TO:
> x, y = function(*points)
> ctx.line_to(x, y)
>
> elif type == cairo.PATH_CURVE_TO:
> x1, y1, x2, y2, x3, y3 = points
> x1, y1 = function(x1, y1)
> x2, y2 = function(x2, y2)
> x3, y3 = function(x3, y3)
> ctx.curve_to(x1, y1, x2, y2, x3, y3)
>
> elif type == cairo.PATH_CLOSE_PATH:
> ctx.close_path()
> ***
>
> It's inspired from this file :
> /usr/share/doc/python-cairo/examples/warpedtext.py
>
>
> For the previous script, it doesn't work! I think it's because I run it from
> conky (not with the lua command),so maybe some implementations are missing
> in conky.
>
> I've got errors at this line (attempt to index global 'cairo' (a nil value))
> :
> local headertype = cairo.path_data_header_type(path, i)
>
> or with this
> local headertype = cairo_path_data_header_type(path, i)
>
> And the beginnig of the script is :
> local i = 0
> local numdata = path.num_data
>
> while i < numdata do
> -- data = &path->data[i];
> local headertype = cairo_path_data_header_type(path, i)
> ...
>
> As I said, I run it from conky so the problem can be here . I will try to
> run it directly with lua next week!
> thanks again!
>
>
>
> ________________________________
> De : Hakki Dogusan <dogusanh@tr.net>
> À : lua-l@lists.lua.org
> Envoyé le : Mer 20 octobre 2010, 9h 57min 13s
> Objet : Re: loop through cairo_path_data_t
>
> Hi,
>
> (Small modification in previous example)
>
> 20/10/2010 10:37, Hakki Dogusan wrote:
>> Hi,
>> [snip]
>>>
>>
>> Will something like as follows work for you?
>>
>> -------------------------------------------------------------------------
>
> -- cairo_path_t *path;
> -- cairo_path_data_t *data;
>
> local path = cairo.copy_path (cr);
>
> local i = 0
> local numdata = cairo.path_num_data(path)
>
> while i < numdata do
> -- data = &path->data[i];
> local headertype = cairo.path_data_header_type(path, i)
>
> if headertype == CAIRO.PATH_MOVE_TO then
>
> local x,y = cairo.path_data_point(path, i, 1)
>
> do_move_to_things (x, y);
>
> elseif headertype == CAIRO.PATH_LINE_TO then
>
> local x,y = cairo.path_data_point(path, i, 1)
>
> do_line_to_things (x, y);
>
> elseif headertype == CAIRO.PATH_CURVE_TO then
>
> local x1,y1 = cairo.path_data_point(path, i, 1)
> local x2,y2 = cairo.path_data_point(path, i, 2)
> local x3,y3 = cairo.path_data_point(path, i, 3)
>
> do_curve_to_things (x1, y1, x2, y2, x3, y3);
>
> elseif headertype == CAIRO.PATH_CLOSE_PATH then
>
> do_close_path_things ();
>
> end
>
> local headerlength = cairo.path_data_header_length(path, i)
> i = i + headerlength
> end
>
> cairo.path_destroy (path);
>
>> -------------------------------------------------------------------------
>
> --
> Regards,
> Hakki Dogusan
>
>
>
Conky seems to have some quirks in its Lua support. Some of my scripts
mysteriously fail if it's not started from a terminal.
--
Sent from my toaster.