From b5a3d6a6d8dc70773b77448b8a147d7c6769c6c9 Mon Sep 17 00:00:00 2001
From: William Kendrick
Date: Mon, 4 Sep 2006 11:06:23 +0000
Subject: [PATCH] Brushes can include spacing information. Added an animated,
directional, colored, spaced 'squirrel' brush, as an example of all new brush
features.
----------------------------------------------------------------------
---
docs/CHANGES.txt | 12 +-
docs/EXTENDING.txt | 381 ++++++++++++++++++++-------------------
docs/html/EXTENDING.html | 13 ++
src/tuxpaint.c | 21 ++-
4 files changed, 232 insertions(+), 195 deletions(-)
diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt
index 675a256a1..44355a560 100644
--- a/docs/CHANGES.txt
+++ b/docs/CHANGES.txt
@@ -9,7 +9,8 @@ http://www.newbreedsoftware.com/tuxpaint/
$Id$
-2006.September.3 (0.9.16)
+2006.September.4 (0.9.16)
+
* Interface improvements:
-----------------------
* New slideshow tool! ("Slides", available in "Open" dialog.)
@@ -70,19 +71,24 @@ $Id$
* Brushes may be animated. (Implements RFE #1522694)
(Create an image (W*N) x H in size (where N is number of frames),
- then create a ".dat" file for the brush containing "frames=N".
+ then create a ".dat" file for the brush, containing the line "frames=N".
* Brushes can include directional variations. (Implements RFE #1522694)
(Create an image (W*3) x (H*3) in size, then create a ".dat" file
- for the brush containing the line: "directional". Each of the 9
+ for the brush, containing the line: "directional". Each of the 9
sectors corresponds to 8 different directions, and center.)
+ * Brushes can include spacing information.
+ (Create a ".dat" file for the brush, containing the line "spacing=N".
+
* New Brushes:
------------
* Vines (animated)
* Angle Lines (directional)
+ * Squirrel (animated, directional)
+
* New Starter Images:
-------------------
diff --git a/docs/EXTENDING.txt b/docs/EXTENDING.txt
index b1acfb776..3722f9b49 100644
--- a/docs/EXTENDING.txt
+++ b/docs/EXTENDING.txt
@@ -143,6 +143,16 @@ Brushes
(e.g., "brush.png"'s data file is the text file "brush.dat" in the
same directory.)
+ Brush Spacing
+
+ As of Tux Paint 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.
+
+ Add a line containing the line "spacing=N" to the brush's data file,
+ where N is the spacing you want for the brush. (The lower the
+ number, the more often the brush is drawn.)
+
Animated Brushes
As of Tux Paint version 0.9.16, you may now create animated brushes.
@@ -181,296 +191,293 @@ Brushes
pixels of the image represent the 9 direction shapes for the first
frame, for example.)
- Place the brush image PNGs (and any data text files) in the "brushes"
- directory.
+ Place the brush image PNGs (and any data text files) in the "brushes"
+ directory.
- 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.
+ 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.
--------------------------------------------------------------------------
Stamps
- All stamp-related files go in the "stamps" directory. It's useful to
- create subdirectories and sub-subdirectories there to organize the
- stamps. (For example, you can have a "holidays" folder with
- "halloween" and "christmas" sub-folders.)
+ All stamp-related files go in the "stamps" directory. It's useful to
+ create subdirectories and sub-subdirectories there to organize the
+ stamps. (For example, you can have a "holidays" folder with "halloween"
+ and "christmas" sub-folders.)
Images
- Rubber Stamps in Tux Paint can be made up of a number of separate
- files. The one file that is required is, of course, the picture
- itself.
+ Rubber Stamps in Tux Paint can be made up of a number of separate
+ files. The one file that is required is, of course, the picture
+ itself.
- The Stamps used by Tux Paint are PNG pictures. They can be
- full-color or greyscale. The alpha (transparency) of the PNG is used
- to determine the actual shape of the picture (otherwise you'll stamp
- a large rectangle on your drawings).
+ The Stamps used by Tux Paint are PNG pictures. They can be full-color
+ or greyscale. The alpha (transparency) of the PNG is used to determine
+ the actual shape of the picture (otherwise you'll stamp a large
+ rectangle on your drawings).
- The PNGs can be any size, but in practice, a 100 pixels wide by
- 100 pixels tall (100 x 100) is quite large for Tux Paint.
+ The PNGs can be any size, but in practice, a 100 pixels wide by
+ 100 pixels tall (100 x 100) is quite large for Tux Paint.
- Note: If your new 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 "PNG.txt" for
- more information and tips.
+ Note: If your new 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 "PNG.txt" for more
+ information and tips.
- Advanced Users: The Advanced Stamps HOWTO describes, in detail, how
- to make images which will scale perfectly when used as stamps in
- Tux Paint.
+ Advanced Users: The Advanced Stamps HOWTO describes, in detail, how to
+ make images which will scale perfectly when used as stamps in
+ Tux Paint.
--------------------------------------------------------------------------
Description Text
- Text (".TXT") files with the same name as the PNG. (e.g.,
- "picture.png"'s description is stored in "picture.txt" in the same
- directory.)
+ Text (".TXT") files with the same name as the PNG. (e.g.,
+ "picture.png"'s description is stored in "picture.txt" in the same
+ directory.)
- 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.
+ 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.
Language Support
- Additional lines can be added to the text file to provide
- translations of the description, to be displayed when Tux Paint is
- running in a different locale (like French or Spanish).
+ Additional lines can be added to the text file to provide
+ translations of the description, to be displayed when Tux Paint is
+ running in a different locale (like French or Spanish).
- The beginning of the line should correspond to the language code
- of the language in question (e.g., "fr" for French, and "zh_tw"
- for Traditional Chinese), followed by ".utf8=" and the translated
- description (encoded in UTF-8).
+ The beginning of the line should correspond to the language code of
+ the language in question (e.g., "fr" for French, and "zh_tw" for
+ Traditional Chinese), followed by ".utf8=" and the translated
+ description (encoded in UTF-8).
- There are scripts in the "po" 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.
+ There are scripts in the "po" 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.
- If no translation is available for the language Tux Paint is
- currently running in, the US English text is used.
+ If no translation is available for the language Tux Paint is
+ currently running in, the US English text is used.
Windows Users
- Use NotePad or WordPad to edit/create these files. Be sure to save
- them as Plain Text, and make sure they have ".txt" at the end of
- the filename...
+ Use NotePad or WordPad to edit/create these files. Be sure to save
+ them as Plain Text, and make sure they have ".txt" at the end of the
+ filename...
--------------------------------------------------------------------------
Sound Effects
- WAVE (".WAV") files with the same name as the PNG. (e.g.,
- "picture.png"'s sound effect is the sound "picture.wav" in the same
- directory.)
+ WAVE (".WAV") files with the same name as the PNG. (e.g.,
+ "picture.png"'s sound effect is the sound "picture.wav" in the same
+ directory.)
Language Support
- 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 files with the locale's label in the filename, in
- the form: "STAMP_LOCALE.wav"
+ 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 files with the locale's label in the filename, in
+ the form: "STAMP_LOCALE.wav"
- "picture.png"'s sound effect, when Tux Paint is run in Spanish
- mode, would be "picture_es.wav". In French mode, "picture_fr.wav".
- And so on...
+ "picture.png"'s sound effect, when Tux Paint is run in Spanish mode,
+ would be "picture_es.wav". In French mode, "picture_fr.wav". And so
+ on...
- If no localized sound effect can be loaded, Tux Paint will attempt
- to load the 'default' sound file. (e.g., "picture.wav")
+ If no localized sound effect can be loaded, Tux Paint will attempt
+ to load the 'default' sound file. (e.g., "picture.wav")
--------------------------------------------------------------------------
Stamp Options
- 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 file' for the stamp.
+ 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 file' for the stamp.
- A stamp data file is simply a text file containing the options.
+ A stamp data file is simply a text file containing the options.
- The file has the same name as the PNG image, but a ".dat" extension.
- (e.g., "picture.png"'s data file is the text file "picture.dat" in
- the same directory.)
+ The file has the same name as the PNG image, but a ".dat" extension.
+ (e.g., "picture.png"'s data file is the text file "picture.dat" in the
+ same directory.)
Colored Stamps
- Stamps can be made to be either "colorable" or "tintable."
+ Stamps can be made to be either "colorable" or "tintable."
Colorable
- "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.)
+ "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.)
- Nothing about the original image is used except the transparency
- (from "alpha" channel). The color of the stamp comes out solid.
+ Nothing about the original image is used except the transparency
+ (from "alpha" channel). The color of the stamp comes out solid.
- Add a line containing the word "colorable" to the stamp's data
- file.
+ Add a line containing the word "colorable" to the stamp's data
+ file.
Tinted
- "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.)
+ "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.)
- Add a line containing the word "tintable" to the stamp's data
- file.
+ Add a line containing the word "tintable" to the stamp's data
+ file.
Tinting Options:
- Depending on the contents of your stamp, you might want to
- have Tux Paint use one of a numer of methods when tinting it.
- Add one of the following lines to the stamp's data file:
+ Depending on the contents of your stamp, you might want to have
+ Tux Paint use one of a numer of methods when tinting it. Add one
+ of the following lines to the stamp's data file:
- "tinter=normal" (default)
- This is the normal tinting mode.
+ "tinter=normal" (default)
+ This is the normal tinting mode.
- "tinter=anyhue"
- This is ???.
+ "tinter=anyhue"
+ This is ???.
- "tinter=narrow"
- This is ???.
+ "tinter=narrow"
+ This is ???.
- "tinter=vector"
- This is ???.
+ "tinter=vector"
+ This is ???.
Unalterable Stamps
- 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
- Tux Paint.
+ 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 Tux Paint.
- 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.
+ 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.
- To make a stamp un-flippable, add the option "noflip" to the
- stamp's data file.
+ To make a stamp un-flippable, add the option "noflip" to the stamp's
+ data file.
- To keep a stamp from being mirrored, add a line containing the
- word "nomirror" to the stamp's data file.
+ To keep a stamp from being mirrored, add a line containing the word
+ "nomirror" to the stamp's data file.
Initial Stamp Size
- By default, Tux Paint assumes that your stamp is sized
- appropriately for unscaled display on a 608x472 canvas. This is
- the original Tux Paint canvas size, provided by a 640x480 screen.
- Tux Paint will then adjust the stamp according to the current
- canvas size and, if enabled, the user's stamp size controls.
+ By default, Tux Paint assumes that your stamp is sized appropriately
+ for unscaled display on a 608x472 canvas. This is the original
+ Tux Paint canvas size, provided by a 640x480 screen. Tux Paint will
+ then adjust the stamp according to the current canvas size and, if
+ enabled, the user's stamp size controls.
- 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 "scale 40%" or "scale 5/2" or
- "scale 2.5" or "scale 2:5" to your image. You may include an "="
- if you wish, as in "scale=40%".
+ 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 "scale 40%" or "scale 5/2" or "scale 2.5"
+ or "scale 2:5" to your image. You may include an "=" if you wish, as
+ in "scale=40%".
Windows Users
- You can use NotePad or WordPad to create these file. Be sure to
- save it as Plain Text, and make sure the filename has ".dat" at
- the end, and not ".txt"...
+ You can use NotePad or WordPad to create these file. Be sure to save
+ it as Plain Text, and make sure the filename has ".dat" at the end,
+ and not ".txt"...
Pre-Mirrored Images
- In some cases, you may wish to provide a pre-drawn version of a
- stamp's mirror-image. For example, imagine a picture of a fire truck
- with the words "Fire Department" written across the side. You
- probably do not want that text to appear backwards when the image is
- flipped!
+ In some cases, you may wish to provide a pre-drawn version of a
+ stamp's mirror-image. For example, imagine a picture of a fire truck
+ with the words "Fire Department" written across the side. You probably
+ do not want that text to appear backwards when the image is flipped!
- To create a mirrored version of a stamp that you want Tux Paint to
- use, rather than mirroring one on its own, simply create a second
- ".png" graphics file with the same name, except with the string
- "_mirror" before the filename extension.
+ To create a mirrored version of a stamp that you want Tux Paint to
+ use, rather than mirroring one on its own, simply create a second
+ ".png" graphics file with the same name, except with the string
+ "_mirror" before the filename extension.
- For example, for the stamp "truck.png" you would create another file
- named "truck_mirror.png", which will be used when the stamp is
- mirrored (rather than using a backwards version of 'truck.png').
+ For example, for the stamp "truck.png" you would create another file
+ named "truck_mirror.png", which will be used when the stamp is
+ mirrored (rather than using a backwards version of 'truck.png').
--------------------------------------------------------------------------
Fonts
- The fonts used by Tux Paint are TrueType Fonts (TTF).
+ The fonts used by Tux Paint are TrueType Fonts (TTF).
- Simply place them in the "fonts" directory. Tux Paint will load the
- font and provide four different sizes in the 'Letters' selector when
- using the 'Text' tool.
+ Simply place them in the "fonts" directory. Tux Paint will load the font
+ and provide four different sizes in the 'Letters' selector when using
+ the 'Text' tool.
--------------------------------------------------------------------------
'Starters'
- 'Starter' images appear in the 'Open' dialog, along with pictures
- you've created. They have a green button background, instead of blue.
+ 'Starter' images appear in the 'Open' dialog, along with pictures you've
+ created. They have a green button background, instead of blue.
- Unlike your saved pictures, however, when you select and open a
- 'starter,' you're actually creating a new drawing. Instead of being
- blank, though, the new drawing contains the contents of the 'starter.'
- Additionally, as you edit your new picture, the contents of the
- original 'starter' affect it.
+ Unlike your saved pictures, however, when you select and open a
+ 'starter,' you're actually creating a new drawing. Instead of being
+ blank, though, the new drawing contains the contents of the 'starter.'
+ Additionally, as you edit your new picture, the contents of the original
+ 'starter' affect it.
- Coloring-Book Style
+ Coloring-Book Style
- 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 Tux Paint, 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.
+ 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 Tux Paint, 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.
- 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 Tux Paint), and save it as a PNG
- format file.
+ 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 Tux Paint), and save it as a PNG
+ format file.
- Scene-Style
+ Scene-Style
- 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!
+ 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!
- When the 'Eraser' tool is used on a picture based on this kind of
- 'starter' image, rather than turning the canvas white, it returns
- that part of the canvas to the original background picture.
+ When the 'Eraser' tool is used on a picture based on this kind of
+ 'starter' image, rather than turning the canvas white, it returns that
+ part of the canvas to the original background picture.
- 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.
+ 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.
- To create this kind of 'starter' picture, simply create an overlay
- (with alpha 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 "-back" appended to the name. (e.g.,
- "reef-back.png" would be the background ocean picture that
- corresponds to the "reef.png" overlay, or foreground.)
+ To create this kind of 'starter' picture, simply create an overlay
+ (with alpha 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 "-back" appended to the name. (e.g.,
+ "reef-back.png" would be the background ocean picture that corresponds
+ to the "reef.png" overlay, or foreground.)
- The 'starter' images should be the same size as Tux Paint's canvas. In
- the default 640x480 mode, that is 448x376 pixels. If you're using
- 800x600 mode, it should be 608x496. (It should be 192 pixels less
- wide, and 104 pixels less tall than the resolution.)
+ The 'starter' images should be the same size as Tux Paint's canvas. In
+ the default 640x480 mode, that is 448x376 pixels. If you're using
+ 800x600 mode, it should be 608x496. (It should be 192 pixels less wide,
+ and 104 pixels less tall than the resolution.)
- Place them in the "starters" directory. When the 'Open' dialog is
- accessed in Tux Paint, the 'starter' images will appear at the
- beginning of the list with a green background.
+ Place them in the "starters" directory. When the 'Open' dialog is
+ accessed in Tux Paint, the 'starter' images will appear at the beginning
+ of the list with a green background.
- Note: 'Starters' can't be saved over from within Tux Paint, 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.
+ Note: 'Starters' can't be saved over from within Tux Paint, 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.
- Note: 'Starters' are 'attached' to saved pictures, via a small text
- file that has the same name as the saved file, but with ".dat" as the
- extension. This allows the overlay and background, if any, to continue
- to affect the drawing even after Tux Paint 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.)
+ Note: 'Starters' are 'attached' to saved pictures, via a small text file
+ that has the same name as the saved file, but with ".dat" as the
+ extension. This allows the overlay and background, if any, to continue
+ to affect the drawing even after Tux Paint 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.)
diff --git a/docs/html/EXTENDING.html b/docs/html/EXTENDING.html
index 4f3944e46..8f8534d46 100644
--- a/docs/html/EXTENDING.html
+++ b/docs/html/EXTENDING.html
@@ -215,7 +215,19 @@ effect.
The file has the same name as the PNG image, but a ".dat"
extension. (e.g., "brush.png"'s data file is the text
file "brush.dat" in the same directory.)
+
+ Brush Spacing
+
+ As of Tux Paint 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.
+ Add a line containing the line "spacing=N"
+ to the brush's data file, where N is the spacing you want
+ for the brush. (The lower the number, the more often the brush is
+ drawn.)
+
+
Animated Brushes
As of Tux Paint version 0.9.16, you may now create animated
@@ -259,6 +271,7 @@ effect.
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.)
+
Place the brush image PNGs (and any data text files) in the
diff --git a/src/tuxpaint.c b/src/tuxpaint.c
index fe09baf68..0df6ed6a3 100644
--- a/src/tuxpaint.c
+++ b/src/tuxpaint.c
@@ -22,7 +22,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
(See COPYING.txt)
- June 14, 2002 - September 3, 2006
+ June 14, 2002 - September 4, 2006
$Id$
*/
@@ -949,8 +949,9 @@ static int stamp_tintable(int stamp)
static int num_brushes, num_brushes_max;
static SDL_Surface **img_brushes;
-static int * brushes_frames;
-static short * brushes_directional;
+static int * brushes_frames = NULL;
+static int * brushes_spacing = NULL;
+static short * brushes_directional = NULL;
static SDL_Surface *img_shapes[NUM_SHAPES], *img_shape_names[NUM_SHAPES];
static SDL_Surface *img_magics[NUM_MAGICS], *img_magic_names[NUM_MAGICS];
@@ -985,7 +986,7 @@ enum {
static SDL_Surface *img_cur_brush;
int img_cur_brush_frame_w, img_cur_brush_w, img_cur_brush_h,
- img_cur_brush_frames, img_cur_brush_directional;
+ img_cur_brush_frames, img_cur_brush_directional, img_cur_brush_spacing;
static int brush_counter, rainbow_color, brush_frame;
#define NUM_ERASERS 12 /* How many sizes of erasers
@@ -3535,7 +3536,7 @@ static void blit_brush(int x, int y, int direction)
brush_counter++;
- if (brush_counter >= (img_cur_brush_h / 4))
+ if (brush_counter >= img_cur_brush_spacing)
{
brush_counter = 0;
@@ -5255,6 +5256,8 @@ static void loadbrush_callback(SDL_Surface * screen,
realloc(brushes_frames, num_brushes_max * sizeof(int));
brushes_directional =
realloc(brushes_directional, num_brushes_max * sizeof(short));
+ brushes_spacing =
+ realloc(brushes_spacing, num_brushes_max * sizeof(int));
}
img_brushes[num_brushes] = loadimage(fname);
@@ -5263,6 +5266,7 @@ static void loadbrush_callback(SDL_Surface * screen,
brushes_frames[num_brushes] = 1;
brushes_directional[num_brushes] = 0;
+ brushes_spacing[num_brushes] = img_brushes[num_brushes]->h / 4;
strcpy(strcasestr(fname, ".png"), ".dat");
fi = fopen(fname, "r");
@@ -5278,6 +5282,11 @@ static void loadbrush_callback(SDL_Surface * screen,
brushes_frames[num_brushes] =
atoi(strstr(buf, "frames=") + 7);
}
+ else if (strstr(buf, "spacing=") != NULL)
+ {
+ brushes_spacing[num_brushes] =
+ atoi(strstr(buf, "spacing=") + 8);
+ }
else if (strstr(buf, "directional") != NULL)
{
brushes_directional[num_brushes] = 1;
@@ -8648,6 +8657,7 @@ static void render_brush(void)
img_cur_brush_h = img_cur_brush->h / (brushes_directional[cur_brush] ? 3 : 1);
img_cur_brush_frames = brushes_frames[cur_brush];
img_cur_brush_directional = brushes_directional[cur_brush];
+ img_cur_brush_spacing = brushes_spacing[cur_brush];
brush_counter = 0;
}
@@ -10585,6 +10595,7 @@ static void cleanup(void)
free_surface_array(img_brushes, num_brushes);
free(brushes_frames);
free(brushes_directional);
+ free(brushes_spacing);
free_surface_array(img_tools, NUM_TOOLS);
free_surface_array(img_tool_names, NUM_TOOLS);
free_surface_array(img_title_names, NUM_TITLES);