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

Before each KDE 3.0 backport release of KolourPaint, grep sources for
"COMPAT".

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


Parse First
~~~~~~~~~~~

Antonio Bianco's long email with the RTF still needs parsing.


KolourPaint 1.4
~~~~~~~~~~~~~~~

componentisation (Eric Laffoon, Sebastian Laout/BasKet)

allow user to hide Tool Box & Colour Palette if they really insist (it is
possible to ALT+F4 them and can't get them back!)

Antonio Bianco
- split views
fix flicker when zooming in/out (Bug #1)
- maybe don't allow QScrollview to do own logic - would also eliminate
  tearing when scrolling with wheel (and of course, drag scrolling)

DCOP scriptable


Hogne Titlestad:
- configurable palette size (up to 256 colours) + Stephen Sweeney + Antonio Bianco
- "Would also be nice to have a keyboard shortcut to traverse through the
   palette. If I say have a palette with 16 greys, 16 reds, 16 blues etc
   then moving to the next/previous palette item with keys would be a
   great help, when thinking about pixelling techniques. When painting
   grey, then wanting to shade manually, clicking CRTL+UPKEY or DOWNKEY or
   another combo to go to the next/prev grey color ( lighter/darker ). ( In
   this scenario, the palette is ordered so the colours are stacked by
   shade, from black to white etc, black to red to white etc, then the
   currently selected color would have a red box around it, and that red
   box could be moved with a keyboard shortcut, up and down, left and
   right? )."

Emmeran Seehuber (relevant to above impl):
"
> Problem is: there is no concept of a "current colour" in mspaint (relative
> to the palette) but rather "foreground" and "background" colours.  So I
> don't know how this would work exactly?

  You could apply the following strategie:
- You have current background and a current forground color. The following is
for the foreground color, but for thebackground colors it would be the same,
just other shortcuts.
- If the current foreground color matches a color of the palette, then you
know your position in the palette. From there go one color forward or
backward.
- If the current foreground color doesn't match a color, then just use the
last selected color in the palette. If no color is selected, then start at
index 0. From there go one color forward or backward.
"

Hogne Titlestad:
- generate gradient between 2 colours in palette

kpcolortoolbar - open/save palette


Bug #12 - selectable text

text tool when click creating should use last size?

text tool could autoresize if font size changes or paste text (Bug #11)
- maybe text selection could hold "userSetSize" as distinct from current size
  to allow e.g. auto increase box size for new font size, but then user changes
  mind and reverts to previous font size and the box snaps back
  (or only allow expand on writing text - no font size tricks etc.)

Bug 92882: Right-Click Needed on Image


Rethink kpView/kpViewManager design because of:
- performance
- problems with the image "sparkling" at zoom levels % 100 != 0
Ideas:
- region-based rendering (for performance)
- time-based renderer (like game)
- do something about this horrible tempPixmap hack (so slooooow)
- resize handles overlap text at 100% zoom; overlapping selected doesn't
  help; could show selection border outside of view in scrollview empty
  area (if selection is really to right and/or bottom); solid 1-width
  border in thumbnail for selection
- text antialising
Bug #6: modified states incorrectly set
- what undo/redo should do in middle of polyline?
- what about being unable to redo since did another op?

kolourcircles.cpp; rendering glitches at 37% with rect sel tool

Bug 89594: inserted text not anti-aliased

concept of text pixmap is flawed since it doesn't allow for antialiasing
  selections
- maybe always have 1 width display of border - try editing a B&W icon to see what I mean

eraser cursor border should not get magnified


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

kptoolpreviewdialog: wrong if new pixels result in diff selection transparency

- Smooth with hotkey (blur painting, not smudge) (Hogne Titlestad+Antonio Bianco)
- "Lighten/Darken tool, even without antialiasing. Works *wonders* when
   making gfx. Combined with a smooth/blur tool amazing results can be
   achieved ;)  I don't think this would be hard to implement at all,
   perhaps as an option for the Pen.  Darkening with the right mouse button
   and lightening with the left.  Then blurring here and there to make
   smooth highlights." (Hogne Titlestad)

blur & sharpen tools


100% thumbnail mode

thumbnail has a rectangle that shows the visible mainView area


arbitrary tool sizes (Mikhail Capone)

2. Remember the last used brush sizes - in order to have room for this,
remove some of the current fixed brush sizes.?

- and + for arbitrary shape/brush size

"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 feature.

Bug 89145: wish: rouded rect with round corners (options for corners that
don't stretch with rect + radius)

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

dashed lines (David Ling)
- check old commits

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


Antonio Bianco
- other programs DeluxePaint, grafx2, promotion, artgem

rotate floating point (Christoph Eckert)

menu opt to acquire screen captures since not all know about
CTRL+Ptrscreen. (Mikhail Capone)
- add ksnapshot mode to paste grabbed thing directly into kolourpaint so
  that kolourpaint gets a "Take screenshot" menu item
(Bela-Andreas Bargel)

When scaling pics, I often wondered if Keep aspect
ration could be true per default. (Christoph Eckert)
> Would remembering the last setting be good enough?
> > If it would be persistent (e.g. saved in kolourpaintrc) it
sounds really great!

intuitiveness of "Set as Image" when haven't yet pulled and sel has transparency

Jonathan Turner - userinstinct:
- "Tried to email image
  Had to save first, did not like that"

grid at 400% since 2 people on kde-apps have asked already (think grid
isn't there)

Bela-Andreas Bargel:
- kooka scanning

- acquire from kamera

fix Bug #23. Changing tool options while in the middle of a drawing option may
   confuse KolourPaint.

use KSaveFile for atomic writes - if the temp is put in the same place as
dest, what about small media like floppy?

resize doc or sel freehand - usershapepoints should be (after string freeze):
"oldX x oldY - newX x newY  |||  (+|-)deltaX x (+|-)deltaY"
instead of
"oldX , oldY - newX , newY  |||  (-)deltaX x (-)deltaY"
(the "+" is to show that it's a delta, not a size; on 2nd thoughts, if
they're both -, it would be ambiguous)

Dialog caption "More Image Effects" --> "More Effects"

"Image / Invert Colors" vs "Image / More Effects / Invert"

"Edit / Paste in New Window" creates a "Set as Image" command -
name doesn't make sense in that context

"Soften & Sharpen" in cmd history should be either "Soften" or "Sharpen"

scaling image with sel (no pixmap), and then manip sel adds extra "Selection: Create"
(this is a rather difficult problem to fix since sel has already been used
 for Image/Scale so would be inapproriate to replace it in cmd history)

spraycan should be continuous - merge with kpToolBrush base?
* [cleanup] remove all instances of kpTool*::setMode() - use proper class hierarchy

tool to select rectangular area to zoom into

Emmeran Seehuber:
"
Shortcut Key to move within the content if the scrollbar is visible (like KWin
ALT+LeftMouse to move windows) (e.g. holding the alreay taken M shortcut
would set the mouse cursor to a move cursor. Now pressing left mouse and
moving the mouse cursor would scroll the content of the window)
Up/Left/Down/Right to move within window content
Goto next/prev color in palete
"

* 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.

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

* picture effect - simple effect missing - blur, sharpen,
  Hue, saturation,... (mracek who is at the domain xko period or dot cz)

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

kpCommand::size() additions can overflow INT_MAX; protect against - but then
user would have already run out of memory...

sel border should not be xored against uninitialised rgb values (transparent pixels)
e.g. CTRL+A, Crop Outside the Selection

tool box icons should have same background color as the other controls

* 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

  - but then what about kpCommand::size()?

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

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

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)

config dialogs (look into new kconfig generator)
- visual transparency background
checkerboard + grid doesn't mix at certain zoom levels

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

double click on transparent in colour tablet and press OK - becomes black

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)


KolourPaint 1.6
~~~~~~~~~~~~~~~

better graphics backend
- screen depth independent (Bug 85280)
  + 8-bit palette images (Antonio Bianco)
- supports alpha (Hogne Titlestad)
- option for antialising tools (Stefan Taferner, Mikhail Capone, Antonio Bianco)
AUDIT: X.org has -pixmap24 & -pixmap32 - how will that affect Undo/Redo
       size calculations
creating new text selection sucks a lot of CPU

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

refactor kpToolConvertToGrayscaleCommand:
- become kpColorEffect
- move in kpPixmapFX::convertToGrayscale()

with a 2 colour image, save as monochrome - ok
but then add a colour and then save - it's drastically different -
all black & white (and just all black if not dither); need better
monochrome dither than Qt

reduce to a custom number of colours like IrfanView (Christoph Eckert)

Bela-Andreas Bargel:
- add a "info-button" (or menu-entry) which
  shows all (meta-)data about the image (eg. to set its
  dpi-resolution, its size, jpg/png-comments, colour
  mode, used colours, file size,EXIF-data...)

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


Bug 92150: view tiffs with more than one page (+Christoph Eckert)
- animation/film strip (Hogne Titlestad)

Bug 86509: Multiple layers when editing image
(1-bit transparency only)
+Dennis Pennekamp


Stephan Unknown
- KIPI support
"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

improve contrast quality

Brad Grant:
- red-eye removal (see QImage for windows and LPhoto from Lindows (Bela-Andreas))
Bela-Andreas Bargel:
- (LPhoto from Lindows): red-eye removal, enhance image


DPI when printing?

Jonathan Turner - userinstinct:
- "Zoom indicator did not work properly";
  Can't reproduce, problem is probably: you can enter a new zoom and not
  press enter and continue painting - should reset to old zoom, maybe
  add tooltip to say press enter?

Bart Symons
- "Image" -> "Properties"

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
- saving transparency background
  (for formats like BMP which don't suport transparency)
- Un-DoNotAskAgain

Edit/Find a particular colour

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

Bela-Andreas Bargel:
- greyscale masks

selections
- should be able to use selection/image commands on text box

* Mike on Sunday 29/Feb/2004, @10:54:
  - 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.
mracek who is at the domain xko period or dot cz:
* fileformat - missing gif

Emmeran Seehuber:
"
> The Escape-key
> could exit the input text mode, so that the other tools would be available
> again.
"
- also only disable single key triggers when the text sel border is complete
  to avoid 100ms hit (after 100ms hit required to enable single key triggers
  after old sel deselected) every time a new text selection is being drawn
  out

make sure session restore actually works

keyboard friendly scrollview

http://dot.kde.org/1078028599/:
* Anonymous on Sunday 29/Feb/2004, @09:15 (+Ismail Belhachmi):
  - GIMP style rulers


KDE
~~~

re-enable the ICO write support

multicolumn KToolBar's (Bug #3)

fix edit/paste may disappear due to klipper - Bug #85456


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???

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 :)

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

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

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

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

colour palette shows frequently used colours for the current image

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?

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.

Brad Grant:
- rotating a JPG losslessly
- resampling a picture to enlarge it with quality choices (bilinear,
  bicubic, lanczos, ...)

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

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"

Bela-Andreas Bargel:
- extra toolbar with slideshow and other image viewing options
- "CTRL-mousewheel" to zoom in/out of the window

Christoph Eckert:
- Icons could be rearranged; drawing and editing tools should
  be grouped together instead of being spread over the toolbox

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.

Dirk Schnberger
> I stumbled about yet another (end user) paint program. I cannot stand its
> GUI, but its user manual seems to fit on on HTML page.
> Perhaps you can find some ideas for features for future KolourPaint
> versions.
>
> http://www.simugraph.com/drops/

Enrico Ceppi:
- add a Selection working as Polygon
- add a "Paste inte selection" or a "Paste into color" (to overwrite an
arbitrary area)

mracek who is at the domain xko period or dot cz:
* filler - cannot edit scale to fill
Example: win app fotocanvas 1.1 trial (acdseesystems) - it
is good, but no transparent, no paint, only changing photo
(picture).

Hogne Titlestad:
- http://www.squirreldome.com/

delta drawing of resize line to stop flicker

kpMainWindow::slotEnablePaste() is slow due to kpSelection::canDecode()
- QMimeSource::provides() sucks up most of the CPU (sometimes 4s),
  while QImageDrag::canDecode() usually takes up to 250ms.
- Trigger this by holding down CTRL+Printscreen
- best we can do is execute this check once per process (instead of per
  mainwWindow) and update all the mainWindows

draw rectangle and land on doc resize handle - wrong status mess
- that's a problem with Qt not giving EnterEvents when the mouse move is
  initiated from another object (see kpViewManager::viewUnderCursor() for
  the same problem)

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

Bart Symons
- "Edit" -> "Duplicate current image" (opens up another Kolourpaint instance
with a duplicate of the current image)

Emmeran Seehuber:
"
P.S.: Kolourpaint feels a little bit Deluxe Paint / Personal Paint (both are
Amiga programs) like. A toolbar option/checkbox like "Instant float
selection" would make this perfect. When activated, performing a selection
would instant copy the selection as "brush" and would float the brush under
the mouse pointer. When you press left mouse the brush would just be painted
into the picture at the given position. This is very usefull to retouch
pictures.
"

QColor::enterAllocContext () looks interesting

can't copy 1600x1200 season.jpg double scaled from one kolourpaint to another
(Bug #20)
