elementary/layout - adding description and moving function reference docs.
authorantognolli <antognolli@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 20 Jul 2011 20:58:24 +0000 (20:58 +0000)
committerantognolli <antognolli@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 20 Jul 2011 20:58:24 +0000 (20:58 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@61538 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

doc/img/layout_box.eps [new file with mode: 0644]
doc/img/layout_box.png [new file with mode: 0644]
doc/img/layout_swallow.eps [new file with mode: 0644]
doc/img/layout_swallow.png [new file with mode: 0644]
doc/img/layout_table.eps [new file with mode: 0644]
doc/img/layout_table.png [new file with mode: 0644]
src/lib/Elementary.h.in
src/lib/elm_layout.c

diff --git a/doc/img/layout_box.eps b/doc/img/layout_box.eps
new file mode 100644 (file)
index 0000000..262d0e7
--- /dev/null
@@ -0,0 +1,395 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.10.2 (http://cairographics.org)
+%%CreationDate: Wed Jul 20 18:10:30 2011
+%%Pages: 1
+%%BoundingBox: 0 -1 273 208
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+/cairo_eps_state save def
+/dict_count countdictstack def
+/op_count count 1 sub def
+userdict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+      0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+    { globaldict begin /?pdfmark /pop load def /pdfmark
+    /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+  {
+    dup
+    type /stringtype eq
+    { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+  } forall
+  currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+    cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+      { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+      /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+      /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+      cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+%%EndProlog
+11 dict begin
+/FontType 42 def
+/FontName /DejaVuSans def
+/PaintType 0 def
+/FontMatrix [ 1 0 0 1 0 0 ] def
+/FontBBox [ 0 0 0 0 ] def
+/Encoding 256 array def
+0 1 255 { Encoding exch /.notdef put } for
+Encoding 1 /uni004C put
+Encoding 2 /uni0061 put
+Encoding 3 /uni0079 put
+Encoding 4 /uni006F put
+Encoding 5 /uni0075 put
+Encoding 6 /uni0074 put
+Encoding 7 /uni0020 put
+Encoding 8 /uni0057 put
+Encoding 9 /uni0069 put
+Encoding 10 /uni0064 put
+Encoding 11 /uni0067 put
+Encoding 12 /uni0065 put
+Encoding 13 /uni0042 put
+Encoding 14 /uni0078 put
+Encoding 15 /uni0043 put
+Encoding 16 /uni0068 put
+Encoding 17 /uni006C put
+Encoding 18 /uni0031 put
+Encoding 19 /uni0032 put
+Encoding 20 /uni0033 put
+Encoding 21 /uni0035 put
+Encoding 22 /uni0034 put
+Encoding 23 /uni0036 put
+/CharStrings 24 dict dup begin
+/.notdef 0 def
+/uni004C 1 def
+/uni0061 2 def
+/uni0079 3 def
+/uni006F 4 def
+/uni0075 5 def
+/uni0074 6 def
+/uni0020 7 def
+/uni0057 8 def
+/uni0069 9 def
+/uni0064 10 def
+/uni0067 11 def
+/uni0065 12 def
+/uni0042 13 def
+/uni0078 14 def
+/uni0043 15 def
+/uni0068 16 def
+/uni006C 17 def
+/uni0031 18 def
+/uni0032 19 def
+/uni0033 20 def
+/uni0035 21 def
+/uni0034 22 def
+/uni0036 23 def
+end readonly def
+/sfnts [
+<00010000000a008000030020636d617000baf144000012380000006e6376742000691d390000
+12a8000001fe6670676d7134766a000014a8000000ab676c796654844c08000000ac0000118c
+68656164f5a891960000155400000036686865610cb806690000158c00000024686d74787164
+0c2b000015b0000000606c6f63610000d95c00001610000000646d6178700485067100001674
+00000020707265703b07f100000016940000056800020066fe96046605a400030007001a400c
+04fb0006fb0108057f0204002fc4d4ec310010d4ecd4ec301311211125211121660400fc7303
+1bfce5fe96070ef8f2720629000100c90000046a05d500050025400c0295008104011c033a00
+040610fcecec31002fe4ec304009300750078003800404015d133311211521c9ca02d7fc5f05
+d5fad5aa0002007bffe3042d047b000a002500bc4027191f0b17090e00a91706b90e1120861f
+ba1cb923b8118c170c001703180d09080b1f030814452610fcecccd4ec323211393931002fc4
+e4f4fcf4ec10c6ee10ee11391139123930406e301d301e301f3020302130223f27401d401e40
+1f402040214022501d501e501f50205021502250277027851d871e871f8720872185229027a0
+27f0271e301e301f30203021401e401f40204021501e501f50205021601e601f60206021701e
+701f70207021801e801f80208021185d015d0122061514163332363d01371123350e01232226
+353436332135342623220607353e0133321602bedfac816f99b9b8b83fbc88accbfdfb0102a7
+9760b65465be5af3f00233667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e2eaa2727fc00
+0001003dfe56047f0460000f018b40430708020911000f0a110b0a00000f0e110f000f0d110c
+0d00000f0d110e0d0a0b0a0c110b0b0a420d0b0910000b058703bd0e0bbc100e0d0c0a090603
+00080f040f0b1010d44bb00a544bb008545b58b9000b004038594bb0145458b9000bffc03859
+c4c4111739310010e432f4ec113911391239304b5358071005ed071008ed071008ed071005ed
+071008ed0705ed173259220140f0060005080609030d160a170d100d230d350d490a4f0a4e0d
+5a095a0a6a0a870d800d930d120a000a09060b050c0b0e0b0f1701150210041005170a140b14
+0c1a0e1a0f2700240124022004200529082809250a240b240c270d2a0e2a0f20113700350135
+0230043005380a360b360c380d390e390f301141004001400240034004400540064007400842
+09450a470d490e490f40115400510151025503500450055606550756085709570a550b550c59
+0e590f501166016602680a690e690f60117b08780e780f89008a09850b850c890d890e890f99
+09950b950c9a0e9a0fa40ba40cab0eab0fb011cf11df11ff11655d005d050e012b0135333236
+3f01013309013302934e947c936c4c543321fe3bc3015e015ec368c87a9a488654044efc9403
+6c00000000020071ffe30475047b000b0017004a401306b91200b90cb8128c1809120f510312
+15451810fcecf4ec310010e4f4ec10ee3040233f197b007b067f077f087f097f0a7f0b7b0c7f
+0d7f0e7f0f7f107f117b12a019f01911015d0122061514163332363534262732001110002322
+00111000027394acab9593acac93f00112feeef0f1feef011103dfe7c9c9e7e8c8c7e99cfec8
+feecfeedfec701390113011401380000000200aeffe30458047b00130014003b401c03090003
+0e0106870e118c0a01bc14b80c0d0908140b4e020800461510fcecf439ec3231002fe4e432f4
+c4ec1112173930b46f15c01502015d1311331114163332363511331123350e0123222601aeb8
+7c7c95adb8b843b175c1c801cf01ba02a6fd619f9fbea4027bfba0ac6663f003a80000010037
+000002f2059e0013003840190e05080f03a9001101bc08870a0b08090204000810120e461410
+fc3cc4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d01112115211114163b01
+152322263511233533110177017bfe854b73bdbdd5a28787059efec28ffda0894e9a9fd20260
+8f013e00000000010044000007a605d5000c017b4049051a0605090a09041a0a09031a0a0b0a
+021a01020b0b0a061107080705110405080807021103020c000c011100000c420a0502030603
+00af0b080c0b0a09080605040302010b07000d10d4cc173931002f3cec32321739304b535807
+1005ed071008ed071008ed071005ed071008ed071005ed0705ed071008ed5922b2000e01015d
+40f206020605020a000a000a120a2805240a200a3e023e05340a300a4c024d05420a400a5902
+6a026b05670a600a7b027f027c057f05800a960295051d070009020803000406050005000601
+070408000807090009040a0a0c000e1a0315041508190c100e20042105200620072008230924
+0a250b200e200e3c023a033504330530083609390b3f0c300e460046014a0240044505400542
+064207420840084009440a4d0c400e400e58025608590c500e66026703610462056006600760
+086409640a640b770076017b027803770474057906790777087008780c7f0c7f0e8602870388
+04890585098a0b8f0e97049f0eaf0e5b5d005d1333090133090133012309012344cc013a0139
+e3013a0139cdfe89fefec5fec2fe05d5fb1204eefb1204eefa2b0510faf00000000200c10000
+0179061400030007002b400e06be04b100bc020501080400460810fc3cec3231002fe4fcec30
+400b1009400950096009700905015d1333112311331523c1b8b8b8b80460fba00614e9000002
+0071ffe3045a06140010001c003840191ab9000e14b905088c0eb80197031704000802471112
+0b451d10fcecf4ec323231002fece4f4c4ec10c4ee30b6601e801ea01e03015d011133112335
+0e0123220211100033321601141633323635342623220603a2b8b83ab17ccbff00ffcb7cb1fd
+c7a79292a8a89292a703b6025ef9eca86461014401080108014461fe15cbe7e7cbcbe7e70002
+0071fe56045a047b000b0028004a4023190c1d0912861316b90f03b92623b827bc09b90fbd1a
+1d261900080c4706121220452910fcc4ecf4ec323231002fc4e4ece4f4c4ec10fed5ee111239
+3930b6602a802aa02a03015d01342623220615141633323617100221222627351e013332363d
+010e0123220211101233321617353303a2a59594a5a59495a5b8fefefa61ac51519e52b5b439
+b27ccefcfcce7cb239b8023dc8dcdcc8c7dcdcebfee2fee91d1eb32c2abdbf5b6362013a0103
+0104013a6263aa0000020071ffe3047f047b0014001b00704024001501098608880515a90105
+b90c01bb18b912b80c8c1c1b1502081508004b02120f451c10fcecf4ecc4111239310010e4f4
+ece410ee10ee10f4ee1112393040293f1d701da01dd01df01d053f003f013f023f153f1b052c
+072f082f092c0a6f006f016f026f156f1b095d71015d0115211e0133323637150e0123200011
+1000333200072e0123220607047ffcb20ccdb76ac76263d06bfef4fec70129fce20107b802a5
+889ab90e025e5abec73434ae2a2c0138010a01130143feddc497b4ae9e00000300c9000004ec
+05d5000800110020004340231900950a0995128101950aad1f110b080213191f05000e1c1605
+191c2e09001c12042110fcec32fcecd4ec111739393931002fececf4ec10ee3930b20f220101
+5d01112132363534262301112132363534262325213216151406071e01151404232101930144
+a39d9da3febc012b94919194fe0b0204e7fa807c95a5fef0fbfde802c9fddd878b8c850266fe
+3e6f727170a6c0b189a21420cb98c8da0001003b000004790460000b01434046051106070604
+1103040707060411050401020103110202010b110001000a11090a0101000a110b0a07080709
+11080807420a070401040800bf05020a0704010408000208060c10d44bb00a544bb00f545b4b
+b010545b4bb011545b58b90006004038594bb0145458b90006ffc03859c4d4c411173931002f
+3cec321739304b5358071005ed071008ed071008ed071005ed071005ed071008ed071008ed07
+1005ed59220140980a04040a1a04150a260a3d04310a55045707580a660a76017a047607740a
+8d04820a99049f049707920a900aa601a904af04a507a30aa00a1c0a03040505090a0b1a0315
+0515091a0b2903260525092a0b200d3a013903370534073609390b300d4903460545094a0b40
+0d590056015902590357055606590756085609590b500d6f0d78017f0d9b019407ab01a407b0
+0dcf0ddf0dff0d2f5d005d09022309012309013309010464fe6b01aad9febafebad901b3fe72
+d9012901290460fddffdc101b8fe48024a0216fe71018f0000010073ffe3052705f000190036
+401a0da10eae0a951101a100ae04951791118c1a07190d003014101a10fcec32ec310010e4f4
+ecf4ec10eef6ee30b40f1b1f1b02015d01152e0123200011100021323637150e012320001110
+00213216052766e782ff00fef00110010082e7666aed84feadfe7a0186015386ed0562d55f5e
+fec7fed8fed9fec75e5fd34848019f01670168019f470000000100ba00000464061400130034
+4019030900030e0106870e11b80c970a010208004e0d09080b461410fcec32f4ec31002f3cec
+f4c4ec1112173930b2601501015d0111231134262322061511231133113e013332160464b87c
+7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd870614fd9e6564ef00000100c100000179
+061400030022b7009702010800460410fcec31002fec30400d10054005500560057005f00506
+015d13331123c1b8b80614f9ec00000100e10000045a05d5000a004040154203a00402a00581
+0700a009081f061c03001f010b10d44bb00f5458b9000100403859ecc4fcec31002fec32f4ec
+d4ec304b5358592201b40f030f04025d3721110535253311211521fe014afe990165ca014afc
+a4aa047348b848fad5aa0000000100960000044a05f0001c009a4027191a1b03181c11050400
+110505044210a111940da014910400a00200100a02010a1c171003061d10fc4bb015544bb016
+545b4bb014545b58b90003ffc03859c4d4ecc0c011123931002fec32f4ecf4ec304b53580710
+05ed0705ed11173959220140325504560556077a047a05761b87190704000419041a041b051c
+74007606751a731b741c82008619821a821b821ca800a81b115d005d25211521353600373e01
+35342623220607353e01333204151406070600018902c1fc4c73018d33614da7865fd3787ad4
+58e80114455b19fef4aaaaaa7701913a6d974977964243cc3132e8c25ca5701dfeeb00000001
+009cffe3047305f000280070402e0015130a86091f862013a0150da00993061ca02093239106
+8c15a329161c13000314191c2620101c03141f09062910fc4bb016544bb014545b58b90009ff
+c03859c4c4d4ecf4ec11173939310010ece4f4e4ec10e6ee10ee10ee10ee1112393001400964
+1e611f6120642104005d011e0115140421222627351e013332363534262b0135333236353426
+23220607353e01333204151406033f91a3fed0fee85ec76a54c86dbec7b9a5aeb6959ea39853
+be7273c959e6010c8e03251fc490ddf22525c33132968f8495a67770737b2426b42020d1b27c
+ab000001009effe3046405d5001d005e4023041a071186101d1aa00714a010890d02a000810d
+8c07a41e171c010a031c000a10061e10fc014bb016544bb014545b58b90010ffc038594bb00f
+5458b9001000403859c4d4ec10c4ee310010e4e4f4ec10e6ee10fec410ee1112393013211521
+113e0133320015140021222627351e0133323635342623220607dd0319fda02c582cfa0124fe
+d4feef5ec3685ac06badcacaad51a15405d5aafe920f0ffeeeeaf1fef52020cb3130b69c9cb6
+2426000000020064000004a405d50002000d0081401d010d030d0003030d4200030b07a00501
+038109010c0a001c0608040c0e10dc4bb00b544bb00d545b58b9000cffc03859d43cc4ec3211
+3931002fe4d43cec321239304b5358071004c9071005c9592201402a0b002a00480059006900
+77008a000716012b0026012b0336014e014f0c4f0d5601660175017a0385010d5d005d090121
+03331133152311231121350306fe0201fe35fed5d5c9fd5e0525fce303cdfc33a8fea00160c3
+00000002008fffe3049605f0000b0024005840241306000d860c00a01606a01c16a510a00c89
+22911c8c250c22091c191e131c03211f1b2510fcececf4ece4310010e4f4e4fce410ee10ee10
+ee111239304014cb00cb01cd02cd03cd04cb05cb0607a41eb21e025d015d0122061514163332
+3635342601152e01232202033e0133320015140023200011100021321602a4889f9f88889f9f
+01094c9b4cc8d30f3bb26be10105fef0e2fefdfeee0150011b4c9b033bbaa2a1bbbba1a2ba02
+79b82426fef2feef575dfeefebe6feea018d0179016201a51e00000000000002000300000000
+001400010000000000340004002000000004000400010000f017ffff0000f000ffff10000001
+000000000006003a0000000000180000000100020003000400050006000700080009000a000b
+000c000d000e000f001000110012001300140015001600170000013500b800cb00cb00c100aa
+009c01a600b800660000007100cb00a002b20085007500b800c301cb0189022d00cb00a600f0
+00d300aa008700cb03aa0400014a003300cb000000d9050200f4015400b4009c013901140139
+07060400044e04b4045204b804e704cd0037047304cd04600473013303a2055605a605560539
+03c5021200c9001f00b801df007300ba03e9033303bc0444040e00df03cd03aa00e503aa0404
+000000cb008f00a4007b00b80014016f007f027b0252008f00c705cd009a009a006f00cb00cd
+019e01d300f000ba018300d5009803040248009e01d500c100cb00f600830354027f00000333
+026600d300c700a400cd008f009a0073040005d5010a00fe022b00a400b4009c00000062009c
+0000001d032d05d505d505d505f0007f007b005400a406b80614072301d300b800cb00a601c3
+01ec069300a000d3035c037103db0185042304a80448008f0139011401390360008f05d5019a
+0614072306660179046004600460047b009c00000277046001aa00e904600762007b00c5007f
+027b000000b4025205cd006600bc00660077061000cd013b01850389008f007b0000001d00cd
+074a042f009c009c0000077d006f0000006f0335006a006f007b00ae00b2002d0396008f027b
+00f600830354063705f6008f009c04e10266008f018d02f600cd03440029006604ee00730000
+140000960000b707060504030201002c2010b002254964b040515820c859212d2cb002254964
+b040515820c859212d2c20100720b00050b00d7920b8ffff5058041b0559b0051cb0032508b0
+042523e120b00050b00d7920b8ffff5058041b0559b0051cb0032508e12d2c4b505820b0fd45
+4459212d2cb002254560442d2c4b5358b00225b0022545445921212d2c45442d2cb00225b002
+2549b00525b005254960b0206368208a108a233a8a10653a2d0000010000000251eba5041748
+5f0f3cf5001f080000000000c896fa5500000000c896fa55f7d6fcae0d720955000000080000
+00010000000000010000076dfe1d00000de2f7d6fa510d720001000000000000000000000000
+0000001804cd0066047500c904e7007b04bc003d04e50071051200ae03230037028b000007e9
+0044023900c1051400710514007104ec0071057d00c904bc003b05960073051200ba023900c1
+051700e1051700960517009c0517009e051700640517008f0000000000000044000000880000
+01b40000038000000424000004a80000052400000524000006e000000730000007c800000890
+0000096400000a1400000b9800000c3000000ca800000ce400000d5400000e5000000f380000
+0ff8000010b40000118c0001000000180354002b0068000c0002001000990008000004150216
+00080004b8028040fffbfe03fa1403f92503f83203f79603f60e03f5fe03f4fe03f32503f20e
+03f19603f02503ef8a4105effe03ee9603ed9603ecfa03ebfa03eafe03e93a03e84203e7fe03
+e63203e5e45305e59603e48a4105e45303e3e22f05e3fa03e22f03e1fe03e0fe03df3203de14
+03dd9603dcfe03db1203da7d03d9bb03d8fe03d68a4105d67d03d5d44705d57d03d44703d3d2
+1b05d3fe03d21b03d1fe03d0fe03cffe03cefe03cd9603cccb1e05ccfe03cb1e03ca3203c9fe
+03c6851105c61c03c51603c4fe03c3fe03c2fe03c1fe03c0fe03bffe03befe03bdfe03bcfe03
+bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03b7b65d05b7bb03b78004b6b52505b65d40ff
+03b64004b52503b4fe03b39603b2fe03b1fe03b0fe03affe03ae6403ad0e03acab2505ac6403
+abaa1205ab2503aa1203a98a4105a9fa03a8fe03a7fe03a6fe03a51203a4fe03a3a20e05a332
+03a20e03a16403a08a4105a096039ffe039e9d0c059efe039d0c039c9b19059c64039b9a1005
+9b19039a1003990a0398fe0397960d0597fe03960d03958a410595960394930e05942803930e
+0392fa039190bb0591fe03908f5d0590bb039080048f8e25058f5d038f40048e25038dfe038c
+8b2e058cfe038b2e038a8625058a410389880b05891403880b03878625058764038685110586
+250385110384fe038382110583fe0382110381fe0380fe037ffe0340ff7e7d7d057efe037d7d
+037c64037b5415057b25037afe0379fe03780e03770c03760a0375fe0374fa0373fa0372fa03
+71fa0370fe036ffe036efe036c21036bfe036a1142056a530369fe03687d036711420566fe03
+65fe0364fe0363fe0362fe03613a0360fa035e0c035dfe035bfe035afe0359580a0559fa0358
+0a035716190557320356fe035554150555420354150353011005531803521403514a130551fe
+03500b034ffe034e4d10054efe034d10034cfe034b4a13054bfe034a4910054a1303491d0d05
+491003480d0347fe0346960345960344fe0343022d0543fa0342bb03414b0340fe033ffe033e
+3d12053e14033d3c0f053d12033c3b0d053c40ff0f033b0d033afe0339fe033837140538fa03
+3736100537140336350b05361003350b03341e03330d0332310b0532fe03310b03302f0b0530
+0d032f0b032e2d09052e10032d09032c32032b2a25052b64032a2912052a2503291203282725
+0528410327250326250b05260f03250b0324fe0323fe03220f03210110052112032064031ffa
+031e1d0d051e64031d0d031c1142051cfe031bfa031a42031911420519fe0318640317161905
+17fe031601100516190315fe0314fe0313fe031211420512fe0311022d05114203107d030f64
+030efe030d0c16050dfe030c0110050c16030bfe030a100309fe0308022d0508fe0307140306
+64030401100504fe03401503022d0503fe0302011005022d0301100300fe0301b80164858d01
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00>
+] def
+/f-0-0 currentdict end definefont pop
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 -1 273 208
+%%EndPageSetup
+q 0 -1 273 209 rectclip q
+0 207.679 273 -208 re W n
+0.0392157 0.0156863 0.0313726 rg
+0.8 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 -1 0 207.679047 cm
+0.402 17.879 271.582 189.395 re S Q
+0 g
+BT
+13.340924 0 0 13.340924 83.782104 197.543071 Tm
+/f-0-0 1 Tf
+[<010203040506>-1<0708>22<090a0b0c06>]TJ
+ET
+0.0392157 0.0156863 0.0313726 rg
+[ 2.4 2.4] 0 d
+q 1 0 0 -1 0 207.679047 cm
+29.586 60.762 210.238 120.902 re S Q
+0 g
+BT
+10.005693 0 0 10.005693 121.303442 154.661528 Tm
+/f-0-0 1 Tf
+[<0d04>32<0e>]TJ
+ET
+0.0392157 0.0156863 0.0313726 rg
+[] 0.0 d
+q 1 0 0 -1 0 207.679047 cm
+33.258 64.371 62.648 34.867 re S Q
+q 1 0 0 -1 0 207.679047 cm
+33.258 103.73 82.898 34.863 re S Q
+q 1 0 0 -1 0 207.679047 cm
+33.258 143.086 62.648 34.867 re S Q
+q 1 0 0 -1 0 207.679047 cm
+103.129 64.371 51.332 34.867 re S Q
+0.8 w
+q 1 0 0 -1 0 207.679047 cm
+122.785 103.73 112.082 34.863 re S Q
+0.8 w
+q 1 0 0 -1 0 207.679047 cm
+160.648 64.371 75.156 34.867 re S Q
+0 g
+BT
+6.670462 0 0 6.670462 53.102877 123.387996 Tm
+/f-0-0 1 Tf
+[<0f>-1<10>-1<09>1<110a0712>]TJ
+ET
+BT
+6.670462 0 0 6.670462 117.342965 123.387996 Tm
+/f-0-0 1 Tf
+[<0f>-1<10>-1<09>1<110a0713>]TJ
+ET
+BT
+6.670462 0 0 6.670462 186.706491 123.387996 Tm
+/f-0-0 1 Tf
+[<0f>-1<10>-1<09>1<110a0714>]TJ
+ET
+BT
+6.670462 0 0 6.670462 167.22485 84.030562 Tm
+/f-0-0 1 Tf
+[<0f>-1<10>-1<09>1<110a0715>]TJ
+ET
+BT
+6.670462 0 0 6.670462 63.107174 84.030513 Tm
+/f-0-0 1 Tf
+[<0f>-1<10>-1<09>1<110a0716>]TJ
+ET
+BT
+6.670462 0 0 6.670462 53.080075 44.673067 Tm
+/f-0-0 1 Tf
+[<0f>-1<10>-1<09>1<110a0717>]TJ
+ET
+Q Q
+showpage
+%%Trailer
+count op_count sub {pop} repeat
+countdictstack dict_count sub {end} repeat
+cairo_eps_state restore
+%%EOF
diff --git a/doc/img/layout_box.png b/doc/img/layout_box.png
new file mode 100644 (file)
index 0000000..938023f
Binary files /dev/null and b/doc/img/layout_box.png differ
diff --git a/doc/img/layout_swallow.eps b/doc/img/layout_swallow.eps
new file mode 100644 (file)
index 0000000..5a9b51d
--- /dev/null
@@ -0,0 +1,324 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.10.2 (http://cairographics.org)
+%%CreationDate: Wed Jul 20 18:11:26 2011
+%%Pages: 1
+%%BoundingBox: 0 -1 273 208
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+/cairo_eps_state save def
+/dict_count countdictstack def
+/op_count count 1 sub def
+userdict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+      0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+    { globaldict begin /?pdfmark /pop load def /pdfmark
+    /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+  {
+    dup
+    type /stringtype eq
+    { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+  } forall
+  currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+    cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+      { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+      /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+      /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+      cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+%%EndProlog
+11 dict begin
+/FontType 42 def
+/FontName /DejaVuSans def
+/PaintType 0 def
+/FontMatrix [ 1 0 0 1 0 0 ] def
+/FontBBox [ 0 0 0 0 ] def
+/Encoding 256 array def
+0 1 255 { Encoding exch /.notdef put } for
+Encoding 1 /uni004C put
+Encoding 2 /uni0061 put
+Encoding 3 /uni0079 put
+Encoding 4 /uni006F put
+Encoding 5 /uni0075 put
+Encoding 6 /uni0074 put
+Encoding 7 /uni0020 put
+Encoding 8 /uni0057 put
+Encoding 9 /uni0069 put
+Encoding 10 /uni0064 put
+Encoding 11 /uni0067 put
+Encoding 12 /uni0065 put
+Encoding 13 /uni0053 put
+Encoding 14 /uni0077 put
+Encoding 15 /uni006C put
+Encoding 16 /uni0043 put
+Encoding 17 /uni0068 put
+Encoding 18 /uni0031 put
+/CharStrings 19 dict dup begin
+/.notdef 0 def
+/uni004C 1 def
+/uni0061 2 def
+/uni0079 3 def
+/uni006F 4 def
+/uni0075 5 def
+/uni0074 6 def
+/uni0020 7 def
+/uni0057 8 def
+/uni0069 9 def
+/uni0064 10 def
+/uni0067 11 def
+/uni0065 12 def
+/uni0053 13 def
+/uni0077 14 def
+/uni006C 15 def
+/uni0043 16 def
+/uni0068 17 def
+/uni0031 18 def
+end readonly def
+/sfnts [
+<00010000000a008000030020636d61700076f10b00000ee8000000646376742000691d390000
+0f4c000001fe6670676d7134766a0000114c000000ab676c79665cbbc99a000000ac00000e3c
+68656164f5a89196000011f800000036686865610cb806640000123000000024686d74785957
+0941000012540000004c6c6f636100008dd4000012a0000000506d61787004800671000012f0
+00000020707265703b07f100000013100000056800020066fe96046605a400030007001a400c
+04fb0006fb0108057f0204002fc4d4ec310010d4ecd4ec301311211125211121660400fc7303
+1bfce5fe96070ef8f2720629000100c90000046a05d500050025400c0295008104011c033a00
+040610fcecec31002fe4ec304009300750078003800404015d133311211521c9ca02d7fc5f05
+d5fad5aa0002007bffe3042d047b000a002500bc4027191f0b17090e00a91706b90e1120861f
+ba1cb923b8118c170c001703180d09080b1f030814452610fcecccd4ec323211393931002fc4
+e4f4fcf4ec10c6ee10ee11391139123930406e301d301e301f3020302130223f27401d401e40
+1f402040214022501d501e501f50205021502250277027851d871e871f8720872185229027a0
+27f0271e301e301f30203021401e401f40204021501e501f50205021601e601f60206021701e
+701f70207021801e801f80208021185d015d0122061514163332363d01371123350e01232226
+353436332135342623220607353e0133321602bedfac816f99b9b8b83fbc88accbfdfb0102a7
+9760b65465be5af3f00233667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e2eaa2727fc00
+0001003dfe56047f0460000f018b40430708020911000f0a110b0a00000f0e110f000f0d110c
+0d00000f0d110e0d0a0b0a0c110b0b0a420d0b0910000b058703bd0e0bbc100e0d0c0a090603
+00080f040f0b1010d44bb00a544bb008545b58b9000b004038594bb0145458b9000bffc03859
+c4c4111739310010e432f4ec113911391239304b5358071005ed071008ed071008ed071005ed
+071008ed0705ed173259220140f0060005080609030d160a170d100d230d350d490a4f0a4e0d
+5a095a0a6a0a870d800d930d120a000a09060b050c0b0e0b0f1701150210041005170a140b14
+0c1a0e1a0f2700240124022004200529082809250a240b240c270d2a0e2a0f20113700350135
+0230043005380a360b360c380d390e390f301141004001400240034004400540064007400842
+09450a470d490e490f40115400510151025503500450055606550756085709570a550b550c59
+0e590f501166016602680a690e690f60117b08780e780f89008a09850b850c890d890e890f99
+09950b950c9a0e9a0fa40ba40cab0eab0fb011cf11df11ff11655d005d050e012b0135333236
+3f01013309013302934e947c936c4c543321fe3bc3015e015ec368c87a9a488654044efc9403
+6c00000000020071ffe30475047b000b0017004a401306b91200b90cb8128c1809120f510312
+15451810fcecf4ec310010e4f4ec10ee3040233f197b007b067f077f087f097f0a7f0b7b0c7f
+0d7f0e7f0f7f107f117b12a019f01911015d0122061514163332363534262732001110002322
+00111000027394acab9593acac93f00112feeef0f1feef011103dfe7c9c9e7e8c8c7e99cfec8
+feecfeedfec701390113011401380000000200aeffe30458047b00130014003b401c03090003
+0e0106870e118c0a01bc14b80c0d0908140b4e020800461510fcecf439ec3231002fe4e432f4
+c4ec1112173930b46f15c01502015d1311331114163332363511331123350e0123222601aeb8
+7c7c95adb8b843b175c1c801cf01ba02a6fd619f9fbea4027bfba0ac6663f003a80000010037
+000002f2059e0013003840190e05080f03a9001101bc08870a0b08090204000810120e461410
+fc3cc4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d01112115211114163b01
+152322263511233533110177017bfe854b73bdbdd5a28787059efec28ffda0894e9a9fd20260
+8f013e00000000010044000007a605d5000c017b4049051a0605090a09041a0a09031a0a0b0a
+021a01020b0b0a061107080705110405080807021103020c000c011100000c420a0502030603
+00af0b080c0b0a09080605040302010b07000d10d4cc173931002f3cec32321739304b535807
+1005ed071008ed071008ed071005ed071008ed071005ed0705ed071008ed5922b2000e01015d
+40f206020605020a000a000a120a2805240a200a3e023e05340a300a4c024d05420a400a5902
+6a026b05670a600a7b027f027c057f05800a960295051d070009020803000406050005000601
+070408000807090009040a0a0c000e1a0315041508190c100e20042105200620072008230924
+0a250b200e200e3c023a033504330530083609390b3f0c300e460046014a0240044505400542
+064207420840084009440a4d0c400e400e58025608590c500e66026703610462056006600760
+086409640a640b770076017b027803770474057906790777087008780c7f0c7f0e8602870388
+04890585098a0b8f0e97049f0eaf0e5b5d005d1333090133090133012309012344cc013a0139
+e3013a0139cdfe89fefec5fec2fe05d5fb1204eefb1204eefa2b0510faf00000000200c10000
+0179061400030007002b400e06be04b100bc020501080400460810fc3cec3231002fe4fcec30
+400b1009400950096009700905015d1333112311331523c1b8b8b8b80460fba00614e9000002
+0071ffe3045a06140010001c003840191ab9000e14b905088c0eb80197031704000802471112
+0b451d10fcecf4ec323231002fece4f4c4ec10c4ee30b6601e801ea01e03015d011133112335
+0e0123220211100033321601141633323635342623220603a2b8b83ab17ccbff00ffcb7cb1fd
+c7a79292a8a89292a703b6025ef9eca86461014401080108014461fe15cbe7e7cbcbe7e70002
+0071fe56045a047b000b0028004a4023190c1d0912861316b90f03b92623b827bc09b90fbd1a
+1d261900080c4706121220452910fcc4ecf4ec323231002fc4e4ece4f4c4ec10fed5ee111239
+3930b6602a802aa02a03015d01342623220615141633323617100221222627351e013332363d
+010e0123220211101233321617353303a2a59594a5a59495a5b8fefefa61ac51519e52b5b439
+b27ccefcfcce7cb239b8023dc8dcdcc8c7dcdcebfee2fee91d1eb32c2abdbf5b6362013a0103
+0104013a6263aa0000020071ffe3047f047b0014001b00704024001501098608880515a90105
+b90c01bb18b912b80c8c1c1b1502081508004b02120f451c10fcecf4ecc4111239310010e4f4
+ece410ee10ee10f4ee1112393040293f1d701da01dd01df01d053f003f013f023f153f1b052c
+072f082f092c0a6f006f016f026f156f1b095d71015d0115211e0133323637150e0123200011
+1000333200072e0123220607047ffcb20ccdb76ac76263d06bfef4fec70129fce20107b802a5
+889ab90e025e5abec73434ae2a2c0138010a01130143feddc497b4ae9e0000010087ffe304a2
+05f00027007e403c0d0c020e0b021e1f1e080902070a021f1f1e420a0b1e1f0415010015a114
+94189511049500942591118c281e0a0b1f1b0700221b190e2d071914222810dcc4ecfcece411
+1239393939310010e4f4e4ec10eef6ee10c6111739304b535807100eed11173907100eed1117
+395922b20f2901015db61f292f294f29035d01152e012322061514161f011e01151404212226
+27351e013332363534262f012e01353424333216044873cc5fa5b377a67ae2d7feddfee76aef
+807bec72adbc879a7be2ca0117f569da05a4c53736807663651f192bd9b6d9e0302fd0454688
+7e6e7c1f182dc0abc6e4260000010056000006350460000c01eb404905550605090a0904550a
+0903550a0b0a025501020b0b0a061107080705110405080807021103020c000c011100000c42
+0a050203060300bf0b080c0b0a09080605040302010b07000d10d44bb00a544bb011545b4bb0
+12545b4bb013545b4bb00b545b58b9000000403859014bb00c544bb00d545b4bb010545b58b9
+0000ffc03859cc173931002f3cec32321739304b5358071005ed071008ed071008ed071005ed
+071008ed071005ed0705ed071008ed59220140ff050216021605220a350a49024905460a400a
+5b025b05550a500a6e026e05660a79027f0279057f05870299029805940abc02bc05ce02c703
+cf051d0502090306040b050a080b09040b050c1502190316041a051b081b09140b150c250025
+0123022703210425052206220725082709240a210b230c390336043608390c300e4602480346
+04400442054006400740084409440a440b400e400e5600560156025004510552065207500853
+09540a550b6300640165026a0365046a056a066a076e09610b670c6f0e7500750179027d0378
+047d057a067f067a077f07780879097f097b0a760b7d0c870288058f0e97009701940293039c
+049b05980698079908402f960c9f0ea600a601a402a403ab04ab05a906a907ab08a40caf0eb5
+02b103bd04bb05b809bf0ec402c303cc04ca05795d005d13331b01331b013301230b012356b8
+e6e5d9e6e5b8fedbd9f1f2d90460fc96036afc96036afba00396fc6a000100c1000001790614
+00030022b7009702010800460410fcec31002fec30400d10054005500560057005f00506015d
+13331123c1b8b80614f9ec0000010073ffe3052705f000190036401a0da10eae0a951101a100
+ae04951791118c1a07190d003014101a10fcec32ec310010e4f4ecf4ec10eef6ee30b40f1b1f
+1b02015d01152e0123200011100021323637150e01232000111000213216052766e782ff00fe
+f00110010082e7666aed84feadfe7a0186015386ed0562d55f5efec7fed8fed9fec75e5fd348
+48019f01670168019f470000000100ba000004640614001300344019030900030e0106870e11
+b80c970a010208004e0d09080b461410fcec32f4ec31002f3cecf4c4ec1112173930b2601501
+015d0111231134262322061511231133113e013332160464b87c7c95acb9b942b375c1c602a4
+fd5c029e9f9ebea4fd870614fd9e6564ef00000100e10000045a05d5000a004040154203a004
+02a005810700a009081f061c03001f010b10d44bb00f5458b9000100403859ecc4fcec31002f
+ec32f4ecd4ec304b5358592201b40f030f04025d3721110535253311211521fe014afe990165
+ca014afca4aa047348b848fad5aa000000000002000300000000001400010000000000340004
+002000000004000400010000f012ffff0000f000ffff10000001000000000006003000000000
+00130000000100020003000400050006000700080009000a000b000c000d000e000f00100011
+0012013500b800cb00cb00c100aa009c01a600b800660000007100cb00a002b20085007500b8
+00c301cb0189022d00cb00a600f000d300aa008700cb03aa0400014a003300cb000000d90502
+00f4015400b4009c01390114013907060400044e04b4045204b804e704cd0037047304cd0460
+0473013303a2055605a60556053903c5021200c9001f00b801df007300ba03e9033303bc0444
+040e00df03cd03aa00e503aa0404000000cb008f00a4007b00b80014016f007f027b0252008f
+00c705cd009a009a006f00cb00cd019e01d300f000ba018300d5009803040248009e01d500c1
+00cb00f600830354027f00000333026600d300c700a400cd008f009a0073040005d5010a00fe
+022b00a400b4009c00000062009c0000001d032d05d505d505d505f0007f007b005400a406b8
+0614072301d300b800cb00a601c301ec069300a000d3035c037103db0185042304a80448008f
+0139011401390360008f05d5019a0614072306660179046004600460047b009c000002770460
+01aa00e904600762007b00c5007f027b000000b4025205cd006600bc00660077061000cd013b
+01850389008f007b0000001d00cd074a042f009c009c0000077d006f0000006f0335006a006f
+007b00ae00b2002d0396008f027b00f600830354063705f6008f009c04e10266008f018d02f6
+00cd03440029006604ee00730000140000960000b707060504030201002c2010b002254964b0
+40515820c859212d2cb002254964b040515820c859212d2c20100720b00050b00d7920b8ffff
+5058041b0559b0051cb0032508b0042523e120b00050b00d7920b8ffff5058041b0559b0051c
+b0032508e12d2c4b505820b0fd454459212d2cb002254560442d2c4b5358b00225b002254544
+5921212d2c45442d2cb00225b0022549b00525b005254960b0206368208a108a233a8a10653a
+2d0000010000000251ebc541db9a5f0f3cf5001f080000000000c896fa5500000000c896fa55
+f7d6fcae0d72095500000008000000010000000000010000076dfe1d00000de2f7d6fa510d72
+00010000000000000000000000000000001304cd0066047500c904e7007b04bc003d04e50071
+051200ae03230037028b000007e90044023900c1051400710514007104ec007105140087068b
+0056023900c105960073051200ba051700e1000000000000004400000088000001b400000380
+00000424000004a80000052400000524000006e000000730000007c800000890000009640000
+0a5c00000c8000000cbc00000d5400000dcc00000e3c0001000000130354002b0068000c0002
+00100099000800000415021600080004b8028040fffbfe03fa1403f92503f83203f79603f60e
+03f5fe03f4fe03f32503f20e03f19603f02503ef8a4105effe03ee9603ed9603ecfa03ebfa03
+eafe03e93a03e84203e7fe03e63203e5e45305e59603e48a4105e45303e3e22f05e3fa03e22f
+03e1fe03e0fe03df3203de1403dd9603dcfe03db1203da7d03d9bb03d8fe03d68a4105d67d03
+d5d44705d57d03d44703d3d21b05d3fe03d21b03d1fe03d0fe03cffe03cefe03cd9603cccb1e
+05ccfe03cb1e03ca3203c9fe03c6851105c61c03c51603c4fe03c3fe03c2fe03c1fe03c0fe03
+bffe03befe03bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03b7b65d05b7bb
+03b78004b6b52505b65d40ff03b64004b52503b4fe03b39603b2fe03b1fe03b0fe03affe03ae
+6403ad0e03acab2505ac6403abaa1205ab2503aa1203a98a4105a9fa03a8fe03a7fe03a6fe03
+a51203a4fe03a3a20e05a33203a20e03a16403a08a4105a096039ffe039e9d0c059efe039d0c
+039c9b19059c64039b9a10059b19039a1003990a0398fe0397960d0597fe03960d03958a4105
+95960394930e05942803930e0392fa039190bb0591fe03908f5d0590bb039080048f8e25058f
+5d038f40048e25038dfe038c8b2e058cfe038b2e038a8625058a410389880b05891403880b03
+878625058764038685110586250385110384fe038382110583fe0382110381fe0380fe037ffe
+0340ff7e7d7d057efe037d7d037c64037b5415057b25037afe0379fe03780e03770c03760a03
+75fe0374fa0373fa0372fa0371fa0370fe036ffe036efe036c21036bfe036a1142056a530369
+fe03687d036711420566fe0365fe0364fe0363fe0362fe03613a0360fa035e0c035dfe035bfe
+035afe0359580a0559fa03580a035716190557320356fe035554150555420354150353011005
+531803521403514a130551fe03500b034ffe034e4d10054efe034d10034cfe034b4a13054bfe
+034a4910054a1303491d0d05491003480d0347fe0346960345960344fe0343022d0543fa0342
+bb03414b0340fe033ffe033e3d12053e14033d3c0f053d12033c3b0d053c40ff0f033b0d033a
+fe0339fe033837140538fa033736100537140336350b05361003350b03341e03330d0332310b
+0532fe03310b03302f0b05300d032f0b032e2d09052e10032d09032c32032b2a25052b64032a
+2912052a25032912032827250528410327250326250b05260f03250b0324fe0323fe03220f03
+210110052112032064031ffa031e1d0d051e64031d0d031c1142051cfe031bfa031a42031911
+420519fe031864031716190517fe031601100516190315fe0314fe0313fe031211420512fe03
+11022d05114203107d030f64030efe030d0c16050dfe030c0110050c16030bfe030a100309fe
+0308022d0508fe030714030664030401100504fe03401503022d0503fe0302011005022d0301
+100300fe0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00>
+] def
+/f-0-0 currentdict end definefont pop
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 -1 273 208
+%%EndPageSetup
+q 0 -1 273 209 rectclip q
+0 207.679 273 -208 re W n
+0.0392157 0.0156863 0.0313726 rg
+0.8 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 -1 0 207.678864 cm
+0.402 17.879 271.582 189.395 re S Q
+0 g
+BT
+13.340901 0 0 13.340901 83.782178 197.542905 Tm
+/f-0-0 1 Tf
+[<010203040506>-1<0708>22<090a0b0c06>]TJ
+ET
+0.0392157 0.0156863 0.0313726 rg
+[ 2.4 2.4] 0 d
+q 1 0 0 -1 0 207.678864 cm
+29.586 60.762 210.238 120.898 re S Q
+0 g
+BT
+10.005676 0 0 10.005676 121.303467 154.661436 Tm
+/f-0-0 1 Tf
+<0d0e020f040e>Tj
+ET
+0.0392157 0.0156863 0.0313726 rg
+[] 0.0 d
+q 1 0 0 -1 0 207.678864 cm
+33.258 64.371 202.609 112.887 re S Q
+0 g
+BT
+6.670451 0 0 6.670451 120.998678 84.079944 Tm
+/f-0-0 1 Tf
+[<10>-1<11>-1<09>1<0f0a0712>]TJ
+ET
+Q Q
+showpage
+%%Trailer
+count op_count sub {pop} repeat
+countdictstack dict_count sub {end} repeat
+cairo_eps_state restore
+%%EOF
diff --git a/doc/img/layout_swallow.png b/doc/img/layout_swallow.png
new file mode 100644 (file)
index 0000000..97d8070
Binary files /dev/null and b/doc/img/layout_swallow.png differ
diff --git a/doc/img/layout_table.eps b/doc/img/layout_table.eps
new file mode 100644 (file)
index 0000000..4d80c02
--- /dev/null
@@ -0,0 +1,443 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.10.2 (http://cairographics.org)
+%%CreationDate: Wed Jul 20 18:11:00 2011
+%%Pages: 1
+%%BoundingBox: 0 -1 273 249
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+/cairo_eps_state save def
+/dict_count countdictstack def
+/op_count count 1 sub def
+userdict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+      0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+    { globaldict begin /?pdfmark /pop load def /pdfmark
+    /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+  {
+    dup
+    type /stringtype eq
+    { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+  } forall
+  currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+    cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+      { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+      /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+      /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+      cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+%%EndProlog
+11 dict begin
+/FontType 42 def
+/FontName /DejaVuSans def
+/PaintType 0 def
+/FontMatrix [ 1 0 0 1 0 0 ] def
+/FontBBox [ 0 0 0 0 ] def
+/Encoding 256 array def
+0 1 255 { Encoding exch /.notdef put } for
+Encoding 1 /uni004C put
+Encoding 2 /uni0061 put
+Encoding 3 /uni0079 put
+Encoding 4 /uni006F put
+Encoding 5 /uni0075 put
+Encoding 6 /uni0074 put
+Encoding 7 /uni0020 put
+Encoding 8 /uni0057 put
+Encoding 9 /uni0069 put
+Encoding 10 /uni0064 put
+Encoding 11 /uni0067 put
+Encoding 12 /uni0065 put
+Encoding 13 /uni0043 put
+Encoding 14 /uni0068 put
+Encoding 15 /uni006C put
+Encoding 16 /uni0031 put
+Encoding 17 /uni0032 put
+Encoding 18 /uni0033 put
+Encoding 19 /uni0035 put
+Encoding 20 /uni0034 put
+Encoding 21 /uni0037 put
+Encoding 22 /uni0038 put
+Encoding 23 /uni0039 put
+Encoding 24 /uni0030 put
+Encoding 25 /uni0054 put
+Encoding 26 /uni0062 put
+/CharStrings 27 dict dup begin
+/.notdef 0 def
+/uni004C 1 def
+/uni0061 2 def
+/uni0079 3 def
+/uni006F 4 def
+/uni0075 5 def
+/uni0074 6 def
+/uni0020 7 def
+/uni0057 8 def
+/uni0069 9 def
+/uni0064 10 def
+/uni0067 11 def
+/uni0065 12 def
+/uni0043 13 def
+/uni0068 14 def
+/uni006C 15 def
+/uni0031 16 def
+/uni0032 17 def
+/uni0033 18 def
+/uni0035 19 def
+/uni0034 20 def
+/uni0037 21 def
+/uni0038 22 def
+/uni0039 23 def
+/uni0030 24 def
+/uni0054 25 def
+/uni0062 26 def
+end readonly def
+/sfnts [
+<00010000000a008000030020636d617000d6f17f000012ec000000746376742000691d390000
+1360000001fe6670676d7134766a00001560000000ab676c79661a17fc9a000000ac00001240
+68656164f5a891960000160c00000036686865610cb8066c0000164400000024686d74788068
+0d87000016680000006c6c6f636100010544000016d4000000706d6178700488067100001744
+00000020707265703b07f100000017640000056800020066fe96046605a400030007001a400c
+04fb0006fb0108057f0204002fc4d4ec310010d4ecd4ec301311211125211121660400fc7303
+1bfce5fe96070ef8f2720629000100c90000046a05d500050025400c0295008104011c033a00
+040610fcecec31002fe4ec304009300750078003800404015d133311211521c9ca02d7fc5f05
+d5fad5aa0002007bffe3042d047b000a002500bc4027191f0b17090e00a91706b90e1120861f
+ba1cb923b8118c170c001703180d09080b1f030814452610fcecccd4ec323211393931002fc4
+e4f4fcf4ec10c6ee10ee11391139123930406e301d301e301f3020302130223f27401d401e40
+1f402040214022501d501e501f50205021502250277027851d871e871f8720872185229027a0
+27f0271e301e301f30203021401e401f40204021501e501f50205021601e601f60206021701e
+701f70207021801e801f80208021185d015d0122061514163332363d01371123350e01232226
+353436332135342623220607353e0133321602bedfac816f99b9b8b83fbc88accbfdfb0102a7
+9760b65465be5af3f00233667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e2eaa2727fc00
+0001003dfe56047f0460000f018b40430708020911000f0a110b0a00000f0e110f000f0d110c
+0d00000f0d110e0d0a0b0a0c110b0b0a420d0b0910000b058703bd0e0bbc100e0d0c0a090603
+00080f040f0b1010d44bb00a544bb008545b58b9000b004038594bb0145458b9000bffc03859
+c4c4111739310010e432f4ec113911391239304b5358071005ed071008ed071008ed071005ed
+071008ed0705ed173259220140f0060005080609030d160a170d100d230d350d490a4f0a4e0d
+5a095a0a6a0a870d800d930d120a000a09060b050c0b0e0b0f1701150210041005170a140b14
+0c1a0e1a0f2700240124022004200529082809250a240b240c270d2a0e2a0f20113700350135
+0230043005380a360b360c380d390e390f301141004001400240034004400540064007400842
+09450a470d490e490f40115400510151025503500450055606550756085709570a550b550c59
+0e590f501166016602680a690e690f60117b08780e780f89008a09850b850c890d890e890f99
+09950b950c9a0e9a0fa40ba40cab0eab0fb011cf11df11ff11655d005d050e012b0135333236
+3f01013309013302934e947c936c4c543321fe3bc3015e015ec368c87a9a488654044efc9403
+6c00000000020071ffe30475047b000b0017004a401306b91200b90cb8128c1809120f510312
+15451810fcecf4ec310010e4f4ec10ee3040233f197b007b067f077f087f097f0a7f0b7b0c7f
+0d7f0e7f0f7f107f117b12a019f01911015d0122061514163332363534262732001110002322
+00111000027394acab9593acac93f00112feeef0f1feef011103dfe7c9c9e7e8c8c7e99cfec8
+feecfeedfec701390113011401380000000200aeffe30458047b00130014003b401c03090003
+0e0106870e118c0a01bc14b80c0d0908140b4e020800461510fcecf439ec3231002fe4e432f4
+c4ec1112173930b46f15c01502015d1311331114163332363511331123350e0123222601aeb8
+7c7c95adb8b843b175c1c801cf01ba02a6fd619f9fbea4027bfba0ac6663f003a80000010037
+000002f2059e0013003840190e05080f03a9001101bc08870a0b08090204000810120e461410
+fc3cc4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d01112115211114163b01
+152322263511233533110177017bfe854b73bdbdd5a28787059efec28ffda0894e9a9fd20260
+8f013e00000000010044000007a605d5000c017b4049051a0605090a09041a0a09031a0a0b0a
+021a01020b0b0a061107080705110405080807021103020c000c011100000c420a0502030603
+00af0b080c0b0a09080605040302010b07000d10d4cc173931002f3cec32321739304b535807
+1005ed071008ed071008ed071005ed071008ed071005ed0705ed071008ed5922b2000e01015d
+40f206020605020a000a000a120a2805240a200a3e023e05340a300a4c024d05420a400a5902
+6a026b05670a600a7b027f027c057f05800a960295051d070009020803000406050005000601
+070408000807090009040a0a0c000e1a0315041508190c100e20042105200620072008230924
+0a250b200e200e3c023a033504330530083609390b3f0c300e460046014a0240044505400542
+064207420840084009440a4d0c400e400e58025608590c500e66026703610462056006600760
+086409640a640b770076017b027803770474057906790777087008780c7f0c7f0e8602870388
+04890585098a0b8f0e97049f0eaf0e5b5d005d1333090133090133012309012344cc013a0139
+e3013a0139cdfe89fefec5fec2fe05d5fb1204eefb1204eefa2b0510faf00000000200c10000
+0179061400030007002b400e06be04b100bc020501080400460810fc3cec3231002fe4fcec30
+400b1009400950096009700905015d1333112311331523c1b8b8b8b80460fba00614e9000002
+0071ffe3045a06140010001c003840191ab9000e14b905088c0eb80197031704000802471112
+0b451d10fcecf4ec323231002fece4f4c4ec10c4ee30b6601e801ea01e03015d011133112335
+0e0123220211100033321601141633323635342623220603a2b8b83ab17ccbff00ffcb7cb1fd
+c7a79292a8a89292a703b6025ef9eca86461014401080108014461fe15cbe7e7cbcbe7e70002
+0071fe56045a047b000b0028004a4023190c1d0912861316b90f03b92623b827bc09b90fbd1a
+1d261900080c4706121220452910fcc4ecf4ec323231002fc4e4ece4f4c4ec10fed5ee111239
+3930b6602a802aa02a03015d01342623220615141633323617100221222627351e013332363d
+010e0123220211101233321617353303a2a59594a5a59495a5b8fefefa61ac51519e52b5b439
+b27ccefcfcce7cb239b8023dc8dcdcc8c7dcdcebfee2fee91d1eb32c2abdbf5b6362013a0103
+0104013a6263aa0000020071ffe3047f047b0014001b00704024001501098608880515a90105
+b90c01bb18b912b80c8c1c1b1502081508004b02120f451c10fcecf4ecc4111239310010e4f4
+ece410ee10ee10f4ee1112393040293f1d701da01dd01df01d053f003f013f023f153f1b052c
+072f082f092c0a6f006f016f026f156f1b095d71015d0115211e0133323637150e0123200011
+1000333200072e0123220607047ffcb20ccdb76ac76263d06bfef4fec70129fce20107b802a5
+889ab90e025e5abec73434ae2a2c0138010a01130143feddc497b4ae9e0000010073ffe30527
+05f000190036401a0da10eae0a951101a100ae04951791118c1a07190d003014101a10fcec32
+ec310010e4f4ecf4ec10eef6ee30b40f1b1f1b02015d01152e0123200011100021323637150e
+01232000111000213216052766e782ff00fef00110010082e7666aed84feadfe7a0186015386
+ed0562d55f5efec7fed8fed9fec75e5fd34848019f01670168019f470000000100ba00000464
+0614001300344019030900030e0106870e11b80c970a010208004e0d09080b461410fcec32f4
+ec31002f3cecf4c4ec1112173930b2601501015d0111231134262322061511231133113e0133
+32160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd870614fd9e6564ef000001
+00c100000179061400030022b7009702010800460410fcec31002fec30400d10054005500560
+057005f00506015d13331123c1b8b80614f9ec00000100e10000045a05d5000a004040154203
+a00402a005810700a009081f061c03001f010b10d44bb00f5458b9000100403859ecc4fcec31
+002fec32f4ecd4ec304b5358592201b40f030f04025d3721110535253311211521fe014afe99
+0165ca014afca4aa047348b848fad5aa0000000100960000044a05f0001c009a4027191a1b03
+181c11050400110505044210a111940da014910400a00200100a02010a1c171003061d10fc4b
+b015544bb016545b4bb014545b58b90003ffc03859c4d4ecc0c011123931002fec32f4ecf4ec
+304b5358071005ed0705ed11173959220140325504560556077a047a05761b87190704000419
+041a041b051c74007606751a731b741c82008619821a821b821ca800a81b115d005d25211521
+353600373e0135342623220607353e01333204151406070600018902c1fc4c73018d33614da7
+865fd3787ad458e80114455b19fef4aaaaaa7701913a6d974977964243cc3132e8c25ca5701d
+feeb00000001009cffe3047305f000280070402e0015130a86091f862013a0150da00993061c
+a020932391068c15a329161c13000314191c2620101c03141f09062910fc4bb016544bb01454
+5b58b90009ffc03859c4c4d4ecf4ec11173939310010ece4f4e4ec10e6ee10ee10ee10ee1112
+3930014009641e611f6120642104005d011e0115140421222627351e013332363534262b0135
+33323635342623220607353e01333204151406033f91a3fed0fee85ec76a54c86dbec7b9a5ae
+b6959ea39853be7273c959e6010c8e03251fc490ddf22525c33132968f8495a67770737b2426
+b42020d1b27cab000001009effe3046405d5001d005e4023041a071186101d1aa00714a01089
+0d02a000810d8c07a41e171c010a031c000a10061e10fc014bb016544bb014545b58b90010ff
+c038594bb00f5458b9001000403859c4d4ec10c4ee310010e4e4f4ec10e6ee10fec410ee1112
+393013211521113e0133320015140021222627351e0133323635342623220607dd0319fda02c
+582cfa0124fed4feef5ec3685ac06badcacaad51a15405d5aafe920f0ffeeeeaf1fef52020cb
+3130b69c9cb62426000000020064000004a405d50002000d0081401d010d030d0003030d4200
+030b07a00501038109010c0a001c0608040c0e10dc4bb00b544bb00d545b58b9000cffc03859
+d43cc4ec32113931002fe4d43cec321239304b5358071004c9071005c9592201402a0b002a00
+48005900690077008a000716012b0026012b0336014e014f0c4f0d5601660175017a0385010d
+5d005d09012103331133152311231121350306fe0201fe35fed5d5c9fd5e0525fce303cdfc33
+a8fea00160c30000000100a80000046805d5000600634018051102030203110405044205a000
+8103050301040100060710fcccc411393931002ff4ec304b5358071005ed071005ed5922014b
+b0165458bd00070040000100070007ffc03811373859401258020106031a05390548056703b0
+00b006075d005d13211501230121a803c0fde2d301fefd3305d556fa81052b0000000003008b
+ffe3048b05f0000b0023002f00434025180c00a02706a01e2da012911e8c27a330180c242a1c
+15241c0f091c151b1e031c0f211b3010fcc4ecf4c4ec10ee10ee113939310010ece4f4ec10ee
+10ee393930012206151416333236353426252e01353424333216151406071e01151404232224
+353436131416333236353426232206028b90a5a59090a6a5fea5829100ffdedffe918192a3fe
+f7f7f7fef7a448918382939382839102c59a87879a9b86879a5620b280b3d0d0b380b22022c6
+8fd9e8e8d98fc6016174828274748282000000020081ffe3048705f00018002400584023071f
+1901860019a00aa504a00089161fa01091168c25071c1c21131e0022221c0d1b2510fcece4f4
+ecec310010e4f4ec10e6fef5ee10ee111239304016c419c21ac01bc01cc01dc21ec41f07aa12
+bc12e912035d015d37351e01333212130e012322003534003320001110002122260132363534
+26232206151416e14c9c4bc8d30f3ab26ce0fefb0110e201030111feb1fee54c9c013e889f9f
+88889f9f1fb82426010d0112565c010febe60116fe73fe86fe9ffe5b1e0297baa2a1bbbba1a2
+ba0000020087ffe3048f05f0000b00170023401306a01200a00c91128c18091c0f1e031c151b
+1810fcecf4ec310010e4f4ec10ee300122021110123332121110022732001110002322001110
+00028b9c9d9d9c9d9d9d9dfb0109fef7fbfbfef701090550fecdfeccfecdfecd013301330134
+0133a0fe73fe86fe87fe73018d0179017a018d000001fffa000004e905d50007004a400e0602
+950081040140031c0040050810d4e4fce431002ff4ec3230014bb00a5458bd00080040000100
+080008ffc03811373859401300091f00100110021f071009400970099f09095d032115211123
+11210604effdeecbfdee05d5aafad5052b00000200baffe304a40614000b001c0038401903b9
+0c0f09b918158c0fb81b971900121247180c06081a461d10fcec3232f4ec31002fece4f4c4ec
+10c6ee30b6601e801ea01e03015d013426232206151416333236013e01333200111002232226
+271523113303e5a79292a7a79292a7fd8e3ab17bcc00ffffcc7bb13ab9b9022fcbe7e7cbcbe7
+e702526461febcfef8fef8febc6164a806140000000200030000000000140001000000000034
+0004002000000004000400010000f01affff0000f000ffff1000000100000000000600400000
+0000001b0000000100020003000400050006000700080009000a000b000c000d000e000f0010
+001100120013001400150016001700180019001a013500b800cb00cb00c100aa009c01a600b8
+00660000007100cb00a002b20085007500b800c301cb0189022d00cb00a600f000d300aa0087
+00cb03aa0400014a003300cb000000d9050200f4015400b4009c01390114013907060400044e
+04b4045204b804e704cd0037047304cd04600473013303a2055605a60556053903c5021200c9
+001f00b801df007300ba03e9033303bc0444040e00df03cd03aa00e503aa0404000000cb008f
+00a4007b00b80014016f007f027b0252008f00c705cd009a009a006f00cb00cd019e01d300f0
+00ba018300d5009803040248009e01d500c100cb00f600830354027f00000333026600d300c7
+00a400cd008f009a0073040005d5010a00fe022b00a400b4009c00000062009c0000001d032d
+05d505d505d505f0007f007b005400a406b80614072301d300b800cb00a601c301ec069300a0
+00d3035c037103db0185042304a80448008f0139011401390360008f05d5019a061407230666
+0179046004600460047b009c00000277046001aa00e904600762007b00c5007f027b000000b4
+025205cd006600bc00660077061000cd013b01850389008f007b0000001d00cd074a042f009c
+009c0000077d006f0000006f0335006a006f007b00ae00b2002d0396008f027b00f600830354
+063705f6008f009c04e10266008f018d02f600cd03440029006604ee00730000140000960000
+b707060504030201002c2010b002254964b040515820c859212d2cb002254964b040515820c8
+59212d2c20100720b00050b00d7920b8ffff5058041b0559b0051cb0032508b0042523e120b0
+0050b00d7920b8ffff5058041b0559b0051cb0032508e12d2c4b505820b0fd454459212d2cb0
+02254560442d2c4b5358b00225b0022545445921212d2c45442d2cb00225b0022549b00525b0
+05254960b0206368208a108a233a8a10653a2d0000010000000251ebfb96539e5f0f3cf5001f
+080000000000c896fa5500000000c896fa55f7d6fcae0d720955000000080000000100000000
+00010000076dfe1d00000de2f7d6fa510d7200010000000000000000000000000000001b04cd
+0066047500c904e7007b04bc003d04e50071051200ae03230037028b000007e90044023900c1
+051400710514007104ec007105960073051200ba023900c1051700e1051700960517009c0517
+009e05170064051700a80517008b051700810517008704e3fffa051400ba0000000000000044
+00000088000001b40000038000000424000004a80000052400000524000006e0000007300000
+07c80000089000000964000009fc00000a7400000ab000000b2000000c1c00000d0400000dc4
+00000e8000000f0c00000fe0000010b400001138000011a80000124000010000001b0354002b
+0068000c000200100099000800000415021600080004b8028040fffbfe03fa1403f92503f832
+03f79603f60e03f5fe03f4fe03f32503f20e03f19603f02503ef8a4105effe03ee9603ed9603
+ecfa03ebfa03eafe03e93a03e84203e7fe03e63203e5e45305e59603e48a4105e45303e3e22f
+05e3fa03e22f03e1fe03e0fe03df3203de1403dd9603dcfe03db1203da7d03d9bb03d8fe03d6
+8a4105d67d03d5d44705d57d03d44703d3d21b05d3fe03d21b03d1fe03d0fe03cffe03cefe03
+cd9603cccb1e05ccfe03cb1e03ca3203c9fe03c6851105c61c03c51603c4fe03c3fe03c2fe03
+c1fe03c0fe03bffe03befe03bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03
+b7b65d05b7bb03b78004b6b52505b65d40ff03b64004b52503b4fe03b39603b2fe03b1fe03b0
+fe03affe03ae6403ad0e03acab2505ac6403abaa1205ab2503aa1203a98a4105a9fa03a8fe03
+a7fe03a6fe03a51203a4fe03a3a20e05a33203a20e03a16403a08a4105a096039ffe039e9d0c
+059efe039d0c039c9b19059c64039b9a10059b19039a1003990a0398fe0397960d0597fe0396
+0d03958a410595960394930e05942803930e0392fa039190bb0591fe03908f5d0590bb039080
+048f8e25058f5d038f40048e25038dfe038c8b2e058cfe038b2e038a8625058a410389880b05
+891403880b03878625058764038685110586250385110384fe038382110583fe0382110381fe
+0380fe037ffe0340ff7e7d7d057efe037d7d037c64037b5415057b25037afe0379fe03780e03
+770c03760a0375fe0374fa0373fa0372fa0371fa0370fe036ffe036efe036c21036bfe036a11
+42056a530369fe03687d036711420566fe0365fe0364fe0363fe0362fe03613a0360fa035e0c
+035dfe035bfe035afe0359580a0559fa03580a035716190557320356fe035554150555420354
+150353011005531803521403514a130551fe03500b034ffe034e4d10054efe034d10034cfe03
+4b4a13054bfe034a4910054a1303491d0d05491003480d0347fe0346960345960344fe034302
+2d0543fa0342bb03414b0340fe033ffe033e3d12053e14033d3c0f053d12033c3b0d053c40ff
+0f033b0d033afe0339fe033837140538fa033736100537140336350b05361003350b03341e03
+330d0332310b0532fe03310b03302f0b05300d032f0b032e2d09052e10032d09032c32032b2a
+25052b64032a2912052a25032912032827250528410327250326250b05260f03250b0324fe03
+23fe03220f03210110052112032064031ffa031e1d0d051e64031d0d031c1142051cfe031bfa
+031a42031911420519fe031864031716190517fe031601100516190315fe0314fe0313fe0312
+11420512fe0311022d05114203107d030f64030efe030d0c16050dfe030c0110050c16030bfe
+030a100309fe0308022d0508fe030714030664030401100504fe03401503022d0503fe030201
+1005022d0301100300fe0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00>
+] def
+/f-0-0 currentdict end definefont pop
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 -1 273 249
+%%EndPageSetup
+q 0 -1 273 250 rectclip q
+0 248.63 273 -249 re W n
+0.0392157 0.0156863 0.0313726 rg
+0.8 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 -1 0 248.630081 cm
+33.258 64.371 62.648 34.867 re S Q
+q 1 0 0 -1 0 248.630081 cm
+33.258 103.73 62.648 34.863 re S Q
+q 1 0 0 -1 0 248.630081 cm
+33.258 143.086 62.648 34.867 re S Q
+q 1 0 0 -1 0 248.630081 cm
+33.258 182.445 62.648 34.863 re S Q
+q 1 0 0 -1 0 248.630081 cm
+103.129 64.371 62.648 34.867 re S Q
+q 1 0 0 -1 0 248.630081 cm
+103.129 103.73 62.648 34.863 re S Q
+q 1 0 0 -1 0 248.630081 cm
+103.129 143.086 62.648 34.867 re S Q
+q 1 0 0 -1 0 248.630081 cm
+103.129 182.445 62.648 34.863 re S Q
+q 1 0 0 -1 0 248.630081 cm
+173.156 64.371 62.648 34.867 re S Q
+q 1 0 0 -1 0 248.630081 cm
+173.156 103.73 62.648 34.863 re S Q
+q 1 0 0 -1 0 248.630081 cm
+173.156 143.086 62.648 34.867 re S Q
+q 1 0 0 -1 0 248.630081 cm
+173.156 182.445 62.648 34.863 re S Q
+q 1 0 0 -1 0 248.630081 cm
+0.402 17.879 271.582 230.359 re S Q
+0 g
+BT
+13.340933 0 0 13.340933 83.782056 238.494099 Tm
+/f-0-0 1 Tf
+[<010203040506>-1<0708>22<090a0b0c06>]TJ
+ET
+0.0392157 0.0156863 0.0313726 rg
+[ 2.4 2.4] 0 d
+q 1 0 0 -1 0 248.630081 cm
+29.586 60.762 210.238 160.207 re S Q
+0 g
+BT
+6.670467 0 0 6.670467 53.541846 162.2602 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0710>]TJ
+ET
+BT
+6.670467 0 0 6.670467 123.075513 162.574433 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0711>]TJ
+ET
+BT
+6.670467 0 0 6.670467 192.60918 162.751313 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0712>]TJ
+ET
+BT
+6.670467 0 0 6.670467 192.60918 123.21518 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0713>]TJ
+ET
+BT
+6.670467 0 0 6.670467 123.075513 125.053046 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0714>]TJ
+ET
+BT
+6.670467 0 0 6.670467 53.541846 123.711396 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0714>]TJ
+ET
+BT
+6.670467 0 0 6.670467 53.541846 85.162568 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0715>]TJ
+ET
+BT
+6.670467 0 0 6.670467 123.075513 83.362641 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0716>]TJ
+ET
+BT
+6.670467 0 0 6.670467 192.60918 83.679096 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0717>]TJ
+ET
+BT
+6.670467 0 0 6.670467 123.075513 44.142963 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0710>-1<10>]TJ
+ET
+BT
+6.670467 0 0 6.670467 53.541846 44.142963 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0710>-1<18>]TJ
+ET
+BT
+6.670467 0 0 6.670467 192.60918 44.142963 Tm
+/f-0-0 1 Tf
+[<0d>-1<0e>-1<09>1<0f0a0710>-1<11>]TJ
+ET
+BT
+10.0057 0 0 10.0057 121.303418 195.612519 Tm
+/f-0-0 1 Tf
+[<19>166<02>-1<1a0f>1<0c>]TJ
+ET
+Q Q
+showpage
+%%Trailer
+count op_count sub {pop} repeat
+countdictstack dict_count sub {end} repeat
+cairo_eps_state restore
+%%EOF
diff --git a/doc/img/layout_table.png b/doc/img/layout_table.png
new file mode 100644 (file)
index 0000000..39f69c3
Binary files /dev/null and b/doc/img/layout_table.png differ
index deb9a88..b399cb2 100644 (file)
@@ -4691,26 +4691,523 @@ extern "C" {
     * @}
     */
 
-   /* layout */
+   /**
+    * @defgroup Layout Layout
+    *
+    * This is a container widget that takes a standard Edje design file and
+    * wraps it very thinly in a widget.
+    *
+    * An Edje design (theme) file has a very wide range of possibilities to
+    * describe the behavior of elements added to the Layout. Check out the Edje
+    * documentation and the EDC reference to get more information about what can
+    * be done with Edje.
+    *
+    * Just like @ref List, @ref Box, and other container widgets, any
+    * object added to the Layout will become its child, meaning that it will be
+    * deleted if the Layout is deleted, move if the Layout is moved, and so on.
+    *
+    * The Layout widget can contain as many Contents, Boxes or Tables as
+    * described in its theme file. For instance, objects can be added to
+    * different Tables by specifying the respective Table part names. The same
+    * is valid for Content and Box.
+    *
+    * The objects added as child of the Layout will behave as described in the
+    * part description where they were added. There are 3 possible types of
+    * parts where a child can be added:
+    *
+    * @section secContent Content (SWALLOW part)
+    *
+    * Only one object can be added to the @c SWALLOW part (but you still can
+    * have many @c SWALLOW parts and one object on each of them). Use the @c
+    * elm_layout_content_* set of functions to set, retrieve and unset objects
+    * as content of the @c SWALLOW. After being set to this part, the object
+    * size, position, visibility, clipping and other description properties
+    * will be totally controled by the description of the given part (inside
+    * the Edje theme file).
+    *
+    * One can use @c evas_object_size_hint_* functions on the child to have some
+    * kind of control over its behavior, but the resulting behavior will still
+    * depend heavily on the @c SWALLOW part description.
+    *
+    * The Edje theme also can change the part description, based on signals or
+    * scripts running inside the theme. This change can also be animated. All of
+    * this will affect the child object set as content accordingly. The object
+    * size will be changed if the part size is changed, it will animate move if
+    * the part is moving, and so on.
+    *
+    * The following picture demonstrates a Layout widget with a child object
+    * added to its @c SWALLOW:
+    *
+    * @image html layout_swallow.png
+    * @image latex layout_swallow.png width=\textwidth
+    *
+    * @section secBox Box (BOX part)
+    *
+    * An Edje @c BOX part is very similar to the Elementary @ref Box widget. It
+    * allows one to add objects to the box and have them distributed along its
+    * area, accordingly to the specified @a layout property (now by @a layout we
+    * mean the chosen layouting design of the Box, not the Layout widget
+    * itself).
+    *
+    * A similar effect for having a box with its position, size and other things
+    * controled by the Layout theme would be to create an Elementary @ref Box
+    * widget and add it as a Content in the @c SWALLOW part.
+    *
+    * The main difference of using the Layout Box is that its behavior, the box
+    * properties like layouting format, padding, align, etc. will be all
+    * controled by the theme. This means, for example, that a signal could be
+    * sent to the Layout theme (with elm_object_signal_emit()) and the theme
+    * handled the signal by changing the box padding, or align, or both. Using
+    * the Elementary @ref Box widget is not necessarily harder or easier, it
+    * just depends on the circunstances and requirements.
+    *
+    * The Layout Box can be used through the @c elm_layout_box_* set of
+    * functions.
+    *
+    * The following picture demonstrates a Layout widget with many child objects
+    * added to its @c BOX part:
+    *
+    * @image html layout_box.png
+    * @image latex layout_box.png width=\textwidth
+    *
+    * @section secTable Table (TABLE part)
+    *
+    * Just like the @ref secBox, the Layout Table is very similar to the
+    * Elementary @ref Table widget. It allows one to add objects to the Table
+    * specifying the row and column where the object should be added, and any
+    * column or row span if necessary.
+    *
+    * Again, we could have this design by adding a @ref Table widget to the @c
+    * SWALLOW part using elm_layout_content_set(). The same difference happens
+    * here when choosing to use the Layout Table (a @c TABLE part) instead of
+    * the @ref Table plus @c SWALLOW part. It's just a matter of convenience.
+    *
+    * The Layout Table can be used through the @c elm_layout_table_* set of
+    * functions.
+    *
+    * The following picture demonstrates a Layout widget with many child objects
+    * added to its @c TABLE part:
+    *
+    * @image html layout_table.png
+    * @image latex layout_table.png width=\textwidth
+    *
+    * @section secPredef Predefined Layouts
+    *
+    * Another interesting thing about the Layout widget is that it offers some
+    * predefined themes that come with the default Elementary theme. These
+    * themes can be set by the call elm_layout_theme_set(), and provide some
+    * basic functionality depending on the theme used.
+    *
+    * Most of them already send some signals, some already provide a toolbar or
+    * back and next buttons.
+    *
+    * These are available predefined theme layouts. All of them have class = @c
+    * layout, group = @c application, and style = one of the following options:
+    *
+    * @li @c toolbar-content - application with toolbar and main content area
+    * @li @c toolbar-content-back - application with toolbar and main content
+    * area with a back button and title area
+    * @li @c toolbar-content-back-next - application with toolbar and main
+    * content area with a back and next buttons and title area
+    * @li @c content-back - application with a main content area with a back
+    * button and title area
+    * @li @c content-back-next - application with a main content area with a
+    * back and next buttons and title area
+    * @li @c toolbar-vbox - application with toolbar and main content area as a
+    * vertical box
+    * @li @c toolbar-table - application with toolbar and main content area as a
+    * table
+    *
+    * @section secExamples Examples
+    *
+    * Some examples of the Layout widget can be found here:
+    * @li @ref layout_example_01
+    * @li @ref layout_example_02
+    * @li @ref layout_example_03
+    * @li @ref layout_example_edc
+    *
+    */
+
+   /**
+    * Add a new layout to the parent
+    *
+    * @param parent The parent object
+    * @return The new object or NULL if it cannot be created
+    *
+    * @see elm_layout_file_set()
+    * @see elm_layout_theme_set()
+    *
+    * @ingroup Layout
+    */
    EAPI Evas_Object       *elm_layout_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+   /**
+    * Set the file that will be used as layout
+    *
+    * @param obj The layout object
+    * @param file The path to file (edj) that will be used as layout
+    * @param group The group that the layout belongs in edje file
+    *
+    * @return (1 = success, 0 = error)
+    *
+    * @ingroup Layout
+    */
    EAPI Eina_Bool          elm_layout_file_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1);
+   /**
+    * Set the edje group from the elementary theme that will be used as layout
+    *
+    * @param obj The layout object
+    * @param clas the clas of the group
+    * @param group the group
+    * @param style the style to used
+    *
+    * @return (1 = success, 0 = error)
+    *
+    * @ingroup Layout
+    */
    EAPI Eina_Bool          elm_layout_theme_set(Evas_Object *obj, const char *clas, const char *group, const char *style) EINA_ARG_NONNULL(1);
+   /**
+    * Set the layout content.
+    *
+    * @param obj The layout object
+    * @param swallow The swallow part name in the edje file
+    * @param content The child that will be added in this layout object
+    *
+    * Once the content object is set, a previously set one will be deleted.
+    * If you want to keep that old content object, use the
+    * elm_layout_content_unset() function.
+    *
+    * @note In an Edje theme, the part used as a content container is called @c
+    * SWALLOW. This is why the parameter name is called @p swallow, but it is
+    * expected to be a part name just like the second parameter of
+    * elm_layout_box_append().
+    *
+    * @see elm_layout_box_append()
+    * @see elm_layout_content_get()
+    * @see elm_layout_content_unset()
+    * @see @ref secBox
+    *
+    * @ingroup Layout
+    */
    EAPI void               elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1);
