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

FreeBSD Manual Pages

  
 
  

home | help
MAP_VIEW(3)		    Library Functions Manual		   MAP_VIEW(3)

NAME
       MAP_View	-- editor and display widget for Agar-MAP maps

SYNOPSIS
       #include	<agar/core.h>
       #include	<agar/map.h>

DESCRIPTION
       The  MAP_View  widget  renders the contents of a	MAP(3) to the display.
       MAP_View	also provides a	map editor with	an extensible set of map  edi-
       tion tools.

INITIALIZATION
       MAP_View	 *  MAP_ViewNew(void *parent, MAP *map,	Uint flags, AG_Toolbar
       *toolbar, AG_Statusbar *statbar)

       void MAP_ViewSizeHint(MAP_View *mv, int w, int h)

       void MAP_ViewSetScale(MAP_View *mv, Uint	zoom, int adj_offs)

       The MAP_ViewNew()  function  allocates,	initializes,  and  attaches  a
       MAP_View	widget,	displaying the given map.  The flags may include:

       MAP_VIEW_EDIT	      Enable map edition tools.

       MAP_VIEW_GRID	      Display the standard tile	grid.

       MAP_VIEW_CENTER	      When the widget is attached to a new map,	center
			      on its origin.

       MAP_VIEW_NO_CURSOR     Disable the edition cursor.

       MAP_VIEW_NO_BMPSCALE   Disable bitmap scaling on	zoom.

       MAP_VIEW_NO_BG	      Disable background tiling.

       MAP_VIEW_NO_NODESEL    Disable node selection functions.

       MAP_VIEW_SHOW_ORIGIN   Draw a circle at the origin.

       If  toolbar is not NULL,	the MAP_View will automatically	create buttons
       in it for each tool registered with MAP_ViewRegTool().  If  statbar  is
       not NULL, it will be used to display status information.

       The  MAP_ViewSizeHint()	function  arranges for the MAP_View to reserve
       enough space to display w by h nodes at the initial sizing stage.

       The MAP_ViewSetScale() function sets the	scaling	factor to zoom,	 given
       in  %  of  the  default	tile  geometry.	  If  the adj_offs argument is
       nonzero,	the camera is offset to	preserve centering.

SELECTIONS
       void MAP_ViewSetSelection(MAP_View *mv, int x, int y, int w, int	h)

       int MAP_ViewGetSelection(MAP_View *mv, int *x, int *y, int *w, int *h)

       The MAP_ViewSetSelection() function sets	the active selection to	w by h
       nodes at	map position x,	y.  MAP_ViewSetSelection() also	 disables  any
       mouse selection in progress.

       The MAP_ViewGetSelection() returns 1 if there is	an active selection or
       0  if  there is none.  If there is no selection,	no value is written to
       x, y, w and h.

EXTENSIONS
       void MAP_ViewRegTool(MAP_View *mv, const	MAP_Tool *toolspec, void *arg)

       void MAP_ViewSetDefaultTool(MAP_View *mv, MAP_Tool *tool)

       void MAP_ViewRegDrawCb(MAP_View *mv, void (*f)(MAP_View *mv, void *p))

       The MAP_View widget provides a generic interface	for  tools  that  must
       accomplish  diverse map operations.  MAP_ViewRegTool() registers	a tool
       for use from a MAP_View.	 toolspec is assumed to	point to a tool	struc-
       ture with the following fields properly initialized:

       typedef struct map_tool {
	       const char *name;     /*	Name of	the tool */
	       const char *desc;     /*	Short description */
	       AG_StaticIcon *icon;  /*	Icon (or NULL) */
	       int cursor_index;     /*	Static cursor (or -1) */

	       void (*init)(MAP_Tool *t);
	       void (*destroy)(MAP_Tool	*t);
	       int  (*load)(MAP_Tool *t, AG_DataSource *ds);
	       int  (*save)(MAP_Tool *t, AG_DataSource *ds);
	       int  (*cursor)(MAP_Tool *t, AG_Rect *r);
	       void (*effect)(MAP_Tool *t, MAP_Node *n);
	       int (*mousemotion)(MAP_Tool *t, int x, int y, int xrel,
				 int yrel, int xo, int yo, int xorel,
				 int yorel, int	button_state);
	       int (*mousebuttondown)(MAP_Tool *t, int x, int y, int xoff,
				      int yoff,	int button);
	       int (*mousebuttonup)(MAP_Tool *t, int x,	int y, int xoff,
				    int	yoff, int button);
	       int (*keydown)(MAP_Tool *t, int ksym, int kmod);
	       int (*keyup)(MAP_Tool *t, int ksym, int kmod);
       } MAP_Tool;

       The init(), destroy(), load() and save()	operations are	used  to  ini-
       tialize,	 free,	save and restore any private data structures needed by
       the tool.

       The cursor() operation is expected to draw the current  cursor  at  the
       screen coordinates given	by the AG_Rect argument.

       The  effect() operation is executed on mouse click events, and on mouse
       motion events where the relative	map (node) coordinates are >|1|.  Typ-
       ically, simple tools that perform node-specific operations such as  the
       `stamp' and `eraser' tools will use this	operation.

       Tools that perform more complex operations (such	as vector graphics ma-
       nipulations)   will   generally	 use  the  lower-level	mousemotion(),
       mousebuttondown(), mousebuttonup(), keydown() and  keyup()  operations.
       If any of these functions return	a value	of 1, the given	event will not
       be  forwarded  to  the  mouse/keyboard tool bindings and	default	opera-
       tions.

       The MAP_ViewSetDefaultTool() function configures	a default  tool	 which
       will receive all	events that have not been processed by the active tool
       or a mouse event	binding.

       The  MAP_ViewRegDrawCb()	 function registers a function to invoke every
       time the	MAP_View widget	is redrawn.

EVENTS
       The MAP_View widget generates the following events:

       mapview-dblclick(int button, int	x, int y, int xoff, int	yoff)
	   The user double clicked over	the given tile.

SEE ALSO
       AG_DataSource(3), AG_Widget(3),	AG_Window(3),  MAP(3),	MAP_Object(3),
       RG(3), SG_Intro(3)

HISTORY
       The MAP_View widget first appeared in Agar 1.0.

Agar 1.7		       December	21, 2022		   MAP_VIEW(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=MAP_View&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help