
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:


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

In the "Notes" section of the Handbook, change the second paragraph to avoid
using "However ...".  [Thurston]

Rename fill_style.png and line_width.png to use the plural form for consistency
with brush_shapes, eraser_shapes, spraycan_patterns and
selections_opaque_transparent.  [Thurston]

add a key to show/hide all panels (toolbar, toolbox, palette box) giving a
semi fullscreen mode (Antonio Bianco)

when in the palette editor window, clicking on the image selects the color
and show it in the palette editor, as active one : changing it, results in
a real time changing to the image - non-modal
(Antonio Bianco)

snap-grid. If you dont know what I mean, you could have a look
at XPaint [or PPaint/DPaint on any Amiga ;-) ]: You can give a x and y
value and get a "magnetic grid" where the brush "snaps in"
magnetic snap-grid
it would also be great for tiling an image!
> have any suggestions on what the UI will be like?
I always used paint-programs with the same kind of UI: One vertical bar
with the most used tools on the left (and sometimes on the right) side.
Left Click for using the tool and right click for configuring. This
leaves much place on the screen for the picture (another reason why I
like kolourpaint). If you would use the "right click" on a tool the
same way even the palette would fit on this bar.
(Michael Hoehne)

"QPrinter/KPrinter default resolution" thread on kde-core-devel
- low resolution when printing
- also have to consider DPI of image

I noticed a bug in the text tool. I have the subpixel hinting
turned on but I suppose this should not be used in kolourpaint since
it only works on LCD displays. never use subpixel hinting even if
it is enabled globally. If you draw text in KolourPaint on a subpixel
hinting KDE on LCD, save the file and then view it on a CRT, bad.
(Amir Michail)


hold SHIFT while pen does straight lines

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


checkerboard static in thumbnail but moves with doc in mainview - make it
static in all places so that it's clear it's not part of the doc


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

text box create != cmd
=> deselecting empty (more accurately, untouched) box = no text box

text toolbar permanently floats to stop view from bobbing up/down

CTRL+Backspace deletes word


Rethink kpView/kpViewManager design because of:
- performance
- problems with the image "sparkling" at zoom levels % 100 != 0
Ideas:
- 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
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?
- when deselect empty text box, delete it --> create text box is not op until write in it for e.g.

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

Bug 89594: inserted text not anti-aliased

- 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
realtime "clock" that shows angle and direction for rotate
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


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


rotate floating point (Christoph Eckert)


Jonathan Turner - userinstinct:
- "Tried to email image
  Had to save first, did not like that"
Had a discussion with the Chief Investigator:
If you don't save the image:
1. what format will it be in (a huge BMP?  Or arbitrarily chosen JPG?)
2. what name will it have?  0045_temp-user.png?
3. why wouldn't you want a copy of an image you send to someone?  Yes, it's in your "Sent Items" but...
Suggestion: Export instead of save.  But what if really want to save?  Would have to prompt, save, then invoke Mail again - a bit round about.
What do other programs do?

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)

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)

Lutz Schweizer:
"
> On a related note, I'm planning a new cursor for the pen: it will be like
> the cursor currently used for the brush tool.  What you prefer that or the
> current arrow cursor?

frankly, I would prefer the current arrow cursor for the "pen". If someone
prefers a cross (with thin lines), he may even now use the brush with the
"1x1" option; isn't that practically equivalent?
"

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, Luke-Jr:Bug94607)
- option for antialiasing 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


in the "more effects" windows add "saturation", "highlights" and "shadows"
(Antonio Bianco)

in the "image" menu add a "fade latest effect" voice, that if selected
brings up a slider that fades the image before with the image after the
effect : this allows fine adjustements, and it's really useful;
(Antonio Bianco)


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 (Luke-Jr:Bug94651)

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

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/

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

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

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

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)

the resulting file doesn't get displayed in
Kolourpaint after saving (hey, this is not a complaint), and
undo is not possible this way. (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)

