Friday, June 28, 2013

Changing the cursor from emscripten

You may have an app which needs to change the cursor when you interact with elements in the canvas. In the app I'm working on, I needed the cursor to change when you hover over drawn bars that allow for sizing. To do this I wrote a little javascript code to do the cursor change and then had the c++ call it.

The javascript code:

function changeMouseCursor( type ) {

    if ( type == 0 ) {  
        $('canvas').css( 'cursor', 'default' );  
    }
    else if ( type == 1 ) {
        $('canvas').css('cursor', 'n-resize' );
    }
    else if ( type == 2 ) {
        $('canvas').css('cursor', 's-resize' );
    }
    else if ( type == 4 ) {
        $('canvas').css('cursor', 'e-resize' );
    }
    else if ( type == 5 ) {
        $('canvas').css('cursor', 'se-resize' );
    }
    else if ( type == 6 ) {
        $('canvas').css('cursor', 'ne-resize' );
    }
    else if ( type == 8 ) {
        $('canvas').css('cursor', 'w-resize' );
    }
    else if ( type == 9 ) {
        $('canvas').css('cursor', 'sw-resize' );
    }
    else if ( type == 10 ) {
        $('canvas').css('cursor', 'nw-resize' );
    }
}


Code in emscripten:

int sizeType = IsOverDraggableBorder( m_mouseX, m_mouseY );
                       
 if ( sizeType != m_sizingType )
{
        //change the cursor
        char call[200];
        sprintf(call, "changeMouseCursor(%d)", sizeType );
        emscripten_run_script(call);
                           
         m_sizingType = sizeType;
 }


Here is what it looks like in my app :)



No comments:

Post a Comment