Boudewijn Rempt

Monday, 18 June 2012 11:57

Krita Starts Supporting OpenColorIO

Krita has supported color management since 2004. In fact, there's no way around color management in Krita -- no switch to turn it off, it's the cornerstone of how Krita works with images. But, as Kai-Uwe Behrmann explains, there are several ways of approaching color management. For print, ICC is the way to go. That's what Krita has always focussed on, and that's why professional artists can use Krita in a workflow that includes sending CMYK tiff files to publishers. Krita depends heavily on LittleCMS: in fact, we don't just use LCMS for classic color management tasks, but also for things like the curve adjustment filter.

But Krita has also supported, since 2005, working on openEXR images, which are mainly used in the film studio world. Now, the movie world has a different approach to color management than the print world. For instance, there is a big difference between the way colors look when projected onto a screen compared to a monitor, and there need to be ways of compensating for that.

In the film production world, the preferred library to provide color management is OpenColorIO, ocio for short. In the past two weeks I integrated ocio into the Krita display pipeline. It's still completely optional, but when present will make it possible to select source and display profiles for any image in 16 or 32 bits floating point RGB colorspaces. This works fastest with the OpenGL canvas, but should also work fine with the ordinary canvas.

Of course, there are still quite a few bugs, since nobody has used the feature in anger yet -- but still: it's a big milestone!

Tuesday, 15 May 2012 09:38

Krita Around the World

Since the 2.4 release of Krita, there's lots going on in our community. There's more and more art done in Krita appearing, on our forum, on our deviant art group and in the blogs of happy users. Let's share the fun! Look at this delightful spring image by Canitiem.

Krita at LinuxFest NorthWest

Oscar Baechler has released the video of his presentation of Krita at LinuxFest NorthWest -- with impressive results and reception, considering he used an old beta of the Windows version of Krita! Fortunately, now there are 2.4 packages available for download for almost all distributions. Watch his awesome introduction:

In his blog, he also presents a screencapture of painting a Bob Ross landscape in Krita:

It's always great to see that Krita is capable of many different styles! Just take a look at Fernando's impasto work on our forum -- in a beautiful style, reminds me of Daumier.

Apart from the presentation, Oscar also sat down at the KDE booth and demoed Krita -- but as Jos Poortvliet shows in his blog, he had competition. Moe Jackson had never used Krita, or even a tablet, but sat down and started having fun, painting a meadow and trees:

Great work for a first-timer! Carl Symons had a bunch of DVD's to give away, and Moe got one, of course.

Also read Scott Dawdle's review of LinuxFest NorthWest. Remember -- there are still DVD's for sale -- for everyone who didn't win the main prize at the LFNW raffle!

New Brush Tutorial

Ramon Miranda, the author of most of the brush tips, patterns and other resources in Krita has just released a tutorial on creating brush presets. It's long and very much worth it:

Libre Graphics Meeting

At the Libre Graphics Meeting, the GIMP team released GIMP 2.8 -- congratulations guys! Looking at their commit rate, they certainly are having loads of fun hacking on GIMP again. But it was not all GIMP, since Animtim and Lukas Tvrdy represented Krita at LGM 2012.

See their blogs for a full account:

Animtim:

LGM 2012 : Krita Workshop report

Using Oyranos on Kubuntu 12.04

LGM 2012: a crazy week in Vienna!

Lukas:

Libre Graphics Meeting 2012

Ramon Miranda

Slides from LGM 2012 Talk. Digital Painting with open source tools

Personal LGM 2012 report

Animtim is post-processing the talk videos, by the way.

Next year, LGM will be in Madrid.

With Krita 2.4 happily released, the Krita team is working hard on what will become Krita 2.5. Krita 2.5 should be released some time in July already, but that doesn't mean that it will be a boring release! Here's a short overview to whet your appetite:

Windows

Krita on Windows is getting more and more stable. The installer you can download from the KO GmbH download page still warns you that it is extremely experimental, and that's true! I regularly build it from git master, and as any artist can confirm who uses Kubuntiac's script, that's dangerous living. But on the other hand, at first we got many reports from people who couldn't run Krita for one reason or another, and we seem to have fixed most of those problems. And then -- Oscar Baechler used a beta of Krita on Windows for his workshop at LinuxFest Northwest with few problems.

