This binding is for libcanberra, a sound event library. 
Seehttp://0pointer.de/lennart/projects/libcanberra/ for more information.

The bindings should be relatively straightforward, the only thing I'm not 
satisfied with is the way of creating a canberra context and  proplist: Since 
libcanberra has no way to return a newly constructed handle, I had to bind 
this as reference. Therefore right now you have to use it like that:

            Canberra.Proplist p = null;
            Canberra.Proplist.create( &p );

(which I find a bit ugly).

Other than that I think it's good enough for mainline inclusion. Please do, if 
you see fit.

Cheers,

:M:


posix

/* canberra.vapi
 *
 * Copyright (C) 2009 Michael 'Mickey' Lauer <[email protected]>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.

 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.

 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 *
 */

using Posix;

[CCode (cprefix = "CA_", lower_case_cprefix = "ca_", cheader_filename = "canberra.h")]
namespace Canberra {

    //
    // properties
    //
    public const string PROP_MEDIA_NAME;
    public const string PROP_MEDIA_TITLE;
    public const string PROP_MEDIA_ARTIST;
    public const string PROP_MEDIA_LANGUAGE;
    public const string PROP_MEDIA_FILENAME;
    public const string PROP_MEDIA_ICON;
    public const string PROP_MEDIA_ICON_NAME;
    public const string PROP_MEDIA_ROLE;
    public const string PROP_EVENT_ID;
    public const string PROP_EVENT_DESCRIPTION;
    public const string PROP_EVENT_MOUSE_X;
    public const string PROP_EVENT_MOUSE_Y;
    public const string PROP_EVENT_MOUSE_HPOS;
    public const string PROP_EVENT_MOUSE_VPOS;
    public const string PROP_EVENT_MOUSE_BUTTON;
    public const string PROP_WINDOW_NAME;
    public const string PROP_WINDOW_ID;
    public const string PROP_WINDOW_ICON;
    public const string PROP_WINDOW_ICON_NAME;
    public const string PROP_WINDOW_X11_DISPLAY;
    public const string PROP_WINDOW_X11_SCREEN;
    public const string PROP_WINDOW_X11_MONITOR;
    public const string PROP_WINDOW_X11_XID;
    public const string PROP_APPLICATION_NAME;
    public const string PROP_APPLICATION_ID;
    public const string PROP_APPLICATION_VERSION;
    public const string PROP_APPLICATION_ICON;
    public const string PROP_APPLICATION_ICON_NAME;
    public const string PROP_APPLICATION_LANGUAGE;
    public const string PROP_APPLICATION_PROCESS_ID;
    public const string PROP_APPLICATION_PROCESS_BINARY;
    public const string PROP_APPLICATION_PROCESS_USER;
    public const string PROP_APPLICATION_PROCESS_HOST;
    public const string PROP_CANBERRA_CACHE_CONTROL;
    public const string PROP_CANBERRA_VOLUME;
    public const string PROP_CANBERRA_XDG_THEME_NAME;
    public const string PROP_CANBERRA_XDG_THEME_OUTPUT_PROFILE;
    public const string PROP_CANBERRA_ENABLE;

    //
    // errors
    //
    [CCode (cname = "CA_SUCCESS")]
    public const int SUCCESS;

    [CCode (cname = "int", cprefix = "CA_ERROR_")]
    public enum Error {
        NOTSUPPORTED,
        INVALID,
        STATE,
        OOM,
        NODRIVER,
        SYSTEM,
        CORRUPT,
        TOOBIG,
        NOTFOUND,
        DESTROYED,
        CANCELED,
        NOTAVAILABLE,
        ACCESS,
        IO,
        INTERNAL,
        DISABLED,
        FORKED
    }

    public unowned string strerror( Error code );

    //
    // callback
    //
    public delegate void FinishCallback( Context context, uint32 id, Error code );

    //
    // property list
    //
    [Compact]
    [CCode (cname = "ca_proplist", free_function = "")]
    public class Proplist {

        public static int create( Proplist* p );
        public Error destroy();
        public Error sets( string key, string value );
        [PrintfFormat]
        public Error setf( string key, string format, ... );
        public Error set( string key, void* data, size_t nbytes );
    }

    [Compact]
    [CCode (cname = "ca_context", free_function = "")]
    public class Context {

        public static Error create( Context* context );
        public Error destroy();
        public Error set_driver( string driver );
        public Error change_device( string device );
        public Error open();
        [CCode (sentinel = "")]
        public Error change_props( ... );
        public Error change_props_full( Proplist p );
        [CCode (instance_pos = 0)]
        public Error play_full( uint32 id, Proplist p, FinishCallback cb );
        [CCode (sentinel = "")]
        public Error play( uint32 id, ... );
        public Error cache_full( Proplist p );
        [CCode (sentinel = "")]
        public Error cache( ... );
        public Error cancel( uint32 id );
    }
}

}

_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to