+   /**
+    * Get the child object in the given content part.
+    *
+    * @param obj The layout object
+    * @param swallow The SWALLOW part to get its content
+    *
+    * @return The swallowed object or NULL if none or an error occurred
+    *
+    * @see elm_layout_content_set()
+    *
+    * @ingroup Layout
+    */
    EAPI Evas_Object       *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
+   /**
+    * Unset the layout content.
+    *
+    * @param obj The layout object
+    * @param swallow The swallow part name in the edje file
+    * @return The content that was being used
+    *
+    * Unparent and return the content object which was set for this part.
+    *
+    * @see elm_layout_content_set()
+    *
+    * @ingroup Layout
+    */
    EAPI Evas_Object       *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
+   /**
+    * Set the text of the given part
+    *
+    * @param obj The layout object
+    * @param part The TEXT part where to set the text
+    * @param text The text to set
+    *
+    * @ingroup Layout
+    * @deprecated use elm_object_text_* instead.
+    */
    EINA_DEPRECATED EAPI void               elm_layout_text_set(Evas_Object *obj, const char *part, const char *text) EINA_ARG_NONNULL(1);
+   /**
+    * Get the text set in the given part
+    *
+    * @param obj The layout object
+    * @param part The TEXT part to retrieve the text off
+    *
+    * @return The text set in @p part
+    *
+    * @ingroup Layout
+    * @deprecated use elm_object_text_* instead.
+    */
    EINA_DEPRECATED EAPI const char        *elm_layout_text_get(const Evas_Object *obj, const char *part) EINA_ARG_NONNULL(1);