Smudging

Last week, we got a new smudging option for the colorsmudge brush: dulling. This works a bit like smudging in Mypaint currently works. In git master, we already have a few presets that use this mode! Check Animtim's blog for more information -- this screenshot is from his blog.

David Revoy also quickly produced a very painterly sketch:

Composition docker

The compositions docker allows you to save sets of layer configurations. So, if you have a complex layer structure, you might want to hide or show sets layers and switch between those configurations, say your sketch structure and your paint structure. Sven's blog has all the details! And David Revoy made a video showing why it's a really handy feature:

 Paper sizes

We used to have a set of old templates for the various color models Krita supports in various sizes. This actually isn't what the templates were intended for, so we added a selection box to the custom image window that allows you to select predefined size/dpi combinations. The templates section is thinned out a bit and need filling up again. See the how-to-create-a-template tutorial on the forum.

Textured painting

As requested by David Revoy, Krita now allows you to use a texture to modify your brush while painting. The feature isn't finished yet, but will be ready for 2.5.

Theming

On Linux (on Windows there are some technical problems that we hope to be able to solve), you can now select a color theme for just Krita. We borrowed code from Digikam for that -- thanks Gilles et al! No longer do you need to make your entire desktop dark to have a dark look for Krita. As seen in the screenshot above.

Improved OpenRaster support

OpenRaster got extended thanks to the efforts from MyPaint's Andrew Chadwick, and Krita has followed suit: OpenRaster (and .kra) now saves and loads the lock status of layers as well as which layer was active.

Preview in Pattern Selector

The pattern selector got a large-size preview pane and was also turned into a docker.

And there'll be lots and lots more to look forward to!

 

Tuesday, 24 April 2012 06:58

Summer of Code 2012

It's that time of the year again... Even though it's a pretty cold april in Deventer, the Netherlands, we're feeling warm glow of another impending Google Summer of Code. This year four student spread over three separate and distinct continents will be cutting their teeth on Krita. Last year, Krita was one of the first projects to actually release the work of a student when we published a snapshot of what would become 2.4 half-way the summer. This year, our 2.5 release is planned for June -- so who knows what will happen?

But first let me introduce the students and their projects. There's a nice variety in experimental and directly useful

Color Managed Printing for Krita

Joe Simon, who has also worked on the Kolormanager color management kcm for KDE, will work on implementing proper color managed printing in Krita. Krita right now basically has no printing support to speak of, so this is a challenging enough task! This project happens under the umbrella of the OpenICC project.

Perspective Drawing in Krita

Shivaraman Ayjer is perhaps even more ambitious. Krita already has drawing assistants, objects you place on the canvas and that are used by the brush system to guide your lines. That makes it easy to draw lines, ellipses and so on that look freehand but are accurate. A more advanced assistant is the perspective assistant which allows you to draw lines towards a vanishing point with for instance opacity, size of saturation decreasing the closer you get to the horizon.

Shivaraman will add a mode where simple meshes from Blender can be imported, positioned and then used to draw in perspective.

Infinite Canvas/Wraparound Canvas for Textures

Shrikrishna Hollais tackling two related wishes that users have been asking for for a long time: an infinite canvas mode where you can pan the image any which way and can always continue drawing. This mode is great when sketching. Then there is the opposite: a mode where the canvas can be panned but the edges wrap around. This is ideal for creating patterns and textures.

Sandpainting Brush

Francisco Fernandesis has the most experimental project of the four: he will work on a new particle-based brush engine that will give a feel like you're painting with a stream of sand, and the sand will be re-arrangable, like ordinary color can be blurred, with his engine the particles can be moved along and mixed.

Thursday, 12 April 2012 07:29

Krita 2.4 Released

Krita 2.4 is dedicated to the memory of Jean Giraud/ Mœbius


 

The Krita team is proud to announce the release of Krita 2.4. Krita 2.4 is the second release of Krita that is ready for end users, and the first that is ready for professional digital artists. With many powerful brush engines and unique features as multi-hand and mirrored painting, Krita supports creating concept art, storyboards, textures, matte paintings and illustrations. Krita is already used by artists around the world.

