Help the Krita Foundation! September 2017 Donations €1080 collected 108 awesome people

This is a work in progress of the release notes for Krita 4.0. This page will change as the release gets closer. More than likely, the existing list of changes or features will get bigger.

Vector Tools Enhancements

We have overhauled our vector tools massively in the past few months.

SVG support

One of the biggest changes is that we changed from the Open Document ODG vector format to the widely-used SVG vector format. SVG is a W3C standard that can be opened by many different programs, so we felt that it made more sense to use this as the default format.

You can now open and save SVGs inside Krita. Kra files, when opened as a ZIP will have it’s vector layers stored in SVG.

 Improvements and Vector UX changes

We went out of our way to make the tools much more user friendly.

  • For starters, the default tool tool options is much more organised. It’s now easier than ever to find the fill and stroke, or to transform.
  • The gradient tool has been merged into the default tool.
  • The shape editing tool is now always visible, instead of only when a shape is selected. This kind of smart behaviour worked against the user, as it was hard for a lot of people to tell where the shape editing tool had gone off to. On top of that, the tool has been polished. Parametric shape features are now shown in the tool options of this tool. We also adjusted the way the nodes are drawn for better visibility and added more feedback.
  • The pattern tool is currently disabled until further notice.
  • All drawing tools that could draw on the vector layers now use the active color, brush size and opacity to draw the final shape.
  • You can now copy-paste shapes from and to inkscape directly.
  • The action tied to the pop-up palette will give a relevant submenu for the vector tools.
  • And a ton of vector related bugs have been fixed.

 

Text

The text tool is probably implemented now??? No idea, honestly.

 

Python Scripting

The big chosen stretchgoal of last year’s Kickstarter, python scripting is now part of Krita. We also are including a large amount of scripts with Krita so you can see how it works for examples. You can see some of what we are including below. The scripts are translatable to work in multiple languages.

Delving into a little tech-talk: Python was implemented by making a general library for the bindings, and then have a sip file to turn those into python bindings. What that means practically is that someone could implement other scripting languages pretty easily if they are willing to put in the work.

Plugin Manager

Python plugins are managed via settings->Configure Krita->Python Plugin Manager.

Activated plugins can be accessed via the tools->scripts.

From experience we know that maintaining a scripting plugin can be quite difficult. For that reason we’ve chosen to take several wishes and to turn them into python scripts. This allows us to make sure python scripting is useful and test it against bugs, while providing good example scripts for users.

Let’s take a look at some of them:

Internal Scripting Console

The most important of these plugins is a small python console, written in python. This console will allow you to run scripts in Krita on the fly. Important for when you are testing things, or for when you just want to write a small script.
The python editor is equipped with syntax-colorization and a small debugger to tell you when your code does not make sense. It does not have code-completion.

Assign Profile to Image

This plugin allows you to assign instead of convert a color to a given color space. Such a feature was missing from Krita proper, and we imagine it is one of those things someone might want to use in scripting, so hence it’s incarnation as a python script.

Ten Brushes Script

Assign specific brush presets to shortcuts. You can do this with dragging and dropping the preset into the shortcut slots. Of course you can open the script up and modify how this works to your heart’s desire!

Other:

Background Saving

When Krita auto saves in the background, you don’t have to worry about the small freezes that previously happened. This also works when exporting animation and allows you to work while exporting.

 

New Color Palette Format and Improvements

Krita has access to six different color models and four different bitdepths, yet the palette docker and its file format could only handle 8bit sRGB. It is natural, as the GPL(that is, Gimp PaLette, not Gnu Public License) file format was designed in a time when anything more seemed like decadence.

However, that time was a long while ago. So we’ve finally taken the plunge and designed a new fileformat, consisting, yet again, from a zip file with an xml inside(We are nothing if not consistent!). This fileformat, KPL, can store any color that Krita can handle. Furthermore, changing the fileformat also allowed another change: It is now possible to group colors in Krita!

On top of this new file-format, Krita can also load swatchbooker(SBZ) palettes as well as Scribus’ xml palettes, both courtesy of L. E. Segovia.

 

Warnings when saving images without layers

We implemented a passive warning system that will inform you which features are active in the document but cannot be saved to the chosen file format. Furthermore, the dialog will allow you to save to KRA as well. This situation usually comes to us like this…

“Help! I had an image with layers, and I saved it to PNG, and now Krita refuses to load the layers! How do I get them back?”