+   /**
+    * Append child to layout box part.
+    *
+    * @param obj the layout object
+    * @param part the box part to which the object will be appended.
+    * @param child the child object to append to box.
+    *
+    * Once the object is appended, it will become child of the layout. Its
+    * lifetime will be bound to the layout, whenever the layout dies the child
+    * will be deleted automatically. One should use elm_layout_box_remove() to
+    * make this layout forget about the object.
+    *
+    * @see elm_layout_box_prepend()
+    * @see elm_layout_box_insert_before()
+    * @see elm_layout_box_insert_at()
+    * @see elm_layout_box_remove()
+    *
+    * @ingroup Layout
+    */
    EAPI void               elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1);
+   /**
+    * Prepend child to layout box part.
+    *
+    * @param obj the layout object
+    * @param part the box part to prepend.
+    * @param child the child object to prepend to box.
+    *
+    * Once the object is prepended, it will become child of the layout. Its
+    * lifetime will be bound to the layout, whenever the layout dies the child
+    * will be deleted automatically. One should use elm_layout_box_remove() to
+    * make this layout forget about the object.
+    *
+    * @see elm_layout_box_append()
+    * @see elm_layout_box_insert_before()
+    * @see elm_layout_box_insert_at()
+    * @see elm_layout_box_remove()
+    *
+    * @ingroup Layout
+    */
    EAPI void               elm_layout_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1);
