Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
AG_DRIVERMW(3)	       FreeBSD Library Functions Manual		AG_DRIVERMW(3)

     AG_DriverMw -- agar multiple-window driver	class

     #include <agar/core.h>
     #include <agar/gui.h>

     AG_DriverMw is a subclass of AG_Driver(3) for "multiple-window" drivers
     (i.e., drivers where Agar must interface with a native window system).

     AG_Driver(3) -> AG_DriverMw.

     The AG_DriverMwClass structure describes a	"multiple-window" graphics
     driver, where Agar	will need to interface with an existing	window man-
     ager.  AG_DriverMwClass inherits from AG_DriverClass and is defined as

     typedef struct ag_driver_mw_class {
	     struct ag_driver_class _inherit;

	     /*	Open/close native windows */
	     int  (*openWindow)(AG_Window *w, AG_Rect r, int bpp, Uint flags);
	     void (*closeWindow)(AG_Window *w);

	     /*	Show and hide window */
	     int (*mapWindow)(AG_Window	*w);
	     int (*unmapWindow)(AG_Window *w);

	     /*	Configure stacking order and parenting */
	     int (*raiseWindow)(AG_Window *w);
	     int (*lowerWindow)(AG_Window *w);
	     int (*reparentWindow)(AG_Window *w, AG_Window *winParent,
				   int x, int y);

	     /*	Change and query input focus state */
	     int (*getInputFocus)(AG_Window **w);
	     int (*setInputFocus)(AG_Window *w);

	     /*	Move and resize	windows	*/
	     int  (*moveWindow)(AG_Window *w, int x, int y);
	     int  (*resizeWindow)(AG_Window *w,	Uint w,	Uint h);
	     int  (*moveResizeWindow)(AG_Window	*w, AG_SizeAlloc *a);
	     void (*preResizeCallback)(AG_Window *w);
	     void (*postResizeCallback)(AG_Window *w, AG_SizeAlloc *a);

	     /*	Capture	window framebuffer contents */
	     int (*captureWindow)(AG_Window *w,	AG_Surface **s);

	     /*	Configure window parameters */
	     int  (*setBorderWidth)(AG_Window *w, Uint w);
	     int  (*setWindowCaption)(AG_Window	*w, const char *s);
	     void (*setTransientFor)(AG_Window *w, AG_Window *winParent);
	     int  (*setOpacity)(AG_Window *w, float opacity);
	     void (*tweakAlignment)(AG_Window *w, AG_SizeAlloc *a);
     } AG_DriverMwClass;

     The openWindow() operation	opens a	new "native" window corresponding to
     an	AG_Window(3) that is in	the process of being created, returning	0 on
     success or	-1 on failure.	The r argument specifies the preferred loca-
     tion and geometry of the window, in pixels.  bpp specifies	a preferred
     depth in bits per pixels.	The following flags are	recognized:

     AG_DRIVER_MW_ANYPOS   Ignore the coordinates in r and let the underlying
			   window system select	some default coordinates.

     mapWindow() and unmapWindow() make	a window visible or invisible, return-
     ing 0 on success and -1 on	failure.

     raiseWindow() and lowerWindow() respectively raise	and lower the window,
     returning 0 on success and	-1 on failure.	The reparentWindow() function
     arranges for the window to	become a child of winParent, moving it to par-
     ent-relative coordinates x, y.  The function should return	0 on success
     or	-1 on failure.

     The getInputFocus() operation retrieves a pointer to the window currently
     holding focus, returning 0	on success.  If	the focus is external to the
     Agar application, it should return	-1.  setInputFocus() gives focus to
     the specified window, returning 0 on success or -1	on failure.

     The moveWindow(), resizeWindow() and moveResizeWindow() operations	re-
     spectively	move, resize or	move+resize a window to	specified coordinates
     and geometry, returning 0 on success or -1	on failure.

     The preResizeCallback() operation is invoked prior	to a window resize,
     and postResizeCallback() is invoked following a window resize (the	new
     window geometry is	passed as the a	argument).

     The captureWindow() operation captures the	window's visual	rendering to
     an	AG_Surface(3), returning 0 on success or -1 on failure.

     setBorderWidth() configures a window border size in pixels, returning 0
     on	success	or -1 if the operation is unsupported or an error occured.

     setWindowCaption()	sets the associated window caption text, if supported
     by	the window system.  The	string passed to the function may contain
     characters	in UTF-8 encoding.  The	function should	return 0 on success or
     -1	on failure.

     setTransientFor() passes a	hint to	the window manager that	the window
     should be marked as "transient" for the specified window winParent.  This
     operation is optional and window manager specific.

     setOpacity() passes a window opacity argument (ranging from 0.0 to	1.0)
     to	the underlying window manager.

     The optional tweakAlignment() operation allows the	driver to override or
     alter the effect of the window alignment request (set by
     AG_WindowSetPosition(3) or	AG_WindowSetGeometryAligned(3)), such that un-
     derlying WM-specific items	(desktop panels	and such) can be taken into
     consideration (by default,	the display boundaries are used).  This	rou-
     tine should set the x and y members of a, in function of w	and h.

     AG_Driver(3), AG_DriverSw(3), AG_InitGraphics(3), AG_Intro(3)

     The AG_DriverMw class first appeared in Agar 1.4.0.

FreeBSD	13.0			  May 2, 2010			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help