/* guile-xosd2: guile binding for xosd Copyright (c) 2004,2005 Austin Bingham Copyright (c) 2008 Clinton Ebadi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. You can reach the maintainer at: clinton@unknownlamer.org The original author is: austin.bingham@gmail.com (but he did not respond to any email about my patches) */ /* These are the SWIG interface specs for libxosd. */ %module xosd %multiple_values; %feature("constasvar", "1"); %include "typemaps.i" %{ #include SCM guile_xosd_error_key; int xosd_display_string(xosd* xosd, int line, const char* sz) { return xosd_display(xosd, line, XOSD_string, sz); } int xosd_display_percentage(xosd* xosd, int line, int perc) { return xosd_display(xosd, line, XOSD_percentage, perc); } int xosd_display_slider(xosd* xosd, int line, int loc) { return xosd_display(xosd, line, XOSD_slider, loc); } int xosd_set_position (xosd* xosd, xosd_pos vert_pos, xosd_align horiz_pos, int offset_y, int offset_x) { if (xosd_set_pos (xosd, vert_pos) == -1) return -1; if (xosd_set_align (xosd, horiz_pos) == -1) return -1; if (xosd_set_vertical_offset (xosd, offset_y) == -1) return -1; if (xosd_set_horizontal_offset (xosd, offset_x) == -1) return -1; return 0; } int xosd_guile_wait_until_no_display (xosd * xosd) { return (int) scm_without_guile (xosd_wait_until_no_display, xosd); } %} %init %{ guile_xosd_error_key = scm_permanent_object (scm_from_locale_symbol ("xosd-error")); scm_c_export ("xosd-error", NULL); %} %scheme %{ (load-extension "libguile_xosd.so" "scm_init_xosd_xosd_module") %} %rename(top) XOSD_top; %rename(bottom) XOSD_bottom; %rename(middle) XOSD_middle; typedef enum { XOSD_top = 0, XOSD_bottom, XOSD_middle } xosd_pos; %rename(left) XOSD_left; %rename(center) XOSD_center; %rename(right) XOSD_right; typedef enum { XOSD_left = 0, XOSD_center, XOSD_right } xosd_align; %inline %{ typedef int xosd_ret; typedef int xosd_n_ret; typedef int xosd_bool_ret; %} %typemap(out) xosd_ret { if ($1 == -1) scm_error_scm (guile_xosd_error_key, SCM_BOOL_F, xosd_error ? scm_from_locale_string (xosd_error) : SCM_BOOL_F, SCM_BOOL_F, SCM_BOOL_F); $result = SCM_UNSPECIFIED; } %typemap(out) xosd_n_ret { if ($1 == -1) scm_error_scm (guile_xosd_error_key, SCM_BOOL_F, xosd_error ? scm_from_locale_string (xosd_error) : SCM_BOOL_F, SCM_BOOL_F, SCM_BOOL_F); $result = scm_from_int ($1); } %typemap(out) xosd_bool_ret { if ($1 == -1) scm_error_scm (guile_xosd_error_key, SCM_BOOL_F, xosd_error ? scm_from_locale_string (xosd_error) : SCM_BOOL_F, SCM_BOOL_F, SCM_BOOL_F); $result = scm_from_bool ($1); } typedef struct xosd { %extend { xosd (int nlines) { return xosd_create (nlines); } ~xosd () { xosd_destroy ($self); } xosd_n_ret display_string (int line, const char* sz); xosd_n_ret display_percentage (int line, int perc); xosd_n_ret display_slider (int line, int loc); %rename(get_number_of_lines) get_number_lines; xosd_n_ret get_number_lines (); %rename("onscreen?") is_onscreen; xosd_bool_ret is_onscreen (); %rename("set-bar-length!") set_bar_length; %rename("set-vertical-alignment!") set_pos; %rename("set-horizontal-alignment!") set_align; %rename("set-shadow-offset!") set_shadow_offset; %rename("set-outline-offset!") set_outline_offset; %rename("set-outline-colour!") set_outline_colour; %rename("set-shadow-colour!") set_shadow_colour; %rename("set-horizontal-offset!") set_horizontal_offset; %rename("set-vertical-offset!") set_vertical_offset; %rename("set-timeout!") set_timeout; %rename("set-foreground-colour!") set_colour; %rename("set-font!") set_font; %rename("set-position!") set_position; xosd_ret set_bar_length (int length); xosd_ret set_pos (xosd_pos pos); xosd_ret set_align (xosd_align align); xosd_ret set_shadow_offset (int shadow_offset); xosd_ret set_outline_offset (int outline_offset); xosd_ret set_outline_colour (const char *colour); xosd_ret set_shadow_colour (const char *colour); xosd_ret set_horizontal_offset (int offset); xosd_ret set_vertical_offset (int offset); xosd_ret set_timeout (int timeout); xosd_ret set_colour (const char *colour); xosd_ret set_font (const char *font); xosd_ret set_position (xosd_pos vert_pos, xosd_align horiz_pos, int offset_y=0, int offset_x=0); %rename(wait_until_hidden) guile_wait_until_no_display; xosd_ret guile_wait_until_no_display (); xosd_ret hide (); xosd_ret show (); xosd_ret scroll (int lines); xosd_ret get_colour (int *OUTPUT, int *OUTPUT, int *OUTPUT); } } xosd;