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

FreeBSD Manual Pages

  
 
  

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

NAME
     SK_View -- Editor/display widget for Agar dimensioned 2D sketches

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

DESCRIPTION
     The  SK_View  widget displays a SK(3) sketch, and allows edition facilities
     to be implemented using a tool registration interface.

INHERITANCE HIERARCHY
     AG_Object(3)-> AG_Widget(3)-> SK_View.

INITIALIZATION
     SK_View * SK_ViewNew(AG_Widget *parent, SK *sk, Uint flags)

     void SK_ViewZoom(SK_View *skv, M_Real factor)

     The SK_ViewNew() function allocates, initializes, and  attaches  a  SK_View
     widget.  Acceptable flags options include:

     SK_VIEW_HFILL    Expand horizontally in parent container.

     SK_VIEW_VFILL    Expand vertically in parent container.

     SK_VIEW_EXPAND   Shorthand for SK_VIEW_HFILL | SK_VIEW_VFILL.

     The SK_ViewZoom() function sets the display scaling factor (1.0 = 100%).

TOOL SYSTEM
     SK_Tool * SK_ViewRegTool(SK_View *skv, const SK_ToolOps *ops, void *arg)

     void SK_ViewSelectTool(SK_View *skv, SK_Tool *tool, void *arg)

     SK_Tool * SK_ViewFindTool(SK_View *skv, const char *name)

     SK_Tool * SK_ViewFindToolByOps(SK_View *skv, const SK_ToolOps *ops)

     void SK_ViewSetDefaultTool(SK_View *skv, SK_Tool *tool)

     The  SK_ViewRegTool()  function registers a new tool class described by the
     ops structure, which is defined as:

     typedef struct sk_tool_ops {
	     const char *name;
	     const char *desc;
	     struct ag_static_icon *icon;
	     AG_Size len;
	     Uint flags;
     #define SK_MOUSEMOTION_NOSNAP 0x01 /* Ignore snapping in mousemotion */
     #define SK_BUTTONUP_NOSNAP    0x02 /* Ignore snapping in buttonup */
     #define SK_BUTTONDOWN_NOSNAP  0x04 /* Ignore snapping in buttondown */
     #define SK_BUTTON_NOSNAP	   (SK_BUTTONUP_NOSNAP|SK_BUTTONDOWN_NOSNAP)
     #define SK_NOSNAP		   (SK_BUTTON_NOSNAP|SK_MOUSEMOTION_NOSNAP)

	     void (*init)(void *tool);
	     void (*destroy)(void *tool);
	     void (*edit)(void *tool, void *editBox);

	     int (*mousemotion)(void *tool, M_Vector3 pos, M_Vector3 vel,
				int btn);
	     int (*mousebuttondown)(void *tool, M_Vector3 pos, int btn);
	     int (*mousebuttonup)(void *tool, M_Vector3 pos, int btn);
	     int (*keydown)(void *tool, int ksym, int kmod);
	     int (*keyup)(void *tool, int ksym, int kmod);
     } SK_ToolOps;

     The name field is a unique name identifier for the tool.  desc is	a  short
     description  string.  icon is an optional icon or NULL.  len is the size of
     the structure describing an instance of this tool class.

     The init() operation initializes a  new  instance	of  a  tool.   destroy()
     should  release  all  resources allocated by a tool instance.  The optional
     edit() operation is expected to attach arbitrary widgets  to  editBox,  for
     purposes of editing tool parameters.

     The  low-level input device events processed by the SK_View widget are for-
     warded to the handler functions mousemotion(), mousebuttondown(), mousebut-
     tonup(), keydown() and keyup().  They should return 1 if  some  action  has
     resulted  from  the  event,  or 0 otherwise.  The coordinates passed to the
     mouse*() handlers are translated to actual SK(3) coordinates.

     The SK_ViewSelectTool() function selects tool as the active tool  instance.
     The arg argument is an optional user pointer passed to the tool instance.

     The   SK_ViewFindTool()   function  looks	up  a  tool  instance  by  name.
     SK_ViewFindToolByOps() looks up a tool instance by class.	 Both  functions
     return NULL if no match was found.

     SK_ViewSetDefaultTool()  configures a tool to be active by default when the
     SK_View is initially created.  This is often a "select" type tool.

MISCELLANEOUS
     SK_Point * SK_ViewOverPoint(SK_View *skv, M_Vector3  *pos,  M_Vector3  *vC,
     void *ignoreNode)

     void SK_ViewSetNodeData(SK_View *skv, SK_Node *node, void *pData)

     void * SK_ViewGetNodeData(SK_View *skv, SK_Node *node)

     The  SK_ViewOverPoint()  function	performs a proximity query for the given
     position pos, with respect to all point entities in the sketch.  This func-
     tion is a convenient wrapper  around  SK_ProximitySearch(3).   The  closest
     point is returned into the vC argument.  The optional ignore argument spec-
     ifies a pointer to a node that should be ignored in the search.

     The  SK_ViewSetNodeData() function registers a pointer to an arbitrary data
     structure (previously allocated with malloc(3) or AG_Malloc(3)) to be asso-
     ciated with a given node, using a table in the SK_View structure.	This  is
     useful for nodes that need to cache resources such as texture handles, that
     are specific to an SK_View instance.

     SK_ViewGetNodeData() returns a pointer to the arbitrary data structure pre-
     viously associated with node, or NULL if no match was found.

EXAMPLES
     See  the skedit(1) application (the tools directory in the Agar source dis-
     tribution).

SEE ALSO
     M_Matrix(3), M_Real(3), M_Vector(3), SG_Intro(3), SK(3)

HISTORY
     The SK_View widget first appeared in Agar 1.6.0.

Agar 1.7			December 21, 2022		      SK_VIEW(3)

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

home | help