(David Revoy, snoupfilou, Boudewijn Rempt, Enrico Guarnieri, Alexey Guranov, Timothee Giet, Ramon Miranda, Kargall Lefou, Fernando Michelotti. See the Krita Gallery forum for more artwork.)

Krita 2.4 adds new brush engines, many improvements to the existing brush engines and new productivity features like mirrored painting, plus important improvements in performance and compatibility with other applications. Ramon Miranda and Timothee Giet have assembled a brand new pack of patterns, gradients, brush tips and brush presets. Artists can exchange all these resources through the Get Hot New Stuff sharing server. Your strokes now can not just be influenced by tablet pressure, but by many more options, ranging from perspective guides to time and distance.

For an in-depth look at Krita 2.4 and more exampes of art created with Krita, you can download the About Krita 2.4 PDF. For reviewers, the Krita press kit contains the pdf plus high-res screenshots featuring artwork and new features.

Krita 2.4 is already packaged for many Linux distributions, and there is an experimental installer available for Windows as well. Check the Download page for more information.

 (Krita 2.4 splash screen by Enrico Guarnieri)

With this release, we are also releasing the contents of the Comics with Krita DVD. You can watch the tutorial videos on Timothee's Youtube channel, or download the entire contents using bittorrent (or grab the torrent directly). You can also support Krita and order the physical copy!

Monday, 25 January 2010 22:11

Last week in Krita -- week 3

Last week in Krita -- week 3

Week 3 finally saw a drop in the number of bugs: we're at 86 now. And apart from all the work done on the KOffice libraries -- and every improvement there is an improvement in Krita, and despite many hackers being busy with exams or papers, we managed a grand total of 130 commits, making it hard to keep up. And the 2.2 feature plan shows a marked increase in green! And we have also started on a feature plan for 2.3.

Code

Cyrille Berger fixed more bugs in our handling of metadata, especially ISO values. Following refactoring of pigmentcms, Cyrille fixed bugs in loading .kra files. Cyrille also refactored the memory management of colorspace plugins. A feature that was first implemented in 2007 and broken (by Boudewijn) in 2008 was once again reinstated: thanks to Sven's work on the brush presets, Cyrille could fix stroke recording and make it possible to edit recorded strokes, making possible, for instance, to change the brush preset used when painting the recorded stroke. The way Krita stored data for response curves, for instance for pressure sensitivity was inefficient, so Cyrille created a better, more generic way of handling this data.

Lukáš Tvrdý found the time, next to his last exam, to port a number of his brush engines to the new preset-support architecture. Additionally, he finished work on his particle brush engine, but didn't quite get round to committing it.

Boudewijn Rempt, following Dmitry's suggestions improved some caching mechanisms in our paint device code. Boudewijn changed Krita's opengl-based canvas implementation to use GL_RGBA16 whereever possible. People using one of the new wide gamut monitors (that might have up to 12 bit/channel display panels) should now be able to actually see the difference between 8 and 16 bit/channel colorspaces. Also, since OpenGL is still a tricky business, what with proprietary, closed source drivers causing no end of trouble on Linux, Boudewijn made sure that if enabling OpenGL causes a crash, Krita will revert to the Arthur canvas next time krita is started. As promised last week, there was also some inconclusive work on the psd filter and the mixer canvas, but it looks likely that by the end of week 4, mixing will once again be possible. Boudewijn fixed a bug in the OpenRaster saving code. On a related note: Jon Nordby, a MyPaint developer, managed to get OpenRaster support into Gimp's mainline!

Edward Apap started tackling the perspective transformation tool. This has bitrotted to a large extent, so the renewed attention is very welcome. This led to an interesting discusson on #krita about transformation tools: ideally, we'd have one tool, with a good interpolation strategy that can warp and deform images with much more freedom than the current two transformation tools can provide. Edward also fixed the blur filters so they work with filter layers, cleaned up the selections menu, fixed a crash in the brush preview, implement variable radius selection feathering made it possible to configure whether you want your curves antialiased or not and fixed the settings page for color management as well as a cleanup of the other settings pages. Oh, and he added aspect locking for the grid configuration.

Sven Langkamp made it possible to actually select presets. There are a few more small steps needed, but soon I will upon adventurous artists to start working on a preset sets we for our brush engines we can ship with 2.2!

Patrick Spendrin cleaned up after us and made Krita compile on Windows again.

