FreeBSD Manual Pages
RG_TILEVIEW(3) Library Functions Manual RG_TILEVIEW(3) NAME RG_Tileview -- Agar-RG graphics editor SYNOPSIS #include <agar/core.h> #include <agar/gui.h> #include <agar/map/rg.h> DESCRIPTION The RG_Tileview widget displays the contents of a RG_Tile(3) and pro- vides an interface for implementing different types of graphical edi- tors and tools. Built-in graphical editors for tile pixmaps, sketches and features are provided. INITIALIZATION RG_Tileview * RG_TileviewNew(void *parent, RG_Tileset *ts, Uint flags) void RG_TileviewSetTile(RG_Tileview *tv, RG_Tile *tile) void RG_TileviewSetZoom(RG_Tileview *tv, int new_zoom, int adj_offset) void RG_TileviewSetAutoRefresh(RG_Tileview *tv, int flag, int rate) The RG_TileviewNew() function allocates, initializes, and attaches a RG_Tileview widget, initially displaying the given tile. Acceptable flags include: RG_TILEVIEW_NO_SCROLLING Disable panning on right click. RG_TILEVIEW_HIDE_CONTROLS Hide the control overlays. RG_TILEVIEW_NO_TILING Disable background tiling. RG_TILEVIEW_NO_EXTENT Don't display the boundary rectangle. RG_TILEVIEW_NO_GRID Disable the standard tile grid. RG_TILEVIEW_HFILL Expand horizontally in parent container. RG_TILEVIEW_VFILL Expand vertically in parent container. RG_TILEVIEW_EXPAND Shorthand for RG_TILEVIEW_HFILL | RG_TILEVIEW_VFILL. The RG_TileviewSetTile() function changes the tile associated with the given RG_Tileview. The RG_TileviewSetZoom() function changes the display scaling factor to new_zoom (given in percents). If the adj_offset argument is non-zero, the display is offset to preserve centering. The RG_TileviewSetAutoRefresh() function controls the auto-refresh set- ting. If flag is non-zero, the tile is automatically regenerated every rate milliseconds. PRIMITIVES void RG_TileviewColor3i(RG_Tileview *tv, Uint8 r, Uint8 g, Uint8 b) void RG_TileviewColor4i(RG_Tileview *tv, Uint8 r, Uint8 g, Uint8 b, Uint8 a) void RG_TileviewColor(RG_Tileview *tv, AG_Color *color, Uint8 alpha) void RG_TileviewAlpha(RG_Tileview *tv , Uint8, alpha") void RG_TileviewPixel(RG_Tileview *tv, int x, int y) void RG_TileviewPixelCached(RG_Tileview *tv, int x, int y, Uint8 r, Uint8 g, Uint8 b) void RG_TileviewRect(RG_Tileview *tv, int x, int y, int w, int h) void RG_TileviewRectOut(RG_Tileview *tv, int x, int y, int w, int h) void RG_TileviewCircle(RG_Tileview *tv, int x, int y, int r) The RG_TileviewColor3i(), RG_TileviewColor4i(), RG_TileviewColor() and RG_TileviewAlpha() functions modify the current RGBA value describing the color to use for subsequent primitive calls. The RG_TileviewPixel() function plots a pixel at the specified tile co- ordinates. The pixel will not be visible until the tile is regener- ated. The RG_TileviewPixelCached() function overwrites the pixel on the cached, generated tile used by RG_Tileview, as opposed to the source tile. The pixel will be visible immediately, but the source tile will be unchanged. The RG_TileviewRect() function draws a filled rectangle of dimensions w, h at tile coordinates x, y. The RG_TileviewRectOut() variant draws a rectangle outline. The RG_TileviewCircle() function draws a circle outline of radius r with the origin at x, y. GRAPHICAL CONTROLS RG_TileviewCtrl * RG_TileviewAddCtrl(RG_Tileview *tv, enum rg_tileview_ctrl_type type, const char *fmt) void RG_TileviewDelCtrl(RG_Tileview *tv, RG_TileviewCtrl *ctrl) int RG_TileviewInt(RG_Tileview *tv, int nval) Uint RG_TileviewUint(RG_Tileview *tv, int nval) float RG_TileviewFloat(RG_Tileview *tv, int nval) double RG_TileviewDouble(RG_Tileview *tv, int nval) void RG_TileviewSetInt(RG_Tileview *tv, int nval, int v) void RG_TileviewSetUint(RG_Tileview *tv, int nval, Uint v) void RG_TileviewSetFloat(RG_Tileview *tv, int nval, float v) void RG_TileviewSetDouble(RG_Tileview *tv, int nval, double v) The RG_Tileview widget implements generic graphical controls. It is used for moving and resizing pixmaps/sketches inside tiles and control- ling particular features. A control may manipulate multiple integral and floating-point variables. The RG_TileviewAddCtrl() function creates a new graphical control of the given type: enum rg_tileview_ctrl_type { RG_TILEVIEW_POINT, /* Point (x,y) */ RG_TILEVIEW_RECTANGLE, /* Rectangle (x,y,w,h) */ RG_TILEVIEW_RDIMENSIONS, /* Rectangle (w,h) */ RG_TILEVIEW_CIRCLE /* Circle (x,y,r) */ }; RG_TILEVIEW_POINT controls a single point value. It is used for set- ting the position of the origin of a tile, for instance. RG_TILEVIEW_RECTANGLE controls both the coordinates and geometry of a rectangle. It is used for things like pixmaps and sketches. RG_TILEVIEW_RDIMENSIONS controls the dimensions of a non-movable rec- tangle. It is used for changing the geometry of the tile itself when no sketches, pixmaps or features are selected. RG_TILEVIEW_CIRCLE con- trols the position and radius of a circle. The special format string fmt and subsequent arguments specify the variables to edit. Acceptable sequences include %i (int), %u (Uint), %f (float) and %d (double). Sequences such as %*i specify that the ar- gument is a pointer to the given type. The RG_TileviewDelCtrl() function destroys the given control. The remaining tileview_*() and tileview_set_*() functions respectively retrieve and modify the given value associated with the given control. TOOLS void RG_TileviewSelectTool(RG_Tileview *tv, RG_TileviewTool *tool) void RG_TileviewUnselectTool(RG_Tileview *tv) The RG_TileviewSelectTool() and RG_TileviewUnselectTool() functions se- lect or deselect the current edition tool. The generic features of all edition tools are defined by the structure: typedef struct rg_tileview_tool_ops { const char *name; /* Name of tool */ const char *desc; /* Tool description */ AG_Size len; /* Size of structure */ Uint flags; int icon; /* Specific icon (or -1) */ int cursor; /* Specific cursor (or -1) */ void (*init)(void *); void (*destroy)(void *); AG_Window *(*edit)(void *); void (*selected)(void *); void (*unselected)(void *); } RG_TileviewToolOps; Two specialized derivates are available, one for bitmap-specific tools and another for vector-specific tools: typedef struct rg_tileview_bitmap_tool_ops { struct rg_tileview_tool_ops ops; void (*mousebuttondown)(void *, int, int, int); void (*mousebuttonup)(void *, int, int, int); void (*mousemotion)(void *, int, int, int, int); } RG_TileviewBitmapToolOps; typedef struct rg_tileview_sketch_tool_ops { struct rg_tileview_tool_ops ops; void (*mousebuttondown)(void *, RG_Sketch *, float, float, int); void (*mousebuttonup)(void *, RG_Sketch *, float, float, int); void (*mousemotion)(void *, RG_Sketch *, float, float, float, float); int (*mousewheel)(void *, RG_Sketch *, int); void (*keydown)(void *, RG_Sketch *, int, int); void (*keyup)(void *, RG_Sketch *, int, int); } RG_TileviewSketchToolOps; EVENTS The RG_Tileview widget does not generate any event. SEE ALSO RG(3), RG_Anim(3), RG_Feature(3), RG_Pixmap(3), RG_Sketch(3), RG_Texture(3), RG_Tile(3) Agar 1.7 December 21, 2022 RG_TILEVIEW(3)
NAME | SYNOPSIS | DESCRIPTION | INITIALIZATION | PRIMITIVES | GRAPHICAL CONTROLS | TOOLS | EVENTS | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RG_Tileview&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>
