\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.


\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}
 