1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302
|
<html>
<head>
<TITLE>gsumi v1.0</TITLE>
<STYLE TYPE="text/css">
<!--
BODY {
margin-left: 30px;
background: url("edge.jpg");
}
PRE {
margin-left: 3%
}
-->
</STYLE>
</head>
<body>
<H1>gsumi v1.0 - Pressure sensitive "ink" drawing</H1>
<H4>By Owen Taylor <<A HREF="mailto:otaylor@gtk.org">otaylor@gtk.org</A>></H4>
<P ALIGN="center">
<h3>What is gsumi?</h3>
<table>
<tr>
<td valign="top">
<img src="logo.gif" alt="gsumi">
</td>
<td>
is essentially a port of xink by Raph Levien <<A
href="mailto:raph@acm.org">raph@acm.org</a>> to the gtk user
interface toolkit. See the file <a href="README.xink">README.xink</a>
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.
<p> 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.
</td>
</tr>
</table>
<p> 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.
<ul>
<li> <a href="http://www.gtk.org/~otaylor/xinput/">More information about XInput and the GIMP is available </a>.
</ul>
<p> 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.
<h3>Why the name?</h3>
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: <img src="sumi.gif"> (read <em> sumi</em>). 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 <img src="hakuboku.gif"> (lit. white ink, read <em>hakuboku</em>)
means in Japanese.
<h4> What's new in v1.1.0 </h4>
<ul>
<li> Supports and requires 1.1 branch of GTK+.
</ul>
<h4> What's new in v1.0.1 </h4>
<UL>
<li> Fix messed interpolation in pressure sensitivity curve.
<li> 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.
</UL>
<h4> What's new in v1.0 </h4>
<UL>
<li> 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
</UL>
<h4> What's new in v0.9 </h4>
<UL>
<li> Updated to GTK+-1.0.0
<li> Now uses autoconf/automake for configuration
<li> Pressure sensitivity curve can be modified
<li> Button presses can be simulated from pressure information to give
a lighter touch.
<li> Brush drawing code fiddled with some
<li> Bug fixes
</UL>
<h4> What's new in v0.8 </h3>
<UL>
<li> Brushes have been generalized to be ellipses at any orientation.
<li> Drawing (but not rendering) code has been extensively revised.
<li> Brush shape will be modified by device tilt.
<li> v0.8b1 => v0.8 - documentation changes (9/16/97)
</UL>
<h4> What's new in v0.7 </h4>
<UL>
<li> Minor changes to keep up with GTK.
<li> Bug fix for a crash that happened when there was no .gsumirc.
</UL>
<h4> What's new in v0.6 </h4>
<UL>
<li> Minor changes to keep up with GTK.
</UL>
<h4> What's new in v0.5 </h4>
<UL>
<li> 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].
<li> gsumi (as opposed to gdk) has become much simpler.
</UL>
<h4> What's new in v0.4 </h4>
<UL>
<li> As of gimp 0.99.9, gsumi works with the unmodified gtk library.
(Thanks to Peter Mattis for incorporating the necessary changes.)
<li> Menus are now done very much like in the gimp.
<li> There's an undoable "clear" menu item.
<li> The gxid protocol was changed to make it a bit more robust.
<li> 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.)
<li> Bug Fixes.
</UL>
<h4> What's new in v0.3 </h4>
<UL>
<li> 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 ]
<li> Overlapping windows are now handled correctly in most cases.
<li> The pointer won't leave a window while a button is down.
(This may replace the concept of slop).
<li> Files can be saved in compressed form via a pipe to gzip.
<li> 32 bit modes now work correctly.
<li> The user can specify the number of gray shades to use for
8-bit mode.
<li> Settings can be saved via a .gsumirc
<li> gsumi now compiles and runs without XInput support. (But isn't
too exciting that way).
<li> Various bugfixes and small enhancements.
</UL>
<h3> Requirements </h3>
You'll need the GTK+ 1.0.0 or later. (Available from <a
href="ftp://ftp.gtk.org">ftp.gtk.org</a>) To enable XInput support,
you'll should compile GTK+ with the --with-xinput=xfree or
--with-xinput=gxid options. See the section <a
href="#config">Configuring XInput</a> below for more information.
<h3> Availability </h3>
The source for gsumi is available here: (<a
href="http://www.gtk.org/~otaylor/gsumi/gsumi.html">http://www.gtk.org/~otaylor/gsumi/gsumi.html</a>)
<UL>
<LI> <a href="gsumi-1.0.1.tar.gz">Source of gsumi-1.0.1</a> (about 100k)
Get this if you have GTK+-1.0.x.
<LI> <a href="gsumi-1.1.0.tar.gz">Source of gsumi-1.1.0</a> (about 100k)
Get this if you are using GTK+-1.1 (If you don't know, you aren't)
</UL>
<h3> Installation </h3>
<UL>
<LI> Type 'configure; make'
<LI> Become root if necessary
<LI> Type 'make install'
</UL>
<h3> Use </h3>
I hope the operation is reasonably intuitive, but a few notes:
<UL>
<LI> 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.
<LI> gxid (if used) should be started first.
<LI> gsumi takes the following command line arguments:
<PRE>
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)
</PRE>
<p>The port and host for gxid can also be set via the environment
variables GXID_HOST and GXID_PORT.
<LI> Changing the x-y axis mapping is likely to cause XServer errors for
devices in anything but window-mapped mode.
<LI> Currently implemented keyboard shortcuts other than the menu
accelerators are:
<ul>
<li> the arrow keys to scroll
<li> the space bar to toggle between pen and eraser
</UL>
<li> 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).
<li> 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).
</UL>
<h3> Reporting Bugs </h3>
Email bugs to me (Owen Taylor <<A HREF="mailto:otaylor@gtk.org">otaylor@gtk.org</A>>). Please let me know:
<ul>
<li> The operating system and version
<li> The X server and version
<li> Details about your XInput device
<p> 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.
</ul>
<h3> <a name="config"> Configuring XInput </a></h3>
You'll need either to use the gxid daemon, or a sufficiently new
version of XFree86. See the XInput HOWTO at <a
href="http://www.gtk.org/~otaylor/xinput/howto/">
http://www.gtk.org/~otaylor/xinput/howto/</a> for more information
about configuring your tablet.
<h3> Copyright </h3>
<pre>
gsumi version 1.0
Copyright 1997-1998 Owen Taylor <<A HREF="mailto:otaylor@gtk.org">otaylor@gtk.org</a>>
based upon:
xink version 0.02
Copyright 1997 Raph Levien <<A HREF="mailto:raph@acm.org">raph@acm.org</a>>
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.
</pre>
<hr>
<P>Return to my <A HREF="../index.html">home page</A> </body>
</body>
</html>
|