GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
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 manager. AG_DriverMwClass inherits from AG_DriverClass and is defined as follows:
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 location 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, returning 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 parent-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 respectively 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 underlying WM-specific items (desktop panels and such) can be taken into consideration (by default, the display boundaries are used). This routine 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.
May 2, 2010 FreeBSD 13.1-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.