"Linux Gazette...making Linux just a little more fun!"

Graphics Muse
Welcom to the Graphics Muse
Set your browser to the width of the line below for best viewing.
© 1997 by mjh

Button Bar muse:
  1. v; to become absorbed in thought
  2. n; [ fr. Any of the nine sister goddesses of learning and the arts in Greek Mythology ]: a source of inspiration
Welcome to the Graphics Muse! Why a "muse"? Well, except for the sisters aspect, the above definitions are pretty much the way I'd describe my own interest in computer graphics: it keeps me deep in thought and it is a daily source of inspiration.

[Graphics Mews] [Musings] [Resources]
indent This column is dedicated to the use, creation, distribution, and discussion of computer graphics tools for Linux systems.
      This month has been even more hectic than most. I finished the first pass of an article on the 1.0 release of the GIMP and submitted it to the Linux Journal editors. That will be out in the November Graphics issue. I'll probably have to do some updates after I get back the marked-up version. I'm also working on the cover art for that issue, using the developer's release (currently at 0.99.10) of the GIMP. I've also had quite of bit of regular work (the kind that pays the rent) since I'm getting very close to my code freeze date. This weekend I'll be writing up documentation for it so I can give an introductory class to testers, other developers, Tech Pubs, Tech Support, and Marketing on Monday. I think I picked a bad time to start lifting weights again.
      In this month's column I'll be covering ...
  • More experiences with printing using the Epson Stylus Colro 500
  • A brief discussion about DPI, LPI, and Halftoning
  • An even briefer discussion about 3:2 pulldown - transerring film to video.
Next month may not be much better. I don't know exactly what I'll be writing about, although I do have a wide list from which to choose. Mostly I'm looking forward to my trip to SIGGRAPH in August. Anyone else going? I should have plenty to talk about after that. I plan on going to at least two of the OpenGL courses being taught at the Conference. I haven't completely decided which courses I'm going to take, however.
      I'm also looking forward to a trip to DC in August as well. A real vacation. No computers. Just museums and monuments. I may need to take some sort of anti-depressant. Nah. I need the break.

Graphics Mews

      Disclaimer: Before I get too far into this I should note that any of the news items I post in this section are just that - news. Either I happened to run across them via some mailing list I was on, via some Usenet newsgroup, or via email from someone. I'm not necessarily endorsing these products (some of which may be commercial), I'm just letting you know I'd heard about them in the past month.


Announcing bttv version 0.4.0

      BTTV is a device driver for Booktree Bt848 based frame grabber cards like the Hauppauge Win/TV pci, Miro PCTV, STB TV PCI, Diamond DTV2000, and AverMedia. Major new features in version 0.4.0 are rudimentary support for grabbing into user memory and for decoding VBI data like teletext, VPS, etc. in software.

The Motif application xtvscreen now has better support for selecting channels and also works in the dual visual modes (255+24 mil. colors) of Xi Graphics AcceleratedX 3.1 X server.

      Ralph Metzler rjkm@thp.uni-koeln.de
      Marcus Metzler mocm@thp.uni-koeln.de
Web Site:

indent indent

OpenGL4Java 0.3

      This is an initial developer's release of an (unoffical) port of OpenGL(tm) for java. Leo Chan's original package has been ported to both WindowsNT/95 and to Linux. Several features have been added, the main one being OpenGl now draws into a Java Frame. What advantage does this provide? Well, you can now add menus to the OpenGL widget as well as receiving all normal events such as MouseMotion and Window events. You could very simply have a user rotate a OpenGL object by moving the mouse around in the Frame ( the demo for the next release will have this feature ).

You can grab it from the developers web page at http://www.magma.ca/~aking/java.


WebMagick Image Web Generator - Version 1.29

WebMagick is a package which makes putting images on the Web as easy as magick. You want WebMagick if you:
  • Have access to a Unix system
  • Have a collection of images you want to put on the Web
  • Are tired of editing page after page of HTML by hand
  • Want to generate sophisticated pages to showcase your images
  • Want to be in control
  • Are not afraid of installing sophisticated software packages
  • Want to use well-documented software (33-page manual!)
  • Support free software
