flowlabs.net

PaintLab

By Jonas Beckeman     jonas at jobe dot nu

PaintLab is an experimental C# paint application built on OpenBlackBox.

Project initiated 2006-04-16
Last update: 2006-07-07


Some current features

* Almost everything is based on nodes / graphs - from the layers composition engine, to filters, effects / adjustment layers and the tools
* Photoshop-like GUI (this actually limits the possibilities of PaintLab, but it's necessary for users to get into the program quickly)
* GPU accelerated (broken at the moment)
* Multiple Document Interface
* Expandable tool buttons à la Photoshop
* Plugin structure for... everything
* Multiple color space colorpicker (Currently RGB, HSB, HSL, HWB, XYZ, L*a*b. Plugin color spaces are automatically available to it)
* GUI separated from function, for easier porting to other platforms (and so I soon can get rid of those horrible WinForms and use WPF)
* Reads PSD, TIF, JPG, BMP, GIF, PNG, ICO files, and PAL, ACO, ACT and Painter palette files.

Future features

* Full read+write PSD, SWF, PDF, XAML
* Vector graphics + text processing with AGG for quality and performance superior to GDI+
* Better node graph editor, like FilterForge, for facilitating procedural texture generation and advanced batching
* Lots and lots of tools, filters, adjustment layers, effects
* Natural brushes
* Runtime filter scripting with Boo


About the current release

This is in no way a finished product - in fact, it's not even in the alpha stage. I'm currently focusing on overall architecture and interfaces, rather than error handling, bugs and unexpected behavior. I have spent very little time on optimizations, so the program is pretty sluggish.

A few things to be aware of:
* The sharpen brush is very sharp. Set the brush pressure to < 5 to get acceptable results
* Adjustment layers can make the document *very* slow to work with. The engine can be optimized a lot here, but that will have to wait until I've made some final decisions about the architecture. I also haven't implemented any preview yet - every change is applied directly to the document - so changing values in the settings box can be a horrible experience.
* Selection tools are merely drawing tools that work on a dedicated Floating Selection layer. The Selection layer is an alpha bitmap that can be modified, filtered, and drawn to just like a normal layer, and so Selection->Expand/Feather/etc can be implemented as simple bitmap operations. All good so far, but ATM the selection isn't actually used in the rest of the program...
* Several items in the Brush Designer aren't implemented (Size, Spacing, Save)

Download

Prerequirements:
.NET 2.0
(To run with GPU acceleration: Managed DirectX SDK)

PaintLab 2006-07-07
The current release is ugly and pretty unstable. I have a huge todo-list already, so please - no feature requests or bug reports on minor functions!

Source for the underlying technologies:
Endogine
OpenBlackBox

Changes

2006-07-07
* All Photoshop CS1 blend modes implemented
* Effect/adjustment layers
* Filters, with preview dialog
* Automatic filter GUI (somewhat similar to .NET's PropertyGrid)
* Blur, sharpen, smudge brushes
* Selection tools + Floating selection layer implemented
* Fixed crashes when switching between documents
* Load / save bmp/png/jpg/tif/gif/ico
* Drag'n'drop files to the application
* Automatically populates the Filter and Effect layers menus with all boxes that implement the ICanvasInOut interface
* Menu items that aren't implemented are automatically grayed out


How to's

Adjustment layers

To add an adjustment layer, click the leftmost button in the Layers dialog:
 
Then rightclick and select Settings:

And the filter settings dialog comes up. The little boxes on the right side of the textboxes are sliders: