to
the gtk user interface toolkit. See the file README.xink for
details about the original program. Almost all of the drawing/rendering code and all of the
clever ideas in the implementation are due to Raph.
Briefly, the program allows drawing in black (pen) or white (eraser)
on a high resolution bitmap which is filtered down to screen resolution.
XInput devices can be used (with pressure support), and different
tools and tool properties can be assigned to each device.
The primary purpose of this project was was to create a testbed
for my ideas about how XInput support should be added to the GIMP.
Quite a bit of the code (the gximapper interface, the gxid daemon,
and the input dialog) could be used for that purpose, and has now
(v0.5) been moved into a modified GTK library.
More information about XInput and the GIMP is available here.
Version 0.8 is a beta release (If no major bugs are reported, the
next release will probably be 1.0.) As far as I know, the code is still
untested for any server other than XFree86 (on Linux and FreeBSD) and
any XInput device other than a Wacom tablet. If you get it working
with any other combination, please let me know. Bug reports and
patches are appreciated, as well as general comments about the
interface.
Why the name?
I was originally planning to call this gink (gtk+xink, contracted),
but that seemed too close to gimp. So I used the Japanese word for
(Japanese) ink instead:
(read sumi). It's
probably a bit misleading since the program doesn't simulate the
action of a Japanese brush (an application for tilt?), but with the
eraser, the correspondence to ink was already a bit poor. As a side
note, the eraser probably really should be thought of as chalk, since
that's what
(lit. white ink, read hakuboku)
means in Japanese.
What's new in v0.8
- Brushes have been generalized to be ellipses at any orientation.
- Drawing (but not rendering) code has been extensively revised.
- Brush shape will be modified by device tilt.
- v0.8b1 => v0.8 - documentation changes (9/16/97)
What's new in v0.7
- Minor changes to keep up with GTK.
- Bug fix for a crash that happened when there was no .gsumirc.
What's new in v0.6
- Minor changes to keep up with GTK.
What's new in v0.5
- Most of the XInput functionality has been moved to GDK/GTK.
The gximapper idea has been abandoned and core GDK events
have been extended to have non-integer coordinates, pressure
and tilt fields. GDK/GTK supports both switching via gxid
and by the XFree86 3.3+ method. It can be configured with
--with-xinput=[none/gxi/xfree].
- gsumi (as opposed to gdk) has become much simpler.
What's new in v0.4
- As of gimp 0.99.9, gsumi works with the unmodified gtk library.
(Thanks to Peter Mattis for incorporating the necessary changes.)
- Menus are now done very much like in the gimp.
- There's an undoable "clear" menu item.
- The gxid protocol was changed to make it a bit more robust.
- Support for the XFree86 3.3+ method of handling pointer switching
has been added. (There can be multiple logical devices for each
physical device, one is used to control the core pointer in
AlwaysCore mode, the other is used by the program to get
detailed information about motion events. Thanks to Frederic
Lepied for implementing this.)
- Bug Fixes.
What's new in v0.3
- Pointer switching is done via the gxid daemon. (Allows multiple
coexisting clients). See below. [ note: as of v0.4 another method
of switching is also available ]
- Overlapping windows are now handled correctly in most cases.
- The pointer won't leave a window while a button is down.
(This may replace the concept of slop).
- Files can be saved in compressed form via a pipe to gzip.
- 32 bit modes now work correctly.
- The user can specify the number of gray shades to use for
8-bit mode.
- Settings can be saved via a .gsumirc
- gsumi now compiles and runs without XInput support. (But isn't
too exciting that way).
- Various bugfixes and small enhancements.
Requirements
You'll need the libgtk and libgdk libraries from gtk+970916 or later.
(Available from ftp://ftp.gimp.org in the /pub/gtk directory.) To enable
XInput support, you'll need to compile GTK with the
--with-xinput=xfree or --with-xinput=gxid options. See the section
Configuring XInput below for more information.
Availability
At least for right now, I have put source for gsumi on my web page:
(http://www.msc.cornell.edu/~otaylor/gsumi/gsumi.html)
Installation
Edit the Makefile to suit your system.
Type 'make'.
Put the binary 'gsumi' (and if you are using it, 'gxid')
somewhere in your path
Use
I hope the operation is reasonably intuitive, but a few notes:
- You'll need to set extension devices you want to use into
absolute mode before using them. The command for this
(at least for XFree86) is 'xsetmode [devicename] ABSOLUTE'.
This also can be done as a setting in your XF86Config file.
- gxid (if used) should be started first.
- gsumi takes the following command line arguments:
Usage: gsumi [ options ]
Valid options are:
-h --help Print this message
-v --version Print version number
-n --num-grays NUM Number of gray levels
--gxid-host HOST Host name for gxid daemon (default: localhost)
--gxid-port PORT Port number for gxid daemon (default: 6951)
The port and host for gxid can also be set via the environment
variables GXID_HOST and GXID_PORT.
- Changing the x-y axis mapping is likely to cause XServer errors for
devices in anything but window-mapped mode.
- Currently implemented keyboard shortcuts other than the menu
accelerators are:
- the arrow keys to scroll
- the space bar to toggle between pen and eraser
- A file '$HOME/.gsumirc' is created by the 'Save Options' menu
item. It is read upon subsequent starts of gsumi. This file is
meant to be human readable and editable, but there should be no
reason to do so. (Everything is accessible through the user
interface).
- Your window manager may grab the server when placing a window. In
this case, device switching will not work. With fvwm, I find
it convenient it more convenient to hit <return>to place the
window than to switch back to the mouse. (This only applies to
the generic XInput support).
Reporting Bugs
Email bugs to me (
<owt1@cornell.edu>). Please let me know:
You'll need either to use the gxid daemon, or a sufficiently new
version of XFree86. More information about configuration is available
here . It's slanted towards using XInput supporting versions of
GTK with the GIMP, but much of the information will apply to gsumi
as well.
Copyright
gsumi version 0.8
Copyright 1997 Owen Taylor
based upon:
xink version 0.02
Copyright 1997 Raph Levien
The license of gsumi is that of xink:
This code is free for commercial and non-commercial use or
redistribution, as long as the source code release, startup screen,
or product packaging includes this copyright notice.
Note however, that some portions of the user-interface code may be
covered by the GPL and/or LGPL. See the notices at the top of each
source code file for details.
Return to my home page