+   /**
+    * Insert child to layout box part before a reference object.
+    *
+    * @param obj the layout object
+    * @param part the box part to insert.
+    * @param child the child object to insert into box.
+    * @param reference another reference object to insert before in box.
+    *
+    * Once the object is inserted, it will become child of the layout. Its
+    * lifetime will be bound to the layout, whenever the layout dies the child
+    * will be deleted automatically. One should use elm_layout_box_remove() to
+    * make this layout forget about the object.
+    *
+    * @see elm_layout_box_append()
+    * @see elm_layout_box_prepend()
+    * @see elm_layout_box_insert_before()
+    * @see elm_layout_box_remove()
+    *
+    * @ingroup Layout
+    */
    EAPI void               elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference) EINA_ARG_NONNULL(1);
+   /**
+    * Insert child to layout box part at a given position.
+    *
+    * @param obj the layout object
+    * @param part the box part to insert.
+    * @param child the child object to insert into box.
+    * @param pos the numeric position >=0 to insert the child.
+    *
+    * Once the object is inserted, it will become child of the layout. Its
+    * lifetime will be bound to the layout, whenever the layout dies the child
+    * will be deleted automatically. One should use elm_layout_box_remove() to
+    * make this layout forget about the object.
+    *
+    * @see elm_layout_box_append()
+    * @see elm_layout_box_prepend()
+    * @see elm_layout_box_insert_before()
+    * @see elm_layout_box_remove()
+    *
+    * @ingroup Layout
+    */
    EAPI void               elm_layout_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos) EINA_ARG_NONNULL(1);
