Posts Tagged ‘english’


Saturday, July 27th, 2013

When it comes to RAW editting sotware with Linux things are pretty dull in Linux.
There is lots of software like Adobe Camera Raw and Lightroom that are industrial standard, but unfortunately not working in Linux.
What were the options? For a long time there were no usable RAW editting software. There were converters and cmdline utilities, but these things were more developer-oriented than photographer-friendly. Until recently when Darktable emerged from the dark. It truned out to be very nice app with LR-like interface and tons of image settings. It is actively developed software whit new versions comming every month, providing lots of new features.
So, what is the problem with Darktable? It is very young application with not so big user base. Photographers preferred to work with Windows or Mac because of the mentioned lack of Linux software, and that is going to keep on for a while. Currently there is a deficiency of tutorials and helping readings. There are couple of video tutorials in YouTube, but 99% of these are in non-english language. When it comes to written articles, there is the User Manual that is very decent, but it is not a tutorial.

That’s why I decided to start a tutorial section here. It is going to be a series of short articles explaining how I have achieved this or that effect and I hope more people will get into Darktable. It will not be a “For dummies” one, explaining how to click the mouse and how to move a slider 🙂 You’d better have the User manual first.

List of articles:
1. Fixing overexposed foliage
2. Pimping clouds

ExtJS 4 bouncy box animation

Monday, November 5th, 2012

Do you know ExtJS has some nice animation features? Here it is a very simple notification box that “pops in” from outside the browser.

It is pretty straightforward – show a window outside the viewport and use the Window.animate() method. `animate` is inherited from AbstractComponent, so it is usable on all kinds of components.
However, there is one gotcha. If you initially render the window on the right or bottom outside the screen (i.e. coordinates 10000,10000) the viewport will slide to keep the shown window in focus. I’m not sure why it does it. So, we do it a bit tricky – first show the window with negative coordinates (viewport will not slide in that way) and second – ensure the window is really shown before attempting to do `setPosition()` or `animate()`. According to the docs `showAt()` should return `this` and be chainable, but in my testing invironment it returns undefined… I’ve put a dumb setTimeout() – don’t do that if you have choice – chain showAt() or use onShow listener.

Using my sample code you should first create a NS.TestAnimationBox component and then do a `createWindow()` on it.

Ext.define('NS.TestAnimationBox', {
    extend: 'Ext.window.Window',
    width: 250,
    height: 150,
    layout: 'fit',
    title: 'Reminder',

    constructor: function(cfg){
        this.items = this.getItems();

        var me = this;

        me.showAt(-2000, -2000); // initial 'show' outside browser

    slide: function(){
        var me = this;
        var iViewHeight = Ext.getBody().getViewSize().height;
        var iViewWidth = Ext.getBody().getViewSize().width;

        me.setPosition(iViewWidth + me.width - 10, iViewHeight - me.height - 40); // adjust position just outside on the right
            duration: 750,
            easing: 'bounce-out',
            to: {
                x: iViewWidth - me.width - 10

    getItems: function(){
        var me = this;

        return [
                bodyPadding: 10,
                html: 'Some text here',
                buttons: [
                        text: 'Reset',
                        handler: function(){
                        text: 'Close',
                        handler: function(){
                            me.setPosition(-2000, -2000);

    createWindow: function(){
        var me = this;

        }, 100); // just to be sure there it is time interval between showing and sliding