Dmitry Kazakov posted the next version of his composition update patch: this patch fixes bugs when using filter layers. It is still experimental, so he just presented a patch for everyone to test, and a couple of problems were discovered and fixed. I expect his patch to be committed this week, after he has done his last exam.

Lukáš gets started!

That's it for last week: this week will see Lukáš' first week of working on Krita full-time, made by the more than 160 generous sponsors! We had a kick-off meeting on Sunday afternoon, and created a benchmarking structure, as noted above. The first day is over now, when I'm writing this, so I can already say that we now have benchmark tests in place for the tiles backend, the pixel access functions and a roundtrip test: loading, rendering and saving a big multilayer document. Let's see what conclusions we can draw from that -- and expect a big update by the end of the week.

Wednesday, 20 January 2010 08:05

Last week in Krita -- week 2

Last week in Krita -- week 2

I am not sure -- last week felt like a quiet week in which nothing much happened. But the numbers show otherwise: the Krita team made about 95 commits. And our testers have been busy as well, so we are now over 90 bugs. Eek! Soft feature freeze has hit, which was accompanied by a frenzied adding of todo's to the 2.2 feature list. After the Big Freeze, the Big Thaw has set in in the Netherlands, showing that once again, coding and weather are not synchronized.

Code

Sven Langkamp improved startup time of Krita by optimizing the code for loading gimp-style brushes, fixed the full-screen shortcut as well as the show/hide dockers shortcut. Sven also made it possible to save presets by name and have them restored by name, as well as fixing bug in a race condition on startup caused by presets trying to access a gimp-type brush resource before that resource was loaded. Krita loads all its resources in threads on startup, so we can present a usable application as quickly as possible. This design dates back to the days when Patrick Julien was maintainer, and we've kept faithful to it. Sven also fixed the painting of the brush outline cursor. This is not the definitive solution, however, there is still some ugliness in the code that's irksome to the developers, but for the user, there won't be much of a visible change. Still, we like to run a clean ship!

As an example of that cleanliness, Adam Celarek continued cleaning up tool code. He removed some constructs that had seemed a good idea in 2004, but that never were used! He also made the tools behave better, so the Escape key now ends a polygonal selection.

Lukáš Tvrdý added a "flow" option to the new soft brush brush engine. This is not to be confused with Photoshop's flow slider, having something like that is still a todo for 2.2. Lukáš also started porting his brush engines to Sven's refactored preset code. Tomorrow, that's Wednesday, Lukáš will have is last exam and barring having to redo one or two (which nobody expects!), he can get started on the Action Plan after a bit of rest and recreation.

Vera Lukman cleaned up code related to the brush & color palette, making sure memory is freed. Vera has started an internship, but her boss has okay her visit to the Netherlands, so she'll be at the Krita sprint for sure!

Adrian Page continued updating Krita's plugins (of which there are many -- most Krita functionality is implemented in a plugin) to KDE 4 standards, removing obsolete constructions that were outputting user-visible warnings on Krita startup.

Boudewijn Rempt did some work on the mixer canvas: this is a big feature and most of it had to be rewritten after the code had bitrotted since Emanuele Tamponi became to busy with university to work on Krita. Expect more inconcusive "did some work on the mixer canvas" messages in the weeks to come! Boudewijn also 'finished' the gif import and export filter. Now on the topic of the gif filter, here's a big, fat warning. Krita is an application for painting and working with true color images. It only supports true color, ranging from 8 bit/channel to 32 bit/channel. Krita is not a pixel-precise, indexed-color based smiley or icon creation application. If you want to save your work as a gif file, you have most certainly chosen the wrong application to work with. Still, the code is there now, and any one looking to improve it can get started with the Gif filter junior jobs. Boudewijn also implemented some caching mechanisms that improved performance when showing thumbnails in the layer box, using selections or painting.

Cyrille Berger did some work on painting assistants. These are plugins that "guide" in an artistically fuzzy way your freehand painting. The line tool gives you a perfectly straight line (unless you use the curve brush), the line assistant makes the line look more hand-drawn. Then Cyrille started working on a refactoring of the pigment library, which culminated this week with the fixing of a crash on exit, as well as the caching of colorspace objects. This should help a lot with memory consumption and with performance, but we need to measure. Building on Sven's work, Cyrille also fixed the recording of paint strokes which I broke a long time ago. Spurred on by a question on the forum, Cyrille fixed the reading of ISO settings in the bracketing-to-hdr plugin, fixed a crash when using the color curve filter on 16 bit rgba images, and fixed a number of issues in our support of metadata. Cyrille also did lots of work on OpenGTL.