+   /**
+    * Remove a child of the given part box.
+    *
+    * @param obj The layout object
+    * @param part The box part name to remove child.
+    * @param child The object to remove from box.
+    * @return The object that was being used, or NULL if not found.
+    *
+    * The object will be removed from the box part and its lifetime will
+    * not be handled by the layout anymore. This is equivalent to
+    * elm_layout_content_unset() for box.
+    *
+    * @see elm_layout_box_append()
+    * @see elm_layout_box_remove_all()
+    *
+    * @ingroup Layout
+    */
    EAPI Evas_Object       *elm_layout_box_remove(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1, 2, 3);
+   /**
+    * Remove all child of the given part box.
+    *
+    * @param obj The layout object
+    * @param part The box part name to remove child.
+    * @param clear If EINA_TRUE, then all objects will be deleted as
+    *        well, otherwise they will just be removed and will be
+    *        dangling on the canvas.
+    *
+    * The objects will be removed from the box part and their lifetime will
+    * not be handled by the layout anymore. This is equivalent to
+    * elm_layout_box_remove() for all box children.
+    *
+    * @see elm_layout_box_append()
+    * @see elm_layout_box_remove()
+    *
+    * @ingroup Layout
+    */
    EAPI void               elm_layout_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear) EINA_ARG_NONNULL(1, 2);
