summaryrefslogtreecommitdiff
path: root/docs/gdk.texi
diff options
context:
space:
mode:
Diffstat (limited to 'docs/gdk.texi')
-rw-r--r--docs/gdk.texi326
1 files changed, 326 insertions, 0 deletions
diff --git a/docs/gdk.texi b/docs/gdk.texi
new file mode 100644
index 000000000..4942fe29b
--- /dev/null
+++ b/docs/gdk.texi
@@ -0,0 +1,326 @@
+\input texinfo @c -*-texinfo-*-
+@c %**start of header
+@setfilename gdk.info
+@settitle GDK
+@setchapternewpage odd
+@c %**end of header
+
+@set edition 1.0
+@set update-date 16 May 1996
+@set update-month May 1996
+
+@ifinfo
+This file documents GDK, the General Drawing Kit
+
+Copyright (C) 1996 Peter Mattis
+
+Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies
+
+@ignore
+Permission is granted to process this file throught TeX and print the
+results, provided the printed document carries copying permission notice
+identical to this one except for the removal of this paragraph (this
+paragraph not being relevant to the printed manual).
+
+@end ignore
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation
+approved by Peter Mattis.
+@end ifinfo
+
+@titlepage
+@title The General Drawing Kit
+@subtitle Version 1.0
+@subtitle @value{update-month}
+@author by Peter Mattis
+
+@page
+@vskip 0pt plus 1filll
+Copyright @copyright{} 1996 Peter Mattis
+
+Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation
+approved by Peter Mattis.
+@end titlepage
+
+@dircategory User Interface Toolkit
+@direntry
+* GDK: (gdk). The General Drawing Kit
+@end direntry
+
+@node Top, Copying, (dir), (dir)
+@top The General Drawing Kit
+@ifinfo
+This is edition @value{edition} of the GDK documentation,
+@w{@value{update-date}}.
+@end ifinfo
+
+@menu
+* Copying:: Your rights.
+* Overview:: What is GDK?
+* Initialization:: Initialization and exit.
+* Events:: Event handling.
+* Visuals:: Understanding and using visuals.
+* Windows:: Creating and using windows.
+* Graphics Contexts:: Creating and modifying GCs.
+* Pixmaps:: Creating pixmaps.
+* Images:: Creating images.
+* Color:: Specifying color.
+* Fonts:: Creating fonts.
+* Drawing:: Drawing commands.
+* XInput Support:: Using extended devices.
+* Miscellany:: Other stuff.
+* Examples:: Using GDK.
+* Function Index:: Index of functions
+* Concept Index:: Index of concepts
+@end menu
+
+@node Copying, Overview, Top, Top
+@comment node-name, next, previous, up
+@chapter Copying
+
+GDK is @dfn{free}; this means that everyone is free to use it and free
+to redestribute it on a free basis. GDK is not in the public domain; it
+is copyrighted and there are restrictions on its distribution, but these
+restrictions are designed to permit everything that a good cooperating
+citizen would want to do. What is not allowed is to try to prevent
+others from further sharing any version of GDK that they might get from
+you.
+
+Specifically, we want to make sure that you have the right to give away
+copies of GDK, that you receive source code or else can get it if you
+want it, that you can change GDK or use pieces of it in new free
+programs, and that you know you can do these things.
+
+To make sure that everyone has such rights, we have to forbid you to
+deprive anyone else of these rights. For example, if you distribute
+copies of GDK, you must give the recipients all the rights that you
+have. You must make sure that they, too, receive or can get the source
+code. And you must tell them their rights.
+
+Also, for my own protection, we must make certain that everyone finds
+out that there is no warranty for GDK. If GDK is modified by someone
+else and passed on, we want their recipients to know that what they have
+is not what we distributed, so that any problems introduced by others
+will no reflect on our reputation.
+
+The precise conditions of the licenses for GDK are found in the General
+Public Licenses that accompanies it.
+
+
+@node Overview, Initialization, Copying, Top
+@comment node-name, next, previous, up
+@chapter What is GDK?
+@cindex Overview
+
+GDK is designed as a wrapper library that lies on top of Xlib. It
+performs many common and desired operations for a programmer instead
+of the programmer having to explicitly ask for such functionality from
+Xlib directly. For example, GDK provides a common interface to both
+regular and shared memory XImage types. By doing so, an application
+can nearly transparently use the fastest image type available. GDK
+also provides routines for determining the best available color depth
+and the best available visual which is not always the default visual
+for a screen.
+
+@node Initialization, Events, Overview, Top
+@comment node-name, next, previous, up
+@chapter Initialization and exit
+@cindex Initialization
+@cindex Exit
+
+Initializing GDK is easy. Simply call @code{gdk_init} passing in the
+@var{argc} and @var{argv} parameters. Exit is similarly easy. Just
+call @code{gdk_exit}.
+
+@deftypefun void gdk_init (int *@var{argc}, char ***@var{argv})
+Initializes the GDK library. The arguments @var{argc} and @var{argv}
+are scanned and any arguments that GDK recognizes are handled and
+removed. The @var{argc} and @var{argv} parameters are the values
+passed to @code{main} upon program invocation.
+@end deftypefun
+
+@deftypefun void gdk_exit (int @var{errorcode})
+Exit GDK and perform any necessary cleanup. @code{gdk_exit} will call
+the systems @code{exit} function passing @var{errorcode} as the
+parameter.
+@end deftypefun
+
+@example
+int
+main (int argc, char *argv[])
+@{
+ /* Initialize GDK. */
+ gdk_init (&argc, &argv);
+
+ /* Exit from GDK...this call will never return. */
+ gdk_exit (0);
+
+ /* Keep compiler from issuing a warning */
+ return 0;
+@}
+@end example
+
+
+@node Events, Visuals, Initialization, Top
+@comment node-name, next, previous, up
+@chapter Event handling
+@cindex Events
+
+Events are the means by which GDK lets the programmer know of user
+interaction. An event is normally a button or key press or some other
+indirect user action, such as a the mouse cursor entering or leaving a
+window.
+
+There exist only a few functions for getting events and event
+information. These are @code{gdk_events_pending},
+@code{gdk_event_get}, @code{gdk_events_record} and
+@code{gdk_events_playback}. The latter two functions are useful for
+automatic testing of a software package and should normally not be
+needed in a program.
+
+@deftypefun gint gdk_events_pending (void)
+Returns the number of events pending on the event queue.
+@end deftypefun
+
+@deftypefun gint gdk_event_get (GdkEvent *@var{event})
+Return the next available event in the @var{event}
+structure. @code{gdk_event_get} will return @code{TRUE} on success and
+@code{FALSE} on failure. Success and failure is determined by whether
+an event arrived before the timeout period expired.
+@end deftypefun
+
+@deftypefun void gdk_events_record (char *@var{filename})
+Turn on recording of events. User events and certain system events will
+be saved in the file named by the variable @var{filename}. This stream
+of events can later be played back and ``should'' produce the same
+results as when the original events were handled. However, the
+programmer does need to be careful in that the state of the program must
+be the same when @code{gdk_events_record} is called and when
+@code{gdk_events_playback} is called. For this reason,
+@code{gdk_events_record} is normally not called directly, but is instead
+invoked indirectly by specifying the ``-record'' command line option.
+@end deftypefun
+
+@deftypefun void gdk_events_playback (char *@var{filename})
+Start playback of events from a file. (See the above description of
+@code{gdk_events_record}). Normally this function is not called directly
+but is invoked by the ``-playback'' command line option.
+@end deftypefun
+
+@deftypefun void gdk_events_stop (void)
+Stop recording and playback of events.
+@end deftypefun
+
+@example
+void
+handle_event ()
+@{
+ GdkEvent event;
+
+ if (gdk_event_get (&event))
+ @{
+ switch (event.type)
+ @{
+ @dots{}
+ @}
+ @}
+@}
+@end example
+
+
+@node Visuals, Windows, Events, Top
+@comment node-name, next, previous, up
+@chapter Understanding and using visuals
+@cindex Visuals
+
+@node Windows, Graphics Contexts, Visuals, Top
+@comment node-name, next, previous, up
+@chapter Creating and using windows
+@cindex Windows
+
+@node Graphics Contexts, Pixmaps, Windows, Top
+@comment node-name, next, previous, up
+@chapter Creating and modifying GCs
+@cindex Graphics Contexts
+@cindex GC
+
+@node Pixmaps, Images, Graphics Contexts, Top
+@comment node-name, next, previous, up
+@chapter Creating pixmaps
+@cindex Pixmaps
+
+@node Images, Color, Pixmaps, Top
+@comment node-name, next, previous, up
+@chapter Creating images
+@cindex Images
+
+@node Color, Fonts, Images, Top
+@comment node-name, next, previous, up
+@chapter Specifying color
+@cindex Color
+
+@node Fonts, Drawing, Color, Top
+@comment node-name, next, previous, up
+@chapter Creating Fonts
+@cindex Fonts
+
+@node Drawing, XInput Support, Fonts, Top
+@comment node-name, next, previous, up
+@chapter Drawing Commands
+@cindex Drawing
+
+@node XInput Support, Miscellany, Drawing, Top
+@comment node-name, next, previous, up
+@chapter Using extended devices
+@cindex Overview
+@cindex Using extended device capabilities
+@cindex Controlling extended devices
+
+@node Miscellany, Examples, XInput Support, Top
+@comment node-name, next, previous, up
+@chapter Other stuff
+@cindex Timers
+@cindex Debugging
+@cindex Miscellaneous
+
+
+@node Examples, Function Index, Miscellany, Top
+@comment node-name, next, previous, up
+@chapter Using GDK
+@cindex Examples
+
+
+@node Function Index, Concept Index, Examples, Top
+@comment node-name, next, previous, up
+@unnumbered Variable Index
+
+@printindex fn
+
+@node Concept Index, , Function Index, Top
+@comment node-name, next, previous, up
+@unnumbered Concept Index
+
+@printindex cp
+
+@summarycontents
+@contents
+@bye