On Sunday (which, since I tend to write these articles on Monday or Tuesday, I take for the last day of the coding week) Dmitry Kazakov posted the latest version of his proposed refactoring of the way Krita combines layers into one result image. This refactoring is needed because we still have some errors in the handling of our adjustment layers and because of threading issues. The patch is complex and needs careful testing, fortunately Dmitry has added plenty of unittests.

Marc Pegon's patch that fixed drag-and-drop from Firefox into Krita was committed, so Marc has earned his place in the about box. Marc is currently investigating weirdnesses in the local selection mask mechanism, sleuthing away through Krita's code base.


Krita showing off a loaded animated gif (don't save it!), the new layout of the option panel for selection tools and the new layout for the mixer (which doesn't work yet).

T-shirts!

It's not a commit... But Kubuntiac continued designing optimized versions of the t-shirt design for black t-shirts, and aMan presented his own design. The final design needn't be ready until mid-Februrary, Irina Rempt discovered when investigating t-shirt printing possibilities. So there's plenty of time to get out your favourite graphics app and do a design! As a side-note: the t-shirts won't be paid for by the Krita project, instead, every cent we have received (and we are still receiving donations!), will be used to further development. Given the fixed costs, we will likely print a run of 15 or so. One thing I'm thinking about is setting up a little webshop to sell things like mugs, t-shirts and Krita branded Cintiq tablets with packaged copies of Krita.

That all for now -- if you have comments, go to to our forums and discuss!

Monday, 11 January 2010 21:09

Last week in Krita -- week 1

Wheee! Week 1! This week turned out to be a sort of flying start of 2010 for Krita, with lots happening in the source, preparations being made for the February sprint and some work on the manual being done.

Code

There have been about 70 commits this week, which is kind of a record.

The week started with Cyrille Berger starting work on a new OpenEXR import/export plugin. OpenEXR is kind of a complex library, and the previous import/export plugin was using API's that made it impossible to handle multi-layer OpenEXR images. The new plugin has been designed from the start to do just that. While working on this plugin, Cyrille noticed that we are having some problems with memory consumption. This was partly caused by OpenGTL leaking memory, so Cyrille committed lots of fixes in that library as well. We're still not done, though: Dmitry is looking into some leakage problems in the tiles engine, and LLVM is still using way too much memory. Cyrille also fixed a number of crashes in the bracketing-to-hdr feature.

Boudewijn Rempt finished the import side of the new gif filter. Actually, I'm not sure whether Krita ever could load gifs -- I think the old GraphicsMagick-based filter only provided export for gif. Boudewijn is now working on making export to gif work again -- but it is a bit of a why-bother thing. Krita simply doesn't support and won't ever (probably...) support indexed images, so Krita will never be the tool of choice for creating animated smileys. But it's not much code, since we can follow the lead of Shawn Rutledge's read/write qimgio gif plugin. This code adds a new dependecy to Krita, namely giflib. Boudewijn also did some work on the Photoshop filter, but there's nothing finished there yet, and he implemented a unittest that shows that the mypaint-compatible brush engine is beginning to come together. (I still need to find a voice here... First person, third person...)

Adrian Page fixed a lot of problems with OpenGL on Windows. Krita now uses the OpenGL 2.0 core API for our shaders. Kai-uwe Behrmann started a discussion on the mailing list about why Krita doesn't use the full capabilities of the 30-bit displays that are becoming available. Boudewijn provided a first patch to make that work, which was reviewed by Adrian and needs more work. It looks like it will be possible, but it might cause OpenGL to take some slow paths: there's some more work to be done here. Adrian also did some much-needed janitorial work removing deprecated constructs from almost all Krita plugins.

Marc Pegon joined us on #krita and started working on a very annoying bug: drag and drop of images from konqueror would work, but if you tried to drag an image from Firefox, nothing would happen. Marc sleuthed his way through the code and managed to produce his first patch just in time for inclusion in this weeks' Last Week in Krita. It'll be committed today. Welcome to the team, Marc!