This is a question that comes up surprisingly often. More experienced readers will know that the problem is that file formats like PNG don’t save things like layer data. This is why we have working file formats like Krita’s KRA. We also added an option to allow you to save a copy of your work as a KRA in this situation.

Krita is not the first Free Open Source Software to attempt to solve this peculiar issue. The other attempt had as a solution to force users to save to the working file format of the application, and have them explicitly use the export to save to other file formats. People did not like this solution very much.

 

G’Mic Plugin changes

Our G’Mic support was always a bit difficult because of the way how we had to get G’Mic and Krita to talk to one another. But that time should be past now.

 

Changes to the numerical input

The variables vh and vw have been added to the numerical input, they represent the width and the height.

 

Brush sizes beyond 1,000 pixels

You can now set Krita to use Brush sizes beyond a 1000 pixels, up to 10.000! This requires a restart. Furthmore, be careful with the big sizes as a 10.000 pixel brush is about as heavy as copy-pasting an image of 10kx10k at the bitdepth of the image you are painting on. It might cause out-of-memory errors.

 

Changes to the Brush Settings

The Brush Settings had a number of UX changes and features added to make it easier to use and figure out

  • Easily rename brushes with the new edit functionality
  • Overwriting brushes now keeps the current preview image.
  • Creating a brush brings up a new dialog that allows you to modify the preset image or load a custom image
  • The lock settings are more visible when they are enabled by each setting option
  • You can collapse and expand the presets, settings, and scratchpad areas with buttons along the top
  • The presets have been moved to their own area in the editor and can be searched and filtered like the normal preset docker

 

Resize thumbnails dynamically

A new option allows you to resize your thumbnails in the brush settings and preset dockers. The thumbnail size is saved for future use. Good if you want to see a lot of brush presets in list view.

 

Pixel Grid

Thanks to a rogue patch by Andrew Kamakin, you can now see a pixel grid when you zoom in past 800% (the zoom percentage and color are configurable). Great for precision art where it is hard to tell where pixels start and end.

 

Changes to the Pop-up palette

We have made a few changes to the pop-up palette after a few suggestions from people

  • A quick method for zooming with a slider
  • A quick canvas rotation wheel around presets
  • quick buttons for mirroring and canvas-only, and resetting zoom to 100%

 

Isometric Grids

There is a new isometric option where you can specify the angles and spacing for each axis. This is good for isometric artwork. This option can be found in the grid docker.

 

Bug Fixes/Changes

  • FEATURE: let toggling SHOW IN TIMELINE for multlayer selection (BUG 377730)
  • FEATURE: save lastly visited directory in the Reference Images docker
  • Give a notification when the current preset has changed with the next or previous shortcuts (D7454)
  • fixed selection area when changing between list and details in the brush preset docker.
  • Fixed reference counts with text brushes
  • Added a logarithmic scale switch for the color filter
  • Fixed a crash when closing one of the main windows showing the same document
  • Fixed placeholder position of window title
  • The reference image docker now saves the last folder that was used
  • fixed with nested auto-saves (T6542)
  • Improve feedback when auto-saving document (T6542)
  • fixed saving/loading of the currently active not to kra files (T6542)
  • fixed correct set up of the canvas switched
  • fixed an issue with saving transaparency to png and jpg file
  • Render animation UI has been updated to be easier to understand.
  • label and visibility UI updates to brush smoothing, magnetism, and assistant tool options.
  • Make the color selectors a bit faster by improving the algorithm of checking IDs
  • Add icons for brush presets to the vector symbol library (T6478)
  • attempt to restore OpenGL 2.1 support fo non-OSX  systems (BUG 282281, 363770)
  • fix bug with color to alpha filter when creating a mask (BUG 362626)
  • fixed updating the shader when OCIO is activated after being deactivated
  • fix a set of OCIO related bugs (BUG 373481)
  • SSE chipset speed up with handling division (8dc92f7dee7dc4e32e22724843669a25f444fa39)
  • Do not crash if a filter does not have a default configuration (BUG 383456)
  • Don’t set the swap directory to an empty string if the user pressed cancel
  • reorder and rename locks and visibility menu options in layer docker context menu to be more consistent
  • Added a reset button for the HSV adjustment dialog
  • Fix a regression with delegated tools. (BUG 382690 )
  • Add identify for UC-LOGIC based tablets on linux (BUG 363443)
  • fixed workaround for switching subwindow to tabbed mode when one window is always on top
  • fixed resetting Instant Preview cache when changing visibility of layer (T6652)