+   /**
+    * Insert child to layout table part.
+    *
+    * @param obj the layout object
+    * @param part the box part to pack child.
+    * @param child_obj the child object to pack into table.
+    * @param col the column to which the child should be added. (>= 0)
+    * @param row the row to which the child should be added. (>= 0)
+    * @param colspan how many columns should be used to store this object. (>=
+    *        1)
+    * @param rowspan how many rows should be used to store this object. (>= 1)
+    *
+    * Once the object is inserted, it will become child of the table. Its
+    * lifetime will be bound to the layout, and whenever the layout dies the
+    * child will be deleted automatically. One should use
+    * elm_layout_table_remove() to make this layout forget about the object.
+    *
+    * If @p colspan or @p rowspan are bigger than 1, that object will occupy
+    * more space than a single cell. For instance, the following code:
+    * @code
+    * elm_layout_table_pack(layout, "table_part", child, 0, 1, 3, 1);
+    * @endcode
+    *
+    * Would result in an object being added like the following picture:
+    *
+    * @image html layout_colspan.png
+    * @image latex layout_colspan.eps width=\textwidth
+    *
+    * @see elm_layout_table_unpack()
+    * @see elm_layout_table_clear()
+    *
+    * @ingroup Layout
+    */
    EAPI void               elm_layout_table_pack(Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan) EINA_ARG_NONNULL(1);