Adam Celarek came back from his holiday in Tyrol and committed a big cleanup of the selection tools. The selection and paint tools now share the same common behaviour and the settings for the selection tools are represented by nice new icons created by Enkithan. Note that the shortcut for hiding the dockers is now ctrl-h, not Escape, since Adam discovered that setting the shortcut to Escape hid the most obvious way to close a patch in the polygon tools.

Lukáš Tvrdý was busy with his exams, but still managed to commit a new brush engine, the Soft Brush, which gives a very nice cloudy and almost-wet effect when using the right settings.

Those brush settings... There are so many now that it might be easier to write your own brush engine than to discover the best settings for some engines. We've long wanted to introduce the concept of presets, so you can save and load particular settings for particular brush engines. Well, Sven Langkamp is this weeks hero because he started working on that and came a long way towards this goal. He cleaned out reams of duplicate code in the brush engines to begin with and then continued to make saving and loading of presets work. There is still a lot to do, but the progress is enormous.


Manual

A quality application needs a quality manual. Krita 1.6 had a pretty good manual, one that went beyond the usual listings of menu items and dialog screens. Unfortunately, Krita 2 is really and thoroughly a different application from 1.6: we might be able to salvage a paragraph here and there, but that's it. So I've started a new manual on Userbase, which is the current place for application documentation. And since userbase is a wiki, anyone can grab a chapter and write a few lines! The goal with this manual is once again to produce a useful manual that teaches people how to use Krita. Please go through the table of contents! We also want to integrate video tutorials in this manual, for instance by hosting the videos on vimeo or something like that, and embedding them in the manual.

I hardly dare to say this... But I really expect that by this time next year the first books about Krita will start being written.

Bugs

Erm... We're at 87 bugs at the time of writing, despite a good number being closed this week. And our unittests aren't too hot either... And, as said above, we have to watch our memory consumption a bit. But that's par for course in this stage of development: everyone is rushing to get the promised features (check it out, the plan has got colors now) in before the soft freeze hits us. (Which is a weird thing to say, since it's been a hard freeze all over Europe for weeks now!)

Sprint

Well, the sprint is coming closer and closer. I've booked accomodation now, since there's no way I can fit all the attendants in my house -- and for the vision session, we even might have to find an alternative to the kitchen table!

And since a good sprint is a sprint with a t-shirt, I've made a call for designs. Our webmaster Kubuntiac has replied with a very cool design, but the issue is still wide open, of course, and no artist should feel prevented from joining in the fray! Just a note: black t-shirts seem favoured by most hackers...

That all for now -- if you have comments, hie yourself to our forums> and discuss!

Monday, 15 February 2010 18:55

Last week in Krita -- week 6

Last week in Krita -- week 6

Last week was a frustrating week for your correspondent: he didn't manage to get much work done on Krita, also because he had to leave for Kämpfelbach-Ersingen on Friday for the KPresenter sprint. Lukáš Tvrdý had a hard time as well: this week wasn't about performance improvmements, but interoperability, and the goal was to read version 6 Photoshop ABR brushes, and those are entirely undocumented. More of that later!

A measure of the issues this project causes is the number of commits: only about 67. We're currently at 95 bugs. Still, there's some good stuff to report on!

Code

Adam Celarek rearranged the default set of dockers. This wasn't a total success, but it shows that we need to discuss our default settings in Deventer. But if you have an opinion on that, let's discuss it on the Krita forums. There are some constraints, like Krita must fit on Boudewijn's tablet laptop's screen (1024x768) and there must be a minimum number of layers visible in the layerbox. Adam also has been branching out to other parts of KOffice and KDE! In Krita, Adam worked around a bug in Qt, continued cleaning up our tools code, fixed a layout bug in a color docker, brought the Krita vector tools closer to the KOffice vector tools, made shape selection with an ellipse work and started work on restoring the magnetic selection. (That was originally created by Emanuele Tamponi during the 2006 google summer of code, but never got ported to KOffice 2.x.)

