3.2. function reference

3.2.1. s3dw_surface_new

#include <s3dw.h>

s3dw_surface *s3dw_surface_new( char *title, float width, float height );

Creates a new surface (a new window) with title "title" and dimension "width" x "height".

See s3dw_surface for information about callbacks which may be defined.

3.2.2. s3dw_button_new

#include <s3dw.h>

s3dw_button *s3dw_button_new( s3dw_surface *surface, char *text, float posx, float posy );

Creates a new button on the surface, with "text" written on it and the upper left corner at (posx,posy) on the surface.

See s3dw_button for information about callbacks which may be defined.

3.2.3. s3dw_input_new

#include <s3dw.h>

s3dw_input *s3dw_input_new( s3dw_surface *surface, float width, float posx, float posy );

Creates a new input-box on the surface with a input width of "width", the upper left corner at (posx,posy) on the surface. The input-box is empty on creation and can be change with s3dw_input_change_text, and received with s3dw_input_gettext

See s3dw_input for information about callbacks which may be defined.

3.2.4. s3dw_label_new

#include <s3dw.h>

s3dw_label *s3dw_label_new( s3dw_surface *surface, char *text, float posx, float posy );

Creates a new label on the surface, with "text" written on it and the upper left corner at (posx,posy) on the surface.

See s3dw_label for information about callbacks which may be defined.

3.2.5. s3dw_textbox_new

#include <s3dw.h>

s3dw_textbox *s3dw_textbox_new( s3dw_surface *surface, char *text, float posx, float posy, float width, float height );

Creates a new textbox on the surface, with "text" written on it and the upper left corner at (posx,posy) on the surface. Width and height define the size of the textbox including scrollbars which are rendered around the textfield.

See s3dw_textbox for information about callbacks which may be defined.

3.2.6. s3dw_textbox_scrollup

#include <s3dw.h>

s3dw_textbox *s3dw_textbox_scrollup( s3dw_textbox *textbox );

Scrolls the text in the textbox up by one line, if possible.

3.2.7. s3dw_textbox_scrolldown

#include <s3dw.h>

s3dw_textbox *s3dw_textbox_scrolldown( s3dw_textbox *textbox );

Scrolls the text in the textbox down by one line, if possible.

3.2.8. s3dw_textbox_scrollleft

#include <s3dw.h>

s3dw_textbox *s3dw_textbox_scrollleft( s3dw_textbox *textbox );

Scrolls the text in the textbox to the left by one character, if possible.

3.2.9. s3dw_textbox_scrollright

#include <s3dw.h>

s3dw_textbox *s3dw_textbox_scrollright( s3dw_textbox *textbox );

Scrolls the text in the textbox to the right by one character, if possible.

3.2.10. s3dw_textbox_scrollto

#include <s3dw.h>

s3dw_textbox *s3dw_textbox_scrollto( s3dw_textbox *textbox, int x, int y );

Scrolls the text in the textbox so that the character in row y, column x is in the top left corner of the textbox.

3.2.11. s3dw_getroot

#include <s3dw.h>

s3dw_widget *s3dw_getroot( void );

Returns the root-widget, which holds all the surfaces. E.g. if you want to move all widgets at once, adjust the root-widgets x,y,z and use s3dw_moveit()


		s3dw_widget *root = s3dw_getroot();
		/* move widget center to (0,5,0). upon creation, it's centered at (0,0,0), 
		 * so this might move it up */
		root->x=0;
		root->y=5;
		root->z=0;
		s3dw_moveit(root);

3.2.12. s3dw_input_gettext

#include <s3dw.h>

char *s3dw_input_gettext( s3dw_input *input );

Returns the text which is currently entered in the referenced input-box.

3.2.13. s3dw_input_change_text

#include <s3dw.h>

void s3dw_input_change_text( s3dw_input *input, char *text );

Change the text in the referenced input-box to the specified text.

3.2.14. s3dw_label_change_text

#include <s3dw.h>

void s3dw_label_change_text( s3dw_label *label, char *text );

Change the text in the referenced label to the specified text.

3.2.15. s3dw_textbox_change_text

#include <s3dw.h>

void s3dw_textbox_change_text( s3dw_textbox *textbox, char *text );

Change the text in the referenced textbox to the specified text.

3.2.16. s3dw_delete

#include <s3dw.h>

void s3dw_delete( s3dw_widget *widget );

Deletes any widget. Should be casted with S3DWIDGET().

3.2.17. s3dw_moveit

#include <s3dw.h>

void s3dw_moveit( s3dw_widget *widget );

Moves/translates the widget as you specified in it's private s3dw_widget structure. Should be casted with S3DWIDGET().

3.2.18. s3dw_show

#include <s3dw.h>

void s3dw_show( s3dw_widget *widget );

Switches a widget visible. Should be casted with S3DWIDGET().

3.2.19. s3dw_focus

#include <s3dw.h>

void s3dw_focus( s3dw_widget *widget );

Gives focus to the widget, relative to its parent. That means you can focus a surface, and each surface can focus one of its element, e.g. an input field. Should be casted with S3DWIDGET().

3.2.20. s3dw_handle_click

#include <s3dw.h>

void s3dw_handle_click( struct s3d_evt *event );

If you want your widgets on mouseclicks (believe me, you want that), you have to call this either in your clickhandler-function or specifiy it itself as the clickhandler.


/* way 1: */
s3d_set_callback(S3D_EVENT_OBJ_CLICK,s3dw_handle_click);

/* way 2: */
...
void click(struct s3d_evt *evt)
{
	s3dw_handle_click(evt);
	.... 
	/* your own clickhandler code */
	...
}
....
s3d_set_callback(S3D_EVENT_OBJ_CLICK,click);

3.2.21. s3dw_handle_key

#include <s3dw.h>

void s3dw_handle_key( struct s3d_evt *event );

This is somehow useful to call in your keyhandler functions if you want to have input-boxes work. ;)


/* way 1: */
s3d_set_callback(S3D_EVENT_KEY,s3dw_handle_key);

/* way 2: */
...
void key(struct s3d_evt *evt)
{
	s3dw_handle_key(evt);
	.... 
	/* your own keyhandler code */
	...
}
....
s3d_set_callback(S3D_EVENT_KEY,key);

3.2.22. s3dw_object_info

#include <s3dw.h>

void s3dw_object_info( struct s3d_evt *event );

This can be used to let s3dw handle S3D_EVENT_OBJ_INFO-events. With this, s3dw can consider the camera position and makes things like following the camera possible.

3.2.23. s3dw_ani_mate

#include <s3dw.h>

void s3dw_ani_mate(void );

Just call this in your mainloop if you want some nice window sliding animations. it's somewhat bloating, but you don't want to miss it ;)


#include <time.h>   /* nanosleep() */
static struct timespec t={0,33*1000*1000}; /* 33 mili seconds */
void mainloop()
{
    /* keep this in your mainloop. this will do smooth animations for you ... */
    s3dw_ani_mate();
    nanosleep(&t,NULL);
}

....
s3d_mainloop(mainloop);