Sophie

Sophie

distrib > * > cooker > x86_64 > by-pkgid > 5674b83e4098065ec8ee4138eac12e58 > files > 461

lib64gigi-devel-0.8.0-8.1074.1.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>GG: A Brief Tour</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">GG
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">A Brief Tour </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>In a library as diverse in functionality as <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a>, it can be difficult even to figure out what the library has to offer. This "tour" is designed to provide a brief overview of the various features of <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> not covered elsewhere, and to point users to the more detailed information elsewhere in the documentation. The topics are covered in no particular order.</p>
<p>First off, it should be noted that there is a lot of general overview-type documentation in the <a class="el" href="classGG_1_1Wnd.html" title="This is the basic GG window class.">GG::Wnd</a> and <a class="el" href="classGG_1_1GUI.html" title="An abstract base for an GUI framework class to drive the GG GUI.">GG::GUI</a> detailed documentation. Many of the things mentioned below are covered there in more detail.</p>
<h1><a class="anchor" id="tour_event_filters"></a>
Event Filters</h1>
<p>Event filtering allows one to use a <a class="el" href="classGG_1_1Wnd.html" title="This is the basic GG window class.">GG::Wnd</a> to intrusively handle the events sent to another <a class="el" href="classGG_1_1Wnd.html" title="This is the basic GG window class.">GG::Wnd</a>. This can be useful, for example, in a control (the parent) that is composed of multiple controls (the children), but which needs to handle certain events uniformly. Perhaps right-clicks should always bring up a context menu, for instance. Without event filtering, each child control would have to explicitly forward its right-clicks instead of processing them normally, which would in turn require subclassing. Event filters remove the need for such subclassing. </p>
<dl class="section see"><dt>See also:</dt><dd>The <a class="el" href="classGG_1_1Wnd.html" title="This is the basic GG window class.">GG::Wnd</a> description, <a class="el" href="classGG_1_1Wnd.html#a902f5993e24380834f1c4bd732d3a090">GG::Wnd::EventFilter()</a>, <a class="el" href="classGG_1_1Wnd.html#a96074f6cd3ed95c06032701aa73d933a">GG::Wnd::InstallEventFilter()</a>, and <a class="el" href="classGG_1_1Wnd.html#acb55e790aa996b50c9efe338bb93c04f">GG::Wnd::RemoveEventFilter()</a>.</dd></dl>
<h1><a class="anchor" id="tour_layouts"></a>
Layouts</h1>
<p><a class="el" href="classGG_1_1Layout.html" title="An invisible Wnd subclass that arranges its child Wnds.">GG::Layout</a> encapsulates the relative arrangement of child <a class="el" href="classGG_1_1Wnd.html" title="This is the basic GG window class.">GG::Wnd</a>'s in the client area of a <a class="el" href="classGG_1_1Wnd.html" title="This is the basic GG window class.">GG::Wnd</a>, so that positioning such children requires less hand-coding. </p>
<dl class="section see"><dt>See also:</dt><dd>The <a class="el" href="classGG_1_1Wnd.html" title="This is the basic GG window class.">GG::Wnd</a> description.</dd></dl>
<h1><a class="anchor" id="tour_browse_info"></a>
The Browse-Info System</h1>
<p>Like "tooltips", but more general. You can have any non-interactive GUI elements you like inside of a <a class="el" href="classGG_1_1BrowseInfoWnd.html" title="The abstract base class for all browse-info display windows.">GG::BrowseInfoWnd</a>, and the contents of the <a class="el" href="classGG_1_1BrowseInfoWnd.html" title="The abstract base class for all browse-info display windows.">GG::BrowseInfoWnd</a> can vary, for example to provide increasing amounts of info over time. </p>
<dl class="section see"><dt>See also:</dt><dd>The <a class="el" href="classGG_1_1Wnd.html" title="This is the basic GG window class.">GG::Wnd</a> description.</dd></dl>
<h1><a class="anchor" id="tour_style_factory"></a>
The Style Factory</h1>
<p>Many of the control classes reuse other controls to do part of their work. For instance, <a class="el" href="classGG_1_1Scroll.html" title="This is a basic scrollbar control.">GG::Scroll</a> uses a pair of <a class="el" href="classGG_1_1Button.html" title="This is a basic button control.">GG::Button</a> objects for its up and down (or left and right) buttons. If a user wishes to use a custom subclass of <a class="el" href="classGG_1_1Button.html" title="This is a basic button control.">GG::Button</a> throughout an application, how is she to get <a class="el" href="classGG_1_1Scroll.html" title="This is a basic scrollbar control.">GG::Scroll</a> to create <a class="el" href="classGG_1_1Button.html" title="This is a basic button control.">GG::Button</a>'s of the right type? The answer is that all controls created by <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> are requested from a <a class="el" href="classGG_1_1StyleFactory.html" title="Creates new dialogs and Controls.">GG::StyleFactory</a>. </p>
<dl class="section see"><dt>See also:</dt><dd>The <a class="el" href="classGG_1_1Wnd.html" title="This is the basic GG window class.">GG::Wnd</a> description and the <a class="el" href="classGG_1_1GUI.html" title="An abstract base for an GUI framework class to drive the GG GUI.">GG::GUI</a> description.</dd></dl>
<h1><a class="anchor" id="tour_plugins"></a>
Plugins</h1>
<p>Plugins (dynamically loaded shared libraries/DLLs not linked into the application when it is built) can be created and used with <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a>. Plugins provide a <a class="el" href="classGG_1_1StyleFactory.html" title="Creates new dialogs and Controls.">GG::StyleFactory</a>, and a default font name and size. </p>
<dl class="section see"><dt>See also:</dt><dd><a class="el" href="classGG_1_1PluginInterface.html" title="The interface to custom-control plugins.">GG::PluginInterface</a>.</dd></dl>
<h1><a class="anchor" id="tour_standard_dialogs"></a>
Standard Dialogs</h1>
<p>Three standard dialogs are provided:</p>
<ul>
<li>A color selection dialog, <a class="el" href="classGG_1_1ColorDlg.html" title="A dialog box used to get a color selection from the user.">GG::ColorDlg</a>;</li>
<li>A file(s)/directory selection dialog, <a class="el" href="classGG_1_1FileDlg.html" title="The default file open/save dialog box.">GG::FileDlg</a>; and</li>
<li>A general-purpose message dialog containing at most three buttons, <a class="el" href="classGG_1_1ThreeButtonDlg.html" title="A general pop-up message or user input box with one, two, or three buttons.">GG::ThreeButtonDlg</a>.</li>
</ul>
<h1><a class="anchor" id="tour_cursor_rendering"></a>
Cursor Rendering</h1>
<p><a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> can optionally render a cursor. By default, <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> assumes that the underlying system is rendering the cursor, and so does not attempt to do so. </p>
<dl class="section see"><dt>See also:</dt><dd><a class="el" href="classGG_1_1GUI.html#ae07a5306423825c3d24d8fc0a93b46b7" title="returns true iff the GUI is responsible for rendering the cursor">GG::GUI::RenderCursor()</a>, <a class="el" href="classGG_1_1GUI.html#ae94510bec981f0be1193345520cdf102" title="returns the currently-installed cursor">GG::GUI::GetCursor()</a>, <a class="el" href="classGG_1_1GUI.html#a71035f9082f7a8b12f6158ccfb88f11c" title="sets the currently-installed cursor">GG::GUI::SetCursor()</a>, and <a class="el" href="classGG_1_1Cursor.html" title="Cursor is the base class for GUI-renderable cursors.">GG::Cursor</a>.</dd></dl>
<h1><a class="anchor" id="tour_flags"></a>
Flags</h1>
<p><a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> uses format flags, window creation flags, and several other types of bit-flag sets in various places. These bit-flag sets are not interoperable. This is designed as a workaround to problems inherent to C++ enums, such as implicit conversion to integral types, which in turn leads to comparability of arbitrary enumeration values from different enumerations. For instance, it is impossible (due to a compile-time error) to accidentally pass the (nonsensical) flag <a class="el" href="namespaceGG.html#a952ea21db3c84bd8613de4c258e778db" title="Default format selected.">GG::FORMAT_NONE</a> to the <em>flags</em> parameter of <a class="el" href="classGG_1_1Wnd.html#a5df09f68f024097f8cc41d52a79be206" title="Default ctor.">GG::Wnd::Wnd()</a>. With built-in C++ enums, this would not be caught by the compiler. <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> provides two classes, <a class="el" href="classGG_1_1Flags.html" title="A set of flags of the same type.">GG::Flags</a> and <a class="el" href="classGG_1_1FlagSpec.html" title="A singleton that encapsulates the set of known flags of type FlagType.">GG::FlagSpec</a>, that allow the user to extend the sets of flags used in <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a>, if user-created subclasses should require more flags than the ones <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> provides.</p>
<h1><a class="anchor" id="tour_text_formatting_tags"></a>
Text Formatting Tags</h1>
<p>Text rendered by <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> can make use of text formatting tags, similar to those used in HTML documents (e.g. &lt;i&gt;<em>italicized text here</em>&lt;/i&gt;). <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> defines numerous tags that control text justification, text color, bolding, underlining, italicizing, etc. Users can also add their own tags. Though <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> does not associate any semantics with user-defined tags, it will treat them as tags, meaning they will be automatically be removed from the text as it appears when rendered. </p>
<dl class="section see"><dt>See also:</dt><dd>The <a class="el" href="classGG_1_1Font.html" title="A bitmapped font rendering class.">GG::Font</a> description.</dd></dl>
<h1><a class="anchor" id="tour_keyboard_accelerators"></a>
Keyboard Accelerators</h1>
<p>Keyboard accelerators may be established that emit signals on (and possibly filter out) keystrokes. Accelerators can include a modifier specification, so for instance Ctrl-K, Alt-K, and K may be created as different accelerators. Each accelerator has an associated signal to which arbitrarily many slots can be connected. </p>
<dl class="section see"><dt>See also:</dt><dd>The <a class="el" href="classGG_1_1GUI.html" title="An abstract base for an GUI framework class to drive the GG GUI.">GG::GUI</a> description.</dd></dl>
<h1><a class="anchor" id="tour_user_input_drivers"></a>
User Input Drivers</h1>
<p>Two input drivers are currently available for use with <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> &ndash; one for <a href="http://libsdl.org">SDL</a> and one for <a href="http://ogre3d.org">Ogre</a>. Note that Ogre does not have built-in support for user input. As of this writing, it uses another library called <a href="http://sourceforge.net/projects/wgois">OIS</a>. An Ogre plugin that provides OIS support is also provided in src/Ogre/Plugins. </p>
<dl class="section see"><dt>See also:</dt><dd><a class="el" href="classGG_1_1SDLGUI.html" title="This is an abstract singleton class that represents the GUI framework of an SDL OpenGL application...">GG::SDLGUI</a>, <a class="el" href="classGG_1_1OgreGUI.html" title="This is an abstract singleton class that represents the GUI framework of an Ogre OpenGL application...">GG::OgreGUI</a>, <a class="el" href="classGG_1_1OgreGUIInputPlugin.html" title="The base class for Ogre plugins that provides input functionality to OgreGUI.">GG::OgreGUIInputPlugin</a>, and <a class="el" href="classOISInput.html" title="An Ogre plugin that provides input functionality to OgreGUI using OIS.">OISInput</a>.</dd></dl>
<h1><a class="anchor" id="tour_timers"></a>
Timers</h1>
<p>Timers are available to which slots can be connected. A timer fires its signal after at least T time has elapsed, where T is a user-provided time interval. Note the use of "at least". Timers are only evaluated during <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a>'s normal processing loop, so if the application is cycling slowly (due to heavy processing, etc.), timers can fire arbitrarily less frequently than desired.</p>
<h1><a class="anchor" id="tour_event_pumps"></a>
Event Pumps</h1>
<p><a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> abstracts out the inner loop that processes events and renders frames into a class called <a class="el" href="classGG_1_1EventPump.html" title="Encapsulates the GG event-pumping mechanism.">GG::EventPump</a>. Most users will never need to use event pumps, but those users writing a new input driver will. Note that if you are integrating <a class="el" href="namespaceGG.html" title="The namespace that encloses all GG classes, functions, typedefs, enums, etc.">GG</a> with an existing application that has its own render loop, you will almost certainly need to use <a class="el" href="classGG_1_1EventPump.html" title="Encapsulates the GG event-pumping mechanism.">GG::EventPump</a>. See the <a class="el" href="classGG_1_1EventPump.html" title="Encapsulates the GG event-pumping mechanism.">GG::EventPump</a> documnentation for details. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jun 15 2012 15:13:31 for GG by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1
</small></address>
</body>
</html>