Cyrille Berger continued having fun with Krita's recorder function, adding recording to the fill tool. He also fixed a number of crashes, mostly not yet reported, fixed a bug in the specific color selector when working with floating point channels. Cyrille finally fixed a bad, bad, bad, bug in Krita's OpenGL canvas, making it possible again to use OpenGL with colorspaces with more than 8 bits/channel. There were also some fixes in OpenGTL.

Dmitry Kazakov went on to fix bugs in recomposition code. Like I said last week, this code needs thorough testing by users in real-life circumstances. Give Dmitry a hand and stress his code by creating images with many layers of different types! Show us what Krita cannot handle, so we can fix it! Dmitry also fixed a crash in the cubic spline code.

Edward Apap fixed a bug in the painting code, cleaned up our maths toolbox and then committed a really nice innovation: fast-fourier transformation based convolution for big kernels. That might sound like gibberish, but it means that you should be able to blur large images with big blur sizes without being able to go for a coffee. (And at the same time, Edward fixed issues with the selection of channels to blur: you can blur only a subset of channels now.)

Marc Pegon got his subversion account this week -- congrats! He had been working for some weeks on bugs in our local selection framework. Krita is unique in that we don't have just a global selection and one type of masks, but we have global selections, transparency masks that mask out part of a layer, filter masks that filter part of a layer and local selection masks that protect the selected part of a layer. Marc did a lot of work, fixed a crash, made it possible to move a local selection to another layer, fixed some more usability issues and finally fixed the thumbnail for the selection masks.

Lukáš' task for this week was to make it possible to use Photoshop brushes in Krita. Now this is a problem: the freely available Photoshop 6 documentation only discusses a very primitive type of brush, and I have been told that even recent Photoshop SDK documentation doesn't discuss the CS brush format. Fortunately, Gnome's Valek Filippov had already reverse engineered the V6 ABR format, and there is some code in Gimp and a C#-based viewer application for newer Photoshop brushes. Armed with a set of test brushes and this information, Lukáš dived in, and at the end of the week, painting with ABR brushes basically worked. This week, Lukáš will work on optimizing our iterators -- which should improve Krita's performance all-over.

Apart from that, when writing his thesis on Krita brush engines in the evenings and in the weekend, Lukáš continues to have new ideas for his brush engines, and he made the Sumi-E brush engine twice as fast. and gave it basic bidirectional paint transfer ability: that is to say, on brush onset, it will grab the color from the canvas to paint with. He also improved the soft brush in new ways,

Sven Langkamp continued porting brush engines to the new preset framework: the mixer brush and the filter brush fell before his scythe. He also helped out Lukáš with the integration of the ABR brush in Krita. Oh, and the checkbox to enable/disable a particular option for a brush are now shown in the list:


This will likely need some fine-tuning in Deventer, there was already a discussion about whether the text should be aligned, or not.

Boudewijn helped Lukáš with the integration of his ABR brush parser in the Krita brush system. He also (temporarily, hopefully) hid the mouse position label in the Krita statusbar, following Lukáš discovery that Krita would repaint its whole window whenever the mouse changed position.

Sprint

The sprint is getting closer and closer. This week, we'll have to decide which t-shirt design to use and print! Don't hesitate to discuss your preferences and ideas on the forum before it's too late!

Manual

After a promising start on the file import/export chapter of our new manual, not much happened, unfortunately. A good manual is something we really need by september, when we will try to release the all-singing, all-dancing 2.3 version, and we should get started now! If you know what you're doing with a graphics application, and if you can compile Krita from subversion -- it's not as hard as it sounds!, please consider helping out here. Developers are notoriously bad at documentation -- we cannot do this on our own! But don't worry if your English isn't acceptable to the Queen (or the President), we might be able to get some professional editing when all the pieces are in place.

Coda

Oh, and we have comments now. But for a fun discussion, join the forum!

Tuesday, 02 March 2010 18:14

Last week in Krita -- week 8

You wouldn't believe how hard it is to focus on writing Last Week in Krita with three hackers around -- which is the case right now. We're at a 44 commit/day high-water mark for monday -- work has been very brisk, and Krita is beginning to feel quite snappy, even with biggish images. Last week we had 101 commits, and we're at under 90 bugs now! This sprint is such a blast -- Vera, Dmitry, Adam and Peter have gone by now. Lukáš, Cyrille and Sven are still around (and me, of course, I live here. The bathrooms have both broken down, the house is all a-buzz with the sound of fans trying to keep up with cd krita; make -j6 install being executed and huge quantities of m&m's and other nibbles are being consumed.

