home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Graphics 16,000
/
graphics-16000.iso
/
msdos
/
viewers
/
scedit10
/
scedit.doc
next >
Wrap
Text File
|
1991-07-25
|
29KB
|
686 lines
SCEDIT v1.0 7/25/91 George Christopher Thomas
Copyright (c) 1991, George Christopher Thomas
***** disclaimer *** disclaimer *** disclaimer *** disclaimer ******
* *
* Some monitors are not capable of dealing with all of the modes *
* that the driving display card is capable of. This can result in *
* damage to the monitor. SCEDIT does not attempt to prohibit *
* any video modes. Do not knowingly select a video mode that your *
* monitor can not deal with! *
* *
***** disclaimer *** disclaimer *** disclaimer *** disclaimer ******
File Viewing and Screen Editing Utility
-----------------------------------------
SCEDIT is a utility for the display and editing of images. Currently
it can show images in the GIF (Compuserve), TGA (Targa - TrueVision),
BMP (Windows 3), and PCX (PC Paintbrush) formats. You control where to
place the image on the screen and what kind of color conversion to use.
A true-color (16,24,32 bits/pixel) image will always be displayed
using the Uniform Palette capability. Color mapped images (1,4,8 bits/pixel)
can be displayed using either a Uniform Palette or the palette encoded with
the image.
Required Environment
-----------------------------------------
SCEDIT can use either the Vesa or Tiga environments. It will try
to use Vesa first, then Tiga. If either are found, it aborts.
1. Vesa - tested with several Tseng ET4000 based VGAs.
Supports Tseng HiColor 16bit color modes, if
available. Since I determine a Tseng board by
searching for the Tseng copyright in the VGA bios,
it may have some problems with some Tseng based
boards. Never tried with an ET3000 based VGA.
Does not work with non Vesa modes - only Vesa
defined modes, 640x400 and above. Standard VGA mode
0x13 (320x200) and its variations are for the birds.
Using Vesa, SCEDIT MUST BE RUN FROM THE VGA SCREEN.
It will not work when executed from the Monochrome
Adapter screen.
7/15/91 - tested with more boards:
Tseng ET4000 based (STB, Boca, Speedstar, Vermont
Microsystem's Design Master), Video Seven
VRAM II (1MB), ATI VGA Wonder.
2. Tiga - tested with Vermont Microsystem's boards, Hercules
Graphics Station, TI 34020 SDB boards. Supports
Hercules Graphics Station at 24-bits, and Vermont
Microsystem's Cobra Elite at 24-bits (somewhat of a
hack to get Tiga to work with 24bit Elite). Will not
work correctly on a 4-bit/pixel Tiga board.
Notes: 1) On stock Hercules Graphics Station card (with
just the 1Mb VRAM), the 16-bit (32,768 color)
modes and the 640x480x8x2 double buffered mode
(the last mode listed) do not work.
This is due to lack of memory for Tiga download
primitives. Note that the 512x480x24bit mode
is also memory deficient - but more importantly
the TI34010 GSP's graphics instructions can't
deal with more than 16 bits per pixel. Therefore,
the 512x480x24bit mode is done completely on the
host. It is conceivable that the 16-bit (32k color)
and the 640x480x8x2 modes will work on versions
of the Hercules card which have the DRAM
populated - this is uncharted territory.
So DO NOT SELECT THESE MODES UNDER TIGA!!!!
2) Under Tiga, SCEDIT prints out a bunch of
status messages to the DOS screen. If run from
the Monochome Adapter screen you will see these
messages. If run from the VGA screen, you will
not see them. This will be removed in later
versions.
Support for Hercules Graphics Station at 16-bits/pixel
is forthcoming.
SCEDIT requires an expanded memory driver. It will try to allocate
2MB, but will take whatever is available. The 800x600x16bit or
512x480x32bit modes will require about 550K to do the largest saveunder.
If you use the save/restore screen functions, you will need much more memory.
The 550K figure also is with the default fonts. Under Tiga, if you load a
huge font (say above 30 pts), you will need much more memory. EMS is used
only for saving/restoring under menus ("saveunders"). Lack of EMS will simply
mean that menus are not restored. SCEDIT is still quite usable - just use one
part of the screen for menus and the rest for images. The biggest hog of
EMS (besides the save/restore screen) is the "about" dialog box. If you
save a screen, then exit SCEDIT without restoring it, SCEDIT may not
restore the EMS memory to the system.
It also requires a Microsoft or compatible mouse driver.
SCEDIT needs most of the lower 640K of memory to function correctly.
I use it with about 470K free (as CHKDSK reports). I have had problems
in machines with less memory. SCEDIT will recognize network disks and
floppies. I recommend not loading images off of floppies, as it is
deathly slow.
SCEDIT runs on all 386/486 machines. It should run on 286s, but I
have never tried it.
Under Tiga, SCEDIT will try to download the RealTime fatbits
extension, tigafbit.rlm. This file should either be in the current directory,
or in the directory specified in the TIGA environment variable (in the
-l<path> spot). Under Tiga, SCEDIT will create a configuration file,
SCEDIT.CFG, in the directory where SCEDIT.EXE was executed from. This
is to speed up the Tiga initialization. It sometimes does strange things.
This is due to an unfathomable bug in SCEDIT. I am trying to nail this one.
If you have lot of problems, run scedit with the -n switch:
SCEDIT -n
This will force a rebuild of the configuration.
If SCEDIT really screws up, and your video is all screwed up, you can
get back to DOS by clicking on the right mouse button, then hitting any key.
This usually works, but may not if SCEDIT is really lost (SCEDIT has been
very stable, so this should be a rare, if not totally unknown, event).
Philosophy
-----------------------------------------
SCEDIT was originally written to address the need for a simple
screen editing and file viewing facility. As it evolved, more emphasis
has been place on file viewing. As a result, the screen editing functions
have atrophied - they are still there, but not nearly as functional as a
real "paint" program. I will probably not be enhancing these drawing
functions - unless there is a Great Public Outcry!
The left mouse button is wired to control "actions", such as
the drawing features. The right mouse button is wired to control menus.
Because of the disparity between the Vesa and Tiga environments,
there are several features which work only in particular environment.
These are enumerated in a later section.
How to Use - File Viewing Tutorial
-----------------------------------------
Type SCEDIT and hit return. A cursor will appear. Click on the
right button to pop up a menu. Menu entries with a little right arrow
denote submenus - simply move cursor over the arrow to bring up the submenu.
At anytime, moving the cursor outside of a menu will close that menu.
The exception to this is the Load menu. The load menu will not go away
until OK or Cancel is pressed. The load menu is not considered a submenu,
and therefore the envoking menu does not have a right arrow next to the
"Load" entry.
Try clicking on the Load entry. You will see the load menu pop-up.
Note the field for the Drive, Directory, and Filename. Note that wild
cards are supported for the Filename. If you click on one of these fields
the arrow cursor will disappear and a text cursor will appear. You can
use the backspace key to delete characters. Hitting the return or a mouse
button when finished will update the file box, using the new information.
Look at the file box. You will see a list of files, one of which
having a highlight bar. Clicking on a highlight bar will:
- if the bar is over a file, try to load that file,
- if the bar is over a directory, switch to that directory,
- if the bar is over a drive, switch to that drive.
Clicking on another file with move the highlight bar. Clicking on
an already highlighted file name is a short cut for clicking on OK.
Beware switching to drive A or B - if your disk is out of the
drive, and DOS issues a "Abort, Retry, Ignore?" message, you will NOT SEE
THAT MESSAGE because you are on the hi-res screen!
You can also use the scroll bars to navigate through the file box.
After clicking on a legal file (recognized format), SCEDIT will close
the load menu and display a box depicting the image's size. You can
position the box anywhere, even clipped, on the screen. Clicking the right
button will cancel the image, clicking the left will start displaying it.
There are a few other things - you can turn on/off the Uniform
Palette, and if your board supports multiple modes you can
switch back and forth between them, etc.
Just try it.
How to Use - Other Features Tutorial
-----------------------------------------
Here is an enumeration of the various menus. If an arrow is
after a menu entry, that entry has a submenu. If an * is before a
menu entry, that entry is merely a toggling switch. The main menu is popped
up with the right mouse button.
Notes: after loading an image using the uniform palette capability,
you must explicitly load the uniform palette (using the
palette submenu).
main menu:
draw -> drawing functions, assigned to left button
state -> state changes - colors, rops, clipping, etc
mark -> area mark stuff - boxes, polys
edit -> fatbits, palette editing
load file loading submenu
save file saving submenu
about a little message
quit exit back to DOS
draw: - these are assigned to the left mouse button. Once
selected they stay attached to left mouse button until
another is selected. Subject to current color, fill flag,
ROP, clipping (all set from states submenu):
line draws vectors. click on left to anchor
first point, click on left to anchor and
draw each line. click on right to stop.
cline same as line, but connects first point
with last, when right button is pressed.
sketch click on left button, move mouse to draw
points, click either button to stop.
area move cursor to desired point, click on left
button to seed fill from there. Tiga only.
circle move cursor to desired center point, click
on left button, move mouse to move circle,
click on left to accept, right to abort.
Tiga only.
ellipse move cursor to desired center point, click
on left button, move mouse to move circle,
click on left to accept, right to abort.
Tiga only.
rect move cursor to desired point, click on left
to start, drag rubber rect to desired point,
click on left to accept, right to abort.
flood move cursor to desired point, click on left
to flood screen
point move cursor to desired point, click on left
to draw a point.
blkmov must have previously marked an area using the
mark submenu. click on left button, move
box to desired location, click on left to
accept, right to abort. copy box from marked
area to destination area.
zoom must have previously marked an area using the
mark submenu. click on left button, stretch
box to desired location, click on left to
accept, right to abort. Will do a "stretch
blit" from marked area to destination area.
Tiga only.
zoomout must have previously marked an area using the
mark submenu. click on left button, stretch
box to desired location, click on left to
accept, right to abort. Will do a "stretch
blit" from marked area to destination area.
Variation of zoom. Tiga only.
poly don't work.
copy poly must have previously marked a poly using the
mark submenu. click on left button, position
poly's bounding box to desired location,
click on left to accept, right to abort. Will
copy poly from marked area to destination area.
rgb mesh this is a complicated one. basically, you
move the cursor to a desired vertex, click
on left, select the RGB color you want, click
on right to confirm RGB color. Keep moving
and selecting new vertices (with RGB colors).
Keeps a "running" triangle mesh. Click on
right to stop.
states: - these are for setting the drawing states - colors, ROPs,
clipping, palettes, video modes, fill flag, color
conversion:
color brings up a 16x16 grid of all 256 colors.
the current color has a X over it. If you
click on left button inside of the color
grid, the color you were over becomes the
new drawing color. if you click outside the
color grid, the current color remains
unchanged.
rop -> bring up the rop submenu. these are all the
Tiga Rops. Vesa supports only
s
s NOT d
s XOR d
at the moment. selecting others under
Vesa will result in strange things.
Under Tiga, Rops apply to most everything-
all of the drawing stuff, including blkmovs,
but not RGB mesh.
fill -> brings up fill submenu. for setting the fill
flag. affects drawing stuff - rects, circle,
ellipse, poly (when implemented).
palette -> palette selection submenu.
modes -> all available video modes. just pick the
one you want and away you go.
clipping -> clipping submenu.
* Uniform Palette if on, all images are loaded into
a uniform palette. Not all that great for
24-bit images, but fine for previewing.
if off, all images are loading using their
"native" palettes. Exception: 16,24,32 bit
"true color" images ignore this flag and
are always loaded using the uniform palette.
* transparency does not draw pixels of color 0. used
to "overlay" images with black areas over
previous images. Not implemented yet.
pick color move cursor to pixel whose color you want
to be the current drawing color, then click
left button. Not implemented yet.
nearest color brings up the palette editing menu. pick
the RGB values you want for the current
drawing color, will set the current drawing
color to the nearest available color in the
palette.
* verbose if on, gives information about files being
viewing, etc. For my debugging purposes,
as it either prints to the monochrome
adaptor screen, or in Vesa, prints right
onto the graphics screen, screwing everything
up. I will eventually have this work with
nice graphical text boxes. But, stay away
for the moment.
palette: - for setting current display palette, saving/restoring
palettes, and palette cycling.
* uniform palette used for uniform color conversion.
* cone distribution palette with lots of colors/shades.
good for drawing stuff.
* grey scale an approximation to a real grey scale.
Fun to load an image using the uniform
palette capability, then selecting this
palette for a cool grey scale image.
* acad 16 why?
* acad 256 - because we can.
* last image's palette loads the palette which the
previous image had. has bugs.
push push current palette onto a stack
pop pop palette from stack and make current.
cycle cycles the current palette. Use -,+ to
control direction, 0-9 for speed, space bar
to pause (until another key press). Use
left mouse button to stop at current cycle,
right mouse button to stop and restore to
original, uncycled, palette.
clipping: - for setting the clipping window.
respected by file loads and drawing stuff.
set to box much like the rectangle draw. allows you
to select the position and size of the
clipping window.
set to full screen resets clipping window
edit box allows you to edit size/position of window.
described below.
mark: - for marking areas of the image for later manipulation.
box much like rectangle draw. allows you to
select the position and size of the mark
box
edit box allows you to edit size/position of window.
described below.
line poly mark an area bounded by line segments
sketch poly mark an area bounded by an arbitrary polygon.
has some bugs.
push box push the image in the box onto a stack
pop box pop an image from the stack, allowing you
to place box anywhere.
push poly similar to push/pop box, but operates on the
pop poly polygon mark. Not implemented yet.
save screen saves entire screen to EMS.
restore screen restore entire screen from EMS.
edit: - for editing areas of the image, and for editing the
current color's RGB.
edit fatbits brings up the fatbits box. Works by capturing
what is under the cursor when the left button
is pressed. This is blown up in the fatbits
box. You can then move the cursor into the
fatbits box and draw individual pixels using
the current color and rop. click on right
button to stop.
edit palette brings up the palette box. adjust the
current color's RGB using the RGB and HSV
sliders (using left button). click on right
within the box to select the changed color,
outside the box to abort any changes.
set fatbits size -> brings up size submenu. You
can pick 2,4,8,16,32,64 as the fatbits size.
The size of the total fatbits box can't be
changed. This changes the size of the blown
up pixels within the box. Also applies to
the RealTime fatbits.
* grid turns off/on the fatbits grid
* antialias filter when on, editing fatbits will try
to smooth the selected pixel with it's
surrounding pixels (averages RGBs, then picks
nearest color). Doesn't work all that well.
* RealTime fatbits Turns on/off the Tiga realtime
fatbits display. This blows up the pixels
under the cursor, every vertical retrace,
using the Tiga download interrupt extensions.
for display only.
resize/move realtime lets you resize/move the realtime
fatbits box. See the edit box description
below.
reset realtime fatbits resets the fatbits box to the upper
left of the screen.
Notes: the realtime fatbits are for Tiga only. It does not
save what is under the box (not yet...). It respects
the fatbits size, but not the grid or antialias
features.
load: - self explanatory. Loads TGA, GIF, BMP, PCX, FNT, PAL
files, with the following restrictions:
GIF - only 87a format, single images.
TGA - not known if SCEDIT supports Black&White format.
(no test images).
PCX - bugs with certain images - when a scanline is
run length encoded across scanlines.
BMP - uncompressed only, no OS/2 bitmaps.
FNT - Tiga only. works Great.
PAL - ascii palette list. first line is "PAL", second
line is # of colors, rest of lines are Red Green
Blue values.
RAW - SCEDIT format for a raw bitmap. First word of
file is x size, second word is y size, subsequent
bytes are image data. no palette info included.
save: - self explanatory. Saves GIF, RAW, PAL files.
You must have a box marked to save an image.
GIF - there is a bug in SCEDIT. After saving the first
GIF file, subsequent saves are screwed up.
I am working on this.
PAL - same as above.
RAW - same as above.
Notes: bug when trying to over-write an existing file.
edit box - all things that have an "edit box" entry use the same
routine. When you pick edit box, the box will be displayed
with 9 "handles". There is one at each corner, one at
each edge midpoint, and one in the center. Move the cursor
to the handle you wish to grab, and hold the left button down
while you drag. Repeat until box is the size and position
that you want. The center handle moves the box, the other
handles resize the box. Then click on the right button to
indicate you are done.
Notes:
Most of this stuff works in 16/24 bit modes. The exceptions
are the fatbits, palette editing, and palette menu functions.
Configuration File
-----------------------------------------
In Tiga, SCEDIT creates a configuration file which lists all of
the Tiga modes. The first time this may take a moment or two. Subsequent
executions of SCEDIT use this file to get the default font, default palette,
and the available modes. The file is SCEDIT.CFG and will be in the
same directory as SCEDIT.EXE (SCEDIT looks at the execution string at the
end of it's PSP to determine this -- DOS 5.0 should work...I have used it
with DOS 3.3 and DOS 4.01).
There is an example configuration file:
SCEDIT v1.0
device TIGA
font none
palette none
reserved *** this line is RESERVED! ***
current mode 0
number of modes 5
mode 1024 768 8 8192 8 1
mode 1024 384 8 8192 8 1
mode 800 600 8 8192 8 1
mode 640 480 8 8192 8 1
mode 512 480 32 16384 8 1
SCEDIT's parser is really stupid -- everything must be in the exact
place. If you want to add a default Tiga font, replace the font line with:
font <drive:path\fontfile.fnt>
with exactly 1 space between the font and drive/path. This font will be
loaded when SCEDIT starts up and after each mode switch. The Tiga font
austin20.fnt is a cool font.
The same goes for the palette line. The palette file is a standard
SCEDIT .PAL file.
If you switch Tiga boards (which have different modes, etc), you
will want to either delete the old config file, or use the -n flag:
SCEDIT -n
which will force a configuration rebuild.
In VESA, SCEDIT will ignore the configuration file. It will not
check for one, read one, or write one out. This makes it relatively easy
to switch back and forth between Vesa and Tiga.
Limitations and Known Bugs
-----------------------------------------
The input fields in the Load menu will overflow if too many
characters are entered.
There are some cursor bugs under Vesa.
The fatbits, when used with a size of 2 or 4, will sometimes
screw up.
The connected line, cline, does not work correctly. The next to
last line segment is not drawn.
Future Support
-----------------------------------------
The input field overflow problem in the Load menu will be fixed.
Cursor bugs will be fixed.
The following file formats will have the following enhancements:
GIF - 89 format, multiple images, etc.
FLI - small format, Autodesk Animator.
FLC - large format, Autodesk Animator Professional.
TGA - Black&White, if I can find a test image...
BMP - compressed format. No plans for OS/Who? format.
PCX - fix stupid bug
FNT - for Vesa. I have this code ready to roll.
I hear the distant baying of TIF supporters. It would be a
tremendous task to write a TIF decoder which could handle all the TIF
formats, but I am considering adding support for the commonest formats.
The main obstacle is the lack of a copy of the TIF spec.
Better Tseng detection.
Flesh out the drawing functions for Vesa (circles, etc).
Some of the functions in SCEDIT will probably be removed or
drastically altered. I am not happy with the save screen, restore screen,
push box, pop box, push poly, pop poly features. I might axe them. I
might rewrite to eliminate the stack metaphor, perhaps moving away from
expanded memory, perhaps using the hard drive for storage. Who knows -
certainly not me! I think the drawing functions are quite primitive and
are really useless for anything other than hacking around, but after all
SCEDIT is not a paint program.
Eliminate the need for expanded memory, at least under Vesa. On
1Mb VGAs there is a fair amount of non-displayed memory to use instead of
using expanded memory.
Cool Things
-----------------------------------------
As always, I am on the hunt for the following devices -
these should work with v1.0 SCEDIT:
* 1280x1024x256color Vesa VGA (packed pixel),
* 1024x768 16bit HiColor Vesa VGA (Yeah!),
* 1024x768 16bit or 24bit Tiga (Yeah! Preferrably a 34020!),
will not work with v1.0, but I am curious:
* any Vesa VGAs with non-chain 4 modes. Non-chain 4 is why
SCEDIT is so fast on Tseng ET4000 based boards. Although
the Vesa spec allows for "non-chain 4" video modes, SCEDIT
currently ignores any non-chain 4 VESA mode. It selectively
uses non-chain 4, for rectangles only. In my experience, non-
chain 4 mode, in high resolution modes (>64K), works only on
a Tseng ET4000. Video Seven and ATI both fail (others may
too - I have tested just these). This is understandable,
as non-chain 4 seems to be directly descended from the old
EGA 16 color planar architecture, with its 64K memory
limitation. Non-chain 4 lets you write 4 8-bit pixels
at once. The Great Clone Maker, whose name begins with
a 'c' and ends with a 'q', from the Lone Star state, has
advertized their new accelerated VGA (goes up to 640x480x
256 colors - boy they're really out on a limb this time...
yah...) as having both packed pixel and "multiple plane"
modes. I suspect that the multiple plane modes are really
nothing more than non-chain 4 in disguise, but who knows.
I digress. Anyhow, Bravo Tseng!
Disclaimer
--------------------------------------
SCEDIT is freeware. You are granted the right to use SCEDIT for as
long as you like, provided it is not used for commercial purposes or for any
profit. SCEDIT may be freely copied and distributed but may not be sold.
You may not reverse-engineer, disassemble, modify, alter, rename, contaminate
with a virus, or otherwise muck with SCEDIT. Just use it.
SCEDIT is distributed without warranties of any kind, either expressed
or implied, including but not limited to implied warranties of merchantability
and fitness for a particular purpose.
In no event shall I, George Christopher Thomas, be liable for any
errors contained herein or for incidental or consequential damages in
connection with the furnishing, performance, or use of the SCEDIT product or
documentation.
Nasty copyright stuff:
'GIF' and 'Graphics Interchange Format' are trademarks of CompuServe
Incorporated, an H&R Block company.
Epilogue
--------------------------------------
Trademarks are property of their respective companies. This
document is by no means intended as a brand or product endorsement.
Many thanks to Tom Haviland for his exhaustive testing of SCEDIT
with the Hercules Graphics Station card.
I am not charging for this utility. Feel free to distribute it,
provided it is distributed intact, as SCEDIT10.ZIP:
scedit.exe
scedit.doc
tigafbit.rlm
If you do upload SCEDIT10.ZIP somewhere, this is what the description
should say: "file viewing utility, Tiga & Vesa VGA".
Note that the distribution name is SCEDITxx.ZIP, where xx is the
version number (i.e., 10 for version 1.0, 11 for version 1.1, etc...)
If you really like the program, you might consider sending me
a few bucks to support further development and bug fixes. Donators will,
of course, receive the latest version.
Lastly, let me know if you have a Tseng HiColor VGA which is not
detected correctly (my bios "Tseng" search may let a few implementations
fall through the cracks...).
Send bug reports, suggestions, etc, to (at least until May 1992):
G. Chris Thomas
221 Pine St, Apt 3
Burlington, VT 05401
I hope you find this utility a useful one.