Hi, A couple of weeks ago, I asked for advice on rendering graphics in PHP for display in a web client.
I had a go at a few of the things suggested, before stumbling across an alternative solution. The application was an Extranet where I can make a bunch of assumptions about the desktop - so I assumed that everyone was using Firefox! This proved to be true apart from the accountant - to cut a long story short, he now has FF on his (XP) desktop, though IE is still his default. (The struggle continues.) Anyway, once I no longer had to write browser-independent code, I decided to try SVG, the W3C graphics format. - The good news - it does exactly what I want, it has the drawing primitives for things like "rectangle", which allowed a fine-grained control over graph layout. - The better news - SVG support is native in Firefox 2... - The bad news - ... as an <object/> :-( Alas, FF2 doesn't support SVG as an <img> type, so I can't just use it in-line. However, there is talk of someone submitting this functionality as a Summer of Code project, which would be kind of nice. If that fails, it's definitely near the top of the feature request list for FF3. Anyway, the solution works very, very, well.... The way it now works is that there's a PHP page called "customer-graphics.php" which starts with: ================================ <?php header('Content-Type: image/svg+xml'); ?> ================================ Then goes on to start: ================================ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full"> <g fill-opacity="0.7" stroke="black" stroke-width="0.02cm"> ================================ Before having lots of PHP along the lines of : ================================ echo "<rect width=\"$xwidth\" height=\"$Total\" x=\"$xcurrent\" y=\"$ystart\" fill=\"$actualcol\"/>"; ================================ ... where, obviously $xwidth, $xcurrent, $Total, $ystart, and $actual col are variables set inside a loop (actually one that grabs a dataset out of a MySQL5 stored procedure.) I hope that all you programmers are impressed that I even have a variable declaration block that specifies fill colour, rather than typing a colour in-line :-) The code then finishes: ================================ </g> </svg> ================================ M. -- ubuntu-uk@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-uk https://wiki.kubuntu.org/UKTeam/