Stub docs for Tux Paint Magic Plugin Development
#include "tp_magic_api.h"
build plugins with:
-------------------
Linux/Unix:
-----------
$(CC) -shared `tp-magic-config --cflags` plugin.c -o plugin.so
Then install globally into: /usr/[local/]lib/tuxpaint/.
Or locally into: ~/.tuxpaint/magic/ [[FIXME]]
Windows:
--------
??? [[FIXME]]
Mac OS X:
---------
??? [[FIXME]]
magic plugins must provide:
---------------------------
NOTE: Each function name should be preceded with the name of the
shared object file, e.g. "negative.so" or "negative.dll" would have
a function called "negative_init()".
int get_tool_count(magic_api * api)
return the number of Magic tools this plugin provides
(used below as the 'which' values sent to each function)
char * get_name(magic_api * api, int which)
return the name of a/the magic tool (for 'Magic' tool buttons in UI)
Tux Paint will free() the string;
example:
return (strdup(gettext("Fun")));
SDL_Surface * get_icon(magic_api * api, int which)
return the icon of a/the magic tool (for 'Magic' tool buttons in UI)
Tux Paint will SDL_FreeSurface() the surface:
example:
sprintf(fname, "%s/images/magic/funtool.png", api->data_directory);
return(IMG_Load(fname));
char * get_description(magic_api * api, int which)
return the description of a/the magic tool (for Tux help text in UI);
Tux Paint will free() the string;
example:
return (strdup(gettext("A fun tool")));
int requires_colors(magic_api * api, int which)
return whether a/the magic tool accepts colors
('1' for true; activates color palette in UI;
'0' for false; disables color palette in UI)
void set_color(magic_api * api, Uint8 r, Uint8 g, Uint8 g)
accept the color palette choice from Tux Paint
(only called if requires_colors() for the current tool returned true)
int init(magic_api * api)
initialization function; called once, during Tux Paint startup
return 1 if success;
return 0 if failure (tool(s) will be disabled in Magic tool);
void shutdown(magic_api * api)
cleanup function; should free any alloc'd memory, etc.;
happens once, at Tux Paint shutdown
void click(magic_api * api, int which,
SDL_Surface * snapshot, SDL_Surface * canvas,
int x, int y)
should affect 'canvas' at (x,y) location; may use 'snapshot' to fetch
pixels from most recent undo buffer;
Tux Paint's undo buffer is updated prior to this call
void drag(magic_api * api, int which,
SDL_Surface * snapshot, SDL_Surface * canvas,
int ox, int oy, int x, int y)
should affect 'canvas' between (ox,oy) and (x,y) locations;
may use 'snapshot' to fetch pixels from most recent undo buffer;
Tux Paint's undo buffer is NOT updated prior to this call; the
'snapshot' buffer will contain the same contents as when click() was
last called
tp provides, via magic_api structure ("api" arg to magic tool functions):
-------------------------------------------------------------------------
void putpixel(SDL_Surface * surf, int x, int y, Uint32 pixel)
function that puts a pixel at an (x,y) position in a surface
Uint32 getpixel(SDL_Surface * surf, int x, int y)
function that returns a pixel value from an (x,y) position on a surface
int in_circle(int x, int y, int radius)
function that returns whether an x/y position (centered at (0,0)) is
within a circle of 'radius'
void show_progress_bar(void)
draws the Tux Paint progress bar animation; use while you're busy
void tuxpaint_version(int * major, int * minor, int * revision)
returns the version of Tux Paint being used
void line(int which, SDL_Surface * canvas, SDL_Surface * snapshot,
int x1, int y1, int x2, int y2, int step, FUNC callback)
function that calls calculates a line between (x1,y1) and (x2,y2)
and calls 'callback' every 'step' iterations;
sends to the callback: Tux Paint's 'magic_api' structure, along with the
'which', 'canvas' and 'snapshot' values sent to line(), and the (x,y)
coordinates
FIXME: Implement these:
void playsound(Mix_Chunk * snd, int pan, int dist)
function that plays a sound, panned left/right 'pan'
and at distance 'dist'. pan may be SNDPOS_LEFT, SNDPOS_CENTER or
SNDPOS_RIGHT, and dist may be SNDDIST_NEAR.
void special_notify(int flag)
notifies tux paint of special events; SPECIAL_FLIP and SPECIAL_MIRROR
flags may be sent
float sRGB_to_linear_table[256]
sRGB-to-linear look-up table
unsigned char linear_to_sRGB(float linear)
linear-to-sRGB look-up helper function