From c73e5d8c4f7487b4b1fef34c0b70521f033882fb Mon Sep 17 00:00:00 2001 From: adam Date: Sun, 9 Jan 2005 11:00:52 +0000 Subject: [PATCH] reference updates darcs-hash:20050109110052-5007d-2fd07791070233621ccfdf9e3fc9e6a1a90dda5b.gz --- doc/ibex-doc.xml | 7 + doc/reference/ibex-logo.pdf | 47 ++ doc/reference/lifecycle.pdf | Bin 74040 -> 80367 bytes doc/reference/reference.xml | 1395 +++++++++++++++++++++++++------------------ 4 files changed, 857 insertions(+), 592 deletions(-) create mode 100644 doc/reference/ibex-logo.pdf diff --git a/doc/ibex-doc.xml b/doc/ibex-doc.xml index 05e49d9..6d4df4f 100644 --- a/doc/ibex-doc.xml +++ b/doc/ibex-doc.xml @@ -132,6 +132,7 @@ **italics** __boldface__ ||typewriter|| + ==nonstructural heading== blank lines become paragraph breaks @@ -151,6 +152,12 @@ \quot \apos + wiki plugins: page topology (who points here, orphaned pages, statistics, document upload, etc) + http://en.wikipedia.org/wiki/Special:Specialpages + + structured ebnf content? + http://www.docbook.org/tdg/en/html/docbook.html + diff --git a/doc/reference/ibex-logo.pdf b/doc/reference/ibex-logo.pdf new file mode 100644 index 0000000..cc178bc --- /dev/null +++ b/doc/reference/ibex-logo.pdf @@ -0,0 +1,47 @@ +%PDF-1.4 %âãÏÓ +1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj null endobj 6 0 obj<>/Properties<>>>>>>> endobj 7 0 obj<> endobj 8 0 obj 14920 endobj 9 0 obj<>stream +/Layer /MC0 BDC 1 0 0 -1 0 0 cm 0 0 0 1 k 0 i /GS0 gs 56.13184 -157.37939 m 56.72656 -185.70264 95.53955 -209.16553 119.54199 -213.87158 c 69.36621 -221.03857 0.31396 -167.31885 37.35547 -115.41846 c 41.23438 -115.06982 56.92822 -117.90527 62.21387 -120.68066 c 58.48828 -127.44043 52.84668 -141.06055 56.13184 -157.37939 c f 56.13184 -157.37939 m 56.72656 -185.70264 95.53955 -209.16553 119.54199 -213.87158 c 69.36621 -221.03857 0.31396 -167.31885 37.35547 -115.41846 c 41.23438 -115.06982 56.92822 -117.90527 62.21387 -120.68066 c 58.48828 -127.44043 52.84668 -141.06055 56.13184 -157.37939 c f 0 0 0 0 K 1 w 4 M 0 j 0 J []0 d 56.13184 -157.37939 m 56.72656 -185.70264 95.53955 -209.16553 119.54199 -213.87158 c 69.36621 -221.03857 0.31396 -167.31885 37.35547 -115.41846 c 41.23438 -115.06982 56.92822 -117.90527 62.21387 -120.68066 c 58.48828 -127.44043 52.84668 -141.06055 56.13184 -157.37939 c S 145.86621 -184.11328 m 142.31152 -185.41455 138.5332 -186.14502 134.65527 -186.39795 c 156.23242 -168.72803 166.46582 -127.32227 145.51074 -105.37109 c 126.62891 -85.58984 96.10938 -75.66211 70.55713 -67.99609 c 97.55029 -74.76172 124.80078 -81.09277 152.12012 -86.4375 c 151.18359 -86.26758 142.32129 -84.61328 142.37891 -86.15234 c 142.46387 -88.3584 153.94629 -95.12598 155.91406 -97.41504 c 163.5332 -106.27637 167.03906 -109.69727 170.37598 -120.73535 c 174.27832 -133.63574 175.87793 -152.98779 171.55371 -165.83936 c 164.54199 -174.4707 155.41309 -180.61719 145.86621 -184.11328 c f 145.86621 -184.11328 m 142.31152 -185.41455 138.5332 -186.14502 134.65527 -186.39795 c 156.23242 -168.72803 166.46582 -127.32227 145.51074 -105.37109 c 126.62891 -85.58984 96.10938 -75.66211 70.55713 -67.99609 c 97.55029 -74.76172 124.80078 -81.09277 152.12012 -86.4375 c 151.18359 -86.26758 142.32129 -84.61328 142.37891 -86.15234 c 142.46387 -88.3584 153.94629 -95.12598 155.91406 -97.41504 c 163.5332 -106.27637 167.03906 -109.69727 170.37598 -120.73535 c 174.27832 -133.63574 175.87793 -152.98779 171.55371 -165.83936 c 164.54199 -174.4707 155.41309 -180.61719 145.86621 -184.11328 c f 145.86621 -184.11328 m 142.31152 -185.41455 138.5332 -186.14502 134.65527 -186.39795 c 156.23242 -168.72803 166.46582 -127.32227 145.51074 -105.37109 c 126.62891 -85.58984 96.10938 -75.66211 70.55713 -67.99609 c 97.55029 -74.76172 124.80078 -81.09277 152.12012 -86.4375 c 151.18359 -86.26758 142.32129 -84.61328 142.37891 -86.15234 c 142.46387 -88.3584 153.94629 -95.12598 155.91406 -97.41504 c 163.5332 -106.27637 167.03906 -109.69727 170.37598 -120.73535 c 174.27832 -133.63574 175.87793 -152.98779 171.55371 -165.83936 c 164.54199 -174.4707 155.41309 -180.61719 145.86621 -184.11328 c S 175.57422 -56.73828 m 176.0498 -55.29004 176.2959 -54.125 176.40332 -53.24609 c 176.5957 -54.22852 176.29883 -55.44336 175.57422 -56.73828 c h f 175.57422 -56.73828 m 176.0498 -55.29004 176.2959 -54.125 176.40332 -53.24609 c 176.5957 -54.22852 176.29883 -55.44336 175.57422 -56.73828 c h f 175.57422 -56.73828 m 176.0498 -55.29004 176.2959 -54.125 176.40332 -53.24609 c 176.5957 -54.22852 176.29883 -55.44336 175.57422 -56.73828 c h S 176.40332 -53.24609 m 176.40039 -53.22754 176.39746 -53.20703 176.3916 -53.18555 c 175.81543 -50.54492 176.73145 -50.5791 176.40332 -53.24609 c h f 176.40332 -53.24609 m 176.40039 -53.22754 176.39746 -53.20703 176.3916 -53.18555 c 175.81543 -50.54492 176.73145 -50.5791 176.40332 -53.24609 c h f 176.40332 -53.24609 m 176.40039 -53.22754 176.39746 -53.20703 176.3916 -53.18555 c 175.81543 -50.54492 176.73145 -50.5791 176.40332 -53.24609 c h S 109.72656 -115.14746 m 106.53516 -114.98682 107.25 -112.95947 109.72656 -115.14746 c 109.72656 -115.14746 109.72656 -115.14746 109.72656 -115.14746 c h f 109.72656 -115.14746 m 106.53516 -114.98682 107.25 -112.95947 109.72656 -115.14746 c 109.72656 -115.14746 109.72656 -115.14746 109.72656 -115.14746 c h f 109.72656 -115.14746 m 106.53516 -114.98682 107.25 -112.95947 109.72656 -115.14746 c 109.72656 -115.14746 109.72656 -115.14746 109.72656 -115.14746 c h S 180.67383 -74.25 m 181.40527 -74.38086 181.55762 -74.42188 180.67383 -74.25 c 180.67383 -74.25 180.67383 -74.25 180.67383 -74.25 c h f 180.67383 -74.25 m 181.40527 -74.38086 181.55762 -74.42188 180.67383 -74.25 c 180.67383 -74.25 180.67383 -74.25 180.67383 -74.25 c h f 180.67383 -74.25 m 181.40527 -74.38086 181.55762 -74.42188 180.67383 -74.25 c 180.67383 -74.25 180.67383 -74.25 180.67383 -74.25 c h S 99.10938 -55.81055 m 84.30566 -52.09961 87.70215 -52.38672 99.10938 -55.81055 c 99.10938 -55.81055 99.10938 -55.81055 99.10938 -55.81055 c h f 99.10938 -55.81055 m 84.30566 -52.09961 87.70215 -52.38672 99.10938 -55.81055 c 99.10938 -55.81055 99.10938 -55.81055 99.10938 -55.81055 c h f 99.10938 -55.81055 m 84.30566 -52.09961 87.70215 -52.38672 99.10938 -55.81055 c 99.10938 -55.81055 99.10938 -55.81055 99.10938 -55.81055 c h S 70.55713 -67.99609 m 55.75293 -64.28711 59.14893 -64.57422 70.55713 -67.99609 c 70.55713 -67.99609 70.55713 -67.99609 70.55713 -67.99609 c h f 70.55713 -67.99609 m 55.75293 -64.28711 59.14893 -64.57422 70.55713 -67.99609 c 70.55713 -67.99609 70.55713 -67.99609 70.55713 -67.99609 c h f 70.55713 -67.99609 m 55.75293 -64.28711 59.14893 -64.57422 70.55713 -67.99609 c 70.55713 -67.99609 70.55713 -67.99609 70.55713 -67.99609 c h S 152.12012 -86.4375 m 152.85059 -86.56836 153.00488 -86.60938 152.12012 -86.4375 c 152.12012 -86.4375 152.12012 -86.4375 152.12012 -86.4375 c h f 152.12012 -86.4375 m 152.85059 -86.56836 153.00488 -86.60938 152.12012 -86.4375 c 152.12012 -86.4375 152.12012 -86.4375 152.12012 -86.4375 c h f 152.12012 -86.4375 m 152.85059 -86.56836 153.00488 -86.60938 152.12012 -86.4375 c 152.12012 -86.4375 152.12012 -86.4375 152.12012 -86.4375 c h S 66.59131 -91.49023 m 64.96582 -89.86621 61.02002 -86.15039 56.37695 -88.00879 c 51.73438 -89.86621 52.43018 -89.16797 55.68115 -92.88281 c 58.93066 -96.59766 62.64453 -94.50781 63.57275 -93.81152 c 64.50195 -93.11621 68.2168 -93.11621 66.59131 -91.49023 c h 145.98145 -93.5791 m 124.3877 -112.47607 113.82813 -115.354 109.72656 -115.14746 c 107.25 -112.95947 106.53516 -114.98682 109.72656 -115.14746 c 109.81641 -115.22656 109.90625 -115.31104 110.00195 -115.40039 c 116.03711 -121.20361 116.26855 -127.23975 117.19727 -132.11377 c 118.12695 -136.98926 116.26855 -143.72119 114.64355 -144.64941 c 113.01758 -145.57813 111.85742 -146.2749 110.46484 -145.11377 c 109.07227 -143.95361 109.53711 -135.82861 105.59033 -134.20361 c 101.64355 -132.57959 96.53711 -123.06104 89.34082 -120.73926 c 82.14453 -118.41797 81.6792 -116.79297 81.91211 -119.81055 c 82.14453 -122.82813 83.07275 -123.75684 79.35791 -129.09766 c 75.64453 -134.43506 76.57324 -132.57959 74.94824 -132.34619 c 73.32275 -132.11377 71.2334 -117.49023 71.46582 -115.40039 c 71.69873 -113.31152 38.50244 -114.70361 36.41357 -116.3291 c 34.32422 -117.95361 41.75293 -104.25781 38.03809 -102.40039 c 34.32422 -100.54297 39.89551 -103.09668 35.7168 -100.54297 c 31.53857 -97.99121 39.89551 -94.74023 38.50244 -91.49023 c 37.10938 -88.24023 28.98486 -72.45605 28.28809 -72.45605 c 27.5918 -72.45605 18.53857 -52.72461 18.07471 -50.63477 c 17.61035 -48.54492 19.4668 -46.22266 19.4668 -42.97363 c 19.4668 -39.72168 19.23486 -36.70605 20.16406 -34.84863 c 21.09229 -32.99316 23.18164 -34.38477 23.18164 -34.38477 c 23.18164 -34.38477 23.41357 -33.9209 23.41357 -33.9209 c 23.41357 -33.9209 37.57373 -33.22461 25.50244 -32.99316 c 13.43115 -32.75879 36.87793 -29.97266 41.52002 -34.38477 c 46.1626 -38.79395 44.07324 -32.0625 54.28809 -34.15234 c 64.50195 -36.24219 47.09131 -30.20508 88.41211 -60.15137 c 129.73242 -90.09863 90.26953 -52.72461 101.64355 -17.20703 c 113.01758 18.31055 94.67969 -8.38379 122.76855 -45.29297 c 147.11426 -77.28516 170.76074 -65.33203 175.57422 -56.73828 c 173.42578 -63.26953 166.54883 -75.58105 145.98145 -93.5791 c h f 66.59131 -91.49023 m 64.96582 -89.86621 61.02002 -86.15039 56.37695 -88.00879 c 51.73438 -89.86621 52.43018 -89.16797 55.68115 -92.88281 c 58.93066 -96.59766 62.64453 -94.50781 63.57275 -93.81152 c 64.50195 -93.11621 68.2168 -93.11621 66.59131 -91.49023 c h 145.98145 -93.5791 m 124.3877 -112.47607 113.82813 -115.354 109.72656 -115.14746 c 107.25 -112.95947 106.53516 -114.98682 109.72656 -115.14746 c 109.81641 -115.22656 109.90625 -115.31104 110.00195 -115.40039 c 116.03711 -121.20361 116.26855 -127.23975 117.19727 -132.11377 c 118.12695 -136.98926 116.26855 -143.72119 114.64355 -144.64941 c 113.01758 -145.57813 111.85742 -146.2749 110.46484 -145.11377 c 109.07227 -143.95361 109.53711 -135.82861 105.59033 -134.20361 c 101.64355 -132.57959 96.53711 -123.06104 89.34082 -120.73926 c 82.14453 -118.41797 81.6792 -116.79297 81.91211 -119.81055 c 82.14453 -122.82813 83.07275 -123.75684 79.35791 -129.09766 c 75.64453 -134.43506 76.57324 -132.57959 74.94824 -132.34619 c 73.32275 -132.11377 71.2334 -117.49023 71.46582 -115.40039 c 71.69873 -113.31152 38.50244 -114.70361 36.41357 -116.3291 c 34.32422 -117.95361 41.75293 -104.25781 38.03809 -102.40039 c 34.32422 -100.54297 39.89551 -103.09668 35.7168 -100.54297 c 31.53857 -97.99121 39.89551 -94.74023 38.50244 -91.49023 c 37.10938 -88.24023 28.98486 -72.45605 28.28809 -72.45605 c 27.5918 -72.45605 18.53857 -52.72461 18.07471 -50.63477 c 17.61035 -48.54492 19.4668 -46.22266 19.4668 -42.97363 c 19.4668 -39.72168 19.23486 -36.70605 20.16406 -34.84863 c 21.09229 -32.99316 23.18164 -34.38477 23.18164 -34.38477 c 23.18164 -34.38477 23.41357 -33.9209 23.41357 -33.9209 c 23.41357 -33.9209 37.57373 -33.22461 25.50244 -32.99316 c 13.43115 -32.75879 36.87793 -29.97266 41.52002 -34.38477 c 46.1626 -38.79395 44.07324 -32.0625 54.28809 -34.15234 c 64.50195 -36.24219 47.09131 -30.20508 88.41211 -60.15137 c 129.73242 -90.09863 90.26953 -52.72461 101.64355 -17.20703 c 113.01758 18.31055 94.67969 -8.38379 122.76855 -45.29297 c 147.11426 -77.28516 170.76074 -65.33203 175.57422 -56.73828 c 173.42578 -63.26953 166.54883 -75.58105 145.98145 -93.5791 c h f 66.59131 -91.49023 m 64.96582 -89.86621 61.02002 -86.15039 56.37695 -88.00879 c 51.73438 -89.86621 52.43018 -89.16797 55.68115 -92.88281 c 58.93066 -96.59766 62.64453 -94.50781 63.57275 -93.81152 c 64.50195 -93.11621 68.2168 -93.11621 66.59131 -91.49023 c h 145.98145 -93.5791 m 124.3877 -112.47607 113.82813 -115.354 109.72656 -115.14746 c 107.25 -112.95947 106.53516 -114.98682 109.72656 -115.14746 c 109.81641 -115.22656 109.90625 -115.31104 110.00195 -115.40039 c 116.03711 -121.20361 116.26855 -127.23975 117.19727 -132.11377 c 118.12695 -136.98926 116.26855 -143.72119 114.64355 -144.64941 c 113.01758 -145.57813 111.85742 -146.2749 110.46484 -145.11377 c 109.07227 -143.95361 109.53711 -135.82861 105.59033 -134.20361 c 101.64355 -132.57959 96.53711 -123.06104 89.34082 -120.73926 c 82.14453 -118.41797 81.6792 -116.79297 81.91211 -119.81055 c 82.14453 -122.82813 83.07275 -123.75684 79.35791 -129.09766 c 75.64453 -134.43506 76.57324 -132.57959 74.94824 -132.34619 c 73.32275 -132.11377 71.2334 -117.49023 71.46582 -115.40039 c 71.69873 -113.31152 38.50244 -114.70361 36.41357 -116.3291 c 34.32422 -117.95361 41.75293 -104.25781 38.03809 -102.40039 c 34.32422 -100.54297 39.89551 -103.09668 35.7168 -100.54297 c 31.53857 -97.99121 39.89551 -94.74023 38.50244 -91.49023 c 37.10938 -88.24023 28.98486 -72.45605 28.28809 -72.45605 c 27.5918 -72.45605 18.53857 -52.72461 18.07471 -50.63477 c 17.61035 -48.54492 19.4668 -46.22266 19.4668 -42.97363 c 19.4668 -39.72168 19.23486 -36.70605 20.16406 -34.84863 c 21.09229 -32.99316 23.18164 -34.38477 23.18164 -34.38477 c 23.18164 -34.38477 23.41357 -33.9209 23.41357 -33.9209 c 23.41357 -33.9209 37.57373 -33.22461 25.50244 -32.99316 c 13.43115 -32.75879 36.87793 -29.97266 41.52002 -34.38477 c 46.1626 -38.79395 44.07324 -32.0625 54.28809 -34.15234 c 64.50195 -36.24219 47.09131 -30.20508 88.41211 -60.15137 c 129.73242 -90.09863 90.26953 -52.72461 101.64355 -17.20703 c 113.01758 18.31055 94.67969 -8.38379 122.76855 -45.29297 c 147.11426 -77.28516 170.76074 -65.33203 175.57422 -56.73828 c 173.42578 -63.26953 166.54883 -75.58105 145.98145 -93.5791 c h S 196.70313 -163.91699 m 182.1748 -199.03125 140.87012 -218.39355 107.91357 -211.46973 c 63.04688 -202.04297 35.12695 -159.54883 45.11816 -114.5874 c 51.96143 -110.54395 64.71875 -108.27539 72.52344 -109.51123 c 76.92529 -110.20801 73.47949 -113.81055 73.05176 -116.55811 c 71.73535 -125.00439 73.95361 -134.27393 75.86621 -142.45313 c 79.95117 -159.92432 85.72998 -170.91064 102.35303 -179.1875 c 118.72754 -187.34131 137.46875 -189.42969 153.90723 -180.47119 c 181.68652 -165.33203 198.34961 -118.62598 174.06445 -93.18457 c 155.18359 -73.40234 124.66309 -63.47461 99.10938 -55.81055 c 126.10352 -62.57422 179.16602 -72.13477 206.48535 -77.47656 c 205.5498 -77.30664 170.875 -72.42871 170.93164 -73.96484 c 171.01563 -76.13477 184.25977 -84.7998 186.29883 -87.5166 c 194.0752 -97.87793 198.00879 -104.87598 200.4082 -117.51855 c 202.24707 -127.19922 201.95703 -132.20117 201.83887 -137.53809 c 201.6123 -147.77393 199.51563 -154.43164 196.70313 -163.91699 c f 196.70313 -163.91699 m 182.1748 -199.03125 140.87012 -218.39355 107.91357 -211.46973 c 63.04688 -202.04297 35.12695 -159.54883 45.11816 -114.5874 c 51.96143 -110.54395 64.71875 -108.27539 72.52344 -109.51123 c 76.92529 -110.20801 73.47949 -113.81055 73.05176 -116.55811 c 71.73535 -125.00439 73.95361 -134.27393 75.86621 -142.45313 c 79.95117 -159.92432 85.72998 -170.91064 102.35303 -179.1875 c 118.72754 -187.34131 137.46875 -189.42969 153.90723 -180.47119 c 181.68652 -165.33203 198.34961 -118.62598 174.06445 -93.18457 c 155.18359 -73.40234 124.66309 -63.47461 99.10938 -55.81055 c 126.10352 -62.57422 179.16602 -72.13477 206.48535 -77.47656 c 205.5498 -77.30664 170.875 -72.42871 170.93164 -73.96484 c 171.01563 -76.13477 184.25977 -84.7998 186.29883 -87.5166 c 194.0752 -97.87793 198.00879 -104.87598 200.4082 -117.51855 c 202.24707 -127.19922 201.95703 -132.20117 201.83887 -137.53809 c 201.6123 -147.77393 199.51563 -154.43164 196.70313 -163.91699 c f 196.70313 -163.91699 m 182.1748 -199.03125 140.87012 -218.39355 107.91357 -211.46973 c 63.04688 -202.04297 35.12695 -159.54883 45.11816 -114.5874 c 51.96143 -110.54395 64.71875 -108.27539 72.52344 -109.51123 c 76.92529 -110.20801 73.47949 -113.81055 73.05176 -116.55811 c 71.73535 -125.00439 73.95361 -134.27393 75.86621 -142.45313 c 79.95117 -159.92432 85.72998 -170.91064 102.35303 -179.1875 c 118.72754 -187.34131 137.46875 -189.42969 153.90723 -180.47119 c 181.68652 -165.33203 198.34961 -118.62598 174.06445 -93.18457 c 155.18359 -73.40234 124.66309 -63.47461 99.10938 -55.81055 c 126.10352 -62.57422 179.16602 -72.13477 206.48535 -77.47656 c 205.5498 -77.30664 170.875 -72.42871 170.93164 -73.96484 c 171.01563 -76.13477 184.25977 -84.7998 186.29883 -87.5166 c 194.0752 -97.87793 198.00879 -104.87598 200.4082 -117.51855 c 202.24707 -127.19922 201.95703 -132.20117 201.83887 -137.53809 c 201.6123 -147.77393 199.51563 -154.43164 196.70313 -163.91699 c S EMC endstream endobj 10 0 obj<>stream + + + + + +JPEG228256/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADkAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYqk3mPzj5W8tWn1vXtVtdNgNeDXEqRl+JoQgYguR4LU4q8b81f85k/lzpjPFodrd67Mp+GRE+r W7D/AIyTUlBr/wAVHFXnM/8Azlt+bPmS9/R3lHy5biaWpSCKK4v7oD/JMZiWg/4x4qh9V8+/nvU/ 4y8/ab5Ti2LWDC2lvFH/ADC2ENxcKaj/AHaVxVJX/OOzsCRJ57846/MDU/VHh0i2Pshka9elf+Kl +jFUdYf85ZarpQU6dos1xKop62sapc6ixPiQVhQf7BVxVGj/AJzZ8/D/AKUWlfdc/wDVXFUbYf8A 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 + + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj xref 0 11 0000000004 65535 f +0000000016 00000 n +0000000076 00000 n +0000000126 00000 n +0000000000 00001 f +0000000270 00000 n +0000000290 00000 n +0000000649 00000 n +0000000760 00000 n +0000000781 00000 n +0000015751 00000 n +trailer <<3096410896ab11d891f8000a956e58ec>]>> startxref 35522 %%EOF \ No newline at end of file diff --git a/doc/reference/lifecycle.pdf b/doc/reference/lifecycle.pdf index 940e48220e1f55363362a7f6d88a2f2da97630e2..b704b39855719420ca181833905e89f2a793e495 100644 GIT binary patch delta 77639 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
)ZQg)nFY}Zl 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 delta 71499 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
- ** - If you are reading the html version of this document and are - thinking of printing it out, you might be interested in the nicely - typeset produced - with LaTeX. - ** + + ** If you are reading the html version of this document and are ** + ** thinking of printing it out, you might be interested in the nicely ** + ** typeset produced ** + ** with LaTeX. ** + + Ibex is a software platform based on the philosophy that the most + useful systems consist of both **statically typed** and + **dynamically typed** languages, working in concert. + + + + - Statically typed languages (such as Java) are well suited for + high-performance, reliable, reusable code. Unfortunately + programs written in statically typed languages often take + longer to develop, and their commitment to a specific type + system makes interoperating with other languages cumbersome. - This document is a __reference__. It is not a - __specification__ or a - __tutorial__. + - Dynamically typed languages (such as JavaScript) typically + perform poorly (due to runtime checks and inadequate static + information for optimization), tend to admit more errors (due + to less static checking), and export APIs which are not + precisely defined (due to the huge number of possible + type/method combinations). However, writing programs in + dynamically typed languages is a much more rapid process, and + the implicit coercions in such languages make interoperability + between similar languages very easy. + + - This document does not guide the user gently through examples (as a - tutorial would), and it doesn't provide enough detail and formality - for a third party to construct a compatible re-implementation of the - Ibex Core (as a specification would). + The architectural incarnation of this philosophy is the Ibex Object + Model, a universal interface to dynamically typed languages. The + IOM serves as a common interface between statically typed languages + and dynamically typed languages both locally and over the network. + +
+ + The Ibex Object Model consists of three primitive types: - Rather, the goal of this document is to completely describe every - aspect of the environment that the Ibex Core provides to client - applications, from the bottom up. If you want to be an Ibex expert, - this is the right document to read. It is assumed that you are already - familiar with XML and with either JavaScript or ECMAscript. + + - __number__ -- a floating point number + - __string__ -- a unicode string + - __boolean__ -- either [[true]] or [[false]] + + + From these primitives, more complex structures can be built from + two aggregate types: - If you need to use or rely on some behavior you notice in the Ibex - Core, but which is not clearly defined here, please post to . + + - __array__ -- a collection of objects indexed by a non-negative integer + - __hash__ -- a collection of objects indexed by objects (often strings) + + + Any of the following actions can be performed on an object: + + + - __get(key)__ -- attempts to retrieve the object indexed by + [[key]]. Returns an object. + - __put(key, val)__ -- attempts to add object [[val]] with key + [[key]] to an object. Does not return a value. + + - __call(args)__ -- attempts to call the object as if it were a + function. The [[args]] value is a list of arguments. May or + may not return a value. + + + The keys of some objects may be enumerated by attempting to "call" + the object; the return value will be an array of the object's keys. + + Finally, an object may be **coerced** to any of the three + primitive types, although this coercion may fail. Objects may + also be coerced to the **bytestream** type, which represents an + unbounded stream of octets. Dynamically typed code may not + explicitly manipulate bytestreams, although it can pass objects + to statically typed code which in turn coerces those objects to + bytestreams. + + Any of the above operations may **throw** an exception, which is + itself an object. + + Any entity in the statically typed world which supports these + operations may expose itself to the dynamically typed world. + Furthermore, it can expect that any values passed to it will support + all of the operations shown above. +
+ +
+ - relation to XML + - cover templates here with David's isomorphism? +
+ +
+ + The remainder of this document describes the three major + systems founded on the Ibex Object Model: + + + - The Ibex User Interface + - The Ibex Persistent Storage Service + - The Ibex Mail Server + - IbexDoc + + + Currently, all four of these systems use Java as the statically + typed language and IbexScript (a derivitave of JavaScript) as + the dynamically typed language. However, since they interact + strictly via the Ibex Object Model, either component can be + rewritten in a different language. + +
+
@@ -80,32 +166,34 @@
+
+
A user typically begins an Ibex session by clicking on a link to - an Ibex application. This link serves the {\tt launch.html} file - to the user's browser, which in turn downloads the appropriate - {\it Wildebeest} -- currently either an ActiveX Control + an Ibex application. This link serves the [[launch.html]] file + to the user's browser (1), which in turn downloads the appropriate + **Wildebeest** (2)-- currently either an ActiveX Control (Win32/MSIE), XPInstaller (Mozilla), or Signed Applet (all others). The Wildebeest downloads the appropriate core for the user's - machine and verifies its digital signature. It then launches the - core, which downloads the UI (an [[.ibex]] archive), loads it, - applies the [[main.t]] template (found in the archive), and - renders it onto the screen, running any associated JavaScript - code. + machine and verifies its digital signature (3). It then launches + the core, which downloads the UI (4), (an [[.ibex]] archive), + loads it, applies the [[main.t]] template (found in the archive), + and renders it onto the screen, running any associated JavaScript + code (5). The user interacts with the application by clicking and moving the - mouse, and by pressing keys on the keyboard. These actions trigger - fragments of JavaScript code which are designated to handle events. - This JavaScript code can then relay important information back to the - server using XML-RPC or SOAP, or it can modify the structure and - properties of the user interface to change its appearance, thereby - giving feedback to the user. + mouse, and by pressing keys on the keyboard (5). These actions + trigger fragments of JavaScript code which are designated to + handle events. This JavaScript code can then relay important + information back to the server using XML-RPC or SOAP (5), or it + can modify the structure and properties of the user interface to + change its appearance, thereby giving feedback to the user. The Ibex core quits when the last remaining surface has been destroyed. @@ -164,16 +252,15 @@ of Ibex.
-
A template (discussed in the next section) is an XML file which acts as a blueprint for constructing a tree of boxes. We call this - construction process **applying**, since unlike - **instantiation** in object-oriented programming systems, you - always apply a template to a pre-existing box, and you can apply - multiple templates to the same box. + construction process **applying**, since unlike **instantiation** in + object-oriented programming systems, you always apply a template to + a pre-existing box, and you can apply multiple templates to the same + box. Each XML tag corresponds to a single box, or to another template which will be applied to that box. For example, a [[scrollbar]] @@ -399,63 +486,317 @@
-
- - Each box occupies a rectangular region on the surface. The visual - appearance of a surface is created by rendering each box in its tree. - Unless the [[clip]] attribute is [[false]], each box will - clip its childrens' visual representations to its own, so that the - children appear "confined to" the parent. Children are rendered after - their parents so they appear "on top of" their parents. - - Each box has two major visual components, each with subcomponents: +
+ + FIXME: needs way, way, way more diagrams of nonrectangular boxes. + + Each box occupies a region on the surface. The visual + appearance of a surface is created by rendering each box in its + tree. Unless the [[clip]] attribute is [[false]], each box will + clip its childrens' visual representations to its own, so that + the children appear "confined to" the parent. Children are + rendered after their parents so they appear "on top of" their + parents. - FIXME: diagram + + + Until now we've tactily assumed that boxes are rectangular. In + fact, unlike its predecessor (XWT), Ibex boxes can be **any + shape at all**. We refer to the outline of a box as its path, + which may be composed of lines and curves (arcs and splines). + If the path is not set (or set to [[null]]), the box's path is + **implicitly** a rectangle. + + A key step in understanding how Ibex works, and understanding + how operations on rectangular boxes generalize to arbitrary + boxes is to realize that "the path **is** the box". Just as a + rectangular box clips its children to the inside of the + rectangle, a circular box will clip its children to the inside + of the circle. + + In fact, Ibex's integration of vector graphics with + constraint-based user interface layout runs quite deep -- boxes + which "contain" text are actually boxes whose outline path + **is** the actual letters of the text. This means that you can + assign children to a text-shaped box, and the children's + appearance will be cliped to the **inside** of the text letters. + + The only time rectangular and non-rectangular boxes act + differently is when box packing takes place; when packing boxes, + Ibex only looks at the **bounding box** of a path (the smallest + rectangle that completely encloses the box's path). In the case + of rectangular boxes (which have not been rotated or sheared), + this bounding box happens to be exactly the same as the box's + path. So Ibex is actually treating these boxes the same, but + the chosen treatment favors rectangular boxes. + +
+ + The appearance of a box consists of three visual elements: its + path, stroke, and fill. - - - A box's [[path]] consists of zero or more lines and curves. - The path may be filled with a color, gradient, or texture, and - may be stroked with a line of a given thickness and color. If - the path is not specified, it defaults to the perimiter of the - box. [**Note: Vector Graphics support (including the ability - to set the [[path]] property to anything other than the - default) is currently not implemented**]. - - A path also has: - - - an associated [[strokecolor]], which is a color - - an associated [[strokewidth]], which is a number - specifying the width of the stroke. [**Note: Vector - Graphics support (including the [[strokewidth]] - property) is currently not implemented**] - - a [[fill]], which is either a color, gradient, or - texture - - - - - - Each box also has a single line of [[text]], whose - appearance is determined by its: - - - associated [[font]], which can be any font supported by - the - library. - - an associated [[fontsize]] in **pixels** - - an associated [[textcolor]] - - + + A box's [[path]] consists of zero or more contours, each of + which consists of one or more lines, bezier curves (cubic or + quadradic), or generalized elliptic arcs. The grammar and + feature set supported are identical to that specified in . + + One of the most common sources of frustration when working with + text representations of vector paths, or programs that manipulate + them, is making a mistake when setting a transform which causes + the entire path to be off the screen. Since no part of the path + is visible, you have no idea which direction it went! To minimize + the chance of this happening, and generally make dealing with + vectors a more enjoyable experience, Ibex always **recenters** a + path. When you set a box's path (either by writing to its + [[path]] or [[text]] properties), Ibex translates the entire path + so that it is lined up with the X and Y axes, as close to the + origin as possible, in the positive-X, positive-Y quadrant. Ibex + will note this translation by setting the box's [[transform]] to + the transformation used to do this. If you do not desire this + behavior, just set the [[transform]] back to the identity + transform. + + + + The color with which to stroke the path. Ibex paths may + only be stroked with a single color, solid line (not + dashed), of "hairline width" (meaning that the line is never more than one + antialiased pixel wide no matter what magnification it is + viewed at). + + This property can be set to a 5-character hex string + ([[#RGB]]), 7-character hex string ([[#RRGGBB]]), + 9-character hex string ([[#AARRGGBB]]), specifying the box's + hexadecimal color. Any other string is compared against the + colors (the same set of color names supported + by SVG). If this property is set to [[null]], the stroke + color will be set to clear ([[#00000000]]). + + Other vector formats (notably SVG and PDF) support "thick" + lines, dashed lines, lines stroked with a gradient or + texture, and an assortment of special caps and joins for + these thick lines (hairline lines do not need joins or + caps). Fortunately, all of these constructs can be + converted into **filled** paths rather easily, making it + possible for Ibex to support the same functionality with a + much simpler API (and more efficient rendering engine). + + + + The graphic element with which to fill the path. This + property can be set to any of the values specified for + [[stroke]], as well as to a texture (an image) or a + gradient. Paths which self-intersect are filled according + to the SVG guidelines. + + When an image (texture) is written to this property, the + box's [[minwidth]] and [[minheight]] properties will be + automatically set to the dimensions of the image (they can + be changed later if desired). + +
+ +
+ + Ibex treats text exactly the same way it treats other paths. + Writing to the [[text]] property actually sets the box's path to + the outline of the rendered form of the text, and text is + subject to the same rotation, shearing, and scaling + transformations as all other boxes. You can even **read back** + the curves from which the text is composed by reading from the + [[path]] property (the string returned will be in SVG Path + syntax), modify it, and write it to the [[path]] property of + another box. + + + The box's text; writing [[null]] to this property sets it to + [[""]]. In order to help eliminate common chores when working + with text, Ibex will automatically take the following actions + when you write to the [[text]] property: + + + + The text is converted to curves using the Freetype library, + and the resulting curve becomes the box's path. + + If the box's [[strokecolor]] is [[null]], it is set to black + ([[#FF000000]]). When first created, a box has an invisible + stroke; automatically setting the stroke to a visible color + helps eliminate confusing errors. You can change the stroke + color back to clear after writing to the [[text]] property. + + The box's [[aspect]] property is automatically set to the + correct aspect ratio for the chosen string in the chosen + font. This ensures that resizing will not warp the text. + + + + Fonts are rendered using the [[stroke]] assigned to the box, + using the font assigned to the [[font]] property. When an + object is written to this property, it is coerced to a stream which is interpreted using + the , and the resulting font is used to render the box's + [[text]]. + + To choose the size of a font, just set the box's [[height]] + property to the desired height **in pixels**. Conversion + functions from points to pixels are available. + +
+ +
+ The [[transform]] property allows the user to specify an + arbitrary affine transformation to be applied to the box's path, + text, and children. The syntax and features supported are + identical to those described in , and include rotation, shearing, scaling, and + translation. + + + FIXME + + + One tricky part about transformations is their interaction with + box packing and dimension properties. A box's size properties + (such as [[minwidth]] or [[height]]) are **always** measured in + the box's own coordinate space (ie after applying the box's + [[transform]]). This means that the sum of the [[width]]s of a + box's children may not be equal to the parent box's [[width]], + even if the children appear (on screen) to completely fill its + width. + + One other consequence of combining transformations with + constraint-based layout is that when a box is rotated, its width + and height are no longer completely independent (remember, the + box's width is measured in the rotated coordinate space). If a + box is turned at a 45 degree angle and then forced into a space + 10 pixels wide, enlarging the box's width will force a reduction + in its height (in order to cram it in the 10 pixel space). In + situations like this, Ibex will first look to the box's + [[aspect]], if explicitly set, and obey that. If the box's + [[aspect]] is unspecified, Ibex will use the ratio between the + box's [[minwidth]] and [[minheight]] to guide the tradeoff. If + either of these properties is [[0]], Ibex will simply attempt to + make the ratio as close to [[1:1]] as possible. + + When we talk about a box's **bounding box**, we are referring to + the smallest rectangle in the **parent's** coordinate space + which completely encloses the child box's path. This is the + only time we will deal with the size of a child using a + coordinate space other than its own. +
+ +
+ + We will cover the layout algorithm in detail in the next section, + but we introduce the properties at play here and give an intuition + about their purpose. + + + The layout strategy for this box. If set to [[true]], the + box occupies no cells and is laid out independently of its + siblings. + + + + This property controls the strategy Ibex uses for changing the + box's width and height in response to layout constraints. + + If [[zoom]] is set to [[false]] (the default), then the box's + [[path]] will be altered by multiplying all the vertices by a + scaling factor in order to make the path's bounding box meet + the required constraints. The box's [[transform]] will not be + affected, and the scaling of the box's children will not be + affected. + + If [[zoom]] is set to [[true]], the box's [[path]] will not be + altered in response to layout constraints; rather, its + [[transform]] will be altered in order to "zoom in" or "zoom + out" and bring all of the path's vertices within the desired + region. Since the box's [[transform]] also applies to its + descendants, they too will be magnified or reduced. + + + + If set to [[true]], this box will shrink + (horizontally/vertically/both) to the smallest size allowed by + its children and the bounding box of its path. + + + + If the box is a root box, writing to these properties moves + the surface; reading from them returns the position of the + surface. + + On non-root boxes, writing to these properties is a shorthand + for adding a [["translate(x, y)"]] to the box's [[transform]]. + Reading from these properties will return FIXME. + + + + The desired minimum width and height. See the [[zoom]] + property for a description of how the box is altered to meet + these constraints. + + + + The desired maximum width and height. See the [[zoom]] + property for a description of how the box is altered to meet + these constraints. + + + + When read, this is the current (width/height) of this box. + Writing to this property is equivalent to writing to + **both** the minimum and maximum (width/height). + + + + The number of (columns/rows) in which to lay out the children of this + box. If set to zero, the number of (columns/rows) is unconstrained. + Either [[rows]] or [[cols]] must be zero. If + [[0]] is written to [[cols]] when [[rows]] is + [[0]], the write is ignored. If a nonzero value is + written to [[cols]] when [[rows]] is nonzero, + [[rows]] is set to [[0]], and vice versa. + + + + The number of (columns/rows) that this box spans within its parent. + + + + The width-to-height ratio constraint for this box; can be set + either as a floating point number ([[0.5]]) or a ratio + ([["1:2"]]). Setting this to [[0.0]] disables the ratio + constraint. + + Note packed boxes always **shrink** in order to satisfy aspect + constraints, while unpacked boxes always **grow** in order to + satisfy them -- even if this means growing larger than the box's + parent. + + + + If set to [[false]], this box will be rendered as if its + width and height were zero. If this is a root box, the + associated surface will be hidden. + + When reading from this property, the value [[false]] will + be returned if this box **or any of its ancestors** is not + visible. Thus it is possible to write [[true]] to a box's + [[visible]] property and then read back [[false]]. + +
+ +
- These eight components plus the size of a box fully specify its - appearance. Every single box you see in Ibex is drawn only on the - basis of these components and its size. +
The size and position of every box is determined by its properties, its childrens' sizes, and its parent's size and @@ -475,38 +816,6 @@ not the same thing as the property [[minwidth]], although they are closely related. - - - When the user resizes a window, Ibex changes the root box's - [[maxwidth]] and [[maxheight]] to match the size chosen by - the user and then determines the root box's size using the same sizing - rules it uses for other boxes. - - Ibex will always attempt to prevent the - user from making the surface smaller than the root box's - [[minwidth]] and [[minheight]]. If the [[hshrink]] or - [[vshrink]] flag is set, Ibex will try to prevent the user from - resizing the surface at all. However, not all platforms give Ibex - enough control to do this. - - - - When talking about positioning, we will often refer to the - **alignment point**. - - If the [[align]] property is "[[center]]", then the - alignment point is the center of the box. - - If the [[align]] property is "[[topleft]]", - "[[bottomleft]]", "[[topright]]", or - "[[bottomright]]", then the alignment point is - corresponding corner of the box. - - If the [[align]] property is "[[top]]", - "[[bottom]]", "[[right]]", or "[[left]]", then - the alignment point is middle of the corresponding edge of the - box. -
A grid of **cells** is created within the parent. If the @@ -514,22 +823,47 @@ infinite number of columns. Either [[cols]] or [[rows]] must be zero, but not both. - If a child's [[visible]] property is [[false]], it does - not occupy any cells (and is not rendered). Otherwise, each child - occupies a rectangular set of cells [[child.colspan]] cells - wide and [[child.rowspan]] cells high. + + + A box's target region is the portion of its parent which the + layout algorithm has determined that the box should occupy. A + box's target region is determined mainly by the value of its + [[pinned]] property: + + + If a box's [[pinned]] property is [[null]], it is said to be + "unpinned" or "not pinned". In this case, the box's target + region will be the set of cells in its parent which it + occupies. + + If a box's [[pinned]] region is set to some other box, then + this box's target region will be the projection of that + other box's actual dimensions and position, projected onto + this box's parent. The net effect is that the pinned box + will "track" the size and position of the box it is pinned + to. A box may not be pinned to one of its descendants, nor + may boxes be pinned in a cycle (A is pinned to B, B is + pinned to C, and C is pinned to A). + + + If a child's [[visible]] property is [[false]], it does not + occupy any cells (and is not rendered). If a box's [[pinned]] + property (described below) is non-[[null]], it does not occupy + any cells and is exempt from the packing process. Otherwise, + each child occupies a rectangular set of cells [[child.colspan]] + cells wide and [[child.rowspan]] cells high. The Core iterates over the cells in the grid in the following order: if [[rows]] is 0, the Core iterates across each column before proceeding to the next row; otherwise rows come before columns. At each cell, the Core attempts to place the **first - remaining unplaced child's** top-left corner in that cell - (with the child occupying some set of cells extending down and - to the right of that cell). If the parent has a fixed number of - columns and the child's [[colspan]] exceeds that limit, the - child is placed in column zero regardless, but only occupies the - available set of cells (it does not "hang off the end" of the - box). + remaining unplaced, packed child's** top-left corner in that + cell (with the child occupying some set of cells extending down + and to the right of that cell). If the parent has a fixed + number of columns and the child's [[colspan]] exceeds that + limit, the child is placed in column zero regardless, but only + occupies the available set of cells (it does not "hang off the + end" of the box).
       
@@ -544,51 +878,99 @@
       
- Each box's minimum width is computed recursively as the maximum of: Its [[minwidth]] - The width of the box's [[text]] (after applying the - box's [[transform]]) [**Note: Vector Graphics support - (including the [[transform]] property) is currently not - implemented**]. + The width of its [[path]] - The width of the box's path (after applying the box's - [[transform]]) **if the box is [[packed]]**. - - The minimum width of the children in each row. + The sum of the widths of the bounding boxes enclosing its + children, when those children are sized to **their own** + minimum widths. + + The box's minimum **height** multiplied by its [[aspect]], + if its aspect is not [[0]] (unspecified). - + If a box's [[hshrink]] property is set to [[true]], the box's maximum width is the same as its minimum width; otherwise it is the box's [[maxwidth]]. -
- - - Each non-packed box is transformed according to the parent's - [[transform]] property and then positioned so that its alignment - point is [[(child.x, child.y)]] pixels from the corresponding - edge/corner/center of its parent. + + + Once the box's size and the size and position of its target + region have been computed, the box is placed relative to its + **target origin**, which is determined by by the [[origin]] + property: + + + Determines which corner of the box's target region should be + treated as the origin for layout purposes. + + If the [[origin]] property is "[[center]]", then the + target origin is at the center of the target region. + + If the [[origin]] property is "[[topleft]]", + "[[bottomleft]]", "[[topright]]", or "[[bottomright]]", then + the target origin is at the corresponding corner of the + target region. + + If the [[origin]] property is "[[top]]", "[[bottom]]", + "[[right]]", or "[[left]]", then the target origin is middle + of the corresponding edge of the target region. + + + + Determines the offset from the box's origin at which it will + be placed. + + + If the box's [[hshrink]] property is not set, it is expanded to + its maximum width, but no larger than its parent's width. + + Finally, if the child has a nonzero [[aspect]], one of its + dimensions (either width or height) will **grow** in order to + ensure that [[width == height * aspect]]. This may cause the + child to exceed the paren't size. + + + + First, the coordinate space in which the child is positioned is + translated so that the origin coincides with the + corner/edge/center of the box's parent corresponding to the + child's [[align]] property. The child's [[transform]] attribute + is applied to the coordinate space, and the child is positioned + in this transformed space with its aligment point at the origin. + + The following diagram may be helpful: + + FIXME: diagram + Thoughout this section, when we refer to the [[minwidth]], + [[maxwidth]], or minimum width of a child box, we are referring + to the corresponding dimension of the child's **bounding box** + -- the smallest rectangle **in the parent's coordinate space** + that completely encloses the child's path. + Ibex formulates a set of constraints for placing a box's **packed** children as follows: - - A box's width can be no greater than the sum of the + A box's width can be no greater than the sum of the columns it occupies - - The sum of a set of colums cannot be smaller than the + + The sum of a set of colums cannot be smaller than the minimum width of a box that spans them. - - The sum of the widths of the parents' columns will be at + + The sum of the widths of the parents' columns will be at least as large as the parent's width is (but possibly larger). @@ -598,59 +980,39 @@ prioritized from most important to least important: - - (__Most Important__) The sum of all columns will be a close + (__Most Important__) The sum of all columns will be a close to the parent's with as possible (ie as small as possible) - - Ibex will attempt to make a set of columns no wider than + + Ibex will attempt to make a set of columns no wider than the [[maxwidth]] of a box spanning them. - - (__Least Important__) Ibex will attempt to make all - columns the same width. + + Ibex will attempt to make all + columns the same width. (**least important**) Each packed box is then placed within the set of cells that it spans. Usually the box will exactly fill this rectangle; if it - does not (due to [[maxwidth]] or minimum width constraints), the - box's will be placed so that its alignment point coincides with - the alignment point of that rectangle of cells. + does not (due to [[maxwidth]], minimum width, or aspect + constraints), the box's will be placed so that its alignment + point coincides with the alignment point of that rectangle of + cells. + + + When the user resizes a window, Ibex changes the root box's + [[maxwidth]] and [[maxheight]] to match the size chosen by + the user and then determines the root box's size using the same sizing + rules it uses for other boxes. + + Ibex will always attempt to prevent the + user from making the surface smaller than the root box's + [[minwidth]] and [[minheight]]. If the [[hshrink]] or + [[vshrink]] flag is set, Ibex will try to prevent the user from + resizing the surface at all. However, not all platforms give Ibex + enough control to do this. +
-
- - Boxes are rendered in a depth-first, pre-order traversal. Note that - this may cause a non-packed box to overlap its siblings. - - - - If the box's [[transform]] property is non-null, the - coordinate space is transformed accordingly for the rest of - this phase and for the rendering of all children. [**Note: - Vector Graphics support (including the [[transform]] - property) is currently not implemented**]. - - If the box is packed and has a non-[[null]] path, the - path is translated such that the alignment point of the path's - bounding box coincides with the box's alignment point (both - alignment points are determined by the box's [[align]] - property). - - If a box has a path, that path is filled with the color, - gradient, or image specified by the [[fill]] property and - stroked with the color and width specified by the - [[strokecolor]] and [[strokewidth]] properties. - - If the box has a non-null [[text]] attribute, - the text is rendered in [[font]] with size - [[fontsize]] and color [[textcolor]]. The text is - then translated such that the alignment point of the text's - bounding box coincides with the box's alignment point (both - alignment points are determined by the box's [[align]] - property). - - The box's children are rendered (pre-order traversal). - - - -
@@ -661,139 +1023,6 @@ meaning, which will be explained later. Each box's numeric properties hold its **child boxes**. -
- - Every box has several special properties which control how it is - drawn. In general, if you put an - invalid value to a special property, no action will be taken -- the - put will be ignored. - - - - If the value is a 5-character hex string ([[#RGB]]), - 7-character hex string ([[#RRGGBB]]), 9-character hex - string ([[#AARRGGBB]]), the box's stroke color will be set - to that color. - - If the value is one of the colors (the same set of color names - supported by SVG), the stroke color be set to that color. - - If the value is [[null]], the stroke color will be set - to clear ([[#00000000]]). - - - - The width (in pixels) to stroke the path with. - - - - This property can be set to any of the values specified for - [[strokecolor]]. - Alternatively, if the value written is an object, its stream - will be read and interpreted as a PNG, GIF, or JPEG image, - which will become the texture for this box, and the box's - [[minwidth]] and [[minheight]] properties will be - automatically set to the dimensions of the image. - - - - The box's path. The grammar and feature set supported are - identical to that specified in . - - - - The box's text; writing [[null]] to this property sets it - to [[""]]. - - - - The color in which to render the font; accepts the same values as [[strokecolor]]. - - - - When an object is written to this property, its stream is read - using the , - and the resulting font is used to render the - box's [[text]]. - - - - The size (in points) to render the text. - - -
- -
- - - If set to [[true]], this box will shrink - (horizontally/vertically/both) to the smallest size allowed by - its children and the bounding box of its path. - - - - If the box is a root box, this is the (x/y)-coordinate of the - surface; otherwise it is the distance between the parent's - alignment point and the corresponding corner/edge/center of - its parent. - - - - The desired minimum width and height. - - - - The desired maximum width and height. - - - - When read, this is the current (width/height) of this box. - Writing to this property is equivalent to writing to - **both** the minimum and maximum (width/height). - - - - The number of (columns/rows) in which to lay out the children of this - box. If set to zero, the number of (columns/rows) is unconstrained. - Either [[rows]] or [[cols]] must be zero. If - [[0]] is written to [[cols]] when [[rows]] is - [[0]], the write is ignored. If a nonzero value is - written to [[cols]] when [[rows]] is nonzero, - [[rows]] is set to [[0]], and vice versa. - - - - The number of (columns/rows) that this box spans within its parent. - - - - Determines the box's alignment point for positioning its text, - texture, path, and children. - - - - If set to [[false]], this box will be rendered as if its - width and height were zero. If this is a root box, the - associated surface will be hidden. - - When reading from this property, the value [[false]] will - be returned if this box **or any of its ancestors** is not - visible. Thus it is possible to write [[true]] to a box's - [[visible]] property and then read back [[false]]. - - - - The layout strategy for this box. If set to [[true]], the - box occupies no cells and is laid out independently of its - siblings. - - -
-
@@ -842,7 +1071,6 @@ - FIXME If this box has a parent, this property returns [[**parent**.surface]]; otherwise it returns null. This property is a simple building block that the widget @@ -920,26 +1148,18 @@ windows. - + The value [[true]] is put to this property on the root box - when the surface is maximized, and [[false]] when the surface - is un-maximized. Reading from this value will return [[true]] - if the surface is maximized and [[false]] if it is - not. Putting [[true]] to this property will maximize the - window, and putting [[false]] to this property will - unmaximize the window. + when the surface is maximized/minimized, and [[false]] when + the surface is un-maximized/minimized. Reading from this value + will return [[true]] if the surface is maximized/minimized and + [[false]] if it is not. Putting [[true]] to this property will + maximize/minimize the window, and putting [[false]] to this + property will unmaximize/unminimize the window. + Note that not all platforms support maximization. - - The value [[true]] is put to this property on the root box - when the surface is minimized, and [[false]] when the surface - is unminimized. Reading from this value will return [[true]] - if the surface is minimized and [[false]] if it is - not. Putting [[true]] to this property will minimize the - window, and putting [[false]] will unminimize it. - - When the user attempts to close a surface, the value [[true]] will be put to this property. Scripts may trap @@ -950,21 +1170,243 @@ property. - - The surface's icon. This is usually displayed on the titlebar of a - window. The value should be an object whose stream is a PNG image. Note - that not all platforms support this property. + + The surface's titlebar text and icon. If a string is written + to this property, the surface's titlebar text is set to that + string; if a stream yielding an image is written, the + surface's icon is set to that image. Note that not all + platforms support this property. Only ASCII characters + 0x20-0x7F are permitted. - - The surface's titlebar text. Note that not all platforms support - this property. Only ASCII characters 0x20-0x7F are permitted. +
+ +
+ + +
+ + Every execution of the Event Context begins with an event, which + consists of a key/value pair, and a mouse position, which consists of + an x and y coordinate. The possible keys are [[_Press[1-3]]], + [[_Release[1-3]]], [[_Click[1-3]]], [[_DoubleClick[1-3]]], + [[_Move]], [[_KeyPressed]], and [[_KeyReleased]]. + + Here are two example events: + + An event is triggered by writing the key to the value on a box. This + triggers any trap handlers which may be present. Once these handlers + have executed, Ibex figures out which child of the current box contains + the mouse (taking into account that some boxes may cover up others) + and writes the key and value to that box. If none of the box's + children contain the mouse position, Ibex removes the leading + underscore from the key name and writes the value to + **that** property. Once all the traps on that property have + executed, the value is written to the box's parent. + + Intuitively, Ibex delivers the underscored event to every box from the + root to the target, and then delivers the non-underscored event to + that same set of boxes in reverse order. So the event travels down + the tree to the target, and then back up to the root. The following + example prints out "first second third fourth" in that order. + +
+    
+        _Press1 ++= function(b) { ibex.log.info("first"); }
+         Press1 ++= function(b) { ibex.log.info("fourth"); }
+        
+          _Press1 ++= function(b) { ibex.log.info("second"); }
+           Press1 ++= function(b) { ibex.log.info("third"); }
+        
+    
+    
+ + In general, you should use the **non-underscore** names to respond + to user input and use the underscored names when you want to override + child boxes' behavior or route events to particular boxes (for + example, when implementing a focus protocol). This is why the + underscored elements are delivered to parents before children (so + parents can override their childrens' behavior), but non-underscored + events are delivered to children before parents (since, visually, a + mouse click is usually "intended" for the leaf box underneath the + cursor). + + + + At any point in this sequence, a trap handler can choose not to + cascade (by returning [[true]] from the trap handler function). + This will immediately cease the propagation of the event. This is how + you would indicate that an event has been "handled". + + + + Ibex uses the following events to notify a box about changes that + only matter to that particular box. These events do not propagate + either up or down the tree. + + + The value [[true]] is written to this property when the mouse (enters/leaves) the box. + + + + The value [[true]] is put to this property after the size + of this box changes. + + + + When a child is added or removed, that child is written to + this property. The write is always performed **after** the + addition or removal, so these two cases can be distinguished + by checking [[indexof(child)]]. + + Note that if the parent's redirect target is set to another + box, this trap will only be invoked when children are + manipulated by reading and writing to the parent. Reads and + writes directly to the redirect target will **not** trigger + this trap. + + Note also that this traps is still triggered if a box's + [[redirect]] target is **null**. This is useful for + boxes that need to accept children and then relocate them + elsewhere. + + +
+ + + Indicates that the use has pressed a mouse button. On + platforms with three mouse buttons, the **middle** button + is button 3 -- this ensures that applications written to only + use two buttons (1 and 2) will work intuitively on three button + platforms. + + + + Indicates that the use has released a mouse button. + + + + Indicates that the user has pressed and released the + mouse button without moving the mouse much (exactly how + much is platform-dependent). + + + + Indicates that the user has clicked the + mouse button twice within a short period of time (exactly how long is platform-dependent). + + Indicates that the mouse has moved while within this box, or that + the mouse while outside this box **if a button was pressed while within this box and has not yet been released** + + + + + A string is written to this property when a key is pressed or + released If the key was any other key, a multi-character + string describing the key will be put. For simplicity, we use + the VK_ constants in the . When a + key is pressed or released, the string put will be the portion + of its VK_ constant after the underscore, all in lower case. + + + If the shift key was depressed immediately before the + event took place, then the string will be capitalized. Special + keynames are also capitalized; shift+home is reported as + "[[HOME]]". Symbols are capitalized as they appear on the + keyboard; for example, on an American QWERTY keyboard, shift+2 + is reported as "[[@]]". + + If the alt, meta, or command key was depressed immediately + before this key was pressed, then the string will be prefixed + with the string "[[A-]]". If the control key was depressed + while this key was pressed, then the string will be prefixed + with the string "[[C-]]". If both alt and control are + depressed, the string is prefixed with "[[C-A-]]". + + Ibex does not distinguish between a key press resulting from + the user physically pushing down a key, and a 'key press' + resulting from the keyboard's typematic repeat. In the rare + case that an application needs to distinguish between these + two events, it should watch for KeyReleased messages and + maintain an internal key-state vector. + + +
+
+ + At any point in the Event Context, you can write to the [[mouse]] + property on any box. The value written should be an object with two + properties, [[x]] and [[y]]. For example: + +
+    _Press1 ++= function(p) {
+        mouse = { x: 32, y: 77 };
+    }
+    
+ + The coordinates specified are relative to the box whose [[mouse]] + property is being written to. There is no need to supply the + [[inside]] property; it is computed automatically. Writing to + the [[mouse]] property causes Ibex to recompute the eventual + target box, and also alter the values returned by [[mouse.x]], + [[mouse.y]], and [[mouse.inside]] for any **descendants** + of the current box. Writing to the [[mouse]] property also + automatically prevents the event from returning to the box's parents + -- it is equivalent to not cascading on the non-underscored event. + This ensures that child boxes cannot trick their parent boxes into + thinking that the mouse has moved. + + If you want the event to "skip over" the boxes between the trapee + and the target, or if you want to re-route an event to a box which + is not a descendant of the current box, simply write the value to + the proper key on the target box. + +
+    
+        _KeyPressed = function(k) { ibex.log.info("first"); }
+         KeyPressed = function(k) { ibex.log.info("sixth"); }
+        $recipient.target = $target;
+        
+            _KeyPressed = function(k) {
+                ibex.log.info("second");
+                thisbox.target.KeyPressed = k;
+                // inhibit cascade; keep event from going to $excluded
+                return true;
+            }
+             KeyPressed = function(k) { ibex.log.info("fifth"); }
+            
+                _KeyPressed = function(k) {
+                   ibex.log.info("this never happens");
+                }
+            
+        
+         
+            _KeyPressed = function(k) { ibex.log.info("third"); }
+             KeyPressed = function(k) { ibex.log.info("fourth"); }
+        
+    
+    
+ +
+ +
+ + You can create "fake events" by simply writing to the [[mouse]] + property and then writing a value to one of the underscored properties + on a box. This will have exactly the same effect as if the use had + actually pressed a key, clicked a button, or moved the mouse -- they + are indistinguishable. +
+
- + +
@@ -1489,9 +1931,6 @@
- -
-
From the perspective of an application writer, Ibex is strictly @@ -1555,165 +1994,6 @@
- -
- - Every execution of the Event Context begins with an event, which - consists of a key/value pair, and a mouse position, which consists of - an x and y coordinate. The possible keys are [[_Press[1-3]]], - [[_Release[1-3]]], [[_Click[1-3]]], [[_DoubleClick[1-3]]], - [[_Move]], [[_KeyPressed]], and [[_KeyReleased]]. - - Here are two example events: - - An event is triggered by writing the key to the value on a box. This - triggers any trap handlers which may be present. Once these handlers - have executed, Ibex figures out which child of the current box contains - the mouse (taking into account that some boxes may cover up others) - and writes the key and value to that box. If none of the box's - children contain the mouse position, Ibex removes the leading - underscore from the key name and writes the value to - **that** property. Once all the traps on that property have - executed, the value is written to the box's parent. - - Intuitively, Ibex delivers the underscored event to every box from the - root to the target, and then delivers the non-underscored event to - that same set of boxes in reverse order. So the event travels down - the tree to the target, and then back up to the root. The following - example prints out "first second third fourth" in that order. - -
-    
-        _Press1 ++= function(b) { ibex.log.info("first"); }
-         Press1 ++= function(b) { ibex.log.info("fourth"); }
-        
-          _Press1 ++= function(b) { ibex.log.info("second"); }
-           Press1 ++= function(b) { ibex.log.info("third"); }
-        
-    
-    
- - In general, you should use the **non-underscore** names to respond - to user input and use the underscored names when you want to override - child boxes' behavior or route events to particular boxes (for - example, when implementing a focus protocol). This is why the - underscored elements are delivered to parents before children (so - parents can override their childrens' behavior), but non-underscored - events are delivered to children before parents (since, visually, a - mouse click is usually "intended" for the leaf box underneath the - cursor). - -
- - - - At any point in this sequence, a trap handler can choose not to - cascade (by returning [[true]] from the trap handler function). - This will immediately cease the propagation of the event. This is how - you would indicate that an event has been "handled". - - - - Ibex uses the following events to notify a box about changes that - only matter to that particular box. These events do not propagate - either up or down the tree. - - - The value [[true]] is written to this property when the mouse (enters/leaves) the box. - - - - The value [[true]] is put to this property after the size - of this box changes. - - - - When a child is added or removed, that child is written to - this property. The write is always performed **after** the - addition or removal, so these two cases can be distinguished - by checking [[indexof(child)]]. - - Note that if the parent's redirect target is set to another - box, this trap will only be invoked when children are - manipulated by reading and writing to the parent. Reads and - writes directly to the redirect target will **not** trigger - this trap. - - Note also that this traps is still triggered if a box's - [[redirect]] target is **null**. This is useful for - boxes that need to accept children and then relocate them - elsewhere. - - -
- - - Indicates that the use has pressed a mouse button. On - platforms with three mouse buttons, the **middle** button - is button 3 -- this ensures that applications written to only - use two buttons (1 and 2) will work intuitively on three button - platforms. - - - - Indicates that the use has released a mouse button. - - - - Indicates that the user has pressed and released the - mouse button without moving the mouse much (exactly how - much is platform-dependent). - - - - Indicates that the user has clicked the - mouse button twice within a short period of time (exactly how long is platform-dependent). - - - - Indicates that the mouse has moved while within this box, or that - the mouse while outside this box **if a button was pressed while within this box and has not yet been released** - - - - - A string is written to this property when a key is pressed or - released If the key was any other key, a multi-character - string describing the key will be put. For simplicity, we use - the VK_ constants in the . When a - key is pressed or released, the string put will be the portion - of its VK_ constant after the underscore, all in lower case. - - - If the shift key was depressed immediately before the - event took place, then the string will be capitalized. Special - keynames are also capitalized; shift+home is reported as - "[[HOME]]". Symbols are capitalized as they appear on the - keyboard; for example, on an American QWERTY keyboard, shift+2 - is reported as "[[@]]". - - If the alt, meta, or command key was depressed immediately - before this key was pressed, then the string will be prefixed - with the string "[[A-]]". If the control key was depressed - while this key was pressed, then the string will be prefixed - with the string "[[C-]]". If both alt and control are - depressed, the string is prefixed with "[[C-A-]]". - - Ibex does not distinguish between a key press resulting from - the user physically pushing down a key, and a 'key press' - resulting from the keyboard's typematic repeat. In the rare - case that an application needs to distinguish between these - two events, it should watch for KeyReleased messages and - maintain an internal key-state vector. - - - -
- -
-
@@ -1934,75 +2214,6 @@
- -
- -
- - At any point in the Event Context, you can write to the [[mouse]] - property on any box. The value written should be an object with two - properties, [[x]] and [[y]]. For example: - -
-    _Press1 ++= function(p) {
-        mouse = { x: 32, y: 77 };
-    }
-    
- - The coordinates specified are relative to the box whose [[mouse]] - property is being written to. There is no need to supply the - [[inside]] property; it is computed automatically. Writing to - the [[mouse]] property causes Ibex to recompute the eventual - target box, and also alter the values returned by [[mouse.x]], - [[mouse.y]], and [[mouse.inside]] for any **descendants** - of the current box. Writing to the [[mouse]] property also - automatically prevents the event from returning to the box's parents - -- it is equivalent to not cascading on the non-underscored event. - This ensures that child boxes cannot trick their parent boxes into - thinking that the mouse has moved. - - If you want the event to "skip over" the boxes between the trapee - and the target, or if you want to re-route an event to a box which - is not a descendant of the current box, simply write the value to - the proper key on the target box. - -
-    
-        _KeyPressed = function(k) { ibex.log.info("first"); }
-         KeyPressed = function(k) { ibex.log.info("sixth"); }
-        $recipient.target = $target;
-        
-            _KeyPressed = function(k) {
-                ibex.log.info("second");
-                thisbox.target.KeyPressed = k;
-                // inhibit cascade; keep event from going to $excluded
-                return true;
-            }
-             KeyPressed = function(k) { ibex.log.info("fifth"); }
-            
-                _KeyPressed = function(k) {
-                   ibex.log.info("this never happens");
-                }
-            
-        
-         
-            _KeyPressed = function(k) { ibex.log.info("third"); }
-             KeyPressed = function(k) { ibex.log.info("fourth"); }
-        
-    
-    
- -
- -
- - You can create "fake events" by simply writing to the [[mouse]] - property and then writing a value to one of the underscored properties - on a box. This will have exactly the same effect as if the use had - actually pressed a key, clicked a button, or moved the mouse -- they - are indistinguishable. - -
@@ -2071,7 +2282,7 @@ new_ibex.load ++= function() { return newLoadFunction; } ibex.apply(ibex.box, .main, new_ibex); -
+
-- 1.7.10.4

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 diff --git a/doc/reference/reference.xml b/doc/reference/reference.xml index 28f8a34..37148d6 100644 --- a/doc/reference/reference.xml +++ b/doc/reference/reference.xml @@ -1,34 +1,120 @@ - +