Archive for July, 2005

Mac Like Messages: Growl 0

I stumbled on a small usability problem. You can’t let people draw on a Live! Layer. Since it’s rendered from a filter, you can paint on the mask but not in the filter obviously. Since people are very likely to try to draw on the wrong layer anyway and in many other situations I thought displaying a warning was a good idea. However I just hate to see an AlertBox show up with a big OK button just to tell you “Hey You can’t do that you stupid thing!”.

That’s when Growl comes into light. Growl is one of those little apps, that like QuickSilver although not made by Apple are obligatory for any serious mac user. This little application just allows the user to display messages on screen in a configurable, unobtrusive manner. It’s easy to use so I gave it a try and quickly integrated it. Now “non-essential” warnings just use growl instead of blocking the use in his work. I also thought of a “learning mode” feature. When enabled it’ll display advanced or basic usage information about shortcuts and other features of specific tools.

A screenshot is worth a thousand words (and it actually takes more bytes, that’s why!) so here’s one. When you select the stamp tool a little hint showing you usage info shows up. You can of course disable these hints at any time.


(click for bigger image)

PS: Merci Manu et Loona pour les oeufs, comme quoi un jour tout sert :-)

More Tools, more fun! 0

These last days I have been working on painting tools. It turned out a bit more complicated than one might think in order to get a decent result. I had to create a separate thread and it’s associated lock to handle drawing in the background. It was just too slow otherwise. The trick is to be able to concatenate all filters (one for each brush step) and only render at the end. Oh, the joy of recursivity :-)

So now ChocoFlop has real brush, stamp tool, eraser and …. the *Magic* brush! Ok, it’s not that magic actually, but don’t break children’s dreams while they last… The magic brush is one that has several modes, such as blur, sharpen, saturate or desaturate. Basically it is used to a apply a filter in real-time to a small surface (the one masked by the brush).

I also spent some time doing some optimizations. I also abandonned the idea of using OpenGL to display the Image. I still use it for interface elements (selection, indicators) but I reverted to a good ‘old’ CoreImageContext to do the final display. It is actually faster than having to put the whole texture in memory each time you change one pixel. Now, I still need to find a way to disable that darn interpolation when drawing with this. That actually the reason I chose OpenGL before, because I got tired of trying to find how get apixellated texture (without using a CIFilter).

more tools for chocoflop
(click for bigger image)

Live Layers Working with Layer mask 0

Choco::Flop is now able to handle live layers inside a Layer Mask. You can make a selection (with the lasso or quickmask), select a filter and here you are. Your filter is masked by your selection and you can chose to keep it Live! This means the filter will be applied in real time and a Layer Mask will be created for the Live layer. You can paint inside the layer mask to make filtered areas appear or dissapear. Just like you could hide or show areas in a bitmap layer.

Here I made a small screenshot of a Dot Screen filter on a selection. If you apply the filter (traditional way of working) the layer below will be modified forever but if you select “Keep Live Layer” you’ll be able to paint on the lower layers and see the dot texture appear in real time and the lower layer will be kept safe for ever. You can always modify the parameters of a Live layer afterwards. It’s all non-destructive.

Of course this has some limitations. It requires a decent machine. I can’t add too many live layers on my iBook before it gets too slow. It is reasonable to only keep ‘Live’ what you can afford to. Well I look forward to testing this on a machine with something better than a Radeon 9200 (which doesn’t support acceleration of most Core Image filters). I guess I’ll have to add some more caching and optimizations for it to be usable with many layers on even lower harware.


Click for a full resolution screenshot.

First post on the new server 0

I just purchased ChocoFlop.com, so here we are, the previous website at chocoflop.link-u.com is now offline :-) I tried also to find a more original theme and hacked it up a little bit so that it displayed the way I wanted.. huh, more or less. Well… it’s kind of hardcoded in some ways but I didn’t want to spend the day doing this.

Choco::Flop’s Icon 0

I didn’t feel like coding this morning so I let my little artist mind wake up and created an icon for the application. Having never created an icon resource for OSX (.icns file) I had some problem with getting the alpha to display correctly but finally I made it and here’s what it looks like so far (that’s a PNG with alpha, your browser should support it):

I initally wanted something that reminded of chocolate but I simply couldn’t come up with something that looked nice on that theme, so I went on with something more classic.

Early Teasing 0

Just so you can get an idea of what Choco::Flop looks like so far. More to come! At this point the application can already paint on several layers and load/save a (flattened) image. At this point the zoom is done directly in OpenGL. This limits the texture (hence) texture size to 2048 on radeons and 4096 on Nvidias, but it will get back to Core Image to handle bigger images.

Coming soon 1

Well, the product is not ready yet, not even for beta, but you can have a look at the Goals Page to learn what this is all about!