TODO.txt for Tux Paint

Tux Paint - A simple drawing program for children.

Copyright (c) 2004 by Bill Kendrick
bill@newbreedsoftware.com
http://www.newbreedsoftware.com/tuxpaint/

September 21, 2004


BUGS!
-----
  * Get Starters to work properly in 800x600 mode.


HIGH-PRIORITY DOCUMENTATION CHANGES:
------------------------------------
  * Convert documentation and man pages into a single source (DocBook?)


LOW-PRIORITY DOCUMENTATION CHANGES:
-----------------------------------
  * Windows compilation in INSTALL.txt

  * Mac OS X compilation in INSTALL.txt

  * Mention CONFDIR in INSTALL.txt

  * Add better description of where things get installed in INSTALL.txt

  * Automagically make documentation path correct in man page.
    (Turn man page into a template, then process during compile)


HIGH-PRIORITY IMPLEMENTATION CHANGES:
-------------------------------------
  * Support different default size for stamps than the stamp images size.
    Explanation: For example, the actual image of an apple could be 500x400
    pixels, but selecting the apple would display a scaled down 50x40
    (or 70x56 or whatever) image. Resized (especially scaled up) versions
    of the stamp would then look much better, without any of the very ugly
    pixelation and jagged edges that currently occurs.

  * Use 'default.ttf' font to display un-translated strings.

  * Provide a more Mac OS X style for handling configuration
    (don't use "~/.tuxpaintrc"; see the FIXME in src/tuxpaint.c)

  * Get Mac OS X to look for stamps, brushes, etc. in
    /Library/Preferences/tuxpaint first, then ~/Library/Preferences/tuxpaint

  * Only use "savedir" for saved files, not to look for stamps/brushes.
    Added "datadir" option to override where to look for local stamps/brushes.

  * Coloring book mode -- immutable images stored in Tux Paint's "data"
    directory, but available via the "Open" dialog.  They would be black
    outlines of shapes/pictures for kids to color, like a coloring book.
    The outlines would always remain 'above' the paint.

    FIXME: "Erase" icon on Open screen should disable when you click
    an immutable image.  Re-enable when clicking a saved image.

  * Background mode -- immutable images stored in Tux Paint's "data"
    directory, but available via the "Open" dialog.  They would be
    background images (a 'scene'), and possibly foreground elements,
    as well (think of a photo of a reef, underwater...).  The background
    would be drawn over, but would come back when the "Eraser" tool is used.
    (Any foreground element would always appear 'above' the paint.)


LOW-PRIORITY IMPLEMENTATION CHANGES:
------------------------------------
  * Add "include={filename}" option to .tuxpaintrc config file,
    to allow centralized config files.

  * Adhere to Freedesktop Basedir Specification
    ( http://freedesktop.org/Standards/basedir-spec/basedir-spec-0.6.html )

  * Allow keyboard buttons to alter shapes (+/- for size, e.g.)

  * Fix and use scanline fill for filled shapes.
  
  * Fix "update_shape()" function and use it to replace SDL_Flip()'s

  * Show different text tip for shape tool when in --simpleshapes mode.
  
  * Update Makefile and source so that "*_PREFIX"-like Makefile vars.
    don't require an ending slash!

  * Allow runtime alteration of mouse control keys (in --keyboard mode).

  * Clean up 800x600 support code

  * Allow locale font files to be specified in conf file
    (so instead of using /usr/local/share/tuxpaint/fonts/locale/ja.ttf,
    it can use /usr/local/share/ttf/kochi-mincho.ttf).
    Distros can take advantage of this.
    (Ben Armstrong's suggestion.)

  * Support Ogg Vorbis for stamp sounds, for *much* higher quality and
    much smaller file sizes.

  * Saved images on should be stored in 'My Documents/My Pictures' on
    Windows. The actual directory name is different for each user,
    and is stored in the registry at:
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\
    User Shell Folders\My Pictures
    (It also varies with the language Windows is in, e.g.
    'Mine dokumenter/Mine bilder' on the Norwegian version of Windows,
    but the registry key above will always contain the correct name/address.)


HIGH-PRIORITY BUGS:
-------------------
  * Scroll-wheel doesn't work in open dialog.

  * Deal with clash between Open dialog arrow key controls and
    mouse arrow key (--keyboard) controls.


LOW-PRIORITY BUGS:
------------------
  * Fix XOR bug with blinking text cursor.
  
  * Fix XOR bug when you 'abort' the shape tool.


PLATFORM-SPECIFIC BUGS:
-----------------------
  * Support Apple-key buttons ([H]ide, [?]help, [M]inimize, [Q]uit)
    (Is this "META" modifier in SDL_keysyms.h???)

  * Create a 'tuxpaint-import' type program for Windows, Mac OS X and BeOS.
    FREQUENTLY REQUESTED


HIGH-PRIORITY I18n STUFF:
-------------------------
  * Make sure characters are properly converted when using
    '--uppercase' in locales that have uppercase letters.
    Currently using 'mbstowcs' and 'wcstombs' to convert between
    UFT-8 and wide chars, and using 'towupper' (instead of 'toupper') to
    convert from lowercase to uppercase.

    Karl says: "'mbstowcs' and 'wcstombs' unfortunately depend on on LC_CTYPE,
    so the encoding they use is locale dependent (and *not* necessarily UTF-8,
    which our strings are in). On the other hand, 'towupper' must be
    locale-aware for correct conversion (e.g. a Turkish uppercase 'i' is *not*
    an 'I')."

  * Make right-to-left strings not wordwrap with the shortest line at
    the top!
    
  * Writing non-ASCII characters with the text tool doesn't work.

  * Finish current translations.  (Especially documentation!)

  * The UI should be 'mirrored' for all right-to-left languages, i.e.
    the toolbar should be on the right, and Tux should be mirrored
    to look towards the left.


LOW-PRIORITY TRANSLATION STUFF:
-------------------------------
  * Support more languages!
    * Remaining Indian family:
      * Bengali    (bn)
      * Gujarati   (gu)
      * Kannada    (kn)
      * Malayalam  (ml)
      * Marathi    (mr)
      * Oriya      (or)
      * Punjabi
      * Telugu     (te)

    Afar, Abkhazian, Albanian, Amharic, Arabic, Armenian, Assamese, Avestan,
    Aymara, Azerbaijani, Bashkir, Bihari, Bislama, Bosnian, Burmese, Chamorro,
    Chechen, Church Slavic, Chuvash, Cornish, Corsican, Dzongkha, Esperanto,
    Estonian, Faroese, Fijian, Frisian, Georgian, Gaelic, Irish, Gallegan,
    Manx, Guarani, Hausa, Herero, Hiri Motu, Ido, Inuktitut, Interlingue,
    Interlingua, Inupiaq, Javanese, Kalaallisut, Kashmiri, Kazakh, Khmer,
    Kikuyu, Kinyarwanda, Kirghiz, Komi, Kurdish, Lao, Latin, Latvian,
    Limburgan, Lingala, Luxembourgish, Macedonian, Marshallese, Maori,
    Malagasy, Maltese, Moldavian, Mongolian, Nauru, Northern Sotho, Navajo,
    Ndebele (South), Ndebele (North), Ndonga, Nepali, Chichewa, Occitan,
    Oromo, Ossetian, Farsi (Persian), Pali, Pushto, Quechua, Rundi, Sango,
    Sanskrit, Sinhalese, Northern Sami, Samoan, Shona, Sindhi, Somali,
    Sotho (Southern) Sardinian, Swati, Sundanese, Swahili, Tahitian, Tatar,
    Tajik, Thai, Tibetan, Tigrinya, Tonga, Tswana, Tsonga, Turkmen, Twi,
    Uighur, Ukrainian, Urdu, Uzbek, Venda, Volap?k, Wolof, Xhosa, Yiddish,
    Yoruba, Zhuang, Zulu, Klingon, Elvish.

  * Make splash screen translatable/localizable:
      'Tux Paint' logo (e.g., "Teikne-Tux" in Norwegian)
      'present' text
      'Developed by ...' text
      Add: 'Translated by ...' (see gettext manual for how to handle this)
  
    * Update Czech and Slovak translations (so they use accents/etc.!)

  * Update Vietnamese translation (so it uses accents/etc.!)


FEATURE IDEAS:
--------------
  * Allow naming (titling) of images when saving. (As an option)
    (Thanks to Jerry W. Todd for the idea.)

  * "Cartoonify" magic tool.  Kind of like posterize, but different?

  * Create symbolic link "~/TuxPaintPictures" that points to
    "~/.tuxpaint/saved/"???
    FREQUENTLY REQUESTED

  * Add "click to start, click to end" functionality in Brush, Eraser, etc.
    (Pablo Saratxaga's suggestion; 2003.07.19)
    FREQUENTLY REQUESTED
    
  * Show shape instructions after _temporarily_ describing the shape???
    (Herman Bruyninckx's suggestion; 2002.08.25)

  * Special command-line options that enable groups of other options
    all at once.  (e.g., "--fullscreen --noquit --printdelay=60 --grab")
    ...and/or pre-written configuration files.
    
    That way a parent/guardian/teacher can very easily set up Tux Paint for
    certain age groups, for example.
  
  * Allow compile-time option (or system config?) that disables
    parsing of ~/.tuxpaintrc and/or command-line options.

  * Show only one category of stamps at a time?
    (Provide category selection dialog) !?!?!?
    FREQUENTLY REQUESTED

  * Show configuration options (e.g., from ~/.tuxpaintrc) in --version info.


POSSIBLE FEATURE IDEAS:
-----------------------
  * Pipette / color prober tool. Click on it, then click on image to pick
    up a color from a single pixel. Display color under mouse pointer in
    special 'custom color' color bucket (see below) when moving pointer.
    Click and drag a rectangle to select a color which is the arithmetic
    average of the colors in the selected area.

  * Palette. Click on the left-most (or right-most) color bucket (which
    must look a bit different than the rest) to pop up a palette
    (just a rectangular image containing lots of colors in some sort
    of pattern) above it. Click on the palette to select a color. The
    palette disappears (on button *release*).  Can probably reuse
    pipette tool code to pick up color (but don't support the 'average'
    method here). The palette should just be an ordinary image file,
    and easy to replace. I recommend using the one of the left here:
    http://www.ficml.org/jemimap/style/color/wheel.html It's very easy
    to select both hues *and* brightness from this colour wheel.

  * Round eraser
    FREQUENTLY REQUESTED
  
  * Support animated brushes (then replace Sparkle magic with one) ??

  * Support image/stamp 'hoses' (as implemented in numerous other
    graphics programs).
  
  * Make a 'rainbow' color (then remove Rainbow magic tool)
  
  * "Gallery"/slideshow mode (available via Open dialog, maybe?)
    (Ben Armstrong's suggestion: 2002.08.26)