After nine months of development, WebMagick is chock-full of features. WebMagick recurses through directory trees, building HTML pages, imagemap files, and client-side/server-side maps to allow the user to navigate through collections of thumbnail images (somewhat similar to xv's Visual Schnauzer) and select the image to view with a mouse click. In fact, WebMagick supports xv's thumbnail cache format so it can be used in conjunction with xv.

The primary focus of WebMagick is performance. Image thumbnails are reduced and composed into a single image to reduce client accesses, reducing server load and improving client performance. Everything is pre-computed. During operationi, WebMagick employs innovative caching and work-avoidance techniques to make successive executions much faster. WebMagick has been successfully executed on directory trees containing many tens of directories and thousands of images ranging from tiny icons to large JPEGs or PDF files.

Here is a small sampling of the image formats WebMagick supports:

  • Windows Bitmap image (BMP)
  • Postscript (PS)
  • Encapsulated Postscript (EPS)
  • Acrobat (PDF)
  • JPEG
  • GIF (including animations)
  • PNG
  • MPEG
  • TIFF
  • Photo CD
WebMagick is written in PERL and requires the ImageMagick (3.8.4 or later) and PerlMagick (1.0.3 or later) packages as well as a recent version of PERL 5 (5.002 or later). Installation instructions are provided in the WebMagick distribution.

Obtain WebMagick from the WebMagick page at http://www.cyberramp.net/~bfriesen/webmagick/dist/. WebMagick can also be obtained from the ImageMagick distribution site at ftp://ftp.wizards.dupont.com/pub/ImageMagick/perl.


EasternGraphics announces public release of `opengl' widget

      EasternGraphics announces the public release of `opengl' widget which allows windows with three-dimensional graphics output, produced by OpenGL to be integrated into Tk applications. The widget is available for Unix and MS-Windows platforms.

You can download the package from ftp://ftp.EasternGraphics.com/

Email: wicht@EasternGraphics.com
WWW: http://www.EasternGraphics.com/

indent indent

ELECTROGIG's GIG 3DGO 3.2 for Linux for $99.

      There is a free demo package for Linux. It's roughly 36M tarred and compressed. A 9M demo's file is also available for download. I had placed a notice about this package in the May's Muse column, but I guess ELECTROGIG had missed that, so they sent me another announcement (I got the first one from comp.os.linux.announce). Anyway, one thing I didn't mention in May was the price for the full Linux product: $99. This is the complete product, although I'm not sure if this includes any documentation or not (it doesn't appear to). The Linux version does not come with any product support, however. You need a 2.0 Linux kernel to run GIG 3DGO.

I also gave a URL that takes you to an FTP site for downloading the demo. A slightly more informative page for downloading the demo and its associated files is at http://www.gig.nl/support/indexftp.html


Type1Inst updated

      James Macnicol uploaded version 0.5b of his type1inst font installation utility to sunsite.unc.edu. If it's not already there, it will end up in /pub/Linux/X11/xutils.

Type1inst is a small perl script which generates the "fonts.scale" file required by an X11 server to use any Type 1 PostScript fonts which exist in a particular directory. It gathers this informatiom from the font files themselves, a task which previously was done by hand. The script is also capable of generating the similar "Fontmap" file used by ghostscript. It can also generate sample sheets for the fonts.

FTP: ftp://sunsite.unc.edu/pub/Linux/X11/xutils/type1inst-0.5b.tar.gz

Editor's note: I highly recommend this little utility if you are intent on doing any graphics arts style work, such as with the GIMP.


libgr-2.0.13 has been updated to png-0.96

      It seems the interface to png-0.96 is not binary compatible with png-0.89, so the major version of the shared library was bumped to libpng.so.2.0.96 (last version was libpng.so.1.0.89).

Libgr is a collection of graphics libraries, based on libgr-1.3, by Rob Hooft (hooft@EMBL-Heidelberg.DE), that includes:

  • fbm
  • jpeg
  • pbm
  • pgm
  • png
  • pnm
  • ppm
  • rle
  • tiff
  • zlib, for compression
These are configured to build ELF static and shared libraries. This collection (libgr2) is being maintained by Neal Becker <neal@ctd.comsat.com>

FTP: ftp.ctd.comsat.com:/pub/linux/ELF


Did You Know?

...there is a site devoted to setting up Wacom tablets under XFree86? http://www.dorsai.org/~stasic/wacomx.htm The page's maintainer, Edward, says:
So far, nobody has told me that he or she couldn't follow the instructions.

Fred Lepied is the man who actually created the support for the Wacom tablets under XFree86. He gave me instructions on setting my ArtPad II up and I repeated this, periodically, on Usenet. When the requests for help there turned into a steady stream, I decided to put up a web page (mainly to show that I can make one but not use it for a lame ego trip).

