From e7ab793e96fc93f43985b6aff1c1f173945d4902 Mon Sep 17 00:00:00 2001 From: Gregory John Casamento Date: Sat, 25 Nov 2023 09:28:12 -0500 Subject: [PATCH] Update manual for backend and interface files --- Documentation/manual/interfacefiles.texi | 2 +- Documentation/manual/intro.texi | 36 +++++++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/Documentation/manual/interfacefiles.texi b/Documentation/manual/interfacefiles.texi index 5c7fab5b8c..6ddc549bc3 100644 --- a/Documentation/manual/interfacefiles.texi +++ b/Documentation/manual/interfacefiles.texi @@ -25,7 +25,7 @@ @chapter Interface Files @cindex interface files, definition -@dfn{Interface files} are used to store your applications graphical user interface. This separation means that you can modify it more easily than other interface generation mechanisms, such as code generators, which generate code that makes it hard to modify the interface or requires you to rewrite your own code. The advantage of a separate interface file is that you can change the interface without having to recompile one bit of code (in most instances). +@dfn{Interface files} are used to store your applications graphical user interface. This separation means that you can modify it more easily than other interface generation mechanisms, such as code generators, that make it hard to modify the interface or requires you to rewrite your own code. The advantage of a separate interface file is that you can change the interface without having to recompile one bit of code (in most instances). @cindex nibs (and other models) Interface files are often referred to as "nib" (or, more generally, model) files.@footnote{This is a throwback to the origin's of the GNUstep framework, when it's API specification (OpenStep) was based on NeXTStep, which used typedstream "nib" files (NeXT Inteface Builder) to store interfaces.} XML nib files after 10.2.x are usable by GNUstep, early nib files are ``typedstream'' style nibs which cannot be read by GNUstep. The framework can read other formats as detailed below. This section is very important to understanding key concepts in the AppKit, especially with regards to manipulation of your user interface. It is strongly recommended you do not skip this section, and refer back to it if you do not understand anything, even if you don't intend to use Gorm (also not recommended). diff --git a/Documentation/manual/intro.texi b/Documentation/manual/intro.texi index 944d6fed38..0e08c0f359 100644 --- a/Documentation/manual/intro.texi +++ b/Documentation/manual/intro.texi @@ -20,7 +20,7 @@ workspace support classes such as data links, open/save panels, context-dependent help, spell checking. It provides functionality that aims to implement the @samp{AppKit} -portion of the OpenStep standard. However the implementation has +portion of the OpenStep / Cocoa API. However the implementation has been written to take advantage of GNUstep enhancements wherever possible. The GNUstep GUI Library is divided into a front and back-end. The @@ -34,6 +34,40 @@ back-end, because it allows different platforms to share the large amount of front-end code. Documentation for how the individual backends work is coverered in a separate document. +The backend is divided into two parts: graphical and event handling. The +graphical portion renders the widgets based on code in the AppKit/GUI +framework. The events portion processes the events from mouse and +keyboard input. Both portions are operating system / environment +specific. + +The backends supported by GNUstep currently are: +@table @command + +@item Cairo +The Cairo backend uses the more postscript like rendering of the cairo +graphics library (available from opendesktop.org) to render. + +@item Win32 / GDI +This backend uses GDI to render the widgets. + +@item Wayland +This backend uses the Wayland display technology to render. This is +an expermental backend at present. + +@item Art +The art backend uses libart (the LGPL version) to render the widgets. +This backend is deprecated. + +@item Xlib +The Xlib backend is the bare X11 backend that uses primitive calls to +render the objects. This backend is deprecated. + +@end table + +In general, GNUstep GUI can theoretically be used on any system on which +you can build a backend. Currently, you can build on most UNIX systems +(not Darwin, currently) as well as Windows under MSYS2 and MSVC. + @section Implementation Details Following are some implementation details of the GUI library. These will