
Before each release of KolourPaint and/or KDE, grep sources for
"SYNC" and check that those assumptions still hold.

Look in BUGS, patches/, grep sources for "OPT" & "TODO" and look here:


Feature Plan for 1.2
====================

High Priority
-------------

shape selections should support CTRL, ALT, SHIFT to alter shape but
ATM, CTRL means copy, SHIFT means sweep.

flexible kpCommandHistory - would virtually solve all the Undo/Redo annoyances
(such as very limited Undo/Redo even though you're making 1 pixel changes)
- drag out a selection, move, undo, move
  - there's 2 "Selection/Create" Undo entries (Bug #5)
- merge neighbouring move commands

fix flicker when zooming in/out (Bug #1)

scrollview scrolls during drag operations

font textbox size should be smarter, freehand resizeable

freehand resize document

Image/Convert Colour Depth (only be able to dither to colour depths lower
than the current display - limitation of X).  Hmmm, I could understand
going down to mono (image effect) but why would you want to e.g. convert
to 8 bit - if you save in an 8-bit format after that, you'll lose colour
info twice.  Allow saving at different colour depths (else saving a mono BMP
saves it as full colour 32x bigger).

Image/ Contrast, Brightness, ... more image effects

option to dither image on open if not enough colors else that season jpg
looks bad on 8-bit screen
- it seems that AvoidDither means only do colour match/dithering if need to
  while PreferDither means try to _always_ smooth out (even in a single colour
  darkgreen document)

warn when about to exceed KP_BIG_IMAGE_WIDTH or KP_BIG_IMAGE_HEIGHT

m0ns00n@gmx.net:
- configurable palette size (up to 256 colours)
- generate gradient between 2 colours in palette
- keyboard shortcuts for tools, brush sizes ('+' and '-'?)

make scale vs smoothscale icons significantly different and obvious

smooth scale - apple sel 32x32 to 44x44 adds grey line on right but not if fresh image

spraycan should be continuous - merge with kpToolBrush base?

text transparency widget because setting the transparent colour as the
background colour isn't obvious enough

make configuring colour similarity more obvious - for a start, say dblclick in whatsthis

documentation (assigned to Thurston)


Low Priority
------------

kpViewManager::setTextCursorBlinkState() needs to restart timer
kpToolText: cursor doesn't immediately appear after creating or moving
            a text box

When scrolling, text cursor is not fully repainted until next blink (Bug #14)

selections
- ability to freehand stretch selections
- maybe always have 1 width display of border - try editing a B&W icon to see what I mean
- should be able to use selection/image commands on text box

eraser cursor border should not get magnified

intersect bounding rect with document rect when saving undo info
- e.g. if you drag a large rect bigger than the view, waste a lot of memory
ditto for setTempPixmapAt et. al. (maybe not for selections, still thinking)

Bug: dragging a line extending outside of doc makes it transparent (RGB_A_ for PNG saves)
Hypothesis: kpPixmapFX::getPixmapAt() defines undefined pixels as transparent

a better set of cursors that don't obscure the pixel you're drawing at
(e.g. compare the excellent Brush cursor to the Line Tool's cursor)

"brushes / stamps, hopefully configured from an external source.
 I.e. not only slanted lines and points of multiple thickness, but
 arbitrary images." - Dirk Schnberger
I want to avoid making the widgets too complicated but this sounds
like a very neat must-have feature.

Performance tuning

tool to select rectangular area to zoom into

thumbnail doesn't flicker heaps when appearing (Bug #2)
thumbnail has a rectangle that shows the visible mainView area

Edit/Redo as Stretch,
Edit/Redo as Resize

kptoolpreviewdialog shows checkerboard

config flaws:
- interprocess config propagation (grep for PROPAGATE) - surely this can be
  done easily without KUniqueApplication or DCOP?

config dialogs (look into new kconfig generator)
- open documents in same window mode
- recent files history length
- undo limit
- grid tiling
- visual transparency background
- saving transparency background
  (for formats like BMP which don't suport transparency)
- Un-DoNotAskAgain

bug: draw rectangle, drag out selection, undo - kills rect but not selection
is this a feature?

mchristoph.eckert@t-online.de (Christoph Eckert):
- Icons could be rearranged; drawing and editing tools should
  be grouped together instead of being spread over the toolbox

checkerboard + grid doesn't mix at certain zoom levels

http://dot.kde.org/1078028599/:
* Anonymous on Sunday 29/Feb/2004, @09:15:
  - Free definable sizes for line thickness/spraycan/color eraser,
    line styles (dashed, dotted, ...),
    fill patterns, chooseable brushes, rulers
* Mike on Sunday 29/Feb/2004, @10:54:
  - A "Hand" tool which activates by keeping the "Space" key pressed
    down to scroll the visible part of the image around just like
    in Acrobat or Photoshop.
  - If that's the case then also on my wishlist for the next version:
    Automatic command line calling of ImageMagick to convert from png to gif
    so the user doesn't even notice there is no GIF support compiled in.
    No ImageMagick-dependency is needed - just call "convert" via exec.

    I know that most people hate GIF but as a web developer PNGs aren't a
    solution yet because of their awful buggy support in IE.

kde-apps.org:
* posthuman  on: 02/28/2004, 15:50
  - GIMP stuff like Crop Images and the intelligent scissor and a couple of more stuff.


Cleanups
--------

* remove all instances of kpTool*::setMode() - use proper class hierarchy

* kpSelection::setPixmap (QPixmap ()) hack allegedly for saving memory in commands
  backfires:
  - implicit sharing means that (most of the time), this isn't true
  - it forces kpSelection::calculateTransparencyMask() sloooowing things down

* kpsqueezedtextlabel could use (or be replaced by) KStringHandler::rPixelSqueeze()

* AUDIT "The QImage class uses explicit sharing, similar to that used by QMemArray."

* kpDocument::selectionGetMask()
  * return existing selection pixmap mask if available
    (TODO: actually, I think this is inconsistent)


Feature Plan for KDE 3.3
========================

re-enable the ICO write support

multicolumn KToolBar's (Bug #3)


if you undock a vertical toolbar and right click --> Orientation --> Bottom,
it stays vertically oriented

Look at KPixmapIO for QPixmap <-> QImage conversion optimisation
Update: qt-copy/patches/0005-qpixmap_mitshm.patch: "this obsoletes KPixmapIO"


Other Ideas
===========

KolourPaint at >= 1.0 should be very usable.  So the following are just nice
ideas (or things I should really do :)) that may or may not ever get
implemented:


guard all ptr derefs with if (ptr) ptr->whatever
- also don't store ptrs to e.g. kpDocument as they may go out of date

kdError -> KP_PANIC or KMessageBox
wait cursor for slow ops - should it be in kpDocument or in the commands???

use of QPoint () or QPoint (-1, -1) as a sentinel is worrying since it's a
legal point when dragging out a rectangle

make sure session restore actually works


Killer Feature: with flow tools (pen, brush, spraycan), holding SHIFT forces horizontal drawing;
                CTRL forces vertical - so those of us without perfectly steady hands
                can still draw straight without continually hitting the Undo button :)

fill - can optimise mem usage by deleting kpFloodFill object
       when execute() (don't derive object)
     - can optimise mem usage by detecting single colour fills

ability to specify measurements in pt,mm,cm,m,in instead of just pixels

ruler

grid for zoom levels > 200 but % 100 != 0

maybe allow editing when a selection is active (selection becomes bounding rect)

DCOP scriptable

offer to save Undo/Redo QPixmap's as PNGs to save memory

Edit/Find a particular colour

allow user to hide Tool Box & Colour Palette if they really insist

"Open documents in the same window" mode - goes against what most KDE apps do
but it is convenient sometimes

colour palette shows frequently used colours for the current image

tool/ruler (can even measure length & angle of diagonal lines)

readonly mode

network friendly - async save

line: shift+alt doesn't work but alt+shift does
- doesn't look like Bug #64019
- alt alone is backfiring anyway (conflicts with kwin)
  so I'll just leave 30deg & 60deg lines as hidden functionality for now
  (until I can think up a better key combo/way to activate it)

Colour Eraser as part of the Image Menu? You can dbl-click on the tool after all.

On open, dither alpha channel to mask?

Rethink kpView/kpViewManager design because of:
- performance
- problems with the image "sparkling" at zoom levels % 100 != 0
Ideas:
- region-based rendering (for performance)
- do something about this horrible tempPixmap hack (so slooooow)

warn about lossy saves (e.g. JPEG)

Image menu items as ordinary tools - e.g. freehand rotate would be nice

Open 800x600 image, Skew, set horizontal to 60, vertical to 30 and play with
vertical and the image flips over!  I'm sure that's not supposed to happen.
Needs investigating.

kptoolwidgetbase - spacing between items, make contentsRect() actual size wanted

kpcolortoolbar - open/save palette

blur & sharpen

greyscale masks (Bela-Andreas Bargel's idea)

"a simple plugins framework that allows plugins to be written in various
languages (C, Python and Perl being the obvious choices) to allow people to
extend it into the realms of PaintShop Pro without impacting on the core
philosophy of the app, which seems to be simplicity." -- Tom

Brad.Grant@Glenayre.com's ideas:
- red-eye removal (see QImage for windows)
- rotating a JPG losslessly
- resampling a picture to enlarge it with quality choices (bilinear,
  bicubic, lanczos, ...)

view/preview OR view/fullscreen (not the same as settings/fullscreen)

