James J Lemon Graphics
Copyright James J Lemon Graphics
surfPPC by James J. Lemon Graphics
©2005 All Rights Reserved.

JJLG software index
Online surfPPC User Manual
surfPPC gallery

Free Demo
download surfPPC v.287
The download: It's a *.sit (Aladdin Stuffit) archive containing:
1) surfPPC executable (MacOS7.x-9.x) and keyword file "surfPPCrc" which must be in the same folder as the application.
If surfPPCrc is not found, it will run in "Demo Mode", in which saving is disabled after 2 minutes each launch.

New in version 287 (May 30, 2003)
The Ever Winding Path to OSX Compatibility (Soon)

Update 2003.05.30
Too long since the last update! In the meantime I've found some use for the poor old program and used it to great effect, and then got frustrated and started working on it again for the first time in over a year. I have OSX now, and hope to complete the port to Carbon or Cocoa in the near future, but it seems a few months away to do a good job of it.
Unfortunately, I've discovered a bizarre new problem, the current version apparently runs into memory limitations and may abort under OSX 10.2 Classic mode and contouring a large file. Not sure why, since the machine has 1GB of RAM. The same surfPPC app runs beautifully under OS9.2, so for now, to do larger images, I suggest boot into OS7-9.2. The place it crashes is when it references newly allocated RAM, as if the allocation reported successful, but wasn't really. It would run fine up to this point and there was no indication of memory shortage, which is explicitly checked on the previous statement, so I dunno! Under OS9 with a small RAM partition, attempting to contour the same large file failed much more gracefully, surfPPC told me to add exactly 38MB, to which I added 40, restarted and was then totally successful.

More control over contouring

surfPPC autocontour used to calculate contour levels automatically.
v.287 will first look in two places, in this order:
(1) "xxx/yyy.lev",
(2) "zzz/surfLevels",
and finding the first one, will use the levels specified in the file. Finding none, it generates automatic levels as in previous versions.
xxx = a folder containing the image yyy
zzz = a folder containing the application surfPPC
This gives us a powerful and deatailed control over the contour levels.
For example, we can override all level selections with the second alternative above, since no matter what file xxx/yyy is opened, the levels will always come from surfLevels file in the app's folder.
Then we can also, and further, make a file or files xxx/yyy.lev to have even more special levels for a particular file or files - the rest would use the app's surfLevels file. The file is reread again for each autocontour command (not just once), so we can edit the file and save it over and over, during a surfPPC session. I'll edit the file with simpletext and keep generating autontours on screen until it's just right, then render to a large offscreen file just once at the end, very efficient!
Using aliases can make this very even more powerful. Set up a folder for each contouring configuration. In it, make an alias of surfPPC, a text file surfLevels and a copy of surfPPCrc. May I suggest that perhaps this is also a good place to put any raw input files and preferences files too. surfPPC sees this folder as "its own" and reads the levels approprately from the "local" file. Now you effectively have many copies of surfPPC, each with their own miniature application folder and contour configuration, we can give these folders special mnemonic names as appropriate.
Some features of surfPPC are controlled by the location and/or type of the input or output files. The locality of files is usually unimportant except in certain special cases.


surfLevels is an ASCII text file.
One line per level.
First item on the line must be a number.
There may be up to four numbers on a line, all but the first one are optional.
After four numbers, or after the last number, the remainder of the line is commentary, as much as you like.
Unspecified optional items do not change an optional value set on a previous line.
Colors are referenced to the selections made in the colors palette and saved in preferences files.
Lines that don't start with a number are just comments, as many lines as you like.
1) Level
(absolute level, in the units of your data file, e.g. meters or degrees)
2) level color index
(corresponding to 1= contour color 1 .. 4=contour color 4 as set in the colors palette)
3) label color index
(corresponding to 0=grid text color, 1=contour color 1 ..4= contour color 4 as set in the colors palette)
4) labels on/off flag
0=OFF 1=ON.


surfLevels file

my favorite levels
1.0 1 0 1
level 1.0 units, line color 1, label color 0, labels ON
2.0 2
level 2.0 units, line color 2, (label color 0, labels ON implied)
2.5 3
level 2.5 units, line color 3, (label color 0, labels ON implied)
0.25 4 0 0
level 0.25 units, line color 4, label color 0, labels OFF
0.5 a b c
level 0.5 units, (line color 4, label color 0, labels OFF implied) and the comment "a b c"

Reads More USGS DEMs, even from Alaska!

I had discovered the USGS DEM interpreter routine would fail on Mount St Elias (Alaska).
Dang! just when I really wanted to see it.
A small change to the interpreter, and now I can read it.
While I can't guarantee this is the last bug, I have yet to find one I couldn't read.