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  edition
     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 accom-
     plish  diverse  map operations.  MAP_ViewRegTool() registers a tool for use
     from a MAP_View.  toolspec is assumed to point to a tool structure 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 initialize,
     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  mo-
     tion events where the relative map (node) coordinates are >|1|.  Typically,
     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 manipu-
     lations) will generally use  the  lower-level  mousemotion(),  mousebutton-
     down(), 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 operations.

     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+15.1.quarterly>

home | help