Today, Canvas (GUI) is a topic that generates great interest and debate in society. Since its emergence, it has captured the attention of experts and the general public, who seek to understand and analyze it from different perspectives. Its impact covers various aspects, from the economy to culture, and its influence extends globally. With the passage of time, Canvas (GUI) has become a highly relevant phenomenon, giving rise to conflicting opinions and deep reflections. In this article, we will explore this relevant topic in detail, examining its implications and consequences in different areas.
Container in computer graphics
In computer science and visualization, a canvas is a container that holds various drawing elements (lines, shapes, text, frames containing others elements, etc.). It takes its name from the canvas used in visual arts. It is sometimes called a scene graph because it arranges the logical representation of a user interface or graphical scene. Some implementations also define the spatial representation and allow the user to interact with the elements via a graphical user interface.[1]
Library support
Various free and open-source canvas or scene-graph libraries allow developers to construct a user interface and/or user-interface elements for their computer programs.
Examples of free and open-source scene-graph canvas options include:
- in C, Evas (in EFL) from the Enlightenment project
- in C, Clutter, associated with the GNOME project
- in C, GTK Scene Graph Kit (GSK)
- in C++ or optionally in Qt's own markup language QML: Qt Quick, provides a scenegraph Archived 2013-10-29 at the Wayback Machine associated with the Qt project
- in C++, OpenSceneGraph, a 3D graphics API using OpenGL
- in C++, the OGRE engine, based on a scene graph, supports multiple scene managers
- in C++, OpenSG, a scene-graph system for real-time graphics, with clustering support and multi-thread safety
- in C++, the FlightGear Flight Simulator uses a custom Canvas system (LGPL'ed via SimGear[2]) that is hardware-accelerated using OpenSceneGraph/OpenGL, OpenVG/ShivaVG:[3] The FlightGear Canvas system
- in Java, the Java FX scene graph with 2D and 3D functionality
- in Tcl and other languages such as Perl, Python (Tkinter[4]), and Ruby, the Tk toolkit provides a
canvas widget for 2D graphics[5][6]
- in Tcl[7] and other languages such as Perl[8] and Python,[9] TkZinc Archived 2017-12-07 at the Wayback Machine is an extended replacement for the Tk canvas, which adds support for hierarchical grouping, clipping, affine transformations, anti-aliasing, and specific items for air traffic control.
Some canvas modules within various libraries do not provide the power of a full scene-graph - they operate at a lower level which requires programmers to provide code such as mapping mouse-clicks to objects in the canvas. Examples of libraries which include such a canvas module include:
- in C++, KDE Plasma Workspaces Corona canvas
- the Canvas element in HTML5
- for Java, the AWT library Canvas
- for Java, the Java FX library Canvas[permanent dead link]
- for Java, the Swing library Canvas
- for Java, the SWT library Canvas, associated with Eclipse
- for Java-like JavaScript, the GWT library Canvas
- in C++, the papyrus Canvas library which renders using the Cairo (graphics) library
- in C, crcanvas, a GTK canvas widget which renders using the Cairo (graphics) library
- in C, GooCanvas, a GTK canvas widget which renders using the Cairo (graphics) library
Proprietary canvas libraries include, for example:
References