Vision

I've blogged it, Cyrille has blogged it -- but let's set those three paragraphs down again:

Krita is a KDE program for sketching and painting, offering an end–to–end solution for creating digital painting files from scratch by masters.

Fields of painting that Krita explicitly supports are concept art, creation of comics and textures for rendering.

Modelled on existing real-world painting materials and workflows, Krita supports creative working by getting out of the way and with snappy response.

That's what we're aiming for. I already dissected these statements -- they are quite dense and more full of meaning than they might seem at first blush. Reactions have been positive, on the whole: and it's important to state once again that we won't stop anyone from trying to fill any hole in the free software spectrum we might be leaving open now. Anyone wants to fork Krita to make a photo editor? That's fine with us, Krita is intentionally free software.

It's also not like we hate or disdain photography: a single glance at Dmitry's or Cyrille's equipment should be enough to disabuse anyone of that notion. But painting is where it's at for Krita. Pure creativity, concept art, cartoons, textures -- and that's a tall order already. Not that pruning Krita is not a painful process...

Code

Many Krita hackers were travelling last week, and when we were together in Deventer, we had a lot of things to talk about. Not just the vision, but Peter was present all weekend long to help us with discussions about interaction and usability. Whenever we strayed from the path, he would put us straight: "remember, this is your vision: what that feature, or this implementation be useful to a master painter?". Sometimes that means getting rid of some features we had cloned from Photoshop, even... A list of what has been discussed has been put up on the wiki. It's in a very short style, and we will have to make careful designs for some of these suggestions.

We also agreed on yet another api change for our filters: this time, the api will be much simplified, hopefully making writing filters a lot easier.

Boudewijn fixed a bug where Krita wouldn't be able to load JPG files from a path with a non-ascii character in it -- one would think that these bugs would all have been gone with the millennium, but no. He also started removing features: there is no krita-based Flake shape anymore: our vision for Krita is that it is not an office component. On the same track, he disabled a number of KOffice plugins that make no sense for Krita, like the database plugin. There are still issues here: it looks like KOffice co-packages some plugins that should be split, like the two shape selection dockers.

Cyrille worked very hard on making the shapes that we do support work well, added the alpha darken composite operation to the OpenGTL-based CTL colorspaces plugin (this is used for painting in wash mode), fixed bugs in the tile engine (which helped with memory usage), fixed crashes when loading jpg or tiff files with unusable profiles, used one of the Krita project's Wacom Art Pens to fix the rotation support, simplified the calculation of spacing between strokes, reduced memory usage again, and fixed the distance sensor when painting.

Dmitry optimized the image recomposition algorithm, fixed a crash in the filters and fixed a big bug where painting on a second layer would lead to recomposition artefacts.

Lukáš continued work on the next generation iterators; those aren't used yet, but should improve for instance filters when we port them. Lukáš also spent his evenings optimizing and improving brush engines: sumi-e got ink soaking, the soft brush aspect rotation, density -- to simulate dust on the canvas, airbrush, size changing, ui improvements, and the grid brush got fixed scaling and border jitter. And Lukáš also did more work on the abr-brush compatibility, loading also the dynamics of abr brushes, not just the mask. Now we need to do something with the dynamics!

Sven fixed the brush outline cursor feature and once again cleaned up a whole lot of code in brush engine department.

Vera Lukman fixed bugs in the popup palette and added some visual improvements: and then we discovered that Qt 4.5 doesn't recognize the tablet devices, while Qt 4.6 doesn't send middle/right mouse button events if you click using the stylus button. Now this is a problem -- it might be Qt, it might be X11, it might be the drivers, it might be distribution-specific, but right now there is no known-good setup that supports all the tablet features Krita relies on.

T-Shirts!

And group photo (Lukáš, Vera, Sven, Peter, Dmitry, front: Boudewijn, Cyrille, Adam):


Irina has organized the t-shirts, and Araprint has, with magnificent service, converted the design to make it possible to print in five colors and delivered the t-shirts to our place when we, because of a power-cut and attendant confusion, had forgotten to collect them:


joomla template
template joomla