+   /**
+    * Unpack (remove) a child of the given part table.
+    *
+    * @param obj The layout object
+    * @param part The table part name to remove child.
+    * @param child_obj The object to remove from table.
+    * @return The object that was being used, or NULL if not found.
+    *
+    * The object will be unpacked from the table part and its lifetime
+    * will not be handled by the layout anymore. This is equivalent to
+    * elm_layout_content_unset() for table.
+    *
+    * @see elm_layout_table_pack()
+    * @see elm_layout_table_clear()
+    *
+    * @ingroup Layout
+    */
    EAPI Evas_Object       *elm_layout_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child_obj) EINA_ARG_NONNULL(1, 2, 3);
+   /**
+    * Remove all child of the given part table.
+    *
+    * @param obj The layout object
+    * @param part The table part name to remove child.
+    * @param clear If EINA_TRUE, then all objects will be deleted as
+    *        well, otherwise they will just be removed and will be
+    *        dangling on the canvas.
+    *
+    * The objects will be removed from the table part and their lifetime will
+    * not be handled by the layout anymore. This is equivalent to
+    * elm_layout_table_unpack() for all table children.
+    *
+    * @see elm_layout_table_pack()
+    * @see elm_layout_table_unpack()
+    *
+    * @ingroup Layout
+    */
    EAPI void               elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear) EINA_ARG_NONNULL(1, 2);
+   /**
+    * Get the edje layout
+    *
+    * @param obj The layout object
+    *
+    * @return A Evas_Object with the edje layout settings loaded
+    * with function elm_layout_file_set
+    *
+    * This returns the edje object. It is not expected to be used to then
+    * swallow objects via edje_object_part_swallow() for example. Use
+    * elm_layout_content_set() instead so child object handling and sizing is
+    * done properly.
+    *
+    * @note This function should only be used if you really need to call some
+    * low level Edje function on this edje object. All the common stuff (setting
+    * text, emitting signals, hooking callbacks to signals, etc.) can be done
+    * with proper elementary functions.
+    *
+    * @see elm_object_signal_callback_add()
+    * @see elm_object_signal_emit()
+    * @see elm_object_text_part_set()
+    * @see elm_layout_content_set()
+    * @see elm_layout_box_append()
+    * @see elm_layout_table_pack()
+    * @see elm_layout_data_get()
+    *
+    * @ingroup Layout
+    */
    EAPI Evas_Object       *elm_layout_edje_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Get the edje data from the given layout
+    *
+    * @param obj The layout object
+    * @param key The data key
+    *
+    * @return The edje data string
+    *
+    * This function fetches data specified inside the edje theme of this layout.
+    * This function return NULL if data is not found.
+    *
+    * In EDC this comes from a data block within the group block that @p
+    * obj was loaded from. E.g.
+    *
+    * @code
+    * collections {
+    *   group {
+    *     name: "a_group";
+    *     data {
+    *       item: "key1" "value1";
+    *       item: "key2" "value2";
+    *     }
+    *   }
+    * }
+    * @endcode
+    *
+    * @ingroup Layout
+    */
    EAPI const char        *elm_layout_data_get(const Evas_Object *obj, const char *key) EINA_ARG_NONNULL(1, 2);
