Note: the following information is verbatim from 1998. gsumi-1.1.0 apparently compiles succesfully with GTK+-1.2, which, though long out of date, can still be found in some Linux distributions. To my knowledge, gsumi was never ported to GTK+-2.0 or later.
- Owen Taylor, 1 August 2009
What is gsumi?
is essentially a port of xink by Raph Levien <
raph@acm.org> 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. Much of the code that was developed for gsumi has now been incorporated into the GTK library.
The code of gsumi is still mostly 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 v1.1.0
- Supports and requires 1.1 branch of GTK+.
What's new in v1.0.1
- Fix messed interpolation in pressure sensitivity curve.
- Changed blob-drawing code to be much (but not significantly) slower, and considerably more robust - ditched conic tracing algorithms for direct computation of points on boundary.
What's new in v1.0
- Workaround for a bug in the XFree86 Wacom driver where it will sometimes report a pressure of 0.5 instead of one of 0.0
What's new in v0.9
- Updated to GTK+-1.0.0
- Now uses autoconf/automake for configuration
- Pressure sensitivity curve can be modified
- Button presses can be simulated from pressure information to give a lighter touch.
- Brush drawing code fiddled with some
- Bug fixes
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 GTK+ 1.0.0 or later. (Available from ftp.gtk.org) To enable XInput support, you'll should compile GTK+ with the --with-xinput=xfree or --with-xinput=gxid options. See the section Configuring XInput below for more information.
Availability
The source for gsumi is available here: (http://fishsoup.net/software/gsumi/gsumi.html)
- Source of gsumi-1.0.1 (about 100k) Get this if you have GTK+-1.0.x.
- Source of gsumi-1.1.0 (about 100k) Get this if you are using GTK+-1.1 (If you don't know, you aren't)
Installation
- Type 'configure; make'
- Become root if necessary
- Type 'make install'
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 (Owen Taylor <otaylor@fishsoup.net>). Please let me know:- The operating system and version
- The X server and version
- Details about your XInput device
It may in some cases be useful to send your '.gsumirc'. (You'll have to 'Save Options' first). This should give a pretty complete readout of your XInput device information.
Configuring XInput
You'll need either to use the gxid daemon, or a sufficiently new version of XFree86. See the XInput HOWTO at http://www.gtk.org/~otaylor/xinput/howto/ for more information about configuring your tablet.
Copyright
gsumi version 1.0 Copyright 1997-1998 Owen Taylor <otaylor@gtk.org> based upon: xink version 0.02 Copyright 1997 Raph Levien <raph@acm.org> 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.