1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>XmHTML: Description of Changes</TITLE>
<META HTTP-EQUIV="Keywords" CONTENT="XmHTML, HTML, Motif, Widget, eXode, XntHelp, Linux">
<META HTTP-EQUIV="Reply-to" CONTENT="ripley@xs4all.nl">
<META HTTP-EQUIV="Description" CONTENT="description of XmHTML development">
<META NAME="Author" CONTENT="Koen D'Hondt">
<META NAME="Copyright" content="1995-1997 by Ripley Software Development">
<META NAME="Source" content="$Source$">
<META NAME="Revision" content="$Revision$">
<meta name="font" content="helvetica">
<!--
<base href="http://www.xs4all.nl/~ripley/eXode/">
-->
<link rev="made" href="mailto:ripley@xs4all.nl">
<link rel="home" href="http://www.xs4all.nl/~ripley">
<link rel="previous" href="XmHTML.html">
<link rel="copyright" href="copyrights.html">
<link rel="TOC" href="XmHTML.html#toc">
</HEAD>
<BODY BGCOLOR="#FFFFFF" text="#000000">
<h1>XmHTML Current State</h1>
This page is updated almost on a daily basis and describes changes, bugfixes,
personal frustrations and victories, milestones and release dates of past,
present and future XmHTML alpha versions.
<p>
The first entry dates back to november 12, 1996. While this may seem a long
time, <a href="mailto:ripley@xs4all.nl">I'm</a> doing the development
single-handed, making stupid mistakes, writing, rewriting and re-rewriting
code. XmHTML has come a long way since then and it's gaining more attention
every day. The XmHTML Developers mailing list currently contains about 120
subscribers, and it's still growing.
<p>
This document gives a fairly good description on how XmHTML is progressing,
and, most of all, it shows that XmHTML is a project that is <b>alive and
kicking!</b>
<p>
<a name="CurrentState"><IMG SRC="../Images/wood/bar.gif"></a>
<P>
<dl>
<dt>October 6
<dd>Hmm, I've been lazy updating this page. Here's what I've been doing
during the past weeks:
<p>
<ul>
<li>ToolkitAbstraction: been doing a few tests related to formatted
text output. These tests went rather smooth: without too much trouble
I have gotten XmHTML to render on an off-screen pixmap instead of
the display. The next step is to start overriding the composing
postscript versions of the various members of the ToolkitAbstraction.
<p>
<!--
Here's a perfect example of the wonderfull magic of
XmHTML's HTML parser: above is a single <p> without a closing
equivalent *before* the next list element. Since the
standard does not allow tags to be nested, the parser will
add a closing <p> by itself before opening a new list
item. XmHTML will thus render the following paragraph as a
*real* paragraph, e.i., a newline will be present between
the last sentence of the paragraph and the first sentence
of the next list item. And this is exactly what is required
by the spec! All other browsers *will* get this wrong....
BTW: if you're reading this, your browser is getting confused by
the presence of <p> (which should read &gt;p&lt;
and not <p> or your browser is interpreting raw HTML
source in addition to getting comments wrong!)
in the above -- and this as well -->
comment: you are being deceived by your browser. Use
the source, Luke!
-->
I've been also working on making access to the ToolkitAbstraction
structure possible so application programmers will be able to
override or augment the default ToolkitAbstraction without
having to access XmHTML's internals.
<li>Made a beginning with I18N. <a href="mailto:Rob.Johnson@Eng.Sun.COM">
Rob Johnson</a> has been working on patching XmHTML so it will render
multibyte characters. His work will form the basis of XmHTML's I18N
support. I am planning to extend his work much further to make
XmHTML truly multilingual. This will require support for both the
<a href="http://www.w3c.org/">HTML 4.0</a> <tt>lang</tt> and
<tt>dir</tt> attributes and the addition of a resource that
allows one to define a language-character set mapping.
<p>
<li>HTML4.0 events: <a href="mailto:belloer@gemse.fr">Eric Bello</a>
reported a fundamental flaw in the event handling: processing
of an event during the XmNeventCallback may result in the
current document being modified, which will lead to a bunch of
FMR's and often a crash.
<p>
As a result, <b>a new field</b>, <tt>doc_modified</tt>, has been added
to the <b>XmHTMLAnchorCallbackStruct, XmHTMLEventCallbackStruct</b>
and <b>XmHTMLFormCallbackStruct</b> callback structures. If this
field is set to <b>True</b>, XmHTML will no longer reference any
data structures referring to the (now obsolete) document when the
callback routine returns. With the exception of the <b>onLoad</b>
and <b>onUnLoad</b> HTML4.0 events, document modification during
anchor, event or form callback procedures should be properly
supported.
<li>XmHTML now fully supports the following HTML4.0 events:
<p>
<ol>
<li><A> element: onClick, onMouseDown, onMouseUp, onMouseOver,
onMouseMove, and onMouseOut
<li><BODY> element: onLoad and onUnLoad.
</ol>
<p>
<li>In some cases it could happen that a XmNtrackCallback callback
procedure was not properly activated when moving from
one anchor to another (anchors rendered close to each other, a
user moving very fast from one anchor to another). This has
been properly fixed.
<p>
<li>Fixed a bug in the parser: in some cases, the document repair routines
could misbehave on nested elements (especially with tables). The
rules employed by the parser to deal with this have been updated.
<p>
<li>Assorted bugfixes (including an important one in named anchor lookup
and an equally important one in text justification) and minor code
changes (typecasts to deal with strict c++ compilers) reported by a
couple of XmHTML users.
</ul>
<p>
In addition to the above, I've also been thinking about restructering
the source tree and splitting the code in common and toolkit-dependent
parts. XmHTML will be placed onto the GNOME CVS repository
shortly which should speed up the development of the gtk-xmhtml port and
XmHTML considerably . To keep a clean oversight and make life easier for
the gtk-xmhtml developers and myself, a restructured source tree is very
much desired.
<p>
<dt>September 11
<dd>Fixed a couple of serious bugs in the table layout algorithm with respect to nested
tables. Not entirely perfect yet but things are looking much better.
<p>
I seem to have fixed the layout bug properly, although I still need to
verify vertical positioning of images and make a few changes to the
layout computation of preformatted text. Proper rendering of table
borders is also much closer to the real thing.
<p>
A few problems still remaining: proper handling of getting and setting line
numbers. This has been thrown of balance since the positions of all
text-based objects has slightly changed. I have added a (temporary) fix which
seems to work satisfactory for now.
<p>
Nevertheless, the <strong>long</strong> awaited <b>XmHTML/Beta Version 1.1.5</b>
has been released as of today.
<p>
<dt>September 9
<dd>Added Setvalues support for the XmNenableIconEntities,
XmNiconAlignment and XmNtabWidth resources.
<p>
Added support for the above resources to examples/example_2.
<p>
Fixed a bug in the parser: XmHTML could reference an invalid parser
tree when a convenience routine was called from inside a
XmNdocumentCallback callback function. This in could cause XmHTML
to crash.
<p>
<dt>September 4
<dd>Added the XmNtabWidth resource: this resource allows one to adjust
the width of a horizontal tab in preformatted text.
<p>
Fully incorporated support for W3C icon entities. Added the
XmNenableIconEntities and XmNiconAlignment resources.
<p>
<dt>September 1
<dd>Updated the XmHTML manual page. I also seem the have the layout bug
resolved properly.
<p>
<dt>August 31
<dd>Didn't get much to do on XmHTML since I spent almost the entire day
trying to recover XmHTML's latest sources after one of my disks died
a horrible, screeching death. I did manage to get the disk spinning again
by messing with the hardware, only to find it was totally wasted.
I won't bother you with further details, I'll suffice to say I had to wade
through a dump of over 2gig to recover them...
<p>
As a result I transferred development to another system which supports
full mirroring (an IBM 42T in case you're interested).
<p>
It was waaaay past midnight when I finally had everything up and running
again.
<p>
<dt>August 30
<dd>Reworked the history mechanism in the examples, it works much better
after I added two convenience functions that allow one to test the
visibility state of a hyperlink: <tt>XmHTMLAnchorVisibleById</tt> and
<tt>XmHTMLAnchorVisibleByName</tt>.
<p>
Fixed a few bugs here and there. Most importantly,
<tt>XmHTMLAnchorScrollToId</tt> could cause a buffer overrun and
subsequently bring XmHTML to a grinding halt.
<p>
<dt>August 27
<dd>Minor bug fixes, comment updates. Started to merge in code donated
by Eric Bello (<a href="mailto:belloer@gemse.fr">belloer@gemse.fr</a>)
for embedded object support.
<p>
<dt>August 25
<dd>Code review, I need to familiarize myself again with the code, it's
been almost three months since I had a look at it...
<p>
Came a long way with fixing a fundamental flaw in the layout code.
<p>
<dt>August 24
<dd>I've finally recovered from back problems and a fractured wrist, so
after a very long delay I've started working on XmHTML again.
<p>
<b>
Target date for (the long overdue) XmHTML Beta 1.1.5 is set for
Thursday, September 3, 1998.
</b>
<p>
<dt>June 4
<dd>Made a start with updating and correcting the manual pages and
other documentation.
<p>
Made a beginning with the implementation of support for embedded
objects. This will allow programmers to dynamically add their own
HTML extensions, create external widgets or start up applications and
bring them under XmHTML's management. This <b>hugely</b> extends
XmHTML capabilities!
<p>
I also made some progress with further implementation of the
ToolkitAbstraction. Still needs some work though.
<p>
Played around with adding autoconf/automake support to the XmHTML
source tree. This basically works but needs a lot of tweaking before
this system is fully functional. Things that work are:
<p>
<ul>
<li>automatic detection of the image libraries (including version checks);
<li>static libXmHTML is successfully build on Linux 2.0.32 and AIX 4.1.5;
<li>static libhttp is successfully build on Linux 2.0.32 and AIX 4.1.5;
<li>all examples are successfully build;
</ul>
<p>
Building shared libraries needs to be tested.
<p>
Things that don't work (yet) are:
<p>
<ul>
<li>generating dependency information. This utterly fails;
<li>installing the resulting libraries;
<li>building the book, contrib and tools directories;
<li>make clean and make distclean completely explode;
<li>making distributions;
<li>make includes is useless;
<li>the current setup conflicts with the current Imakefile configuration.
</ul>
<p>
I expect to solve these problems during the coming weekend. Stay tuned.
<p>
<dt>May 25
<dd>The scrolling problem reported by a number of people finally seems to be
solved!
<p>
<a href="mailto:belloer@gemse.fr">Eric Bello</a> submitted an optimization
for the scrolling which simply collapses all outstanding motion events.
The entire chain of events caused by fast scrolling is now more or less
handled synchronously and thus this (very important fix) should ensure
that the screen is finally updated properly.
<p>
Since this approach <b>may</b> lead to jumpy scrolling on some systems,
the XmNsmoothScrolling resource has been introduced. If <b>True</b>,
XmHTML will use not collapse motion events and scrolling will always be
smooth.
<p>
<dt>April 27
<dd><b>Released XmHTML/Beta Version 1.1.4.</b>
<p>
<dt>April 26
<dd>A day dedicated to bugtracking (with many thanks to
<a href="mailto:ruff@comsys.dofn.de">Marcel Ruff</a> for keeping me
busy...)
<p>
Modified the XmImageProc definition from:
<pre>typedef XmImageInfo*(*XmImageProc)(Widget, String, XtPointer);
</pre>
to
<pre>
typedef XmImageInfo*(*XmImageProc)(Widget, String, Dimension, Dimension, XtPointer);
</pre>
The new arguments are the width and height as specified by the
<tt>width</tt> and <tt>height</tt> attributes on the <tt><IMG></tt>
tag.
<p>
This change offers more flexibility for external image caches and
is consistent with the way XmHTML performs internal image caching:
internally, XmHTML caches images on a per-document basis: before the
XmNimageProc resource is called, XmHTML looks at the list of images
already loaded for that document. If it finds an image with the
same url <b>and</b> dimensions, that image is reused instead of reloaded.
Previously, this could lead to inconsistency (images with incorrect
dimensions or images not appearing at all) with external image caches
that only use the filename or url of a loaded image.
<p>
Several bugfixes:
<ul>
<li>document color handling: if a color was referenced multiple times
in the same document, it never got properly freed. This could lead
to pretty weird situations and in some cases an X protocol error;
<li>image scaling for simple transparent images: the created clipmask was
worthless because it used an incorrect reference value for the
transparent pixel;
<li>replacing/updating animations: when an animation was replaced or
updated with a non-animated image, the data was freed properly but
the animation flags were not properly reset. This lead to a crash
because XmHTML was trying to render frames that were no longer
present.
</ul>
<p>
<dt>April 18
<dd>Fixed an important buffer overrun in the parser that made XmHTML terribly
unstable...
<p>
<dt>April 13
<dd>Greatly improved the table layout algorithm. XmHTML now uses a separate
routine to compute the layout inside each cell. This enables XmHTML
to make a proper distinction between cells that contain a multitude of
images, special centering and linebreaking rules. It also sped up the
layout computation of documents without tables in them.
<p>
It's not yet perfect but I'm getting there.
<p>
<dt>April 8
<dd>Fixed a few important bugs in table rendering: while scrolling a table
with a background specification, the entire background would be repainted
but only the newly scrolled content would be rendered making the existing
content invisible.
<p>
Loosened HTML conformance checking when the
<a href="man/HTML.html#XmNstrictHTMLChecking"> XmNstrictHTMLChecking</a>
is set to <b>False</b>: font changes are now allowed to cross all
HTML container elements (<tt><H1>, <DIV>...</tt>).
<p>
Anchors are now rendered using the current background color instead of
the document background color.
<p>
Enhanced the parser to automatically detect and correct a tag without
a greater than sign (<tt>></tt>).
<p>
<dt>April 4
<dd><b>Released XmHTML/Beta Version 1.1.3.</b>
<p>
Moved all warning messages in a stringtable and made a number of other
changes to reduce the data size of the library. That succeeded fairly well,
it decreased with more than 20kb.
<p>
Made a few changes in exposure handling, tables seem to behave themselves
a lot better now.
<p>
<dt>April 3
<dd>A few more optimizations in the document formatter: introduced a
generic Stack class and replaced a few small but often used functions by
macros.
<p>
Fixed a small bug in table layout: content of cells with a single
line of text in them is now properly centered.
<p>
Fixed an important bug in image scaling: previously, XmHTML modified
the original image data directly, leading to quality loss when the
same image but with the original dimensions is referenced later. XmHTML
now works with a copy of the original data when scaling is to be
employed.
<p>
<dt>April 1
<dd>Added support for relative image dimensions;<br>
A few optimizations in tag attribute checking: tag attributes are now
made caseless when the document is parsed, so attribute checking can now
be done caseless as well.
<p>
The <tt>COLOR</tt> attribute for horizontal rules (<HR>) is now
also supported for rules <b>without</b> the <tt>NOSHADE</tt>
attribute set.
<p>
<dt>March 13
<dd>Added the XmHTMLGetDocumentInfo convenience routine. This routine returns
a list of all images and hyperlinks contained in a document, allowing
one to display the structure of a document.
<p>
<dt>March 12
<dd>Bummer, haven't had much time the last weeks to work on XmHTML.
Nevertheless, the following changes have been made:
<p>
<ul>
<li>Started with making daily distributions of my current source
tree. This way you are always able to have a look at what
I'm doing (or trying to). <a href="getit.html">This</a> page
tells you a bit more about it.
<li>Fixed a couple of bugs in image layout: paragraphs consisting
only of images now have their spacing corrected, no needless
horizontal or vertical spacing is added if none has been found
in the input. This improves table layout a lot. Check
<a href="http://www.babylon5.com">http://www.babylon5.com</a>
and see how netscape gets it (a bit) wrong.
<li>Default bordering on images has been made context-dependent: if
it's a hyperlink, the default is to add a border, it it's not
a hyperlink, no border is added. Of course this only applies to
images which don't have the <tt>BORDER</tt> attribute set.
<li>Imagemap support has been improved. In some cases, XmHTML
would ignore a client-side imagemap if the image using an imagemap
was wrapped inside an anchor.
<li>a few bugfixes here and there.
</ul>
<p>
<dt>February 15
<dd>Added full text searching using POSIX 1. regular expressions. Works quite
well if I may say so...
<p>
<dt>February 12
<dd>Fixed an annoying parser bug: trailing contents in closing tags wasn't
properly ignored which could lead to badly formatted documents.
<p>
Converted two routines heavily used by the parser to macros to speed
it up a little.
<p>
Fixed a bug in anchor painting: when anchor highlighting is turned off,
anchors now return to their normal state when they are deselected.
Previously they would be painted with the highlightcolor.
<p>
<dt>February 9
<dd>Introduced some much needed optimizations after performing some
profiling tests: XmHTML now spends less time in color
allocation (in some tests even less than 65 percent), caseless string
matching and the GIF decoders.
<p>
Fixed some bugs in the 16bit RGB color matching code.
<p>
<dt>February 7
<dd>More table fixes: width of nested tables & spanned cells finally
computed correctly.
<p>
Modified all color allocation routines to work with 16bit RGB values and
subsequently modified the image readers, quantizer and dither engines.
Sped up dithering of JPEG images and did some prelimenary work on 16bit
image support.
<p>
Modified colorhashing to reduce the number of collisions.
<p>
<dt>February 1
<dd>Loosened parsing of RECT <tt><AREA></tt> coordinates: any sequence
of non-digit characters is now considered a separator
(<a href="http://www.infoseek.com">www.infoseek.com</a> is a site
containing very nice examples of <b>bad</b> HTML).
<p>
<dt>January 29
<dd><b>Released XmHTML/Beta Version 1.1.2.</b>
<p>
<dt>January 28
<dd>It's been a while since the last update. I have been rather occupied with
other items since the last update, but nontheless, a few improvements
have been made:
<p>
<ul>
<li>Table support is nearing it's completion: borders are rendered,
cells can have a background color or image, row and cell spacing is
treated correctly, tables can be nested almost indefinitly and
dimensions are calculated properly.
<p>
Exposure handling still suffers from a few quirks: although only
the exposed region is redrawn, sometimes Expose events seem to be
missed and scrolling seems to lose a few pieces of text here and
there.
<p>
The only real loose end is vertical alignment.
<li>A number of bugfixes in Imakefiles and examples;
<li>Explicit linebreaks are now properly ignored when they follow an
implicit one (e.i, a <b><BR></b> when the current line already
caused a linebreak);
<li>XmHTML has been ported to Gtk for use with the
<a href="http://www.gnome.org">Gnome</a> Project;
<li>Cookie support has been added to libhttp;
</ul>
<p>
<dt>December 31
<dd>Happy Newyear!
<p>
<dt>December 15
<dd>HTML Form widgets are no longer actively destroyed when the parent
HTML widget is destroyed. Previously, this lead to an XError. Bugfix
thanks to <a href="mailto:offer@sgi.com">Richard Offer</a>.
<p>
<b><tt><BR></tt></b> bugfixes:
<ul>
<li>If a line is ended by a linebreak, any leading space for the first
word on the next line is removed. As a result of this, text
justification no longer shifts this word;
<li>Paragraphs containing a linebreak could incorrectly double the
end-of-paragraph spacing.
</ul>
<p>
<dt>December 14
<dd>Fixed a bug in anchor rendering when it is the first object in a page:
XmHTML couldn't find a proper starting point and didn't render the
anchor at all.
<p>
Fixed a bug related to empty named anchors, they used to reset the
left margin (this one has been lurking under the carpet for a very
long time...).
<p>
Some improvement in table exposure handling.
<p>
<dt>December 13
<dd>Modified handling of the XmNenableBadHTMLWarnings resource: you can now
select what type of errors the parser detects will be shown.
<p>
<dt>December 11
<dd>libhttp: the <tt>HTTPHEAD</tt> HTTPLoadMethod now supports both
HTTPLoadToFile and HTTPLoadToString. For the latter, any received headers
are stored in a new <tt>headers</tt> (array of type
<tt>HTTPNamedValues</tt>) field in the HTTPRequest return structure.
<p>
HTML tables: cell width takes horizontal margin into account properly.
Previously, the cell width tended to be too small for the widest cell.
Bugfix: linebreaks contained in anchors are no longer rendered.
<p>
Fixed a number of bugs in the Imakefiles.
<p>
<dt>December 9
<dd>HTML tables:
<p>
<ul>
<li>Fixed handling of the <tt>ROWSPAN</tt> attribute: the extra
vertical space is now distributed evenly accross spanned rows;
<li>fixed an (important) baseline handling bug;
<li>cells now reset the linebreaking mechanism: each cell represents a
minipage that <b>must</b> start with a clean slate. Previously
paragraph breaks were transferred accross rows and cells.
</ul>
<p>
<dt>December 8
<dd>Fixed a small redraw bug in XmBalloon popup.
<p>
Changed the handling of <BR> tags: they are now treated as text
objects. This fixes a bug in table cell content rendering if a table
is placed in an intended paragraph.
<p>
Added the Composite Extension fix.
<p>
<dt>December 4
<dd><b>Released XmHTML/Beta Version 1.1.1.</b>
<p>
<dt>December 3
<dd>Nested tables seem to be working almost flawlessly. Added partial
support for the <tt>BGCOLOR</tt> attribute on all table elements.
Still scrolling problems and offsets between different child tables
doesn't always work correctly.
<p>
Loosened the parser to allow appearance of the <tt><P></tt>
element inside elements it shouldn't be appearing the
<a href="man/HTML.html#XmNstrictHTMLChecking">XmNstrictHTMLChecking</a>
resource has been set to false.
<p>
<dt>December 1
<dd>Tables are really going now: the <tt>COLSPAN</tt> and <tt>ROWSPAN</tt>
attributes are now working. Table margins, cell and row padding also
seems to work. If you care to take a look at a sneak preview,
<a href="../Images/table_preview.gif">click here</a> and be amazed :-))
<p>
<dt>November 26
<dd>More work on table layout: cell heights are now computed correctly,
cell and rowspacing works, cell and row spanning should work.
Nested tables also seems to work but has received little testing.
<p>
<dt>November 25
<dd>First success at table displaying! The layout algorithm seems to work
rather well (and fast!). Details aren't rendered yet (borders, background
color or image), suppport for cell and row spanning hasn't been
added and scrolling is sometimes messed up, but the borderline is: the
basic table layout computation algorithm works, and it works damn GOOD!
<p>
<dt>November 21
<dd>Finally found a satisfying design for table support. Extended the
document formatter to fill in the table data structures.
<p>
<dt>November 20
<dd>Internal changes to the parser as preparation for progressive document
loading. Temporarely removed the ParserObject from the XmHTML Widget
library.
<p>
<dt>November 14
<dd>Played around with the HTML 4.0 event model: added the
<a href="man/HTML.html#XmNeventProc">XmNeventProc</a> resource to parse
any scripts attached to these events and added the
<a href="man/HTML.html#XmNeventCallback">XmNeventCallback</a> callback
resource whenever an event should be served.
Support for <b>all</b> HTML4.0 events is present in the code but
currently only the <i>onMouseUp</i> and <i>onMouseDown</i> events
are support for anchors.
<p>
Still thinking about a decent and fast way to handle tables.
<p>
<dt>November 12
<dd>Some small performance increases in the document formatter: whenever
possible, objects are reused instead of being deleted.
<p>
<dt>November 11
<dd>Played around a bit with the HTTP.c code in the contrib dir:
<p>
<ul>
<li>added a timeout on the connect() call using either setsockopt() or a
bruteforce alarm() on systems that don't have support the SO_RCVTIMEO
setsockopt flag;
<li>added a select() on read() using a user-specified timeout and retry
count;
<li>added a small tool, httpget.c, in the tools directory demonstrating
a fairly straightforward use of the HTTP code. This little tool can
fetch an URL from any site you give feed it.
</ul>
<p>
The result of the above changes is that loadHTTPURL will <b>never</b>
block again.
<p>
Modified a few routines in parse.c so that they can now be shared by
both XmHTML and XmHTMLParser.
<p>
Small bugfix in ScrollToLine.
<p>
<dt>November 10
<dd>Added the <b>XmNclientData</b> resource. This resource allows one
to provide a pointer to client data that should be provided as the
last argument to any function installed on any of the functional
XmNanchorVisitedProc and XmNimageProc resources. As a logical
consequence, the corresponding typedef for these resources now have
one additional argument of type <tt>XtPointer</tt>.
<p>
<dt>November 8 and 9
<dd>Working on tables;<br>
Much work on example_2.c: I'm completely rewriting it in a rather
modular way where a basic Browser object can act in four different ways:
as a complete browser, as member of a HTML frameset, as a popup window
and as the desktop window. All of which can be used in every possible
combination.
<p>
<dt>November 3
<dd>All resource strings used by the XmHTML Widget Library are now placed
in a separate header file called HTMLStrings.h.
<p>
<dt>November 2
<dd>Added a XmBalloon widget to the library. This is a simple
"tooltip" widget that can be popped up to display a small
string. The string can be displayed in a rectangle or an oval (the
latter is achieved using the Shape extension). example_2.c contains
a possible usage: whenever an anchor is entered that contains the
title attribute, this tooltip is popped up.
<p>
<dt>October 31
<dd>Modified example_4 so it now also compiles and runs with X11R5 (or
earlier)<br>
<p>
<dt>October 28
<dd>CDE and Solaris related Imakefile fixes and a workaround for a possible
bug in SparcWorks cpp.
<p>
<dt>October 26
<dd>Bugfix: the widget's size wasn't always correctly set at creation
time.<br>
Modified XmHTML's translation table: anchor selection/document
scrolling now works with any key combinations but Shift, Meta and Ctrl.
The previous table masked of <b>all</b> modifiers, making the widget
practically unseable if, for instance, the NumLock key was active.
<p>
<dt>October 22
<dd>Bugfix on vertical scrolling: any vertical scroll requests are now
properly ignored when the currently loaded document doesn't have
a vertical scrollbar.
<p>
<dt>October 21
<dd>XmHTML's form support is now complete: the XmNformCallback is now
fully implemented thanks to
<a href="mailto:offer@sgi.com">Richard Offer</a>!<br>
Richard also provided a simple HTTP/1.0 implementation. A <b>big</b>
round of applause!
<p>
<dt>October 11
<dd><b>Released XmHTML/Beta Version 1.1.0.</b>, the first XmHTML Beta
Release.
<p>
<dt>October 10
<dd>Last preparations for the XmHTML Beta 1.1.0 release.
<p>
Fixed a small bug in local anchor jumping: XmNanchorVisitedUnderlineType
resource wasn't properly honored.
<p>
Removed a number of unused resource class names from the XmHTML
string table (1kb of data), added the XmCAnchorUnderlineType resource
class and corresponding converter and added a warning message to the
parser (in some cases it forgot to complain about closing elements
without an opening counterpart).
<p>
<dt>October 9
<dd>Added a "fast" mode to the parser which entirely bypasses
the document verification and repair routines (as if it wasn't fast enough
already :-) If you are absolute sure that a document is fully compliant
with the HTML3.2 standard, and all elements for which termination is
optional <b>have</b> a terminator, setting the value of the
<a href="man/HTML.html#XmNmimeType">XmNmimeType</a> resource to
<tt>text/html-perfect</tt> will select the fast parser.
<p>
<dt>October 8
<dd>Finally fixed a very annoying bug: when the widget is created, the height
wasn't always computed correctly, leading to incorrect screen updates when
scrolling (small gaps appeared). The only way to get around this bug was
to resize the widget. It turned out that the core class height gets
modified sometime <b>after</b> the Widget's Initialize method has been
called, but before it is being mapped to screen. What causes this is a
mystery to me.
<p>
Final preparations for the first official Beta release, 1.1.0: added
a collection of manual pages that describe each and every convenience
function offered by XmHTML and updated the (hugely out of data) widget
description.
<p>
<dt>October 7
<dd>Dithering to a fixed palette is now fully possible. There are four
different methods available (closest match without error correction,
ordered with and without error correction and closest match with error
correction). You can specify a palette using the XmNimagePalette resource
or let XmHTML create one for you.
<p>
<dt>October 6
<dd>Working on implementing support for the XmNimageMapToPalette and
XmNimagePalette resources, which allow you to define a palette for XmHTML
to use. Besides the obvious advantages this can offer, another advantage
is a rather large speedup when switching pages: since a palette contains a
fixed number of colors, XmHTML can allocate all colors on startup and
doesn't have to free them until it is destroyed. This obliterates the need
to release allocated colors each time a new page is loaded.
<p>
<dt>October 3
<dd>Replaced the current quantizer with a compacter and faster one. Previously
XmHTML carried two quantizers: one for global use and one specifically
for PNG images.
<p>
Fixed a bug in the colormap reading code of GIF images.
<p>
<dt>October 2
<dd>Fixed a small bug in form handling: optionmenu's didn't get reset when
the reset button was pressed.
<p>
<dt>September 28
<dd>Added support for Fast Loadable Graphics. This is a format especially
designed for XmHTML and optimized for <b>very</b> fast loading of images.
The FLG format is actually nothing more than a compacted version of the
XmImageInfo structure, and as such it supports plain transparency,
alpha channel and animations (with all GIF disposal methods).
<p>
Data can be stored either compressed or uncompressed. Uncompressed FLG's
are the fastest possible way to load an image into XmHTML, but they can
take up a huge amount of space. A funny thing I noticed though is that,
quite often, an <b>uncompressed</b> FLG takes up <b>less</b> space
than the same image saved as a GIF image...
<p>
Animation support: the global colormap of an animation is now only
allocated once for the entire animation instead of being allocated for
each frame separatly. This has two significant advantages: memory usage is
reduced and less time is spent in allocating colors. XmHTML will now also
use the global colormap if the local colormap of an animation frame is
equal to the global colormap.
<p>
<dt>September 26
<dd>Some changes to reduce memory usage:
<p>
<ul>
<li>Changed the type of the color component fields of the XmImageInfo
structure from signed int to unsigned short (can save up to 1.5kb
per image). Modified all internal color allocation routines as well;
<li>the size of the clipmasks is now computed correctly: storage
occupied by clipmask data has been reduced by a factor 8;
<li>alpha channel processing of PNG images been modified to use a colormap
instead of full RGBA quartets: the 24bit RGB data is converted to an
8bit paletted image and the alpha channel is stored separatly.
This reduces the memory occupied by these images with at least a
factor two;
</ul>
<p>
<dt>September 22
<dd>A lot of improvements in the font allocation/caching routines:
<p>
<ul>
<li>a separate font cache for each display is now maintained.
The previous scheme didn't look at which display it was running while
the font cache was shared between every XmHTML instance.
Displaying multiple instances of a XmHTML widget on different
displays should now be possible;
<li>made the font caching scheme a lot more efficient and removed the
limit on the maximum number of loadable fonts (it now uses a binary
tree lookup instead of a lineair search through a table with fixed
size;
<li>fonts are now freed when the widget is destroyed (that is, the actual
font data is only freed if the widget being destroyed is the last
widget using a display-bound font cache);
<li>modified the internal data structures so font properties are now
stored with each font instead of calculating them each time the layout
needs to be recalculated;
</ul>
<p>
One very <b>major</b> performance enhancement is the introduction of a
smart font mapping scheme which maps unknown font names to known ones.
I am particularly pleased with this scheme, it allows XmHTML to map fonts
it does not know in the beginning to known ones later one. Assuming the
helvetica font is present in your font path and arial isn't, the following
happens: when XmHTML encounters a <tt><FONT FACE="Arial"></tt>
tag, it will not know to which font it should be mapped and it will use the
default font (whatever that is). However, when at a later stage a
<tt><FONT FACE="Arial,Helvetica"></tt> is encountered, XmHTML
will see that this <tt>Arial</tt> font can be mapped to the
<tt>Helvetica</tt> font (which it does known), and as a result, any future
reference to the <tt>Arial</tt> font will be mapped to the
<tt>Helvetica</tt> font. XmHTML <b>is</b> smart enough to take any
combination of weight, slant and size into account when making these
decisions.
<p>
Performance tests with the new font caching and mapping schemes show some
very satisfactory results: the cache hit ratio is steadily increasing,
approaching 90 or more percent after about 10 documents with different
fonts have been loaded. The average number of search actions seems to
remain steady around 7 in this case. The font cache contained 55 fonts
(including 10 font mappings) in various families, sizes and styles.
<p>
As a side note: this new ``font technology'' allows users to define
their own font mapping by providing a document with a list of simple font
mappings. Click <a href="font_map.html">this link</a> for a sample
document.
<p>
Before I forget: I made the builtin cursor allocation display-independant
as well.
<p>
<dt>September 21
<dd>First success at flowing text around images with the <tt>ALIGN="LEFT"</tt>
or <tt>ALIGN="RIGHT"</tt> attribute set.
<p>
<dt>September 20
<dd>Small parser bugfix: mime type of a new document wasn't properly saved.
<p>
Added a ``View Document Source'' menu item to example_2 and fixed a bug
in jumping to locations in different files.
<p>
<dt>September 18
<dd>Fixed a few important bugs:
<ul>
<li>imagemap list wasn't properly reset when a document was
reformatted. Could lead to a SIGSEGV in some cases;
<li>list of anchor data wasn't properly reset in some cases;
</ul>
<p>
XmHTML now properly honors the <b>XmNstringDirection</b> resource:
when set to <i>XmSTRING_DIRECTION_R_TO_L</i>, text is properly inversed.
Paragraphs contents are ordered from bottom to top. Needs a bit more
work though: list markers are always left-aligned at the first line of
a paragraph instead of right aligned at the bottom.
<p>
Modified the linebreaking algorithm to handle line/paragraph breaks
properly when the paragraphs contain non-text objects (HTML form components
and images).
<p>
Table support: changed the text layout algorithms to work independantly of
XmHTML's dimensions. They now use a (dynamically adjustable) bounding box.
<p>
<dt>September 16
<dd>When the title of a document is requested, leading and trailing spaces
are now removed.<br>
Added the <i>HeadDocType</i> mask bit to <b>XmHTMLGetHeadAttributes()</b>
convenience function. When set, the value of the <!DOCTYPE> tag
will be returned.
<p>
Improved path resolution and mime detection routines in example_2.c
<p>
<dt>September 10-12
<dd>Some prelimenary work on <b>XmHTMLTextGetFormatted()</b>
<p>
<dt>September 4
<dd>Fixed a few important memory leaks. One of those caused the stored anchor
data never to be freed.
<p>
Reverted a few bad fixes.
<p>
<dt>September 1
<dd>XmHTMLTextSetString fix, text was always rendered twice.
<p>
Moved all resources into a stringtable. This actually seems to introduce
a rather noticable speedup in document loading. Haven't got the slightest
clue why this happens.
<p>
<dt>August 29-31
<dd>Numerous bugfixes & memory leak fixups. A <b>grand</b> applause to
<a href="mailto:rlr@wscoe5.atl.hp.com">Ricky Ralston</a> for having the
courage to run XmHTML through purify. Thanks Ricky!!
<p>
Started with daily snapshot distribution.
<p>
<dt>August 28
<dd><b>Released XmHTML/Alpha Version 1.0.21.</b>, last Alpha release. The
next release will be the first publically available Beta.
<p>
<dt>August 26
<dd>Rewrote and extended <PRE> support greatly. Plain text, form
components and images can now be mixed freely.
<p>
Some minor changes in anchor rendering: anchors are now only extended to
the right when there is room for it, they no longer cover adjacent text
when activated. Fixed highlighting of transparent anchored images.
<p>
Added the <b>XmNimageRGBConversion</b> resource which allows one to select
the conversion method XmHTML should use when converting 24bit to 8bit
images.
<p>
Some minor fixes in the SetValues method: XmHTML now only triggers
a redisplay if a resource change requires it.
<p>
<dt>August 25
<dd>Changed the proto's for
<a href="images.html#XmHTMLImageReplace">XmHTMLImageReplace()</a> and
<a href="images.html#XmHTMLImageUpdate">XmHTMLImageUpdate()</a> :
they now return a status indicating whether or not the document needs
a recomputation of document layout if an image is replaced or updated.
<p>
Fixed a bug in the default image processing: when images were delayed, the
delayed icon wouldn't show up. I forgot to properly propagate the image
dimensions.
<p>
<dt>August 21, evening
<dd>Fully restored PNG alpha channeling support, there was a silly bug in
doing the 24 to 8 bit conversion. Alpha channeling is now also supported
for delayed images and any combination of background setting, set either
via the loaded document or the SetValues method.
See <a href="http://www.xs4all.nl/~ripley/eXode/png_demo.html">XmHTML PNG
Demo</a> for some screenshots.
<p>
Transparent background images are now also supported.
<p>
<dt>August 21, morning
<dd>Fixed a bug in delayed image loading that caused a fatal crash when
the delayed image was freed.
<p>
Progressive and normal image loading now share the same XImage creation
and update routines. Also fixed clipmask creation for progressively
loaded images.
<p>
Rewrote most part of the handling of PNG images with an alpha channel.
<p>
Several bugfixes and changes to example_2 and it's caching routines.
<p>
<dt>August 20
<dd>HTML form support: vertical scrolling of a document with a HTML form in
it should now be correct whether or not a horizontal scrollbar is present.
Also fixed a bug in the SetValues method which caused XmHTML to ignore the
already present form widgets.
<p>
Modified the debug routines, output can now be sent to a file.
<p>
Eliminated some dead/duplicate code in the painter and widget methods.
<p>
<dt>August 19
<dd>HTML form support:
<ul>
<li>The traversal stuff for tabbing between all HTML form components
almost works. Still need to figure out the proper XmTextField
translations so the tab key can be used instead of the enter key;
<li>added support for the HTML <TEXTAREA> form component and got
form resetting working. HTML form support is nearly completed: only
submit is still missing;
<li>scrollbars are no longer covered by the form widgets when the
document is scrolled.
</ul>
<p>
Some code cleanup in the document formatter.
<p>
Experimented with the BaseClass stuff. Gave up on it after half a day
or so, implementing it would require a totally different approach and
a <b>lot</b> of information on Motif's BaseClass. XmHTML is very much
an Intrinsics widget with some added Motif value, and I would keep to
like it that way, at least for a while.
<p>
<dt>August 18
<dd>Small performance increase: XmHTML now uses Manager's GC's (XmHTML is a
subclass of Manager) to paint the anchorbuttons and horizontal rules
instead of using it's own GC (and switching colors all the time).
<p>
Changed the <b>XmNanchorHighlightOnArm</b> resource to the standard
<b>XmNhighlightOnEnter</b> resource. The highlight color is now computed
dynamically depending on the current background color, which makes a
<b>lot</b> more sense than having a fixed highlight color.
<p>
Modified the anchor highlighting stuff when anchors are displayed as
buttons: with highlighting enabled they now really resemble pushbuttons.
<p>
Extended the supported HTML extensions to now also recognize a color
attribute on the <P>, <DIV> and <CENTER> tags.
The color attribute is now also supported for <HR> with the
noshade attribute set, so you can now have colored lines in your
document.
<p>
Progressively loaded images can be scaled on the fly (and as a side
effect it resolved a fatal bug in the plc code).
<p>
<dt>August 16-17
<dd>Took two days off, needed some rest drastically...
<p>
<dt>August 15
<dd>Changing any font resource should now work properly. There was a bug
in the font cache <b>and</b> the SetValues method which prevented XmHTML
from properly honoring this change. Most of the time XmHTML choose to
ignore any changes to the font resources altogether...
<p>
Fixed a very nasty bug which occured with the
SetValues/XmNdocumentCallback combination: setting any formatting
resource from within the XmNdocumentCallback would sometimes lead to
a document being loaded twice, but mostly it just caused a sigsegv.
<p>
SetValues fix: changing the XmNimageEnable, XmNenableBodyImages and
XmNbodyImage resources should work properly.
<p>
<dt>August 14
<dd>Added the <b>XmNanchorHighlightOnArm</b> resource. Enabling this resource
provides a constant visual feedback as each anchor the user moves his/hers
mouse over will receive highlighting. The <b>XmNarmColor</b> resource
allows one to set the color to use for this anchor highlighting.
<p>
<dt>August 10-13
<dd>Lots of bugfixes in the progressive image loading routines. They finally
seem to behave in an orderly manner.
<p>
Rather large performance increase in color allocation on PseudoColor and
StaticColor displays. XmHTML now uses a hashtable instead of querying the
X server.
<p>
Test with dynamically changing of resource setting revealed a couple of
bugs in the SetValues method. One of those bugs caused XmHTML to overlook
internally cached images.
<p>
<dt>August 6
<dd>Setting XmNscrollBarDisplayPolicy to XmSTATIC will now also force
a horizontal scrollbar to appear.
<p>
Modified the parser so it will now properly remove the contents of the
<SCRIPT> and <STYLE> tags when these tags aren't placed in
the <HEAD> tag (which is the <b>only</b> place where they may
occur).
<p>
<dt>August 5
<dd>Added the XmNenableColorSwitching and XmNenableFontSwitching resources.
XmNenableColorSwitching allows one to disable support for the color tag
while XmNenableFontSwitching allows one to disable support for the
<FONT> element.
<p>
Added an options menu to example_2.
<p>
<dt>August 4
<dd>Fixed a parser bug: elements with an optional closure are now being
flushed when they prevent a new element from becoming legal. Previously
the new element was discarded, which sometimes lead to bad results
(pointed out by <i><a href="mailto:u27113@kb.be">Danny Backx</a></i>).
<p>
<dt>August 3
<dd>Added an additional pass to the font loading algorithm to search for a
font when it can't be found with the current value of the XmNcharset
resource.
<p>
Modified the PLC routines to share a single GC for every image that is
being loaded.
<p>
<dt>July 18-August 2
<dd>Took a much needed holiday.
<p>
<dt>July 17
<dd><b>Released XmHTML/Alpha Version 1.0.20.</b>
<p>
<dt>July 15
<dd>Fixed a few bugs in font loading:
<p>
<ul>
<li>font changes after a <tt><FONT FACE="SomeTypeFace"></tt> used
the document font instead of the new font;
<li>successive font changes did not always yield the proper result;
<li>incrementing/decrementing the size of a font did not always yield the
correct result.
</ul>
<p>
Text enclosed in a paragraph (<tt><P>...</P></tt> or
<DIV>...</DIV>) now also gets a trailing linefeed.
<p>
<dt>July 13,14
<dd>Made a start at making XmHTML's image support self-sustaining for various
reasons:
<p>
<ol>
<li>allows implementation of a primary and secondary image cache. A primary
image cache could for example contain the real image data XmHTML uses
internally (pixmaps and thelike) and have a short-time lifespan, while
the secondary image cache could contain the XmImageInfo structures
required for creating XmHTML's internal images and have a long
lifespan.<br>
This would gain a huge performance increase in switching between
documents.
<li>makes it a lot easier for other people to add image capability to
their own applications without needing to use XmHTML;
<li>and last but not least, it would make the core of XmHTML a <b>lot</b>
lighter.
</ol>
<p>
Form image buttons work correctly.
<p>
<dt>July 11
<dd>Fixed a baseline adjustment bug for image objects.<br>
Fixed a GIF animation bug with dispose by background disposal method.<br>
<p>
Modified the parser so it is now able to backtrack when unbalanced HTML
tags are encountered.
<p>
Fixed progressive image loading to work with buffers as small as
<b>one</b> byte. Progressively loading XBM images now works correctly.
<p>
<dt>July 9
<dd>More work on forms:
<p>
<ul>
<li>fixed XmFontList problems (text on form widgets is now rendered
using the default font);
<li>added support for <tt><SELECT></tt> form components;
<li>form widgets now use the background and foreground colors specified
in the document itself.
<li>removed highlight rectangle.
</ul>
<p>
Fixed a memory leak: when freeing anchor data, the value of named anchors
wasn't freed properly.
<p>
<dt>July 4
<dd>I've found the wonderfull <i>XtInsertEventHandler</i> function! This
finally got me to get form scrolling correctly working: I can now simply
choose to ignore <b>all</b> exposure events generated all over the place
when the form components are being scrolled!
<p>
Fixed a bug in baseline adjustment for form components.
<p>
<dt>July 3
<dd>Made a few changes in the text outlining routines, should
look a lot better now (the words on a line are distributed more evenly).
<p>
Detected and fixed a number of bugs:
<ul>
<li>lines with different words on them (font, fontstyle, image object,
form components and anchors) didn't always get the baseline
correct;
<li>lineheight of images wasn't always computed correctly;
<li>before updating the background image a check is done if the
background gc is really present and that the background image isn't
delayed or being loaded.
</ul>
<p>
The background image and X11 Bitmaps can now also be loaded progressively.
<p>
<dt>July 2
<dd>Fixed a number of bugs in the progressive JPEG loader that showed up
when experimenting with PLC buffer resizing.
<p>
All PLC routines are finally fully reentrant.
<p>
<dt>July 1
<dd>The buffers used by the progressive image loader can now be resized by
an application.
<p>
GIF images can now also be loaded progressively by using an external GIF
decoder installed on the XmNdecodeGIFProc resource. Introduced the
<b>XmHTMLGIFStream</b> object which is now the sole argument to any
function attached to this resource.
<p>
Modified progressive decoding of GIF images when using the internal GIF
decoder to wait until all compressed raster data has been received;
progressive decoding of a GIF image by the internal GIF decoder is
impossible due to the forking of <tt>uncompress(1)</tt> (a well, it's
not impossible but terribly slow).
<p>
Added a new resource, <b>XmNprogressivePerfectColors</b>, which allows
one to instruct XmHTML when and if a final color quantization pass
should be performed once a progressive image has been loaded. I've made
this into an option instead of doing it always as this is a rather
time-consuming operation. Possible values are Never, Always or Automatic
(let XmHTML decide when a quality increase can be expected).
<p>
<dt>June 26
<dd>Fixed simultaneous updating of multiple copies of the same, progressively
loaded, image in the current document.
<p>
Modified XmHTMLXYToInfo() to ignore images that are currently being loaded
progressively: most of the XmImageInfo fields returned have a <b>very</b>
limited lifespan (a few or so polling intervals) during image load.
<p>
<dt>June 25
<dd>Progressive JPEG images that are loaded progressively are now also
displayed properly: each pass adds additional detail.
XmHTML now requires libjpeg version 6 or above for full jpeg support.
<p>
Added a final color quantization pass in progressive JPEG support (first
passes are dithered against a fixed palette, the final pass will do
Floyd-Steinberg using a histogram of the image itself).<br>
<p>
Added three convenience functions to suspend, continue and kill progressive
image loading.
<p>
Fixed a <b>serious</b> bug in the main plc engine which caused a total
server (and system) lock when <b>any</b> mouse button was activated on
the display area.
<p>
<dt>June 20
<dd>Baseline JPEG images can now also be loaded progressively.
<p>
<dt>June 19
<dd>Fixed a bug for transparent frames in animated gifs with dispose by
background disposal method; clipmask was used incorrectly when restoring to background.
<p>
<dt>June 18
<dd>Interlaced GIF & GZF images are loaded properly now.
<p>
<dt>June 17
<dd>First success at progressive image loading!!
<p>
<dt>June 16
<dd>Modified XmHTMLAllocColor and XmHTMLFreeColor (two non-XmHTML supporting
routines) so they no longer interfere with XmHTML's private color
allocation.
<p>
Fixed a bug in the color matching algorithm, RGB values were shifted out
of range, causing colors to be mapped to the wrong color or even worse
(to black).
<p>
<dt>June 15
<dd>All PLC interfacing routines written. Image PLC interfacing routines
written and verified. First tests show the scheme is working better than
expected.
<p>
<dt>June 14
<dd>Most top-level PLC routines written. Image PLC routines nearly finished,
GIF and GZF progressive image decoders written.
<p>
<dt>June 11
<dd>Rewrote the color allocation routines: profiling showed that XmHTML's
old color allocation scheme spends quite a lot of time allocating its
colors. The new scheme is nearly 30% faster.
<p>
<dt>June 10
<dd>Started on progressive image loading: Progressive Loading Context
(PLC) object written. Object-specific structures written. Started
splitting the image loading routines so they can be used for progressive
image loading.
<p>
<dt>June 9
<dd>Wrote a very feasible progressive <b>object</b> loading concept. The
implementation will use a ringbuffer with object-specific function
pointers, visited by XmHTML using a variable polling interval. The concept
allows for an easy implementation of progressive document loading as well.
<p>
<dt>June 5
<dd>Alpha channel PNG images are now created when they are needed by the
painter. The reason behind this is that when XmHTML is resized
horizontally, the position of the image changes with respect to the
current background setting, making a redo of alpha channel processing
necessary. It works but causes a very undesirable delay. Seems like
progressive image loading is becoming a real necessity...
<p>
<dt>June 3
<dd>PNG support: XmHTML now supports the following features as set forth in
the decoder requirements specified in the
<a href="http://www.w3.org/pub/WWW/TR/REC-png.html">W3C Official PNG
Recommendation</a>:
<p>
<ul>
<li>Gamma correction;
<li>all color types and bit depths;
<li>full tRNS chunk support;
<li>full alpha channel support;
<li>bKGD chunk support;
</ul>
<p>
The tRNS and alpha channel support both work with a fixed background color
as well as composing against a background image. As you can see,
everything except progressive image loading is now supported.
Thanks to <a href="mailto:newt@pobox.com">Greg Roelofs</a> for the quite
usefull <a href="http://www.wco.com/~png/png.html">PNG Home Page</a>,
usefull tips and adding XmHTML to the PNG Supporting Applications page.
<p>
Also upgraded the PNG code to comply with libpng version 0.96.
<p>
<dt>June 2
<dd>Finally fixed a transparency bug on animations with a disposal method of
none while the first frame contains transparency. This bug has been around
since Alpha 1.0.16 or so.
<p>
<dt>June 1
<dd>Fixed a bug in image scaling: scaling the clipmask data of transparent
images directly was wrong so I now simply recreate the clipmask data out
of the scaled image data (which also gains us a small performance increase).
<p>
<dt>May 31
<dd>More work on PNG image support: background substitution and RGB images.
Alpha channel support and transparency support is partially in.
<p>
Added the <b>XmNscreenGamma</b> resource to fully exploit the gamma
correction capabilities of both PNG and JPEG images.
<p>
<b>Released XmHTML/Alpha Version 1.0.19.</b>
<p>
<dt>May 29
<dd>Fixed a few more bugs in the parser: the rules for definition lists
were not entirely correct. Added a check on invalid nesting of HTML
markup elements.
<p>
<dt>May 27
<dd>Added a check on the scrollbar dimensions when they are specified using
application defaults or in a resource file. Subsequently added a section
on specifying XmHTML's dimensions in the same way in the Programmers guide.
<p>
More work on the XmHTML Programmers Guide.
<p>
<dt>May 26
<dd>Bugfix 05/26/97-01, a nasty bug which caused XmHTML to crash every so
often in the most strangest ways. It turned out to be a stupid typo...
<p>
Rewrote the caching routines in example_2 to be more generic and robust.
<p>
<dt>May 23
<dd>Fixed the parser to recognize the contents of the <SCRIPT> and
<STYLE> elements. The <b>XmHTMLGetHeadAttributes</b> convenience
function now also fills the appropriate fields of the XmHTMLHeadAttributes
structure.
<p>
<dt>May 22
<dd>Fixed a nasty bug in XmImageFreeImageInfo when it was called by
application code. As a result of this the function call itself now takes
two arguments: the widget id of a XmHTMLWidget and a pointer to the
XmImageInfo structure that is to be released.
<p>
Fixed a bug in comment parsing: single dashes appearing in a HTML comment
are now properly ignored.
<p>
Added the XmHTMLAllocColor convenience routine which can be used for
easy color allocation using the colormap installed on a given XmHTMLWidget.
<p>
<dt>May 18
<dd>Added the XmImageConfig structure for use with XmHTML's external image
support. This structure allows one to configure the behaviour of the
XmImageCreate... routines and contains various flags to set
(amongst others) an external gif decoder, create a clipmask, perform
background substitution, color quantization and frame selection on gif
animations.
<p>
<dt>May 16
<dd>Added support for the <b>XmNmaxImageColors</b> resource: when an image
contains more colors than allowed, it will be quantized (and possibly
dithered using the Floyd-Steinberg algorithm) to match the maximum number
of allowed colors.
<p>
<dt>May 15
<dd>Added the <b>XmHTMLGIFtoGZF</b> convenience routine: this routine converts
a gif image to a compatible image format in which the LZW compressed
raster data has been replaced with deflate compressed raster data.
This function can be used by application programmers that want to keep
the slowdown caused by XmHTML's gif workaround to an absolute minimum by
converting a GIF image to a GZF image and subsequently using the GZF
image whenever a corresponding GIF image is to be loaded. The GZF image
format is a compatible GIF format, in which only the raster data
is compressed in a different format.
<p>
GZF images can be somewhere between 5 and 60%(!) smaller than the original
GIF image and it loads considerably faster.
<p>
<dt>May 13
<dd>After two weeks of negotiating with Unisys to obtain a license for the
use of their patented LZW algorithm for decoding the LZW compressed
raster data as found in GIF images, I was utterly frustrated by their
absolutely mindboggling attitude towards the use of the LZW algorithm for
decoding gif images. I was even more frustrated by the ridiculous
restrictions an LZW license would place on the distribution of XmHTML
(for instance: a splash screen would be mandatory for every application
using XmHTML and I would not be allowed to distribute the LZW decoder to
people that don't have an LZW license, <b>even if I have a valid LZW
license</b>).
<p>
Instead of removing support for gif images, I decided to replace the
built-in LZW decoder with a workaround that translates the LZW
compressed raster data to the format used by <tt>compress(1)</tt>, after
which XmHTML calls uncompress to perform the actual decoding of the
compressed raster data. This workaround causes (surprisingly) a hardly
noticable slowdown for single-image and small gif animations. Decoding
large animations however takes a bit more time now.
<p>
For those that want to take the risk of violating Unisys's patent policy
(or those that <b>have</b> a valid LZW license), the
<b>XmNdecodeGIFProc</b> resource has been added. One can use this resource
to install an alternate gif decoding procedure and thus surpass XmHTML's
workaround.
<p>
<dt>May 2
<dd><b>Released XmHTML/Alpha Version 1.0.18.</b>
<p>
<dt>April 30
<dd>XmHTML will now always use any colormap provided for it (thru Core's
XmNcolormap resource) instead of using the default colormap. It will also
walk the widget tree to find a Shell (or a subclass of Shell) and use the
visual provided for that Shell. XmHTML will only use the default visual if
no Shell parent can be found. All of this also works for the XmImage type.
<p>
Modified the HTML comment detection routine in the parser so nested
and bad HTML comments (dashes don't occur in a multiple of four) are
properly dealt with.
<p>
<dt>April 28
<dd>Setting the XmNfreezeAnimations resource to True will now restart
animations when they were previously frozen.<br>
Added an additional IMAGE_GIFANIMLOOP type to XmHTMLImageGetType() when
the image is an animated gif with the NETSCAPE2.0 loop extension.
<p>
Bugfixes:<p>
<ul>
<li>truly inlined images are now repainted correctly when they are scrolled;
<li>animations serving as anchors have their borders painted correctly;
<li>all images serving as anchors should now appear properly centered in
the anchor bounding box;
<li>changing document resources without setting a new text will no longer
reload images;
</ul>
<p>
<dt>April 27
<dd>Still busy rewriting the documentation: programming manuals for both XmHTML
and XmHTMLParser. The XmHTML manual is halfway now.
<p>
Fixed a lot of minor bugs that I discovered when writing example code
for the XmHTML programming manual:
<p>
<ul>
<li>XmNresizeWidth and XmNresizeHeight now work properly;
<li>setting and getting the XmNtopLine resource works;
<li>a few performance enhancements on document scrolling;
<li>horizontal scrollbar should now be present when the width of
preformatted text or images is somewhere between the widget width minus
the margin width;
<li>fixed a bug in the paint engine: height of text blocks was computed
incorrectly;
<li>fixed another bug in the paint engine: linenumbers on preformatted text
wasn't set at all;
<li>XmHTML's testbed crashes less frequently: both document and image cache
are a lot smarter now
<li>also on XmHTML's testbed: added code to show possible use for
XmNlinkCallback callback resource and XmHTMLXYToInfo (new convenience
routine);
<li>added the XmImageCreateFromInfo routine which creates a standalone
XmImage from the data in a given (XmHTML's) XmImageInfo structure.
<li>XmHTMLParserObject example now contains both normal and progressive
parsing modes. Added a HTML preview.
</ul>
<p>
<dt>April 20
<dd>Reverted integration of the htmlParserObjectClass. Too many problems and
too many overhead involved.<br>
Made a start with writing programming manuals for both XmHTML and
HTMLParserObject.
<p>
Pretty cool news: added the XmImage type which allows using XmHTML's image
reading capability to be used by other programs as well.
<p>
<dt>April 15
<dd>Moved XmHTML's parser into a seperate widget subclassed from Object.
A standalone parser can now be created and configured using the standard
X functions. Class pointer of this parser is
<i>htmlParserObjectClass</i>.<br>
The standalone parser is an Intrinsic widget which can be used without
Motif.
<p>
Replaced XmHTML built-in parser with this HTMLParserObject (with
surprisingly few modifications to XmHTML's interface).
<p>
<dt>April 10
<dd>A lot of enhancements to the parser: one can now create and use a
standalone HTML parser for a number of purposes. Features include:
<ul>
<li>Progressive (or incremental as you will) parser;
<li>aliasing of unknown HTML elements to known ones;
<li>a XmNmodifyVerifyCallback;
<li>extended XmHTMLParserCallbackStruct to include description of
offending and proposed repair elements;
<li>multiple passes to increase HTML conformance;
<li>dynamic updating of the current source;
<li>wrapped all of the above (and more) in a new collective example
which demonstrates how to use the XmHTMLParser object for interactive
document checking and repair.
</ul>
<p>
Modified the document verification/repair routines to use better defaults.
<p>
<dt>April 6
<dd><b>Released XmHTML/Alpha Version 1.0.17.</b>
<p>
<dt>April 3
<dd>Fixed a problem with scrollbars when XmHTMLRedisplay was called: document
length wasn't updated properly.
<p>
Fixed two problems related to documents with a body image: images
serving as anchors should no longer disappear when scrolling and regular
anchors (XmNanchorButtons == False) should now be rendered transparantly.
<p>
Anchors with mixed fonts are now rendered as a single anchor instead of
separate blocks. Mixing images and text in an anchor doesn't work well.
<p>
Underlining and/or striking out of words with mixed fonts is now treated
properly.
<p>
<b>Released XmHTML/Alpha Version 1.0.16.</b>
<p>
<dt>April 2
<dd>Delayed image loading now also works for the background image.<br>
Added the XmHTMLFrameGetChild convenience function.<br>
Fixed the SetValues method for enabling/disabling body colors and body
images: the effect should be visible immediatly.
<p>
<dt>April 1
<dd>Fixed a problem related to color freeing with StaticGray, GrayScale,
DirectColor and TrueColor visuals (colors got freed more than once for
these types of visuals). Color freeing should no longer cause X Protocol
Errors.
<p>
Fixed a number of things pointed out by
<a href="mailto:dick@cymru.net">Dick Porter</a>:
<ul>
<li>a robuster method for body color allocation;
<li>internal images no longer get freed by calling XmHTMLImageFreeImageInfo;
<li>corrected layout recomputation when images are updated: XmHTML now uses
the new image dimensions instead of the old ones;
<li>images of which the dimensions have been specified in a HTML
document are now painted immediatly when replacing or updating them
instead of just being removed;
<li>fixed image transparency problems: XmHTMLImageDefaultProc now always
creates a clipmask. Previously, a clipmask was only created if a
document contained a background image.
</ul>
<p>
Animations are now explicitly excluded as a background image. Image
scaling now also works properly for delayed images. Finally fixed
transparency for the default images.
<p>
<dt>March 28
<dd><b>Released XmHTML/Alpha Version 1.0.15.</b>
<p>
<dt>March 27
<dd>The parser now calls the XmNparserCallback resource when installed.
Added a new action field to the
<a href="XmHTML.html#XmHTMLParserCallbackStruct">
XmHTMLParserCallbackStruct</a> which allows
a user to select certain actions when a fault in a document is encountered.
Warning messages caused by the document verification/repair routines
are no longer displayed on screen but propagated to the XmNparserCallback
instead.
<p>
Fixed a small bug in the text layout routines: text and images are now
only centered or adjust to the right margin if their width doesn't exceed
the available screen width.
<p>
The scrolling attribute on frames is now properly handled.
<p>
All action routines are now implemented and fully functional.
<p>
<dt>March 26
<dd>Frames are in. Not perfect yet but it certainly works!
Fixed a few bugs that caused XmHTML to crash when the widget's Destroy
method was called. Added the
<a href="XmHTML.html#CallbackResources">XmNframeCallback</a> resource and
<a href="XmHTML.html#XmHTMLFrameCallbackStruct">
XmHTMLFrameCallbackStruct</a> callback structure.
<p>
Fixed a small bug in horizontal scrolling, text should no longer flow
onto itself when there isn't a vertical scrollbar present.
Fixed a small bug in refreshment if image anchors, images serving as
an anchor should now always be selectable.
<p>
<dt>March 25
<dd>Bugfix in JPEG loading.<br>
XmHTML now makes proper use of the core offsets: a XmHTML widget can now
be a child of any Motif manager widget at any position.
<p>
<dt>March 24
<dd><b>Released XmHTML/Alpha Version 1.0.14.</b>
<p>
<dt>March 23
<dd>Fixed a buffer overrun when converting preformatted text to a series of
words.
<p>
Added the <a href="XmHTML.html#XmNmimeType">XmNmimeType</a> resource:
allows XmHTML to be used for documents of which the content-type isn't
text/html. Mime types recognized by XmHTML are text/html, text/plain and
a number of image mime type specifications.
<p>
<dt>March 21
<dd>XmHTML recognizes character escape sequences without a trailing ;.
Character escape sequences in the alternate image description are now
also expanded.
<p>
More improvements on document verification and repair: really bad
HTML documents (numerous and consecutive misplaced elements) are now
repaired in such a way that display is possible.
<p>
Animation support: the first frame of an animation now also uses the
requested disposal method.
<p>
<dt>March 20
<dd>Completely rewrote the HTML parser: document verification and
auto-repair of poorly formatted HTML documents has been added.
Especially the latter is fairly powerfull. Features include
detection and repair of overlapping elements, omitted list start
tags and improperly nested font switches. It also includes auto-addition
of terminators on elements for which a terminator is optional
(dd, dt, li, p, option, td, th and tr). XmHTML can now also handle
documents without the <b>required</b> <HTML> and optional
<BODY> tags.<br>
<p>
More work on the mixed text/image layout: vertical alignment attributes
on images are now properly recognized and dealt with.<br>
<b>Released XmHTML/Alpha Version 1.0.13.</b>
<p>
<dt>March 14
<dd>Again more work on animation frame disposal: both disposal methods (by
background and by previous) now work with any background color or image.
Animation support is almost fully completed, the only thing missing is
the ability to immediatly restore composite animations that are scrolled
off and back on screen.
<p>
Added a workaround for incomplete screen updates when scrolling full
screen: the <a href="XmHTML.html#XmNrepeatDelay">XmNrepeatDelay</a>
resource now determines the minimum time a key must remain pressed
before scrolling continues.<br>
Text colors are now also properly freed (and fixed a serious bug as well).
<br>
Also some work on example_2: added a global image cache and a
per-document history stack.<br>
Added the
<a href="images.html#XmHTMLImageFreeImageInfo">XmHTMLImageFreeImageInfo</a>
convenience function.
<p>
And last but not least, added
<a href="http://www.wco.com/~png/png.html">PNG</a> image support to the
<a href="images.html#XmHTMLImageDefaultProc">XmHTMLImageDefaultProc</a>
convenience function.
<p>
<dt>March 13
<dd>More work on animation support: all frame disposal methods are now
supported.
<p>
And a lot of bugfixes:<br>
Font stack is now properly reset when a new document is loaded;
named anchors are now rendered in the current text color instead of
XmNanchorVisitedForeground;
no more color flashing when switching between documents that make heavy
use of color-rich images;
Images wider than the available screen width are no longer moved
downwards;
delayed images are now displayed in the correct dimensions when they
are flushed to XmHTML and transparent XPM images are now truly
transparent.
<p>
<dt>March 12
<dd>Colors allocated for images are now properly released when the images
are freed.<br>
Fixed X11 bitmaps. Updated all documentation.
<p>
<dt>March 24
<dd><b>Released XmHTML/Alpha Version 1.0.12</b> (documentation update).
<p>
<dt>March 11
<dd><img src="../Images/gif89a-banner-anim.gif"><br>
XmHTML now supports Gif89a animated gifs (Netscape Loop Extensions
as well as multi-image Gif89a files). Scrolling composite animations
currently doesn't work as it should. Added the
<a href="XmHTML.html#XmNfreezeAnimations">XmNfreezeAnimations</a>
resource.<br>
Replaced the XmNimageDefaultProc resource by the
<a href="images.html#XmHTMLImageDefaultProc">XmHTMLImageDefaultProc</a>
convenience function.<br>
All image reading routines now use a memory buffer instead
of reading directly from a file. Text layout now considers text and
images as the same object.<br>
XmHTML now properly renders any alternate text if images are disabled.
Modified the XmImageInfo structure again and renamed most of the
convenience functions to more logical names.
<p>
<b>Released XmHTML/Alpha Version 1.0.11.</b>
<p>
<dt>March 5
<dd>XmHTML Developers mailing list is up and running, with 51 subscribers from
the first day.
<p>
Many thanks to <a href="mailto:brian@simplicity.net">Brian Dowling</a> and
<a href="http://www.simplicity.net">Simplicity Communications</a> for
offering me this valuable service. Thanks Brian!
<p>
<b>Released XmHTML/Alpha Version 1.0.10.</b>
<p>
<dt>March 4
<dd>Fixed a spacing bug in the text layout routines which caused words
that shouldn't be glued together got glued together anyway.
Added the animation support.
<p>
<dt>March 3
<dd>Added polygon and default shape imagemap support.
Delayed Image Loading: XmImageInfo structure updated and three new
convenience functions added: XmHTMLUpdateImage, XmHTMLReplaceImage
and XmHTMLRedisplay.
<p>
<dt>February 28
<dd>A number of changes in the text-layout routines: words should now be
glued together properly. Text colors are now preserved accross anchors.
<p>
<b>Released XmHTML/Alpha Version 1.0.8.</b>
<p>
<dt>February 27
<dd>More work on Imagemaps: support for external client-side imagemaps
has been added but not tested (yet). Added the XmHTMLAddImagemap
convenience routine. Added default images which are displayed when
the XmNimageEnable resource is set to False or when an unsupported
imagetype is encountered.
Changed the XmHTMLAnchorCallbackStruct, please be aware of this!
<p>
<dt>February 26
<dd>Added client-side imagemaps; rectangular and circle shaped area types
work well. Empty as well as combined anchors (both name and href in a
single anchor) are now supported. Added the
<a href="XmHTML.html#XmNimagemapCallback">XmNimagemapCallback</a>
resource and corresponding callback structure.<br>
Fixed a small parser bug which sometimes (only seen it once really)
caused wrong text alignment. A lot of small bugfixes in anchor creation
and selection. Removed the <i>extra</i> field in XmHTMLanchorCallbackStruct
and added three new fields instead.
<p>
<dt>February 25
<dd>Modified color allocation to get an exact, close or substituted color.
This produces *very* nice results. The background attribute on the
body tag is properly honored, scrolling with an image as background is
very smooth. Images can now also serve as anchors. Mixed text and image
layout works but needs a bit more work.
<p>
<dt>February 20
<dd>Major News: image support is almost completely added and functional!
The default image loading procedure supports X11 bitmaps, X11 XPM
pixmaps, JPEG and GIF87a and GIF89a images, PNG is being worked on.
This procedure should in theory work properly with every visual class,
although only PseudoColor has been tested. Images with a width and
height specification different from the real image dimensions are
automatically scaled. I hacked this code in on two evenings, and
I'm pretty proud of it.
<p>
The <a href="XmHTML.html#XmImageInfo">XmImageInfo</a> section has
been updated and contains some more information on image handling. For
future animated image support, a few extra members have been added to
the XmImageInfo structure itself.
<p>
I do owe <A HREF="mailto:cwikla@wri.com">John L. Cwikla</A>
a lot of gratitude for his small but <b>very</b> usefull
<a href="http://www.wri.com/~cwikla/xcenter/xcc">XCC</a> package!
<p>
<dt>February 18
<dd>Internationalization: the font loading scheme employed by XmHTML
has been modified drastically and is much more robust now.
Added the <a href="XmHTML.html#XmNcharset">XmNcharset</a> resource to
allow specification of the ISO character set and changed the format
of the <a href="XmHTML.html#XmNfontFamily">XmNfontFamily</a> and
<a href="XmHTML.html#XmNfontFamilyFixed">XmNfontFamilyFixed</a> resources.
<br>
(pointed out by
<a href="mailto:valera@itech.kiev.ua">Valery Kravchuk</a>)
<p>
<dt>February 13
<dd>Added support for the face tag on the font element, e.i.
<font face="Helvetica,arial">
<font face="Helvetica,arial"></font> is now recognized.
<p>
<dt>February 11
<dd><b>Released XmHTML/Alpha Version 1.0.6.</b>
<p>
<dt>February 10
<dd>Fixed a number of potential buffer overruns (suggested by
<a href="mailto:dick@cymru.net">Dick Porter</a>).<br>
Complete rewrite of the text layout routines. Interword and interline
spacing is adjusted depending on the current font. Simplified the
outlining and alignment adjustment routines.<br>
Removed a number of internally unused structure members.<br>
Changed anchor treatment: consumes less memory and is easier to use.<br>
Second alpha release shipped.
<p>
<dt>February 6
<dd>Fixed interword and interline spacing when different fonts are mixed on
a single line: lines do no longer overlap each other and font changes
in the middle of a word are properly attached.<br>
Indentation is now computed regardless of the current font.
<p>
<dt>February 4
<dd>Added code to support the BASEFONT element and updated the code that
deals with the FONT element accordingly.<br>
All <a href="XmHTML.html#XmNhandleShortTags">shorttag</a> elements are
now recognized and dealt with properly by the parser (empty tags, empty
closing tags, unclosed tags and NULL-end tags). XmHTML passes all example
pages from the <a href="http://www.absurd.org/dark_side/">Dark Side of the
HTML</a> without even as much as a single hickup. Watch your browser choke
on the test pages at the above URL ;-).
<p>
<dt>February 3
<dd>First bug reports are seeping in: fixed a bug in font loading routines,
color releasing routines and unknown anchor types.<br>
Updated the <li> element formatting to recognize the type and value
attributes.<br>
Removed default identation for preformatted text.
<p>
<dt>January 31
<dd><b>Released XmHTML/Alpha Version 1.0.5</b>, first alpha release.
<p>
<dt>January 30
<dd>Fixed a bug with jumping to anchors: when jumping to the end of a
document, the value of the vertical scrollbar exceeded the maximum
allowable value.<br>
Final preparations for the alpha release. We'll be shipping out
any time now.
<p>
<dt>January 29
<dd>Reworked some of the anchor parsing/handling routines: anchor activation
and anchor tracking callbacks are a little bit more efficient now. <br>
XmHTML is now able to determine the type of URL referenced by an anchor:
added the <i>url_type</i> field to the XmHTMLAnchorCallbackStruct.<br>
Updated exposure handling after tests with Motif 1.2.0/X11R5.
<p>
Preparations for the alpha release: cleaned up the source and
wrote a few <a href="examples.html">examples</a> demonstrating the use
of XmHTML.
<p>
<dt>January 28
<dd>A lot of memory leaks have been fixed.
Switching between documents with/without a <body> color specification
seems to be working.
<p>
<dt>January 27
<dd>Fixed a serious bug with preformatted text: multiple newlines weren't
recognized properly and thus were rendered wrong.
<p>
<dt>January 26
<dd>Added a SubstructureNotifyMask so we get notified when the widget is
mapped on the screen for the first time. Text is now displayed properly if
text is set directly on XtCreateWidget. This fixed a serious bug in
SetValues which caused a BadWindow error when setting text on the widget
before XtRealizeWidget was called.
<p>
<dt>January 25
<dd>Nested aligment is now recognized properly.<br>
Changed the font routines to use a pointsize specification as mentioned in
the documentation. Previously pixel size was used.<br>
Linespacing for text with a font other than the default font is now
correct.
<p>
Public request for XmHTML alpha testers posted on comp.windows.x.motif,
comp.windows.x and comp.windows.x.apps
<p>
<dt>January 24
<dd>Screen redrawing finally done: only the exposed regions are now redrawn
instead of the entire line of which the exposed region was part.<br>
Preformatted text now also draws anchors correctly.
<p>
<dt>January 23
<dd>More work on horizontal scrolling: when scrolling to the left, text drawn
previously in the margin is now properly erased. Horizontal redrawing to
the right now takes the starting x position of the exposed region into
account, instead of repainting the entire screen.<br>
Preformatted text is now painted properly.
<p>
<dt>January 20
<dd>Enhanced the parser to insert closing elements on elements where they
are optional (<P>, <LI>, <DT> and <DD>).<br>
Finally got round to implementing preformatted text.
<p>
<dt>January 19
<dd>Scrolling: the widget now remembers it's current vertical text position
when it is resized.<br>
Removed left and right quotes from the list of punctuation characters.
<p>
<dt>January 17
<dd>Added the <a href="extensions.html#tab"><TAB></a> element
extension.<br>
Fixed a number of memory leaks reported by
<a href="http://www.letters.com/dmalloc">dmalloc.</a><br>
Fixed a bug in the parser which made it impossible to correctly detect
elements with trailing spaces inside them.
<p>
<dt>January 16
<dd>Text outlining: bugfixes and few performance enhancements.<br>
Added the <a href="extensions.html#color"><COLOR></a> tag extension.
<p>
<dt>January 13
<dd>Removed the XmHTMLCallbackStruct and replaced it with callback-specific
<a href="XmHTML.html#CallbackStructure">callback structures</a>:
XmHTMLAnchorCallbackStruct, XmHTMLFormCallbackStruct,
XmHTMLLinkCallbackStruct and XmHTMLParserCallbackStruct.<br>
Added jumping to local anchors when a local anchor is pressed.<br>
Added the
<a href="XmHTML.html#XmNanchorVisitedProc">XmNanchorVisitedProc</a>
resource.<br>
More work on vertical scrolling.<br>
XmHTML can now handle named anchors by itself (but it can be vetoed by the
programmer).<br>
Added the following <a href="convenience.html">convenience functions</a>:
XmHTMLGetAnchorId, XmHTMLScrollToAnchorById, XmHTMLScrollToAnchorByName,
XmHTMLScrollToLine.<br>
Enhanced HTML comment detection in the raw HTML parser.
<p>
<dt>January 12
<dd>Accelerated screen update when scrolling vertically. Horizontal scrolling
needs a bit more work.<br>
Nested lists are now rendered as they should: mixing ordered and unordered
lists works.<br>
Added the <a href="XmHTML.html#XmNenableOutlining">XmNenableOutlining</a>
resource: when enabled (default) all text of which the alignment is not
explicitly set will be outlined.<br>
Implemented the color tag for all elements mentioned in the extensions.
<p>
<dt>January 10
<dd>Horizontal scrolling works.
Fixed scrollBar offsets when XmNmarginWidth/XmNmarginHeight is smaller
than the width of a scrollBar. sliderSize and pageIncrement now
reflect the percantage of hidden text.
<br>
Nesting of ordered lists and unordered lists now works when they are not
mixed.<br>
Changed the type of all positions from Position (signed short) to int.
Documents larger than SHRT_MAX used to cause a wrap-around of their
y-position.
<p>
<dt>January 9
<dd>Working on scrolling. Scrollbars are displayed according to the
XmNscrollBarPlacement resource. Vertical scrolling works.
Changed the linebreaking algorithm to eat multiple block elements without
contents. Also a number of aesthetical changes.<p>
I expect to have an alpha release by the end of this month. Things that
need to be implemented before a release will be made are:
preformatted text, support for a few image types and nested sorted lists.
<p>
If you want be informed when an alpha release
becomes available, please send us a
<a href="mailto:ripley@xs4all.nl">mail</a>.
<p>
<dt>January 8
<dd>Added autosizing stuff: setting XmNresizeWidth and/or XmNresizeHeight
now causes XmHTML to size itself around the document properly.
Rewrote text alignment routines. Fixed a bug in the parser which caused an
anchor not be recognized if the name contained the string ``name'' or
``target''.
<p>
<dt>January 7
<dd>Fixed text alignment for lines consisting of different text elements.
Finished the text outlining algorithm: paragraphs can now be outlined
properly, which gives pretty neat results.
<p>
<dt>January 6
<dd>Happy Newyear!<P>
A lot of work and thought went into the render engine.
The previous method proved to be very memory- and time consuming, but did
have a lot of potential. After a lot of trial and error, the final method
is a mix of the original rendering engine and the state machine approach,
resulting a an even more flexible (read extensible) and less memory- and
time consuming.<br>
Changed XmNstringDirection to XmNalignment, which makes more sense. Added a
description of the implemented
<a href="extensions.html">HTML 3.2 extensions</a>. Added the
<a href="XmHTML.html#CallbackResources">XmNparserCallback</a> resource.
<p>
<dt>December 19
<dd>Changed rendering completely: a stream of paint commands is now generated
whenever a document is loaded. The actual paint engine is represented by a
state machine in which parts of the painting stream are poured whenever a
screen update is required. This is much more flexible and faster than the
previous setup, in which rendering was performed ``just in time''.<br>
This state machine approach also allows for an easy implementation of
forthcoming extensions such as the <OBJECT> tag and HTML math. It
also offers considerable advantages for a (possible) conversion of the
widget to an HTML editor widget, although that would require an integration
of the raw HTML parser and paint stream generator.
<p>
<dt>December 18
<dd>Implemented proper rendering of all attributes on horizontal rules.
Linefeed checking almost working properly.<br>
Added the <a href="XmHTML.html#CallbackResources">XmNinputCallback</a> and
<a href="XmHTML.html#CallbackResources">XmNmotionTrackCallback</a>
resources and updated action routines accordingly (as suggested by
<i><a href="mailto:rlr@wscoe4.atl.hp.com">Ricky Ralston</a></i>).
Added the <a href="XmHTML.html#Translations">track-motion</a> and
<a href="XmHTML.html#Translations">help</a> action routines. Added the
<a href="XmHTML.html#XmNworkWindow">XmNworkWindow</a> resource.
<p>
<dt>December 17
<dd>Rendering of anchors as buttons is now done properly and anchors wrapping
around a newline are finally connected as it should: linebreaking algorithm
finally working properly.<br>
Added an outlining algorithm for blocks of plain text (this is for a future
OUTLINE attribute on the <DIV> tag). This produces some very nice
results!<br>
Furthermore a number of cosmetic updates on rules, underlining, strikeout
and anchor selection rendering.
Updated the set-values method: almost all resources can now be set using
XtSetValues.<br>
<p>
<dt>December 16
<dd>More work on anchor selection: pressing an anchor now highlights that
anchor; anchors that wrap around a newline are now redrawn correctly;
anchor cursor setting/unsetting finally seems to be working satisfactory.
Also added a target field to XmHTMLCallbackStruct to support the frame
extension.<br>
XmNarmCallback implemented. <HR> rules are now painted.
Numbered lists with type=i|I are now being rendered for roman numerals upto
a value of 4999. Simplified list indentation.<br>
Corrected a few minor bugs that came up when testing multiple instances of
XmHTML widgets.<br>
<b>Major news</b>: added the
<a href="XmHTML.html#XmNanchorButtons">XmNanchorButtons</a> resource:
anchors can now be rendered as pushbuttons instead of being underlined.
Needs some more work though.
<p>
<dt>December 13
<dd>XmHTML begins to take real shape! XmNactivateCallback and
XmNanchorTrackCallback completely implemented: anchor selection fully
functional now. First real XmHTML tests by using it in
<a href="XntHelp.html">XntHelp</a>, and it seems to be working quite
well!<br>
Numbered lists with type=1|a|A are now being rendered correctly.<br>
Fixed a number of major memory leaks and minor small bugs in format.c and
the set_values method.
<p>
<dt>December 12
<dd>Solid and dashed underlines as well as strikeout are being drawn correctly.
List indentation finally correct. All three types of bullets in <UL>
are also placed correctly.<br>
Punctuation characters have a special treatment now so they are attached to
words where they should be attached.<br>
Fixed a few bugs in the font switching routines; nested fonts are rendered
correctly now.<br>
First attempts at anchor tracking have some success, XmNanchorTrackCallback
resource treatment partially finished.
<p>
<dt>December 10
<dd>Linebreaking algorithm works pretty okay. Horizontal alignment is now also
treated correctly.
Added the <a href="XmHTML.html#XmNstringDirection">XmNstringDirection</a>
resource. Fixed a few bugs in format.c.
<p>
<dt>December 9
<dd>First success at text displaying! The paint routines now can display all
sort of texts in the selected font and/or color. Added support for a future
``outline'' attribute on the <DIV> tag. The linebreaking algorithm
needs a lot more work. Changed the XmNanchorTrackProc resource to a
callback:
<a href="XmHTML.html#CallbackResources">XmNanchorTrackCallback</a>
(as suggested by <i><a href="mailto:u27113@kb.be">Danny Backx</a></i>).
<p>
<dt>December 6
<dd>ALIGN and VALIGN attributes recognized. Added a few extra attribute parsing
routines. Optimized recognition for underlining, strikout and anchors:
nested combinations are now treated ok. Checked and corrected a few memory
leaks. Performed some robustness checks and corrected bugs detected from
this testing.
<p>
<dt>December 5
<dd>List support added: indentation and the TYPE attribute are recognized as
well as nested lists. Underline, strikeout and anchor stuff written. More
work on font routines: nested font combinations are recognized and treated
ok.
<p>
Posted very first announcement on XmHTML on comp.windows.x.motif and
comp.windows.x.
<p>
<dt>December 4
<dd>First implementation of text formatting/painting. Font loading/switching
routines written.
<p>
<dt>December 2
<dd>Initialize now calls the HTML parser, creates the widget and anchor cursor
and calls the HTML formatting routines. XmNlinkCallback installed.<br>
Prelimenary tests on widget creation and resource setting/changing
performed succesfully.
<p>
<dt>November 28
<dd>First drafts of expose, layout, resize, set_values, get_values_hook,
query_geometry, geometry_manager and destroy methods.
<p>
<dt>November 26
<dd>Enhanced the parser to allow strict checking of HTML documents against
the HTML 3.2 standard. Added the XmNstrictHTMLChecking resource.
<p>
<dt>November 22
<dd>Changed the XmNfontSize resources to XmNfontSizeList. Added
XmHTMLLinkCallback, XmNanchorTrackProc, XmNanchorTarget and
XmNenableBody resources. Figured out how to use the XmRepType functions.
ClassInitialize, ClassPartInitialize and Initialize methods written.
<p>
<dt>November 21
<dd>Public and private interfaces defined. Updated Widget interface definition.
<p>
<dt>November 20
<dd>XmHTML Widget resources, callbacks and action routines
interface definition nearly completed (you're reading it now).<br>
<p>
<dt>November 19
<dd>Made some performance enhancements to the HTML parser after testing.
When compared to NCSA, our parser is almost twice as fast!
(Loading and parsing a 230kb HTML file with 14126 elements takes 0.16
seconds. NCSA takes 0.30 and does not parse table elements).
<p>
<dt>November 18
<dd>Final HTML parser completed, performance tests started.
<p>
<dt>November 12
<dd>First draft of HTML parser.
<p>
</dl>
<p><IMG SRC="../Images/wood/bar.gif">
<br>
<img ismap usemap=#back src="../Images/wood/back.gif" border=0>
<map name=back>
<area href="XmHTML.html" shape=rect coords=0,0,83,33>
</map>
<img ismap usemap=#index_map src="../Images/wood/home.gif" border=0>
<map name=index_map>
<area href="../index.html#toc" shape=rect coords=0,0,83,33>
</map>
<img ismap usemap=#email_map src="../Images/wood/email.gif" border=0>
<map name=email_map>
<area href="mailto:ripley@xs4all.nl" shape=rect coords=0,0,83,33>
</map>
<br><IMG SRC="../Images/wood/bar.gif"><br>
<i><font size="-1">
©Copyright 1996-1998 by Ripley Software Development<br>
Last update: September 1, 1998 by Koen
</font></i>
</BODY>
</HTML>
|