tuxpaint-pencil-sharpener/docs/en/html/EXTENDING.html
Bill Kendrick 3381f46f8f EXTENDING: link to Git, not CVS
Git is the new hotness.
2020-08-29 17:00:42 -07:00

1567 lines
51 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator"
content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title>
Extending Tux Paint
</title>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF"
text="#000000"
link="#0000FF"
vlink="#FF0000"
alink="#FF00FF">
<center>
<h1>
Extending<br/>
<img src="../../html/images/tuxpaint-title.png"
width="205"
height="210"
alt="Tux Paint"><br/>
version 0.9.25
</h1>
<p>
Copyright (c) 2002-2020 by various contributors; see
AUTHORS.txt<br>
<a href=
"http://www.tuxpaint.org/">http://www.tuxpaint.org/</a>
</p>
<p>
June 14, 2002 - August 29, 2020
</p>
</center>
<hr size="2"
noshade>
<table border="2"
cellspacing="0"
cellpadding="2"
summary="Table of Contents">
<tr>
<th>
Table of Contents
</th>
</tr>
<tr>
<td>
<ul>
<li>
<a href="#where_files_go">Where Files Go</a>
<ul>
<li>
<a href="#standard_files">Standard Files</a>
</li>
<li>
<a href="#personal_files">Personal Files</a>
</li>
</ul>
</li>
<li>
<a href="#brushes">Brushes</a>
<ul>
<li>
<a href="#brush_options">Brush Options</a>
</li>
</ul>
</li>
<li>
<a href="#stamps">Stamps</a>
<ul>
<li>
<a href="#stamps_images">Images</a>
</li>
<li>
<a href="#description_text">Description Text</a>
</li>
<li>
<a href="#sound_effects">Sound Effects</a>
</li>
<li>
<a href="#descriptive_sound">Descriptive Sound</a>
</li>
<li>
<a href="#stamp_options">Stamp Options</a>
</li>
<li>
<a href="#pre_mirroed_and_flipped_images">Pre-Mirrored and Flipped Images</a>
</li>
</ul>
</li>
<li>
<a href="#fonts">Fonts</a>
</li>
<li>
<a href="#starters">'Starters'</a>
<ul>
<li>
<a href="#coloring_book_style">Coloring-Book Style</a>
</li>
<li>
<a href="#scene_style">Scene-Style</a>
</li>
</ul>
</li>
<li>
<a href="#templates">'Templates'</a>
</li>
<li>
<a href="#translations">Translations</a>
</li>
<li>
<a href="#input_methods">Alternative Input Methods</a>
</li>
</ul>
</td>
</tr>
</table>
<hr size="2"
noshade>
<p>
If you wish to add or change things like Brushes, Starters,
<span style="white-space: nowrap;">Rubber Stamps</span> and
other content used by
<cite style="white-space: nowrap;">Tux Paint</cite>,
you can do so fairly easily by simply adding, changing, or removing files
where <span style="white-space: nowrap;">Tux Paint</span> looks for them.
</p>
<p>
Note: You'll need to restart
<cite style="white-space: nowrap;">Tux Paint</cite>
for the changes to take effect.
</p>
<hr size="2"
noshade>
<h2>
<a name="where_files_go">
Where Files Go
</a>
</h2>
<blockquote>
<h3>
<a name="standard_files">
Standard Files
</a>
</h3>
<blockquote>
<p>
<cite style="white-space: nowrap;">Tux Paint</cite> looks for its various data files in its
'<code>data</code>' directory.
</p>
<h4>
Linux and Unix
</h4>
<blockquote>
<p>
Where this directory goes depends on what value was set
for "<code>DATA_PREFIX</code>" when <cite style="white-space: nowrap;">Tux Paint</cite> was
built. See <a href="../INSTALL.txt">INSTALL.txt</a> for details.
</p>
<p>
By default, though, the directory is:
</p>
<blockquote>
<code>/usr/local/share/tuxpaint/</code>
</blockquote>
<p>
If you installed from a package, it is more likely to
be:
</p>
<blockquote>
<code>/usr/share/tuxpaint/</code>
</blockquote>
</blockquote>
<h4>
Windows
</h4>
<blockquote>
<p>
<cite style="white-space: nowrap;">Tux Paint</cite> looks for a directory called 'data' in
the same directory as the executable. This is the
directory that the installer used when installing
<cite style="white-space: nowrap;">Tux Paint</cite> e.g.:
</p>
<blockquote>
<code style="white-space: nowrap;">C:\Program Files\TuxPaint\data</code>
</blockquote>
</blockquote>
<h4>
macOS
</h4>
<blockquote>
<p>
<cite style="white-space: nowrap;">Tux Paint</cite> stores its data files inside the
"<code style="white-space: nowrap;">Tux Paint</code>" application icon
(which is actually a special kind of folder on macOS &amp;
<span style="white-space: nowrap;">Mac OS X</span> before it). The following steps explain how to get to the folders
within it:
</p>
<ol>
<li>Bring up a 'context' menu by holding the [Control]
key and clicking the <cite style="white-space: nowrap;">Tux Paint</cite> icon the in <cite>Finder</cite>.
(If you have a mouse with more than one button, you can
simply right-click the icon.)
</li>
<li>Select "<span style="white-space: nowrap;">Show Contents</span>" from the menu that
appears. A new <cite>Finder</cite> window will appear with a folder
inside called "<code>Contents</code>."
</li>
<li>Open the "<code>Contents</code>" folder and open the
"<code>Resources</code>" folder found inside.
</li>
<li>There, you will find various sub-folders, such as
"<code>starters</code>", "<code>stamps</code>", "<code>brushes</code>",
etc. Adding new content to these folders
will make the content available to any user that
launches this copy (icon) of <cite style="white-space: nowrap;">Tux Paint</cite>.
</li>
</ol>
<p>
<em>Note:</em> If you install a newer version of
<cite style="white-space: nowrap;">Tux Paint</cite> and replace or discard the old version,
you will lose changes made by following the
instructions above, so keep backups of your new content
(stamps, brushes, etc.).
</p>
<p>
<cite style="white-space: nowrap;">Tux Paint</cite> also looks for files in a "<code>TuxPaint</code>"
folder that you can place in your system's
"<code style="white-space: nowrap;">Application Support</code>" folder
(found under "<code>Library</code>" at the root of your filesystem):
</p>
<blockquote>
<code style="white-space: nowrap;">/Library/Application Support/TuxPaint/</code>
</blockquote>
<p>
It also looks for files in the user's
"<code style="white-space: nowrap;">Application Support</code>" folder:
</p>
<blockquote>
<code style="white-space: nowrap;">/Users/<i>(username)</i>/Library/Application
Support/TuxPaint/</code>
</blockquote>
<p>
When you upgrade to a newer version of <cite style="white-space: nowrap;">Tux Paint</cite>, the
contents of this <code>TuxPaint</code> folder will stay the same and
remain accessible by all users of <cite style="white-space: nowrap;">Tux Paint</cite>.
</p>
</blockquote>
</blockquote>
<hr size="1"
noshade>
<h3>
<a name="personal_files">
Personal Files
</a>
</h3>
<blockquote>
<p>
You can also create brushes, stamps, fonts and 'starters'
in your own directory (folder) for <cite style="white-space: nowrap;">Tux Paint</cite> to
find.
</p>
<h4>
Windows
</h4>
<blockquote>
<p>
Your personal <cite style="white-space: nowrap;">Tux Paint</cite> folder is stored in your
"Application Data". For example, on newer Windows (set
up for an English-speaking user):
</p>
<blockquote>
<code style="white-space: nowrap;">C:\Documents and
Settings\<i>(username)</i>\Application
Data\TuxPaint\</code>
</blockquote>
</blockquote>
<h4>
Mac OS X
</h4>
<blockquote>
<p>
Your personal <cite style="white-space: nowrap;">Tux Paint</cite> folder is stored in your
"Application Support" folder:
</p>
<blockquote>
<codestyle="white-space: nowrap;">/Users/<i>(username)</i>/Library/Application
Support/TuxPaint/</code>
</blockquote>
</blockquote>
<h4>
Linux and Unix
</h4>
<blockquote>
<p>
Your personal <cite style="white-space: nowrap;">Tux Paint</cite> directory is
"<code>$(HOME)/.tuxpaint/</code>" (also known as
"<code>~/.tuxpaint/</code>".
</p>
<p>
That is, if your home directory is
"<code>/home/karl</code>", then your <cite style="white-space: nowrap;">Tux Paint</cite>
directory is "<code>/home/karl/.tuxpaint/</code>".
</p>
<p>
Don't forget the period ("<code>.</code>") before the
'<code>tuxpaint</code>'!
</p>
</blockquote>
<p>
To add brushes, stamps fonts, and 'starters,' create
subdirectories under your personal <cite style="white-space: nowrap;">Tux Paint</cite>
directory named "<code><b>brushes</b></code>",
"<code><b>stamps</b></code>", "<code><b>fonts</b></code>"
and "<code><b>starters</b></code>" respectively.
</p>
<p>
(For example, if you created a brush named
"<code>flower.png</code>", you would put it in
"<code>~/.tuxpaint/brushes/</code>" under Linux or Unix.)
</p>
</blockquote>
</blockquote>
<hr size="1"
noshade>
<h2>
<a name="brushes">
Brushes
</a>
</h2>
<blockquote>
<p>
The brushes used for drawing with the 'Brush' and 'Lines'
tools in <cite style="white-space: nowrap;">Tux Paint</cite> are simply PNG image files.
</p>
<img src="../../html/images/brush_edit.png"
width="123"
height="147"
alt=""
align="right">
<p>
The alpha (transparency) of the PNG image is used to
determine the shape of the brush, which means that the
shape can be 'anti-aliased' and even partially-transparent!
</p>
<p>
Greyscale pixels in the brush PNG will be drawn using the
currently-selected color in <cite style="white-space: nowrap;">Tux Paint</cite>. Color pixels
will be tinted.
</p>
<h3>
<a name="brush_options">
Brush Options
</a>
</h3>
<blockquote>
<p>
Aside from a graphical shape, brushes can also be given
other attributes. To do this, you need to create a
<span style="white-space: nowrap;">'data file'</span> for the brush.
</p>
<p>
A brush data file is simply a text file containing the
options.
</p>
<p>
The file has the same name as the PNG image, but a
"<code>.dat</code>" extension. (e.g.,
"<code>brush.png</code>"'s data file is the text file
"<code>brush.dat</code>" in the same directory.)
</p>
<h4>
Brush Spacing
</h4>
<blockquote>
<p>
As of <cite style="white-space: nowrap;">Tux Paint</cite> version 0.9.16, you can now
specify the spacing for brushes (that is, how often
they are drawn). By default, the spacing will be the
brush's height, divided by 4.
</p>
<p>
Add a line containing the line
"<code><b>spacing=<i>N</i></b></code>" to the brush's
data file, where <i>N</i> is the spacing you want for
the brush. (The lower the number, the more often the
brush is drawn.)
</p>
</blockquote>
<h4>
Animated Brushes
</h4>
<blockquote>
<p>
As of <cite style="white-space: nowrap;">Tux Paint</cite> version 0.9.16, you may now create
animated brushes. As the brush is used, each frame of
the animation is drawn.
</p>
<p>
Lay each frame out across a wide PNG image. For
example, if your brush is 30x30 and you have 5 frames,
the image should be 150x30.
</p>
<p>
Add a line containing the line
"<code><b>frames=<i>N</i></b></code>" to the brush's
data file, where <i>N</i> is the number of frames in
the brush.
</p>
<p>
<b>Note:</b> If you'd rather the frames be flipped
through randomly, rather than sequentially, also add a
line containing "<code><b>random</b></code>" to the
brush's data file.
</p>
</blockquote>
<h4>
Directional Brushes
</h4>
<blockquote>
<p>
As of <cite style="white-space: nowrap;">Tux Paint</cite> version 0.9.16, you may now create
directional brushes. As the brush is used, different
shapes are drawn, depending on the direction the brush
is going.
</p>
<p>
The directional shapes are divided into a 3x3 square in
a PNG image. For example, if your brush is 30x30, the
image should be 90x90, and each of the direction's
shapes placed in a 3x3 grid. The center region is used
for no motion. The top right is used for motion that's
both up, and to the right. And so on.
</p>
<p>
Add a line containing the line
"<code><b>directional</b></code>" to the brush's data
file.
</p>
</blockquote>
<h4>
Animated Directional Brushes
</h4>
<blockquote>
<p>
You may mix both animated and directional features into
one brush. Use both options
("<code><b>frames=<i>N</i></b></code>" and
"<code><b>directional</b></code>"), in separate lines
in the brush's "<code>".dat</code>" file.
</p>
<p>
Lay the brush out so that each 3x3 set of directional
shapes are laid out across a wide PNG image. For
example, if the brush is 30x30 and there are 5 frames,
it would be 450x90. (The leftmost 150x90 pixels of the
image represent the 9 direction shapes for the first
frame, for example.)
</p>
</blockquote>
</blockquote>
<p>
Place the brush image PNGs (and any data text files) in the
"<code><b>brushes</b></code>" directory.
</p>
<p>
Note: If your new brushes all come out as solid squares or
rectangles, it's because you forgot to use alpha
transparency! See the documentation file "PNG.txt" for more
information and tips.
</p>
<br clear="all">
</blockquote>
<hr size="1"
noshade>
<h2>
<a name="stamps">
Stamps
</a>
</h2>
<blockquote>
<p>
All stamp-related files go in the
"<code><b>stamps</b></code>" directory. It's useful to
create subdirectories and sub-subdirectories there to
organize the stamps. (For example, you can have a
"<code>holidays</code>" folder with
"<code>halloween</code>" and "<code>christmas</code>"
sub-folders.)
</p>
<h3>
<a name="stamps_images">
Images
</a>
</h3>
<blockquote>
<p>
Rubber Stamps in <cite style="white-space: nowrap;">Tux Paint</cite> can be made up of a
number of separate files. The one file that is required
is, of course, the picture itself.
</p>
<img src="../../html/images/stamp_edit.png"
width="128"
height="147"
alt=""
align="right">
<p>
As of <cite style="white-space: nowrap;">Tux Paint</cite> version 0.9.17, Stamps may be either
PNG bitmap images or SVG vector images. They can be
full-color or greyscale. The alpha (transparency) channel
of PNGs is used to determine the actual shape of the
picture (otherwise you'll stamp a large rectangle on your
drawings).
</p>
<p>
PNGs can be any size, and <cite style="white-space: nowrap;">Tux Paint</cite> (by default)
provides a set of sizing buttons to let the user scale
the stamp up (larger) and down (smaller).
</p>
<p>
SVGs are vector-based, and will be scaled appropriately
for the canvas being used in <cite style="white-space: nowrap;">Tux Paint</cite>.
</p>
<p>
Note: If your new PNG stamps all have solid
rectangular-shaped outlines of a solid color (e.g., white
or black), it's because you forgot to use alpha
transparency! See the documentation file "<a href=
"../PNG.txt">PNG.txt</a>" for more information and tips.
</p>
<p>
Note: If your new SVG stamps seem to have a lot of
whitespace, make sure the SVG 'document' is no larger
than the shape(s) within. If they are being clipped, make
sure the 'document' is large enough to contain the
shape(s). See the documentation file "<a href=
"../SVG.txt">SVG.txt</a>" for more information and tips.
</p>
<p>
<b>Advanced Users:</b> The <a href=
"ADVANCED-STAMPS-HOWTO.html">Advanced Stamps HOWTO</a>
describes, in detail, how to make PNG images which will
scale perfectly when used as stamps in <cite style="white-space: nowrap;">Tux Paint</cite>.
</p>
<br clear="all">
</blockquote>
<hr size="1"
noshade>
<h3>
<a name="description_text">
Description Text
</a>
</h3>
<blockquote>
<p>
Text (".TXT") files with the same name as the PNG or SVG.
(e.g., "<code>picture.png</code>"'s description is stored
in "<code>picture.txt</code>" in the same directory.)
</p>
<p>
The first line of the text file will be used as the US
English description of the stamp's image. It must be
encoded in UTF-8.
</p>
<h4>
Language Support
</h4>
<blockquote>
<p>
Additional lines can be added to the text file to
provide translations of the description, to be
displayed when <cite style="white-space: nowrap;">Tux Paint</cite> is running in a different
locale (like French or Spanish).
</p>
<p>
The beginning of the line should correspond to the
language code of the language in question (e.g.,
"<code>fr</code>" for French, and "<code>zh_TW</code>"
for Traditional Chinese), followed by
"<code>.utf8=</code>" and the translated description
(encoded in UTF-8).
</p>
<p>
There are scripts in the "<code>po</code>" directory
for converting the text files to PO format (and back)
for easy translation to different languages. Therefore
you should never add or change translations in the .txt
files directly.
</p>
<p>
If no translation is available for the language
<cite style="white-space: nowrap;">Tux Paint</cite> is currently running in, the US English
text is used.
</p>
</blockquote>
<h4>
Windows Users
</h4>
<blockquote>
<p>
Use <cite>NotePad</cite> or <cite>WordPad</cite> to edit/create these files.
Be sure to save them as plain-text, and make sure they
have a "<code>.txt</code>" extension at the end of the filename.
</p>
</blockquote>
</blockquote>
<hr size="1"
noshade>
<h3>
<a name="sound_effects">
Sound Effects
</a>
</h3>
<blockquote>
<p>
WAVE ("<code>.wav</code>") or <span style="white-space: nowrap;">OGG Vorbis</span>
("<code>.ogg</code>") files with the same
name as the PNG or SVG. (e.g.,
"<code>picture.svg</code>"'s sound effect is the sound
file "<code>picture.wav</code>" in the same directory.)
</p>
<h4>
Language Support
</h4>
<blockquote>
<p>
For sounds for different locales (e.g., if the sound is
someone saying a word, and you want translated versions
of the word said), also create WAV or OGG files with
the locale's label in the filename, in the form:
"<code><b>STAMP_LOCALE.EXT</b></code>"
</p>
<p>
"<code>picture.png</code>"'s sound effect, when
<cite style="white-space: nowrap;">Tux Paint</cite> is run in Spanish mode, would be
"<code>picture_es.wav</code>". In French mode,
"<code>picture_fr.wav</code>". In Brazilian Portuguese
mode, "<code>picture_pt_BR.wav</code>". And so on...
</p>
<p>
If no localized sound effect can be loaded,
<cite style="white-space: nowrap;">Tux Paint</cite> will attempt to load the 'default' sound
file. (e.g., "<code>picture.wav</code>")
</p>
</blockquote>
<p>
Note: For descriptive sounds (not sound effects, like a
bang or a bird chirping), consider using the
<span style="white-space: nowrap;">Descriptive Sounds</span>, described below.
</p>
</blockquote>
<hr size="1"
noshade>
<h3>
<a name="descriptive_sound">
Descriptive Sound
</a>
</h3>
<blockquote>
<p>
WAVE (".wav") or OGG Vorbis (".ogg") files with the same
name as the PNG or SVG, followed by "<code>_desc</code>"
(e.g., "<code>picture.svg</code>"'s descriptive sound is
the sound file "<code>picture_desc.ogg</code>" in the
same directory.)
</p>
<h4>
Language Support
</h4>
<blockquote>
<p>
For descriptions in different languages, also create
WAV or OGG files with both "<code>_desc</code>" and the
locale's label in the filename, in the form:
"<code><b>STAMP_desc_LOCALE.EXT</b></code>"
</p>
<p>
"<code>picture.png</code>"'s descriptive sound, when
<cite style="white-space: nowrap;">Tux Paint</cite> is run in Spanish mode, would be
"<code>picture_desc_es.wav</code>". In French mode,
"<code>picture_desc_fr.wav</code>". In Brazilian
Portuguese mode, "<code>picture_desc_br_PT.wav</code>".
And so on...
</p>
<p>
If no localized descriptive sound can be loaded,
<cite style="white-space: nowrap;">Tux Paint</cite> will attempt to load the 'default'
descriptive sound file. (e.g.,
"<code>picture_desc.wav</code>")
</p>
</blockquote>
</blockquote>
<hr size="1"
noshade>
<h3>
<a name="stamp_options">
Stamp Options
</a>
</h3>
<blockquote>
<p>
Aside from a graphical shape, a textual description, and
a sound effect, stamps can also be given other
attributes. To do this, you need to create a
'data&nbsp;file' for the stamp.
</p>
<p>
A stamp data file is simply a text file containing the
options.
</p>
<p>
The file has the same name as the PNG or SVG image, but a
"<code>.dat</code>" extension. (e.g.,
"<code>picture.png</code>"'s data file is the text file
"<code>picture.dat</code>" in the same directory.)
</p>
<h4>
Colored Stamps
</h4>
<blockquote>
<p>
Stamps can be made to be either "colorable" or
"tintable."
</p>
<h5>
Colorable
</h5>
<blockquote>
<p>
"Colorable" stamps they work much like brushes - you
pick the stamp to get the shape, and then pick the
color you want it to be. (Symbol stamps, like the
mathematical and musical ones, are an example.)
</p>
<p>
Nothing about the original image is used except the
transparency (from "alpha" channel). The color of the
stamp comes out solid.
</p>
<center>
<img src="../../html/images/ex_colorable.png"
width="74"
height="92"
alt="">
</center>
<p>
Add a line containing the word
"<code><b>colorable</b></code>" to the stamp's data
file.
</p>
</blockquote>
<h5>
Tinted
</h5>
<blockquote>
<p>
"Tinted" stamps are similar to "colorable" ones,
except the details of the original image are kept.
(To put it technically, the original image is used,
but its hue is changed, based on the
currently-selected color.)
</p>
<center>
<img src="../../html/images/ex_tintable.png"
width="151"
height="78"
alt="">
</center>
<p>
Add a line containing the word
"<code><b>tintable</b></code>" to the stamp's data
file.
</p>
<h6>
Tinting Options:
</h6>
<blockquote>
<p>
Depending on the contents of your stamp, you might
want to have <cite style="white-space: nowrap;">Tux Paint</cite> use one of a number of
methods when tinting it. Add one of the following
lines to the stamp's data file:
</p>
<dl>
<dt>
"<code><b>tinter=normal</b></code>" (default)
</dt>
<dd>
This is the normal tinting mode. (Hue range is
+/-&nbsp;18&nbsp;degrees, 27 replace.)
</dd>
<dt>
"<code><b>tinter=anyhue</b></code>"
</dt>
<dd>
This remaps all hues in the stamp. (Hue range is
+/-&nbsp;180&nbsp;degrees.)
</dd>
<dt>
"<code><b>tinter=narrow</b></code>"
</dt>
<dd>
This like 'anyhue', but a narrower hue angle.
(Hue range is +/-&nbsp;6&nbsp;degrees, 9
replace.)
</dd>
<dt>
"<code><b>tinter=vector</b></code>"
</dt>
<dd>
This is map 'black through white' to 'black
through destination'.
</dd>
</dl>
</blockquote>
</blockquote>
</blockquote>
<h4>
Unalterable Stamps
</h4>
<blockquote>
<p>
By default, a stamp can be flipped upside down, shown
as a mirror image, or both. This is done using the
control buttons below the stamp selector, at the lower
right side of the screen in <cite style="white-space: nowrap;">Tux Paint</cite>.
</p>
<p>
Sometimes, it doesn't make sense for a stamp to be
flippable or mirrored; for example, stamps of letters
or numbers. Sometimes stamps are symmetrical, so
letting the user flip or mirror them isn't useful.
</p>
<p>
To make a stamp un-flippable, add the option
"<code><b>noflip</b></code>" to the stamp's data file.
</p>
<p>
To keep a stamp from being mirrored, add a line
containing the word "<code><b>nomirror</b></code>" to
the stamp's data file.
</p>
</blockquote>
<h4>
Initial Stamp Size
</h4>
<blockquote>
<p>
By default, <cite style="white-space: nowrap;">Tux Paint</cite> assumes that your stamp is
sized appropriately for unscaled display on a 608x472
canvas. This is the original <cite style="white-space: nowrap;">Tux Paint</cite> canvas
size, provided by a 640x480 screen. <cite style="white-space: nowrap;">Tux Paint</cite> will
then adjust the stamp according to the current canvas
size and, if enabled, the user's stamp size controls.
</p>
<p>
If your stamp would be too big or too small, you can
specify a scale factor. If your stamp would be 2.5
times as wide (or tall) as it should be, add the option
"<code><b>scale 40%</b></code>" or "<code><b>scale
5/2</b></code>" or "<code><b>scale 2.5</b></code>" or
"<code><b>scale 2:5</b></code>" to your image. You may
include an "<code><b>=</b></code>" if you wish, as in
"<code><b>scale=40%</b></code>".
</p>
</blockquote>
<h4>
Windows Users
</h4>
<blockquote>
<p>
You can use NotePad or WordPad to create these file. Be
sure to save it as Plain Text, and make sure the
filename has "<code>.dat</code>" at the end, and not
"<code>.txt</code>"...
</p>
</blockquote>
</blockquote>
<h3>
<a name="pre_mirroed_and_flipped_images">
Pre-Mirrored and Flipped Images
</a>
</h3>
<blockquote>
<p>
In some cases, you may wish to provide a pre-drawn
version of a stamp's mirror-image, flipped image, or even
both. For example, imagine a picture of a fire&nbsp;truck
with the words "<i>Fire&nbsp;Department</i>" written
across the side. You probably do not want that text to
appear backwards when the image is flipped!
</p>
<p>
To create a mirrored version of a stamp that you want
<cite style="white-space: nowrap;">Tux Paint</cite> to use, rather than mirroring one on its
own, simply create a second "<code>.png</code>" or
"<code>.svg</code>" graphics file with the same name,
except with "<code><b>_mirror</b></code>" before the
filename extension.
</p>
<p>
For example, for the stamp
"<code><b>truck.png</b></code>" you would create another
file named "<code><b>truck_mirror.png</b></code>", which
will be used when the stamp is mirrored (rather than
using a backwards version of '<code>truck.png</code>').
</p>
<p>
As of <cite style="white-space: nowrap;">Tux Paint</cite> 0.9.18, you may similarly provide a
pre-flipped image with "<code><b>_flip</b></code>" in the
name, and/or an image that is both mirrored and flipped,
by naming it "<code><b>_mirror_flip</b></code>".
</p>
<p>
<b>Note:</b> If the user flips and mirrors an image, and
a pre-drawn "<code>_mirror_flip</code>" doesn't exist,
but either "<code>_flip</code>" or "<code>_mirror</code>"
does, it will be used, and mirrored or flipped,
respectively.
</p>
</blockquote>
</blockquote>
<hr size="1"
noshade>
<h2>
<a name="fonts">
Fonts
</a>
</h2>
<blockquote>
<img src="../../html/images/fontsizes.png"
width="48"
height="48"
alt=""
align="right">
<p>
The fonts used by <cite style="white-space: nowrap;">Tux Paint</cite> are TrueType&nbsp;Fonts
(TTF).
</p>
<p>
Simply place them in the "<code><b>fonts</b></code>"
directory. <cite style="white-space: nowrap;">Tux Paint</cite> will load the font and provide
four different sizes in the 'Letters' selector when using
the 'Text' tool.
</p>
<br clear="all">
</blockquote>
<hr size="1"
noshade>
<h2>
<a name="starters">
'Starters'
</a>
</h2>
<blockquote>
<img src="../../html/images/open_open.png"
width="48"
height="48"
alt=""
align="right">
<p>
'Starter' images appear in the 'New' dialog, along with
solid color background choices. (Note: In earlier versions
of <cite style="white-space: nowrap;">Tux Paint</cite>, they appeared in the 'Open' dialog,
together with saved drawings.)
</p>
<p>
Unlike pictures drawn in <cite style="white-space: nowrap;">Tux Paint</cite> by users and then
opened later, opening a 'starter' creates a new drawing.
When you save, the 'starter' image is not overwritten.
Additionally, as you edit your new picture, the contents of
the original 'starter' affect it.
</p>
<h3>
<a name="coloring_book_style">
Coloring-Book Style
</a>
</h3>
<blockquote>
<p>
The most basic kind of 'starter' is similar to a picture
in a coloring book. It's an outline of a shape which you
can then color in and add details to. In <cite style="white-space: nowrap;">Tux Paint</cite>,
as you draw, type text, or stamp stamps, the outline
remains 'above' what you draw. You can erase the parts of
the drawing you made, but you can't erase the outline.
</p>
<p>
To create this kind of 'starter' image, simply draw an
outlined picture in a paint program, make the rest of the
graphic transparent (that will come out as white in
<cite style="white-space: nowrap;">Tux Paint</cite>), and save it as a PNG format file.
</p>
<p>
<b>Note:</b> Previous to Tux Paint 0.9.21, images needed
to be black and transparent. As of 0.9.21, if a Starter
is black and white, with no transparency, white will be
converted to transparent when the Starter is opened.
</p>
<p>
<b>Note:</b> Previous to Tux Paint 0.9.22, Starters had
to be in PNG or JPEG (backgrounds only) format. As of
0.9.22, they may be in SVG (vector graphics) or KPX
(templates from Kid Pix, another childrens' drawing
program; they are special files which simply contain a
JPEG within).
</p>
</blockquote>
<h3>
<a name="scene_style">
Scene-Style
</a>
</h3>
<blockquote>
<p>
Along with the 'coloring-book' style overlay, you can
also provide a separate background image as part of a
'starter' picture. The overlay acts the same: it can't be
drawn over, erased, or affected by 'Magic' tools.
However, the background can be!
</p>
<p>
When the 'Eraser' tool is used on a picture based on this
kind of 'starter' image, rather than turning the canvas
to a solid color, such as white, it returns that part of
the canvas to the original background picture from the
'starter'.
</p>
<p>
By creating both an overlay and a background, you can
create a 'starter' which simulates depth. Imagine a
background that shows the ocean, and an overlay that's a
picture of a reef. You can then draw (or stamp) fish in
the picture. They'll appear in the ocean, but never 'in
front of' the reef.
</p>
<p>
To create this kind of 'starter' picture, simply create
an overlay (with transparency) as described above, and
save it as a PNG. Then create another image (without
transparency), and save it with the same filename, but
with "<code>-back</code>" appended to the name. (e.g.,
"<code>reef-back.png</code>" would be the background
ocean picture that corresponds to the
"<code>reef.png</code>" overlay, or foreground.)
</p>
</blockquote>
<p>
The 'starter' images should be the same size as
<cite style="white-space: nowrap;">Tux Paint</cite>'s canvas. (See the "Loading Other Pictures
into <cite style="white-space: nowrap;">Tux Paint</cite>" section of <a href=
"README.html">README</a> for details on sizing.) If they
are not, they will be stretched, without affecting the
shape ("aspect ratio"); however some smudging may be
applied to the edges.
</p>
<p>
Place them in the "<code><b>starters</b></code>" directory.
When the 'New' dialog is accessed in <cite style="white-space: nowrap;">Tux Paint</cite>, the
'starter' images will appear in the screen that appears,
after the various solid color choices.
</p>
<p>
<b>Note:</b> 'Starters' can't be saved over from within
<cite style="white-space: nowrap;">Tux Paint</cite>, since loading a 'starter' is really like
creating a new image. (Instead of being blank, though
there's already something there to work with.) The 'Save'
command simply creates a new picture, like it would if the
'New' command had been used.
</p>
<p>
<b>Note:</b> 'Starters' are 'attached' to saved pictures,
via a small text file that has the same name as the saved
file, but with "<code>.dat</code>" as the extension. This
allows the overlay and background, if any, to continue to
affect the drawing even after <cite style="white-space: nowrap;">Tux Paint</cite> has been quit,
or another picture loaded or started. (In other words, if
you base a drawing on a 'starter' image, it will always be
affected by it.)
</p>
<br clear="all">
</blockquote>
<hr size="1"
noshade>
<h2>
<a name="templates">
'Templates'
</a>
</h2>
<blockquote>
<img src="../../html/images/open_open.png"
width="48"
height="48"
alt=""
align="right">
<p>
'Template' images also appear in the 'New' dialog, along
with solid color background choices and 'Starters'. (Note:
<cite style="white-space: nowrap;">Tux Paint</cite> prior to version 0.9.22 did not have the
'Template' feature.)
</p>
<p>
Unlike pictures drawn in <cite style="white-space: nowrap;">Tux Paint</cite> by users and then
opened later, opening a 'template' creates a new drawing.
When you save, the 'template' image is not overwritten.
Unlike 'starters', there is no immutable 'layer' above the
canvas. You may draw over any part of it.
</p>
<p>
When the 'Eraser' tool is used on a picture based on a
'template', rather than turning the canvas to a solid
color, such as white, it returns that part of the canvas to
the original picture from the 'template'.
</p>
<p>
'Templates' are simply image files (in PNG, JPG, SVG or KPX
format). No preparation or conversion should be required.
</p>
<p>
The 'template' images should be the same size as
<cite style="white-space: nowrap;">Tux Paint</cite>'s canvas. (See the "Loading Other Pictures
into <cite style="white-space: nowrap;">Tux Paint</cite>" section of <a href=
"README.html">README</a> for details on sizing.) If they
are not, they will be stretched, without affecting the
shape ("aspect ratio"); however some smudging may be
applied to the edges.
</p>
<p>
Place them in the "<code><b>templates</b></code>"
directory. When the 'New' dialog is accessed in
<cite style="white-space: nowrap;">Tux Paint</cite>, the 'template' images will appear in the
screen that appears, after the various solid color choices
and 'starters'.
</p>
<p>
<b>Note:</b> 'Templates' can't be saved over from within
<cite style="white-space: nowrap;">Tux Paint</cite>, since loading a 'template' is really like
creating a new image. (Instead of being blank, though
there's already something there to work with.) The 'Save'
command simply creates a new picture, like it would if the
'New' command had been used.
</p>
<p>
<b>Note:</b> 'Templates' are 'attached' to saved pictures,
via a small text file that has the same name as the saved
file, but with "<code>.dat</code>" as the extension. This
allows the background to continue to be available to the
drawing (e.g., when using the 'Eraser' tool) even after
<cite style="white-space: nowrap;">Tux Paint</cite> has been quit, or another picture loaded or
started. (In other words, if you base a drawing on a
'template' image, it will always be affected by it.)
</p>
<br clear="all">
</blockquote>
<hr size="1"
noshade>
<h2>
<a name="translations">
Translations
</a>
</h2>
<blockquote>
<p>
<cite style="white-space: nowrap;">Tux Paint</cite> supports numerous languages, thanks to use of the
"gettext" localization library. (See <a href="OPTIONS.html">OPTIONS</a>
for how to change locales in
<cite style="white-space: nowrap;">Tux Paint</cite>.)
</p>
<p>
To translate <cite style="white-space: nowrap;">Tux Paint</cite> to a new language, copy the
translation template file, "<code>tuxpaint.pot</code>"
(found in <cite style="white-space: nowrap;">Tux Paint</cite>'s source code, in the folder
"<code>src/po/</code>"). Rename the copy as a
"<code>.po</code>" file, with an appropriate name for the
locale you're translating to (e.g., "<code>es.po</code>"
for Spanish; or "<code>pt_BR.po</code>" for
Brazilian&nbsp;Portuguese, versus "<code>pt.po</code>" or
"<code>pt_PT.po</code>" for Portuguese spoken in Portugal.)
</p>
<p>
Open the newly-created "<code>.po</code>" file — you can
edit in a <i>plain</i> text edtior, such as Emacs, Pico or
VI on Linux, or NotePad on Windows. The original English
text used in <cite style="white-space: nowrap;">Tux Paint</cite> is listed in lines starting
with "<code>msgid</code>". Enter your translations of each
of these pieces of text in the empty "<code>msgstr</code>"
lines directly below the corresponding "<code>msgid</code>"
lines. (<i>Note:</i> Do not remove the quotes.)
</p>
<p>
Example:
</p>
<blockquote>
<p>
<code>msgid "Smudge"<br>
msgstr "<u>Manchar</u>"<br>
&nbsp;<br>
msgid "Click and drag to draw large bricks."<br>
msgstr "<u>Haz clic y arrastra para dibujar ladrillos
grandes.</u>"</code>
</p>
</blockquote>
<p>
A graphical tool, called <i><b>poEdit</b></i> (<a href=
"http://www.poedit.net/">http://www.poedit.net/</a>), is
available for Linux, Windows and Mac&nbsp;OS&nbsp;X.
</p>
<p>
<i>Note:</i> It is best to always work off of the
<i>latest</i> <cite style="white-space: nowrap;">Tux Paint</cite> text catalog template
("<code>tuxpaint.pot</code>"), since new text is added, and
old text is occasionally changed. The text catalog for the
upcoming, unreleased version of <cite style="white-space: nowrap;">Tux Paint</cite> can be found
in <cite style="white-space: nowrap;">Tux Paint</cite>'s Git repository (see: <a href=
"http://www.tuxpaint.org/download/source/git/">http://www.tuxpaint.org/download/source/git/</a>),
and on the <cite style="white-space: nowrap;">Tux Paint</cite> website at <a href=
"http://www.tuxpaint.org/help/po/">http://www.tuxpaint.org/help/po/</a>.
</p>
<p>
To edit an existing translation, download the latest
"<code>.po</code>" file for that language, and edit it as
described above.
</p>
<p>
You may send new or edited translation files to
Bill&nbsp;Kendrick, lead developer of <cite style="white-space: nowrap;">Tux Paint</cite>, at:
<a href=
"mailto:bill@newbreedsoftware.com">bill@newbreedsoftware.com</a>,
or post them to the "tuxpaint-i18n" mailing list (see:
<a href=
"http://www.tuxpaint.org/lists/">http://www.tuxpaint.org/lists/</a>).
</p>
<p>
Alternatively, if you have an account with <a href=
"http://www.sourceforge.net/">SourceForge.net</a>, you can
request to be added to the "<code>tuxpaint</code>" project
and receive write-access to the Git source code repository
so that you may commit your changes directly.
</p>
<p>
<i>Note:</i> Additional locale support also requires
additions to <cite style="white-space: nowrap;">Tux Paint</cite>'s source code
(<code>/src/i18n.h</code> and <code>/src/i18n.c</code>),
and requires updates to the <code>Makefile</code>, to have
the "<code>.po</code>" gettext catalog source files
compiled into "<code>.mo</code>" files, and installed, for
use at runtime.
</p>
</blockquote>
<hr size="2" noshade>
<h2>
<a name="input_methods">
Alternative Input Methods
</a>
</h2>
<blockquote>
<p>
As of version 0.9.17, <cite style="white-space: nowrap;">Tux Paint</cite>'s "Text" tool can
provide alternative input methods for some languages. For
example, when <cite style="white-space: nowrap;">Tux Paint</cite> is running with a Japanese
locale, the <b>right&nbsp;[Alt]</b> key can be pressed to
cycle between Latin, Romanized Hiragana and Romanized
Katakana modes. This allows native characters and words to
be entered into the "Text" tool by typing one or more keys
on a keyboard with Latin characters (e.g., a US&nbsp;QWERTY
keyboard).
</p>
<p>
To create an input method for a new locale, create a text
file with a name based on the locale (e.g.,
"<code>ja</code>" for Japanese), with "<code>.im</code>" as
the extension (e.g., "<code>ja.im</code>").
</p>
<p>
The "<code>.im</code>" file can have multiple character
mapping sections for different character mapping modes. For
example, on a Japanese typing system, typing
<b>[K]</b>&nbsp;<b>[A]</b> in Hiragana mode generates a
different Unicode character than typing
<b>[K]</b>&nbsp;<b>[A]</b> in Katakana mode.
</p>
<p>
List the character mappings in this file, one per line.
Each line should contain (separated by whitespace):
</p>
<ul>
<li>the Unicode value of the character, in hexadecimal
(more than one character can be listed, separated by a
colon (':'), this allowing some sequences to map to words)
</li>
<li>the keycode sequence (the ASCII characters that must be
entered to generate the Unicode character)
</li>
<li>a flag (or "<code>-</code>")
</li>
</ul>
<p>
Start additional character mapping sections with a line
containign the word "<code>section</code>".
</p>
<p>
Example:
</p>
<blockquote>
<p>
<code># Hiragana<br>
304B &nbsp; ka &nbsp; -<br>
304C &nbsp; ga &nbsp; -<br>
304D &nbsp; ki &nbsp; -<br>
304E &nbsp; gi &nbsp; -<br>
304D:3083 &nbsp; kya &nbsp; -<br>
3063:305F &nbsp; tta &nbsp; -<br>
&nbsp;<br>
# Katakana<br>
section<br>
30AB &nbsp; ka &nbsp; -<br>
30AC &nbsp; ga &nbsp; -<br>
30AD &nbsp; ki &nbsp; -<br>
30AE &nbsp; gi &nbsp; -</code>
</p>
</blockquote>
<p>
<i>Note:</i> Blank lines within the "<code>.im</code>" file
will be ignored, as will any text following a
"<code>#</code>" (pound/hash) character — it can be used to
denote comments, as seen in the example above.
</p>
<p>
<i>Note:</i> Meanings of the flags are locale-specific, and
are processed by the language-specific source code in
"<code>src/im.c</code>". For example, "<code>b</code>" is
used in Korean to handle Batchim, which may carry over to
the next character.
</p>
<p>
<i>Note:</i> Additional input method support also requires
additions to <cite style="white-space: nowrap;">Tux Paint</cite>'s source code
(<code>/src/im.c</code>), and requires updates to the
<code>Makefile</code>, to have the "<code>.im</code>" files
installed, for use at runtime.
</p>
</blockquote>
<hr size="2" noshade>
</body>
</html>