\hypertarget{lua_script_8edc-example}{}\doxysection{lua\+\_\+script.\+edc}
This example shows the usage of lua scripting to create and animate some objects in the canvas.

This example shows the usage of lua scripting to create and animate some objects in the canvas.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{color\_classes \{}
\DoxyCodeLine{    color\_class \{ name: "{}test\_colour"{}; color: 255 255 255 255; \}}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{fonts \{}
\DoxyCodeLine{   font: "{}Vera.ttf"{} "{}default"{};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{images \{}
\DoxyCodeLine{    image: "{}bubble.png"{} COMP;}
\DoxyCodeLine{    image: "{}test.png"{} COMP;}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{collections \{}
\DoxyCodeLine{   group \{}
\DoxyCodeLine{      name: "{}main"{};}
\DoxyCodeLine{      lua\_script\_only: 1;}
\DoxyCodeLine{      lua\_script \{}
\DoxyCodeLine{         -\/-\/// stick object private/local vars here}
\DoxyCodeLine{         local D;}
\DoxyCodeLine{         local count = 0;}
\DoxyCodeLine{         local fndata = 99;}
\DoxyCodeLine{         local text\_geom;}
\DoxyCodeLine{}
\DoxyCodeLine{         -\/-\/// Functions to print tables.}
\DoxyCodeLine{         local print\_table, print\_table\_start;}
\DoxyCodeLine{}
\DoxyCodeLine{         function print\_table\_start(table, space, name)}
\DoxyCodeLine{            print(space .. name .. "{}: "{});}
\DoxyCodeLine{            print(space .. "{}\{"{});}
\DoxyCodeLine{            print\_table(table, space .. "{}  "{});}
\DoxyCodeLine{            print(space .. "{}\}"{});}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         function print\_table(table, space)}
\DoxyCodeLine{            for k, v in pairs(table) do }
\DoxyCodeLine{               if type(v) == "{}table"{} then}
\DoxyCodeLine{                  print\_table\_start(v, space, k);}
\DoxyCodeLine{               elseif type(v) == "{}string"{} then}
\DoxyCodeLine{                  print(space .. k .. ': "{}' .. v .. '"{};')}
\DoxyCodeLine{               else}
\DoxyCodeLine{                  print(space .. k .. "{}: "{} .. v .. "{};"{})}
\DoxyCodeLine{               end}
\DoxyCodeLine{            end}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         local function mycb3 (v)}
\DoxyCodeLine{            print("{}lua::callback transition "{} .. D.val .. "{} v: "{} .. v);}
\DoxyCodeLine{            d = \{\};}
\DoxyCodeLine{            d = edje.size(d);}
\DoxyCodeLine{            print("{}lua::objsize= "{} .. d.w .. "{} , "{} .. d.h);}
\DoxyCodeLine{            sz = \{w=v * 80, h=v * 40\};}
\DoxyCodeLine{            D.rect:geom(((d.w / 2) * math.sin(v * 2 * math.pi)) + ((d.w -\/ sz.w) / 2),}
\DoxyCodeLine{                        ((d.h / 2) * math.cos(v * 2 * math.pi)) + ((d.h -\/ sz.h) / 2),}
\DoxyCodeLine{                        sz.w, sz.h);}
\DoxyCodeLine{            D.rect:color(255, 128, v * 255, 255);}
\DoxyCodeLine{            d = D.rect:move(d);}
\DoxyCodeLine{            print("{}lua::pos= "{} .. d.x .. "{} , "{} .. d.y);}
\DoxyCodeLine{ }
\DoxyCodeLine{            r = D.rect:above();}
\DoxyCodeLine{            if (r \string~= nil) then}
\DoxyCodeLine{               print("{}lua::rcol"{});}
\DoxyCodeLine{               r:color(20, v * 255, 60, 255);}
\DoxyCodeLine{            else}
\DoxyCodeLine{               print("{}lua::r none!!!!!!!!!!!!!!1"{});}
\DoxyCodeLine{            end}
\DoxyCodeLine{            d = edje.size();}
\DoxyCodeLine{            D.clip:geom(10, 10, d.w -\/ 20, d.h -\/ 20);}
\DoxyCodeLine{            c = D.clip:clipees();}
\DoxyCodeLine{            for i=1,\#c,1 do}
\DoxyCodeLine{               d = c[i]:geom();}
\DoxyCodeLine{               print("{}lua::"{} .. i .. "{} geom = "{} .. d.x .. "{},"{} .. d.y .. "{} "{} .. d.w .. "{}x"{} .. d.h);}
\DoxyCodeLine{            end}
\DoxyCodeLine{            return true;  -\/-\/// repeat the timer}
\DoxyCodeLine{         end}
\DoxyCodeLine{ }
\DoxyCodeLine{         local function mycb2 ()}
\DoxyCodeLine{            print("{}lua::callback animator "{} .. count .. "{} seconds: "{} .. edje.seconds() .. "{} looptime: "{} .. edje.looptime());}
\DoxyCodeLine{            edje.color\_class("{}test\_colour"{}, 255, (count * 10) \% 255, 255, 255);}
\DoxyCodeLine{            edje.text\_class("{}test\_text\_class"{}, "{}Sans:style=Bold"{}, ((count * 3) \% 100) + 8);}
\DoxyCodeLine{            if (5 > (count \% 10)) then}
\DoxyCodeLine{               D.text:font("{}default"{}, 32);}
\DoxyCodeLine{            else}
\DoxyCodeLine{               D.text:font("{}Sans:style=Bold"{}, 32);}
\DoxyCodeLine{            end}
\DoxyCodeLine{            edje\_geom = edje.geom();}
\DoxyCodeLine{            text\_geom = D.text:geom();}
\DoxyCodeLine{            D.text:move((edje\_geom.w -\/ text\_geom.w) / 2, (edje\_geom.h -\/ text\_geom.h) / 8);}
\DoxyCodeLine{            return true;  -\/-\/// repeat the timer}
\DoxyCodeLine{         end}
\DoxyCodeLine{ }
\DoxyCodeLine{         local function mycb ()}
\DoxyCodeLine{            print("{}lua::callback timer "{} .. count .. "{} fndata = "{} .. fndata);}
\DoxyCodeLine{            count = count + 1; -\/-\/// keep count of calls -\/ object data}
\DoxyCodeLine{            fndata = fndata + 3; -\/-\/// play with object vars to see if they persist}
\DoxyCodeLine{            D.tim = edje.timer(0.25, mycb); -\/-\/// inside cb add new timer}
\DoxyCodeLine{            return false; -\/-\/// cease repeating the timer}
\DoxyCodeLine{         end}
\DoxyCodeLine{ }
\DoxyCodeLine{         -\/-\/// init object here}
\DoxyCodeLine{         D = \{\}; -\/-\/// data is empty table to start}
\DoxyCodeLine{         D.val = math.random(); -\/-\/// start with some random value so}
\DoxyCodeLine{         fndata = fndata + D.val; -\/-\/// func data start point}
\DoxyCodeLine{         print("{}lua::init ... "{} .. D.val);}
\DoxyCodeLine{         edje.echo("{}lua::echo('hello world')"{});}
\DoxyCodeLine{}
\DoxyCodeLine{         -\/-\/// How to check the edje version.}
\DoxyCodeLine{         version = edje.version();}
\DoxyCodeLine{         print("{}The edje version number is "{} .. version.major .. "{}."{} .. version.minor);}
\DoxyCodeLine{}
\DoxyCodeLine{         -\/-\/// actually add the timer to call mycb in 1.23 sec}
\DoxyCodeLine{         D.tim = edje.timer(1.23, mycb);}
\DoxyCodeLine{         D.tra = edje.transition(5.0, mycb3);}
\DoxyCodeLine{         D.ani = edje.animator(mycb2);}
\DoxyCodeLine{         edje\_geom = edje.geom();}
\DoxyCodeLine{ }
\DoxyCodeLine{         if (edje.spanky) then edje.spanky(); end}
\DoxyCodeLine{}
\DoxyCodeLine{         local date = edje.date();}
\DoxyCodeLine{         print("{}lua:: date: "{} ..}
\DoxyCodeLine{            date.year .. "{}|"{} ..}
\DoxyCodeLine{            date.month .. "{}|"{} ..}
\DoxyCodeLine{            date.day .. "{}|"{} ..}
\DoxyCodeLine{            date.yearday .. "{}|"{} ..}
\DoxyCodeLine{            date.weekday .. "{}|"{} ..}
\DoxyCodeLine{            date.hour .. "{}|"{} ..}
\DoxyCodeLine{            date.min .. "{}|"{} ..}
\DoxyCodeLine{            date.sec}
\DoxyCodeLine{         );}
\DoxyCodeLine{}
\DoxyCodeLine{         -\/-\/// send some random edje message}
\DoxyCodeLine{         edje.messagesend(7, "{}none"{}      );}
\DoxyCodeLine{         edje.messagesend(7, "{}sig"{},      "{}signal"{}, "{}source"{});}
\DoxyCodeLine{         edje.messagesend(7, "{}str"{},      "{}hello world"{});}
\DoxyCodeLine{         edje.messagesend(7, "{}int"{},      987);}
\DoxyCodeLine{         edje.messagesend(7, "{}float"{},    987.321);}
\DoxyCodeLine{         edje.messagesend(7, "{}strset"{},   \{"{}hello"{}, "{}there"{}, "{}world"{}\});}
\DoxyCodeLine{         edje.messagesend(7, "{}intset"{},   \{1, 2, 3\});}
\DoxyCodeLine{         edje.messagesend(7, "{}floatset"{}, \{1.1, 2.2, 3.3\});}
\DoxyCodeLine{         edje.messagesend(7, "{}strint"{},   "{}hello world"{}, 7);}
\DoxyCodeLine{         edje.messagesend(7, "{}strfloat"{}, "{}hello world"{}, 7.654);}
\DoxyCodeLine{         edje.messagesend(7, "{}strintset"{},"{}hello world"{}, \{1, 2, 3\});}
\DoxyCodeLine{}
\DoxyCodeLine{         D.edje = edje.edje();}
\DoxyCodeLine{         D.edje:file("{}plain/edje/group"{});}
\DoxyCodeLine{         D.edje:show();}
\DoxyCodeLine{                  }
\DoxyCodeLine{         D.rect = edje.rect();}
\DoxyCodeLine{         D.rect:geom  (5, 10, 50, 30);}
\DoxyCodeLine{         D.rect:color (255, 128, 60, 255);}
\DoxyCodeLine{         D.rect:show  ();}
\DoxyCodeLine{                  }
\DoxyCodeLine{         D.rect2 = edje.rect();}
\DoxyCodeLine{         D.rect2:geom  (50, 50, 50, 50);}
\DoxyCodeLine{         D.rect2:color (20, 30, 60, 120);}
\DoxyCodeLine{         D.rect2:show  ();}
\DoxyCodeLine{}
\DoxyCodeLine{         D.clip = edje.rect();}
\DoxyCodeLine{         D.clip:geom  (10, 10, 150, 150);}
\DoxyCodeLine{         D.clip:color (200, 200, 50, 200);}
\DoxyCodeLine{         D.clip:show  ();}
\DoxyCodeLine{ }
\DoxyCodeLine{         D.rect2:clip(D.clip);}
\DoxyCodeLine{         D.rect:clip(D.clip);}
\DoxyCodeLine{}
\DoxyCodeLine{         D.text = edje.text();}
\DoxyCodeLine{         D.text:geom  (50, 5, 150, 50);}
\DoxyCodeLine{         D.text:color (255, 0, 0, 255);}
\DoxyCodeLine{         D.text:font("{}Sans:style=Bold"{}, 32);}
\DoxyCodeLine{         D.text:text("{}Lua rocks!"{});}
\DoxyCodeLine{         text\_geom = D.text:geom();}
\DoxyCodeLine{         print(D.text:text());}
\DoxyCodeLine{         D.text:show();}
\DoxyCodeLine{}
\DoxyCodeLine{        -\/-\/// Put a few bogus API calls here to test the bogus API protection,}
\DoxyCodeLine{        -\/-\/// If the bogus API protection works, these should get ignored, but everything else runs smoothly.}
\DoxyCodeLine{        -\/-\/// Otherwise, the map is not done, the bubbles are not done, but the timers keep runinng.}
\DoxyCodeLine{         bogus.failme(1, "{}two"{}, D.rect);}
\DoxyCodeLine{         temp = bogus.failme2();}
\DoxyCodeLine{         D.text.bogus();}
\DoxyCodeLine{         edje.bogus2();}
\DoxyCodeLine{}
\DoxyCodeLine{         -\/-\/// Fun with maps!}
\DoxyCodeLine{         D.map = edje.map(4);  -\/-\/// 4 is the only supported map size at the moment.}
\DoxyCodeLine{         -\/-\/// These all do the same thing.}
\DoxyCodeLine{         -\/-\/// Note, lua likes to start at 1, C (and thus evas) at 0.  I choose to agree with C.}
\DoxyCodeLine{         D.map:coord(0, 50, 50, 0);}
\DoxyCodeLine{         D.map:coord(1, 100, 50, 0);}
\DoxyCodeLine{         D.map:coord(2, 100, 100, 0);}
\DoxyCodeLine{         D.map:coord(3, 50, 100, 0);}
\DoxyCodeLine{         D.map:populate(50, 50, 50, 50, 0);}
\DoxyCodeLine{         D.map:populate(D.rect2, 0);}
\DoxyCodeLine{         D.map:populate(D.rect2);}
\DoxyCodeLine{}
\DoxyCodeLine{         -\/-\/// print the results}
\DoxyCodeLine{         D.coord = D.map:coord(0);}
\DoxyCodeLine{         print("{}lua::map coords for point 0 x="{} .. D.coord.x .. "{} y="{} .. D.coord.y .. "{} z="{} .. D.coord.z);}
\DoxyCodeLine{         D.coord = D.map:coord(1);}
\DoxyCodeLine{         print("{}lua::map coords for point 1 x="{} .. D.coord.x .. "{} y="{} .. D.coord.y .. "{} z="{} .. D.coord.z);}
\DoxyCodeLine{         D.coord = D.map:coord(2);}
\DoxyCodeLine{         print("{}lua::map coords for point 2 x="{} .. D.coord.x .. "{} y="{} .. D.coord.y .. "{} z="{} .. D.coord.z);}
\DoxyCodeLine{         D.coord = D.map:coord(3);}
\DoxyCodeLine{         print("{}lua::map coords for point 3 x="{} .. D.coord.x .. "{} y="{} .. D.coord.y .. "{} z="{} .. D.coord.z);}
\DoxyCodeLine{}
\DoxyCodeLine{         D.map:smooth(false);}
\DoxyCodeLine{         D.map:alpha(true);}
\DoxyCodeLine{}
\DoxyCodeLine{         if (D.map:alpha()) then}
\DoxyCodeLine{            print("{}lua::map is alpha"{});}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         if (D.map:smooth()) then}
\DoxyCodeLine{            print("{}lua::map is smooooth"{});}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         if (D.map:clockwise()) then}
\DoxyCodeLine{            print("{}lua::map is clockwise"{});}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         D.map:color(255, 255, 255, 255); // set all points to this colour.}
\DoxyCodeLine{         D.map:color(1, 255, 0, 255, 255);  // set just one point to this colour.}
\DoxyCodeLine{}
\DoxyCodeLine{         D.map:lighting(75, 75, 10, 255, 255, 255, 0, 255, 0);  // Ambient light and a 3D light source.}
\DoxyCodeLine{}
\DoxyCodeLine{         -\/-\/// Toss it around.}
\DoxyCodeLine{         D.map:rotate(45.0, 75, 75);}
\DoxyCodeLine{         D.map:zoom(1.5, 1.5, 75, 75);}
\DoxyCodeLine{         D.map:rotate3d(10.0, 20.0, 30.0, 75, 75, 0);}
\DoxyCodeLine{         D.map:perspective(200, 200, 0, 20);}
\DoxyCodeLine{}
\DoxyCodeLine{         -\/-\/// For image UV mapping.}
\DoxyCodeLine{         D.map:uv(0, 0.0, 0.0);}
\DoxyCodeLine{         D.map:uv(1, 50.0, 0.0);}
\DoxyCodeLine{         D.map:uv(2, 50.0, 50.0);}
\DoxyCodeLine{         D.map:uv(3, 0.0, 50.0);}
\DoxyCodeLine{}
\DoxyCodeLine{         -\/-\/// Actually apply the resulting transformations.}
\DoxyCodeLine{         D.rect2:map(D.map);}
\DoxyCodeLine{         D.rect2:map\_enable(true);}
\DoxyCodeLine{         if (D.rect2:map\_enable()) then}
\DoxyCodeLine{            print("{}lua::map enabled"{});}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         D.rect2:map\_source(D.rect);  -\/-\/// Don't think this is actually implemented in evas.}
\DoxyCodeLine{}
\DoxyCodeLine{-\/-\///         D.map:dup();}
\DoxyCodeLine{-\/-\///         D.map:size();  -\/-\/// perhaps overide the \# operator?  For now it's only gonna return 4 anyway.}
\DoxyCodeLine{}
\DoxyCodeLine{         -\/-\/// example of deleting something}
\DoxyCodeLine{         -\/-\/// D.tim:del();}
\DoxyCodeLine{}
\DoxyCodeLine{         -\/-\/// test the color\_class stuff}
\DoxyCodeLine{         colour = edje.color\_class("{}test\_colour"{});}
\DoxyCodeLine{         print("{}lua::color\_class= "{} .. colour.r .. "{},"{} .. colour.g .. "{},"{} .. colour.b .. "{},"{} .. colour.a);}
\DoxyCodeLine{         colour = edje.color\_class("{}test\_colour"{}, 32, 64, 255, 128);}
\DoxyCodeLine{         print("{}lua::color\_class= "{} .. colour.r .. "{},"{} .. colour.g .. "{},"{} .. colour.b .. "{},"{} .. colour.a);}
\DoxyCodeLine{         colour = edje.color\_class("{}test\_colour"{}, \{ r=255, g=0, b=255, a=255 \});}
\DoxyCodeLine{         print("{}lua::color\_class= "{} .. colour.r .. "{},"{} .. colour.g .. "{},"{} .. colour.b .. "{},"{} .. colour.a);}
\DoxyCodeLine{         text = edje.text\_class("{}test\_text\_class"{}, "{}Sans:style=Bold"{}, 8);}
\DoxyCodeLine{         print("{}lua::text\_class= "{} .. text.font .. "{} size "{} .. text.size);}
\DoxyCodeLine{ }
\DoxyCodeLine{         -\/-\/// Do something bad, just to see what happens.}
\DoxyCodeLine{-\/-\///         edje.color\_class(nil);}
\DoxyCodeLine{ }
\DoxyCodeLine{         -\/-\/// shutdown func -\/ generally empty or not there. everything garbage collected for you}
\DoxyCodeLine{         function shutdown ()}
\DoxyCodeLine{            print("{}lua::shutdown ... "{} .. D.val);}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         function show ()}
\DoxyCodeLine{            print("{}lua::show ... "{} .. D.val);}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         function hide ()}
\DoxyCodeLine{            print("{}lua::hide ... "{} .. D.val);}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         function move (x, y)}
\DoxyCodeLine{            print("{}lua::move x="{} .. x .. "{} x="{} .. y);}
\DoxyCodeLine{            D.edje:move(0, 0);}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         function resize (w, h)}
\DoxyCodeLine{            print("{}lua::resize w="{} .. w .. "{} h="{} .. h);}
\DoxyCodeLine{            D.text:move((w -\/ text\_geom.w) / 2, (h -\/ text\_geom.h) / 8);}
\DoxyCodeLine{            D.edje:resize(w, h);}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         function message (id, type, ...)}
\DoxyCodeLine{            print("{}lua::message id="{} .. id .. "{} type="{} .. type);}
\DoxyCodeLine{            -\/-\/// handle your message type here. check id + type then use the}
\DoxyCodeLine{            -\/-\/// vararg appropriately. they are the same as the params passed }
\DoxyCodeLine{            -\/-\/// to edje:messagesend() (if any are passed at all).  Any array}
\DoxyCodeLine{            -\/-\/// arguments are passed as a single table.}
\DoxyCodeLine{}
\DoxyCodeLine{            if ("{}none"{} == type) then}
\DoxyCodeLine{               print("{}lua::message no args"{});}
\DoxyCodeLine{            elseif ("{}strset"{} == type) then}
\DoxyCodeLine{               strs = ... ;}
\DoxyCodeLine{               print\_table\_start(strs, "{}"{}, "{}lua::message strings"{});}
\DoxyCodeLine{            elseif ("{}intset"{} == type) then}
\DoxyCodeLine{               ints = ... ;}
\DoxyCodeLine{               print\_table\_start(ints, "{}"{}, "{}lua::message ints"{});}
\DoxyCodeLine{            elseif ("{}floatset"{} == type) then}
\DoxyCodeLine{               floats = ... ;}
\DoxyCodeLine{               print\_table\_start(floats, "{}"{}, "{}lua::message floats"{});}
\DoxyCodeLine{            elseif ("{}strintset"{} == type) then}
\DoxyCodeLine{               str, ints = ... ;}
\DoxyCodeLine{               print("{}lua::message "{} .. str);}
\DoxyCodeLine{               print\_table\_start(ints, "{}"{}, "{}lua::message ints"{});}
\DoxyCodeLine{            elseif ("{}strfloatset"{} == type) then}
\DoxyCodeLine{               str, floats = ... ;}
\DoxyCodeLine{               print("{}lua::message "{} .. str);}
\DoxyCodeLine{               print\_table\_start(floats, "{}"{}, "{}lua::message floats"{});}
\DoxyCodeLine{            else}
\DoxyCodeLine{               print("{}lua::message "{} .. ... );}
\DoxyCodeLine{            end}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         function signal (sig, src)}
\DoxyCodeLine{            print("{}lua::signal sig= "{} .. sig .. "{} src= "{} .. src);}
\DoxyCodeLine{         end}
\DoxyCodeLine{      \}}
\DoxyCodeLine{   \}}
\DoxyCodeLine{}
\DoxyCodeLine{   // The group name NEEDS a / in it, }
\DoxyCodeLine{   // or the part below that tries to swallow it won't work.}
\DoxyCodeLine{   // Leaving just the lua part visible.}
\DoxyCodeLine{   group \{}
\DoxyCodeLine{      name: "{}bubbles/lua"{};}
\DoxyCodeLine{      lua\_script\_only: 1;}
\DoxyCodeLine{      lua\_script \{}
\DoxyCodeLine{         local bubbles = \{ \};}
\DoxyCodeLine{         local bubbleCols = 8;}
\DoxyCodeLine{         local bubbleRows = 6;}
\DoxyCodeLine{}
\DoxyCodeLine{         for i = 1, bubbleRows do}
\DoxyCodeLine{            row = \{ \};}
\DoxyCodeLine{            for j = 1, bubbleCols do}
\DoxyCodeLine{               image = edje.image();}
\DoxyCodeLine{               image:image("{}bubble.png"{});}
\DoxyCodeLine{               image:show();}
\DoxyCodeLine{               table.insert(row, image);}
\DoxyCodeLine{            end}
\DoxyCodeLine{            table.insert(bubbles, row);}
\DoxyCodeLine{         end}
\DoxyCodeLine{}
\DoxyCodeLine{         function resize (w, h)}
\DoxyCodeLine{            for i = 1, bubbleRows do}
\DoxyCodeLine{               for j = 1, bubbleCols do}
\DoxyCodeLine{                  w1 = w / bubbleCols;}
\DoxyCodeLine{                  h1 = h / bubbleRows;}
\DoxyCodeLine{                  bubbles[i][j]:geom((j -\/ 1) * w1, (i -\/ 1) * h1, w1, h1);}
\DoxyCodeLine{                  if ((1 == i) or (1 == j) or (bubbleRows == i) or (bubbleCols == j)) then}
\DoxyCodeLine{                     bubbles[i][j]:color(0, 255, 0, 200);}
\DoxyCodeLine{                  else}
\DoxyCodeLine{                     bubbles[i][j]:color(math.random(200) + 55, 0, math.random(255) + 55, 200);}
\DoxyCodeLine{                  end}
\DoxyCodeLine{               end}
\DoxyCodeLine{            end}
\DoxyCodeLine{         end}
\DoxyCodeLine{      \}}
\DoxyCodeLine{   \}}
\DoxyCodeLine{}
\DoxyCodeLine{   group \{}
\DoxyCodeLine{      name: "{}plain/edje/group"{};}
\DoxyCodeLine{      parts \{}
\DoxyCodeLine{         part \{}
\DoxyCodeLine{            name: "{}background"{};}
\DoxyCodeLine{            type: RECT;}
\DoxyCodeLine{            mouse\_events: 0;}
\DoxyCodeLine{            description \{}
\DoxyCodeLine{               state: "{}default"{} 0.0;}
\DoxyCodeLine{               color: 0 0 0 255;}
\DoxyCodeLine{            \}}
\DoxyCodeLine{         \}}
\DoxyCodeLine{}
\DoxyCodeLine{         // A lua group embedded in an edje group.}
\DoxyCodeLine{         part \{}
\DoxyCodeLine{            name: "{}bubbles\_lua"{};}
\DoxyCodeLine{            type: GROUP;}
\DoxyCodeLine{            source: "{}bubbles/lua"{};}
\DoxyCodeLine{            mouse\_events: 0;}
\DoxyCodeLine{            description \{ state: "{}default"{} 0.0; \}}
\DoxyCodeLine{         \}}
\DoxyCodeLine{}
\DoxyCodeLine{         part \{}
\DoxyCodeLine{            name: "{}background\_image"{};}
\DoxyCodeLine{            type: IMAGE;}
\DoxyCodeLine{            mouse\_events: 0;}
\DoxyCodeLine{            description \{}
\DoxyCodeLine{               state: "{}default"{} 0.0;}
\DoxyCodeLine{               aspect\_preference: HORIZONTAL;}
\DoxyCodeLine{               color\_class: "{}test\_colour"{};}
\DoxyCodeLine{               image \{ normal: "{}test.png"{}; \}}
\DoxyCodeLine{            \}}
\DoxyCodeLine{         \}}
\DoxyCodeLine{}
\DoxyCodeLine{         part \{}
\DoxyCodeLine{            name: "{}some\_text"{};}
\DoxyCodeLine{            type: TEXT;}
\DoxyCodeLine{            mouse\_events: 0;}
\DoxyCodeLine{            description \{}
\DoxyCodeLine{               state: "{}default"{} 0;}
\DoxyCodeLine{               text}
\DoxyCodeLine{               \{}
\DoxyCodeLine{                  text: "{}This is test text."{};}
\DoxyCodeLine{                  text\_class: "{}test\_text\_class"{};}
\DoxyCodeLine{               \}}
\DoxyCodeLine{            \}}
\DoxyCodeLine{         \}}
\DoxyCodeLine{}
\DoxyCodeLine{      \}}
\DoxyCodeLine{   \}}
\DoxyCodeLine{}
\DoxyCodeLine{\}}
\DoxyCodeLine{}

\end{DoxyCodeInclude}
 