+   /**
+    * Eval sizing
+    *
+    * @param obj The layout object
+    *
+    * Manually forces a sizing re-evaluation. This is useful when the minimum
+    * size required by the edje theme of this layout has changed. The change on
+    * the minimum size required by the edje theme is not immediately reported to
+    * the elementary layout, so one needs to call this function in order to tell
+    * the widget (layout) that it needs to reevaluate its own size.
+    *
+    * The minimum size of the theme is calculated based on minimum size of
+    * parts, the size of elements inside containers like box and table, etc. All
+    * of this can change due to state changes, and that's when this function
+    * should be called.
+    *
+    * Also note that a standard signal of "size,eval" "elm" emitted from the
+    * edje object will cause this to happen too.
+    *
+    * @ingroup Layout
+    */
    EAPI void               elm_layout_sizing_eval(Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool          elm_layout_part_cursor_set(Evas_Object *obj, const char *part_name, const char *cursor) EINA_ARG_NONNULL(1, 2);
    EAPI const char        *elm_layout_part_cursor_get(const Evas_Object *obj, const char *part_name) EINA_ARG_NONNULL(1, 2);
index 994665f..e8fd384 100644 (file)
@@ -1,15 +1,6 @@
 #include <Elementary.h>
 #include "elm_priv.h"
 
-/**
- * @defgroup Layout Layout
- *
- * This takes a standard Edje design file and wraps it very thinly
- * in a widget and handles swallowing widgets into swallow regions
- * in the Edje object, allowing Edje to be used as a design and
- * layout tool
- */
-
 typedef struct _Widget_Data Widget_Data;
 typedef struct _Subinfo Subinfo;
 typedef struct _Part_Cursor Part_Cursor;
@@ -367,14 +358,6 @@ _elm_layout_label_get(const Evas_Object *obj, const char *part)
    return edje_object_part_text_get(wd->lay, part);
 }
 
-/**
- * Add a new layout to the parent
- *
- * @param parent The parent object
- * @return The new object or NULL if it cannot be created
- *
- * @ingroup Layout
- */
 EAPI Evas_Object *
 elm_layout_add(Evas_Object *parent)
 {
@@ -413,17 +396,6 @@ elm_layout_add(Evas_Object *parent)
    return obj;
 }
 
-/**
- * Set the file that will be used as layout
- *
- * @param obj The layout object
- * @param file The path to file (edj) that will be used as layout
- * @param group The group that the layout belongs in edje file
- *
- * @return (1 = success, 0 = error)
- *
- * @ingroup Layout
- */
 EAPI Eina_Bool
 elm_layout_file_set(Evas_Object *obj, const char *file, const char *group)
 {
@@ -443,18 +415,6 @@ elm_layout_file_set(Evas_Object *obj, const char *file, const char *group)
    return ret;
 }
 
-/**
- * Set the edje group from the elementary theme that will be used as layout
- *
- * @param obj The layout object
- * @param clas the clas of the group
- * @param group the group
- * @param style the style to used
- *
- * @return (1 = success, 0 = error)
- *
- * @ingroup Layout
- */
 EAPI Eina_Bool
 elm_layout_theme_set(Evas_Object *obj, const char *clas, const char *group, const char *style)
 {
@@ -474,19 +434,6 @@ elm_layout_theme_set(Evas_Object *obj, const char *clas, const char *group, cons
    return ret;
 }
 
-/**
- * Set the layout content
- *
- * Once the content object is set, a previously set one will be deleted.
- * If you want to keep that old content object, use the
- * elm_layout_content_unset() function.
- *
- * @param obj The layout object
- * @param swallow The swallow group name in the edje file
- * @param content The content will be filled in this layout object
- *
- * @ingroup Layout
- */
 EAPI void
 elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content)
 {
@@ -521,16 +468,6 @@ elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *conte
    _request_sizing_eval(wd);
 }
 
-/**
- * Get the swallowed object in the given part
- *
- * @param obj The layout object
- * @param swallow The SWALLOW part to get its content
- *
- * @return The swallowed object or NULL if none or an error occurred
- *
- * @ingroup Layout
- */
 EAPI Evas_Object *
 elm_layout_content_get(const Evas_Object *obj, const char *swallow)
 {
@@ -547,17 +484,6 @@ elm_layout_content_get(const Evas_Object *obj, const char *swallow)
    return NULL;
 }
 
-/**
- * Unset the layout content
- *
- * Unparent and return the content object which was set for this widget
- *
- * @param obj The layout object
- * @param swallow The swallow group name in the edje file
- * @return The content that was being used
- *
- * @ingroup Layout
- */
 EAPI Evas_Object *
 elm_layout_content_unset(Evas_Object *obj, const char *swallow)
 {
@@ -581,53 +507,18 @@ elm_layout_content_unset(Evas_Object *obj, const char *swallow)
    return NULL;
 }
 
-/**
- * Set the text of the given part
- *
- * @param obj The layout object
- * @param part The TEXT part where to set the text
- * @param text The text to set
- *
- * @ingroup Layout
- * @deprecate use elm_object_text_* instead.
- */
 EAPI void
 elm_layout_text_set(Evas_Object *obj, const char *part, const char *text)
 {
    _elm_layout_label_set(obj, part, text);
 }
 
-/**
- * Get the text set in the given part
- *
- * @param obj The layout object
- * @param part The TEXT part to retrieve the text off
- *
- * @return The text set in @p part
- *
- * @ingroup Layout
- * @deprecate use elm_object_text_* instead.
- */
 EAPI const char *
 elm_layout_text_get(const Evas_Object *obj, const char *part)
 {
    return _elm_layout_label_get(obj, part);
 }
 
-/**
- * Append child to layout box part.
- *
- * Once the object is appended, its lifetime will be bound to the
- * layout, whenever the layout dies the child will be deleted
- * automatically. One should use elm_layout_box_remove() to make this
- * layout forget about the object.
- *
- * @param obj the layout object
- * @param part the box part to append.
- * @param child the child object to append to box.
- *
- * @ingroup Layout
- */
 EAPI void
 elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child)
 {
@@ -650,20 +541,6 @@ elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child)
    _request_sizing_eval(wd);
 }
 
-/**
- * Prepend child to layout box part.
- *
- * Once the object is prepended, its lifetime will be bound to the
- * layout, whenever the layout dies the child will be deleted
- * automatically. One should use elm_layout_box_remove() to make this
- * layout forget about the object.
- *
- * @param obj the layout object
- * @param part the box part to prepend.
- * @param child the child object to prepend to box.
- *
- * @ingroup Layout
- */
 EAPI void
 elm_layout_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child)
 {
@@ -693,21 +570,6 @@ _box_reference_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
    si->p.box.reference = NULL;
 }
 
-/**
- * Insert child to layout box part before a reference object.
- *
- * Once the object is inserted, its lifetime will be bound to the
- * layout, whenever the layout dies the child will be deleted
- * automatically. One should use elm_layout_box_remove() to make this
- * layout forget about the object.
- *
- * @param obj the layout object
- * @param part the box part to insert.
- * @param child the child object to insert into box.
- * @param reference another reference object to insert before in box.
- *
- * @ingroup Layout
- */
 EAPI void
 elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference)
 {
@@ -736,21 +598,6 @@ elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *ch
    _request_sizing_eval(wd);
 }
 
-/**
- * Insert child to layout box part at a given position.
- *
- * Once the object is inserted, its lifetime will be bound to the
- * layout, whenever the layout dies the child will be deleted
- * automatically. One should use elm_layout_box_remove() to make this
- * layout forget about the object.
- *
- * @param obj the layout object
- * @param part the box part to insert.
- * @param child the child object to insert into box.
- * @param pos the numeric position >=0 to insert the child.
- *
- * @ingroup Layout
- */
 EAPI void
 elm_layout_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos)
 {
@@ -818,20 +665,6 @@ _sub_box_is(const Subinfo *si)
      }
 }
 
-/**
- * Remove a child of the given part box.
- *
- * The object will be removed from the box part and its lifetime will
- * not be handled by the layout anymore. This is equivalent to
- * elm_layout_content_unset() for box.
- *
- * @param obj The layout object
- * @param part The box part name to remove child.
- * @param child The object to remove from box.
- * @return The object that was being used, or NULL if not found.
- *
- * @ingroup Layout
- */
 EAPI Evas_Object *
 elm_layout_box_remove(Evas_Object *obj, const char *part, Evas_Object *child)
 {
@@ -853,21 +686,6 @@ elm_layout_box_remove(Evas_Object *obj, const char *part, Evas_Object *child)
    return NULL;
 }
 
-/**
- * Remove all child of the given part box.
- *
- * The objects will be removed from the box part and their lifetime will
- * not be handled by the layout anymore. This is equivalent to
- * elm_layout_content_unset() for all box children.
- *
- * @param obj The layout object
- * @param part The box part name to remove child.
- * @param clear If EINA_TRUE, then all objects will be deleted as
- *        well, otherwise they will just be removed and will be
- *        dangling on the canvas.
- *
- * @ingroup Layout
- */
 EAPI void
 elm_layout_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear)
 {
@@ -893,21 +711,6 @@ elm_layout_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear)
    edje_object_part_box_remove_all(wd->lay, part, clear);
 }
 
-/**
- * Insert child to layout table part.
- *
- * Once the object is inserted, its lifetime will be bound to the
- * layout, whenever the layout dies the child will be deleted
- * automatically. One should use elm_layout_box_remove() to make this
- * layout forget about the object.
- *
- * @param obj the layout object
- * @param part the box part to pack child.
- * @param child the child object to pack into table.
- * @param reference another reference object to insert before in box.
- *
- * @ingroup Layout
- */
 EAPI void
 elm_layout_table_pack(Evas_Object *obj, const char *part, Evas_Object *child, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan)
 {
@@ -937,20 +740,6 @@ elm_layout_table_pack(Evas_Object *obj, const char *part, Evas_Object *child, un
    _request_sizing_eval(wd);
 }
 
-/**
- * Unpack (remove) a child of the given part table.
- *
- * The object will be unpacked from the table part and its lifetime
- * will not be handled by the layout anymore. This is equivalent to
- * elm_layout_content_unset() for table.
- *
- * @param obj The layout object
- * @param part The table part name to remove child.
- * @param child The object to remove from table.
- * @return The object that was being used, or NULL if not found.
- *
- * @ingroup Layout
- */
 EAPI Evas_Object *
 elm_layout_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child)
 {
@@ -972,21 +761,6 @@ elm_layout_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child)
    return NULL;
 }
 
-/**
- * Remove all child of the given part table.
- *
- * The objects will be removed from the table part and their lifetime will
- * not be handled by the layout anymore. This is equivalent to
- * elm_layout_content_unset() for all table children.
- *
- * @param obj The layout object
- * @param part The table part name to remove child.
- * @param clear If EINA_TRUE, then all objects will be deleted as
- *        well, otherwise they will just be removed and will be
- *        dangling on the canvas.
- *
- * @ingroup Layout
- */
 EAPI void
 elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear)
 {
@@ -1012,22 +786,6 @@ elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear)
    edje_object_part_table_clear(wd->lay, part, clear);
 }
 
-/**
- * Get the edje layout
- *
- * @param obj The layout object
- *
- * This returns the edje object. It is not expected to be used to then swallow
- * objects via edje_object_part_swallow() for example. Use
- * elm_layout_content_set() instead so child object handling and sizing is
- * done properly. This is more intended for setting text, emitting signals,
- * hooking to signal callbacks etc.
- *
- * @return A Evas_Object with the edje layout settings loaded
- * with function elm_layout_file_set
- *
- * @ingroup Layout
- */
 EAPI Evas_Object *
 elm_layout_edje_get(const Evas_Object *obj)
 {
@@ -1037,34 +795,6 @@ elm_layout_edje_get(const Evas_Object *obj)
    return wd->lay;
 }
 
-/**
- * Get the edje data of the given layout
- *
- * @param obj The layout object
- * @param key The data key
- *
- * @return The edje data string
- *
- * This function fetches data specified at the object level.
- * This function return NULL if data is not found.
- *
- * In EDC this comes from a data block within the group block that @a
- * obj was loaded from. E.g.
- *
- * @code
- * collections {
- *   group {
- *     name: "a_group";
- *     data {
- *      item: "key1" "value1";
- *      item: "key2" "value2";
- *     }
- *   }
- * }
- * @endcode
- *
- * @ingroup Layout
- */
 EAPI const char *
 elm_layout_data_get(const Evas_Object *obj, const char *key)
 {
@@ -1073,18 +803,6 @@ elm_layout_data_get(const Evas_Object *obj, const char *key)
    return edje_object_data_get(wd->lay, key);
 }
 
-/**
- * Eval sizing
- *
- * Manually forms a sizing re-evaluation when contents changed state so that
- * minimum size might have changed and needs re-evaluation. Also note that
- * a standard signal of "size,eval" "elm" emitted by the edje object will
- * cause this to happen too
- *
- * @param obj The layout object
- *
- * @ingroup Layout
- */
 EAPI void
 elm_layout_sizing_eval(Evas_Object *obj)
 {