Adam D. Moss <adam@uunet.pipex.com> has said he's also gotten this to work and offered to help others who might need assistance getting things set up.

...there is rumored work being done on 3Dfx support for Linux? Tige writes:

I was looking around for info about the 3Dfx based cards and came across a guy's page that said he is working on a full OpenGl driver for 3Dfx boards for NT. What does this have to do with Linux? Well, he says that after the NT driver is done, he is going to start work on 3Dfx drivers for Linux and an OpenGl driver for XFree86/3Dfx.

The guy's name is Zanshin and the address of his site is: http://www.planetquake.com/gldojo/

Most of this stuff is in the News Archives section under 4/18/97. Oh yeah, he also mentions hacking SGIQuake to work with Linux, so we may get to see a hardware accelerated version of Quake for Linux.

...the MindsEye Developers mailing list has moved to mindseye@luna.nl. unsubscribing can be done by sending a body of

to mindseye-request@luna.nl and a body of
         unsubscribe mindseye@luna.nl
to majordomo@luna.nl Other majordomo commands should be sent to majordomo@luna.nl a body of `help' gives an overview. Users who are subscribed to the old mindseye@ronix.ptf.hro.nl adress do not need to unsubscribe. The list will be removed shortly afterwards. They will get this message twice: one from mindseye@luna.nl and one from mindseye@ronix.ptf.hro.nl. An HTML interface by using hypermail is under construction.

Q and A

Q: Forgive what might be a dumb question, but what exactly is meant by "overlays"?

A: Imagine a 24bpp image plane, that can be addressed by 24bpp visuals. Imagine an 8bpp plane in front of the 24bpp image plane, addressed by 8bpp visuals.

One or more of the 8bpp visuals, preferably the default visual, should offer a 'transparent pixel' index. When the 8bpp image plane is painted with the transparent pixel, you can see through to the 24bpp plane. You can call an arrangement like this, a 24bpp underlay, or refer to the 8bpp visuals as an overlay.

Strictly, we call this ``multiple concurrent visuals with different color depths'', but that's rather a mouthful. Hence, in shorthand we refer to it as "24+8" or "overlays", with "24+8" as the preferred description.

From Jeremy Chatfield @ Xi Graphics, Inc.



Microstation update

      After last month's 3D Modeller update, I received email from Mark Hamstra at Bentley Systems, Inc. Mark is the man responsible for the ports of Bentley's MicroStation and Masterpiece products that are available for Linux. I've included his response below. The stuff in italics is what I had orginally written:
Thanks for the mention in Gazette #18 --it's kinda fun watching where MicroStation/Linux info pops up. Being the guy that actually did the ports of MicroStation and Masterpiece, I'll lay claim to knowing the most about these products. Unfortunately, you've got a few errors in Gazette #18; allow me to correct them:

Includes programming support with a BASIC language and linkages to various commercial databases such as Oracle and Informix.

Programming support in the current product includes the MicroStation Development Language (C syntax code that compiles to platform-independent byte-code), BASIC, and support for linking MDL with both MDL shared libraries and native code shared libraries (i.e., Linux .so ELF libraries). For a look at the future direction of Bentley and MicroStation, take a look on our web site at the recent announcement by Keith Bentley at the AEC Systems tradeshow of MicroStation/J and our licensing agreement with Javasoft.

Because of the lack of commercial database support for Linux, there are no database linkage facilities in the current Linux port of MicroStation.

This looks like the place to go for a commercial modeller, although I'm not certain if they'll sell their educational products to the general public or not.

Nope, academic-only at this time; although we're collecting requests for commercial licensing (at our normal commercial prices) at http://www.bentley.com/products/change-request.html. The only thing preventing MicroStation from being available commercially for Linux is a lack of adequate expressed interest.

Note that the Linux ports have not been released (to my knowledge - I'm going by what's on the web pages).

The first two of our new Engineering Academic Suites that contain the Linux ports, the Building Engineering and GeoEngineering Suites, have been available in North America since the middle of February. European and worldwide distribution should be underway now too, although it took a little longer. Incidentally, the web pages you list are for our Europe, Middle East, and Africa (ema) division; you probably actually want http://www.bentley.com/academic.

[output formats] Unknown

We output a wide range of formats (and import a wider range than you give us credit for). I always forget just which ones are actually in the product and which are only in my current builds from the most recent source, so I'll just refer you to http://www.bentley.com/products/microstation95 and http://www.bentley.com/products/masterpiece, and note that my copy of MicroStation/Linux currently lists DGN, DWG, DXF, IGES, CGM, SVF, GRD, RIB, VRML, Postscript, HPGL, PCL, TIFF, TGA, BMP, and a couple other raster and animation formats as output options -- and I know I haven't currently got some of our soon-to-be-released translators compiled. Like I said, probably not all of these are in the current Linux port, but it's a simple matter to add whatever's not there to future versions of the Linux products, provided there's enough demand to keep the project going.

I wasn't sure what a few of these formats were, so I wrote Mark back to ask about them. He informed me on the following (which were the ones I had asked specifically about):
  • DGN is MicroStation-native design file format and has its ancestry in the Intergraph IGDS file format.
  • SVF is the Simple Vector Format (see http://www.softsource.com), which works pretty good for web browser plug-ins.
  • GRD is used by our MicroStation Field product.
  • CGM is the Computer Graphics Metafile format, a vendor-independent standard supported in various software packages, browser plug-ins, printers/plotters, etc.
I want to thank Mark for offering updated information so quickly. My information is only as good as what I can find or am fed, and it helps when vendors, developers or end users provide me with useful info like this. Many thanks Mark.

If you've used this product on MS platforms, feel free to drop me a line and let me know what you thought of it. I'm always out to support commercial ports of graphics-related products to Linux.


Printing with an Epson Stylus Color 500

      I bought an Epson Stylus Color 500 printer back in December of last year so I could print in color. I had done some research into what printers would be best, based in part on reviews in online PC magazines and also on support available in the Ghostscript 4.03 package. The Epson Stylus Color 500 was rated very high by the reviews and I found a web page which provided information on how to configure Ghostscript for use with the printer. I bought the printer, got Ghostscript working in a very marginal way (that is to say, it printed straight text in black and white). But that's as far as it went. I had gotten some minor printing in color done, but nothing very impressive and most of it was downright bad.
      Earlier this month I was given the opportunity to work on the cover art for an issue of Linux Journal. A few trial runs were given the preliminary OK, but they were too small - the size of the image needed to be more than twice as big as the original I had created. Also, because the conversion of an image from the monitor's display to printed paper is not a straightforward one (see the discussion on LPI/DPI elsewhere in this month's column), it became apparent I needed to try printing my artwork to sample how it would really look on paper. I had to get my printer configuration working properly.
      Well, it turned out to be easier than I thought. The hardest part is to get Ghostscript compiled properly. The first thing to do is to be sure to read the text files that accompany the source code. There are 3 files to read:
  • make.txt - general compiling and installation instructions
  • drivers.txt - configuration information for support of the various devices you'll need for your system.
  • unix-lpr.txt - help on setting up a print spooler for Unix systems.
The first two are the ones that made the most difference to me. I didn't really use the latter, but my solution isn't very elegant. However, what it lacks in grace it makes up for in simplicity.
      Building the drivers was fairly simple for me - I took most of the defaults, except I added support for the Epson Stylus Color printers. There is a section in make.txt devoted specifically to compiling on Unix systems (search for How to build Ghostscript from source (Unix version) in that file). In most cases you'll just be able to type "make" after linking the correct compiler specific makefile to makefile. However, I needed to configure in the Epson printers first.
      What I did was to edit the unix-gcc.mak file to change one line. The line that begins
was modified to add
right after the equal sign. I also didn't need support for any of the HP DeskJet (DEVICE_DEVS3 and DEVICE_DEVS4) or Bubble Jet (DEVICE_DEVS6) devices so I commented out those lines. Now, once this file had been linked to makefile I could just run
      make install

At this point the Ghostsript package was ready for use. Note that many of the current distributions already include Ghostscript, but may not have the 4.03 release. Run
      gs -v
to find out if you have Ghostscript 4.03. You'll need it to work with the Epson Stylus Color 500.
      Now I needed to set up my print spooler. This turned out to be rather easy. First, you need to know that the stcolor driver (which is the name of the driver Ghostscript uses to talk to Epson Stylus printers) has a pre-built Postscript file that is used to prepare the printer for printing. This file, called stcolor.ps, is included with the 4.03 distribution. The file contains special commands that are interpreted by the printer; however, it does not actually cause anything to be printed.

-Top of next column-
indent indent indent
When you want to print something you need to first print this file followed by the file or files you want to print. Don't worry about how to do this just yet - I have a set of scripts to make this easier.
      There were a number of options I could use with Ghostscript for my printer, but I found I only needed to work with one: display resolution or Dots Per Inch (DPI). In order to handle the two resolutions I simply created two scripts which could be used as input filters for lpr (the print spooler). The scripts are almost exactly the same, except one is called stcolor and one is called stcolor-high, the latter being for the higher resolution. Both of these were installed under /var/spool/lpd/lp and given execute permissions.
      Next came the configuration for lpr. I needed to edit the /etc/printcap file to create entries for the new printer filters. I decided to give the printers different names than the standard, non-filtered printer name. In this way I could print ordinary text files (which I do more than anything else) using the default printer and use the other printer names for various draft or final prints of images, like the cover art.
      Now the system was ready to print my images, but I still needed to do a couple more things. First, I wanted to write a script for handling printing of my images in the most common formats I created. I wrote a script to do this which I named print-tga.sh. I made symbollic links from this file to variations on the name. The script uses the name used to invoke it to determine which type of conversions to run before printing the file. The script converts the various formats, using the tools in the NetPBM kit, to Postscript files and then prints them to the high resolution printer setup in the previously mentioned printcap file.
      Once I got all this done, I was able to print full page images on high-gloss paper. They come out beautifully. The images I created for the cover art are far bigger than the paper, so Ghostscript resizes them to fit. It wasn't until I got this working that I realized just how good Ghostscript is. Or just how good the Epson Stylus Color 500 is.
      As a side bonus, I also discovered that I could now print pages from my Netscape browser to my printer. I configured the print command to be lpr -llpps (using the lower resolution printer from the /etc/printcap file) in the Print dialog. Since Netscape passes the page as a Postscript file to the filter, there is no need to do any conversions like I do with my images. I now get full color prints of the pages I wish to save (like SIGGRAPH's registration forms). I also can print directly from Applixware using the same printer configurations. I just had to set up the print options to output as Postscript, which was simply enough to do.
      A number of other settings can be set using the filters. If you are interested in using these, you should consult the devices.txt file for information on the stcolor driver. There are probably some better settings than what I'm using for other types of printing needs.
      Well, that's about it. I hope this was of some use to you. I was really thankful when I got it working. My setup is probably not exactly like anyone elsei's, but if you have the Epson Stylus Color 500 you should be able to get similar results. Don't forget: if you plan on printing high resolution images using the 360 DPI (as opposed to the 180 DPI also supported by the printer) then you'll probably want to print on high-gloss paper. This paper can be rather expensive. The high-gloss paper Epson sells specifically for this printer is about $36US for 15 sheets. Also, I should note that I recently heard Epson now has a a model 600 that is to replace the model 500 as their entry level color printer. I haven't heard if the 600 will work with the stcolor driver in Ghostscript so you may want to contact the driver's author (who is listed in the devices.txt file, along with a web site for more info) if you plan on getting the model 600.


The following links are just starting points for finding more information about computer graphics and multimedia in general for Linux systems. If you have some application specific information for me, I'll add them to my other pages or you can contact the maintainer of some other web site. I'll consider adding other general references here, but application or site specific information needs to go into one of the following general references and not listed here.

Linux Graphics mini-Howto
Unix Graphics Utilities
Linux Multimedia Page

Some of the mailing lists and newsgroups I keep an eye on, where I get alot of the information for this column:

The Gimp User and Gimp Developer Mailing Lists.
The IRTC-L discussion list

Future Directions

Next month:
I have no idea. I have a ton of things that need doing, but I just haven't had time to figure out what I *should* do. I still have part 3 of the BMRT series to do, which I plan on doing as part of the process of creating an animation. The animation is another topic I'd like to do. I've also had requests for a number of other topics. One good one was to cover the various Image Libraries that are available (libgr or its individual components, for example). I have a review of Image Alchemy to do (long ago promised and still not done *sigh*). Well, at least I'll never be short a topic.

Let me know what you'd like to hear about!

Previous ``Graphics Muse'' Columns

Graphics Muse #1, November 1996
Graphics Muse #2, December 1996
Graphics Muse #3, January 1997
Graphics Muse #4, February 1997
Graphics Muse #5, March 1997
Graphics Muse #6, April 1997
Graphics Muse #7, May 1997
Graphics Muse #8, June1997

Copyright © 1997, Michael J. Hammel
Published in Issue 19 of the Linux Gazette, July 1997