Fading Memories

About

Ramblings about books and other things that will soon fade from my memory.

Boudewijn Rempt

index | rss1.0

Check out my sculpture website: www.boudewijnrempt.nl.

There's more...

Creative Commons License
The original artwork is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.

Roundabout through identi.ca

    follow me on Identi.ca

    Categories, too

    Find


    Archives

    Other things here at valdyas.org

    2004-09-27

    Long time no blog

    After the last altercation, I felt a little disinclined to blog, after all a 'planet' doesn't offer the creature comforts Usenet offers for the practicing of the noble art of flaming. Plus, and perhaps more importantly, I have been busy. Work has been picking up and I'm doing a quite interesting job connecting medical information systems using agents. I've celebrated my thirty-fifth birthday with appropriate rituals, like the eating of rich viands and the releasing of Krita.


    Regular readers of The Dot will have noticed this already, but the very first preview release of Krita is out of the door. Bart Coppens has made two nice animated movies of working with Krita that were impressive even to me. I'm the person who keeps track of the TODO's, not the ALREADY_DONE's, so I was feeling a bit pessimistic. People tell me that my despondency was making itself felt in my release announcements, so I made a special effort to make the dot announcement upbeat.

    It might also have been the touch of flu that's making me grumpy, or the fact that I wasn't able to fix the zoom function in time for the release. This morning I checked in the fix, and now Krita can not only scale with the best, but zoom, too.

    My father has visited us for the occasion of my birthday, and like a proud schoolboy showing off his fröbel-work, I showed him Krita. He's a pretty good Photoshop user, so his opinion of Krita carries weight with me. He rather likes the clean look & feel, liked the fact that our tools are in ordinary toolbars instead of floating palettes (those always obscure exactly the area of the image I need right now, he grumbled), and when I told him about painting-with-filters, he asked 'sharpen, too?', to which I replied with grin, 'sure'.

    I'm going to conclude with Krita's TODO list as it stands now, purely for information purposes, and to show people who'd like to hack on something that there's plenty of interesting work left to be done, but I feel the strange, perhaps even foolhardy, urge to revisit the topic of Kopete's send key. Anyone interested in discussing this with me, please press page down, now. Don't read this. It's not for you. It's a recording for posterity.

    There we are. Both streams of readers rejoined, brotherly looking forward to... <drum effects/> The Great Krita TODO:

    
    Items with a hash have work started on them.
    
    Scaling
    
    	- replace calloc and free by new and delete.
    	- check if memory allocations fail and free the resources if
    	  they fail.
    	- replace the structs CONTRIB and CLIST by some STL or Qt
    	  container.
    	- There is still a bug. The rightmost pixels in the scaled
    	  image are wrong. Actually it is not really a bug in the
    	  scaling code, if you draw a one pixel line at the rightmost
    	  edge of the image and scale it, the line is still there,
    	  there is just an addition line right of it. So the image is
    	  not scaled to the actual target width
    	- use iterators to access pixels.
            - Preview dialog should use KDialogBase
            - Decide on more user-friendly names for the scaling algorithms.
    
    Core
    
    	* Channels showing (note that we don't do Gimp-type grayscale
    	  mask channels, just showing/hiding the various color
    	  channels.
    	* Histogram computations (#Boudewijn)
    	* Adjustment layers (Layers that dynamically apply a filter to
    	  the layer they are linked to, these do not store actual
    	  image date, except for an occasional mask)
    	* Loading and saving of selections
    	* Colorspace-aware difference between pixel function
    	* Anti-aliased filling (requires some simple colorspace
    	  function to merge 2 Pixels) -> also, make fill use
    	  the new cancelable progress meter the gradient tool uses.
    	* Fix composite ops (nick from the code gwenview nicked for
    	  the xcf import)
            * Rework iterators to allow iterating over pixels (#Cyrillle, Casper)
              Add iterators that run over all pixels in a rect, instead of pixels
              per line.
            * Auto-extending layers (#Casper)
    
    User Interface
    
            * Give color strategies an option page just like tools. Give layers an option page,
    	  combine both pages to show for layer properties. Color strategies can be stateful.
    	* Replace krita ruler with koruler. (This may be impossible because Krita doesn't use pages)
    	* Create brush-shape outline cursor
    	* All dialogs ui-fied (#Boudewijn, Sven, Casper)
    	* Tabs in dockers drag-and-droppable (vector of docker
    	  windows, create new docker if tab dropped outside existing
    	  docker window)
    	* Implement the following dialogs / widgets:
    		    - Select by color range (#Boudewijn)
    		    - Variations (#Boudewijn)
    		    - Transform (#Boudewijn)
    		    - Gradient (nick from Scribus?)
    		    - Histogram (#Boudewijn)
    		    - Modify curves (nick from Perico)
    	* Add history docker
    	* Add auto-scroll to canvas while painting	  
    	* Add previews to all relevant dialogs. (XXX: let preview work 
    	  on rendered QImage, or on scaled image?)(#Bart) 
    	* Allow an active tool for every pointer present in X. (#Adrian -- no
              support yet for Wacom tablets that have more than one stylus)
    	* File/Open should list all image types Krita can handle, and simply
              import non-native images, instead of forcing the user to use the import
              image menu item.
    	* Allow guides to be disabled. Allow diagonal guides (useful
    	  for perspective drawings)
            * Create templates for often-used image formats. Add save-as-template
            * Check OASIS file saving.
    Tools
    
    	* All tools must have a tool options tab (#Boudewijn, Adrian, Cyrille)
    	* Loading and saving of tool state (XXX: do we really want this? It is
              horribly confusing in the Gimp)
    	* Implement the following tools: 
    		    - Elliptical selection (#Boudewijn)
    		    - Crop (This is a must-have -- tried to do something with Krita
                             today and had to go to the Gimp)
    		    - Freehand selection (#Boudewijn)
    		    - Polygonal selection (#Boudewijn)
    		    - Continguous selection (magic wand) (#Boudewijn)
    		    - pen(cil) tool (same as brush, but not anti-aliased) (#Boudewijn,
                          done, except there's still a little ant-aliasing present, perhaps
                          dependent on the brush).
    		    - fix airbrush tool (add rate option, add increase
    		      of brush size if kept in one place)
    		    - poly-line tool
    		    - rectangle tool (#Clarence, still some work to with opacity and so on)
    		    - ellipse too (#Clarence, still some work to with opacity and so on)
    		    - polygon tool
    		    - color changer, smudge tool,sharpen tool, blur
    		      tool, dodge tool, burn tool, sponge tool (These
    		      last are perhaps more generally: painting with
    		      filters tool)
    		    - stamp tool (paint with patttern/image selection) (#Cyrille)
    		    - Text tool
    		    - Measure tool
    		    - Pan tool (hand)
    		    - Gradient tool
    	* Pressure sensivitize all relevant tools (e.g. line tool)
            * Add resize slider to freehand tools that resizes the mean brush size.
              
    
    
    Plugins
    
    	* As many filters as possible :-)
    	* Fix filters to use current image, instead of first image in
    	  the document.
            * Make tools and color strategy plugins into ktrader managed
              objects.
    
    That's more or less all for version 1,0; afterwards I propose to move to:
    
    Core
    	* Add bit-depth independence
    	* Completely hide data storage backend from the code behind
    	  iterators.
    	* Add color models for LAB etc.
    	* Make pipe brushes pay attention to parasites
    
    User interface
    
    	* Add action (macro) docker
    	* Add navigation/zoom docker
    	* Add scriptability 
    	* Add third cursor mode:  outline of current brush
    	* Rethink document model (perhaps add dynamic links between images)
            * Use OpenGL if available to composite checkerboard with image so
              while scrolling the checks can stay in place, and the partially
              transparent image move. This maybe needs Qt 4.
    Tools
    
    	* Implement path tools
    	* Calligraphic pen tool
    	* Sumi-e brush tool
    	* Natural media tools (chalk, ink, oil, watercolour -- fun!)