1coin_libraries(3)                    Coin                    coin_libraries(3)
2
3
4

NAME

6       coin_libraries - Coin use of 3rd party libraries.
7
8       Coin may use a wide variety of 3rd party libraries, directly and
9       indirectly, depending on how the Coin build was configured. This
10       document tries to summarize the situation. Some of the libraries that
11       are a standard part of an operating system are ignored here.
12
13       This document expects that the reader is familiar with library build
14       processes and has knowledge of various concepts such as 'configure-
15       time', 'linktime', and 'runtime' related to library builds and
16       behaviour.
17
18       First of all, Coin requires OpenGL. Depending on the OpenGL version,
19       features in Coin are turned on and off. If a feature Coin is supposed
20       to support does not seem to produce any result, make sure to check that
21       the underlying OpenGL version does support that feature. OpenGL is
22       linked into Coin both at linktime and runtime. Features added to OpenGL
23       later than the oldest version of OpenGL we support in Coin are always
24       tried linked up at runtime, and failure to do so will disable features
25       in Coin or cause alternate implementations of features to be used
26       instead.
27
28       OpenGL is accompanied with a set of auxiliary libraries we also use.
29       These are libraries like GLext, GLU (for NURBS tessellation and texture
30       mipmaping amongst others), CgGL (for shaders that use Cg (we recommend
31       using GLSL instead by the way)). Of these libraries, CgGL is loaded at
32       runtime if needed, while the others are linked with Coin at linktime.
33
34       Some platforms have GLU libraries that don't behave properly in certain
35       respects, and some Coin users have particular needs wrt Coin's use of
36       GLU. For these users, we (at Kongsberg Oil & Gas Technologies) have
37       created a fork of GLU that we have named SuperGLU that we have tweaked
38       in certain ways. This library can be checked out into the Coin source
39       code directory, which will be detected at configure-time and linked
40       statically into Coin and used instead of the GLU libraries on the host
41       system.
42
43       In addition to these libraries, Coin will use AGL on Mac OS X, WGL on
44       Microsoft Windows, and GLX on X Window Systems for offscreen rendering
45       purposes.
46
47       We now move on to libraries that are not related to OpenGL.
48
49       Coin uses libz (aka zlib) and libbzip2 to read and/or write files
50       compressed with either of those compression techniques. Both libraries
51       can be linked with Coin at linktime or loaded at runtime, and this is
52       controlled at configure-time. They can also be disabled if compressed
53       file input/output is not wanted. The libz library is likely to be
54       pulled in as a dependency from other libraries as well, especially
55       graphics libraries.
56
57       For font support, Coin uses Fontconfig or FreeType in addition to
58       native platform APIs for font reading. FreeType can be loaded at
59       runtime instead of linked at linktime if desired, but FreeType is only
60       used if Fontconfig is not found at configure-time anyway, unless the
61       library builder overrides this behaviour.
62
63       For JavaScript support in VRML97, Coin uses SpiderMonkey. SpiderMonkey
64       can also be loaded at runtime instead of linked at linktime.
65
66       For sound support in VRML97, Coin uses OpenAL. OpenAL is loaded at
67       runtime or linked at linktime. By the way, some versions of the OpenAL
68       library delivered with installers from Creative on Microsoft Windows
69       have been known to crash/freeze Coin-applications when loaded, so if
70       you experience something like that, that's one thing to investigate.
71
72       For threading support, Coin uses POSIX threads (pthread library) or the
73       native Win32 API on Microsoft Windows. You can use pthread on MS
74       Windows as well instead of the native threads by setting this at
75       configure-time.
76
77       We now come to a special class of libraries that has been directly
78       integrated into the Coin source code, thereby not requiring the
79       libraries to be installed on the system beforehand for Coin to build or
80       run.
81
82       Coin makes use of certain utilities like smart-pointers from Boost. The
83       boost headers can be found under include/ in the Coin source code
84       directory. No boost types are exposed in the Coin API, nor will they
85       ever be. They are completely hidden, viewed from the outside of Coin.
86       All boost types used in Coin are completely inlined in the boost
87       headers and therefore do not require a link library to pull their
88       implementation from at runtime.
89
90       For XML reading, Coin uses the Expat library, which has also been
91       integrated directly into Coin, so also here there are no extra linktime
92       or runtime dependencies to other libraries. The Expat API is not
93       exposed in the Coin API, it is hidden, but Coin provides its own XML
94       DOM API that is a wrapper over the Expat engine.
95
96       The last thing to mention here is hardly a library, but we mention it
97       anyway. Coin uses flex and bison to generate some parsers (one for the
98       STL 3D model file format, and another one for parsing the calculator
99       language in the SoCalculator engine). This is code that has been
100       generated by 3rd party parser generators and integrated into Coin. The
101       generated code is distributed with the source code, so neither flex nor
102       bison are needed to build Coin.
103
104       And last but definitely not least, Coin uses simage .
105

The simage library

107       Coin uses a library called simage, which is a 1st part library since we
108       have written it ourselves. Simage is a thin wrapper library over a huge
109       set of graphics and audio libraries, to provide Coin with a unified API
110       for loading images (textures), audio, and animations, regardless of
111       which image file format it is stored as. The simage library can in
112       other words pull in another set of 3rd party libraries. All 3rd party
113       libraries to simage are optional. Simage is loaded at runtime or (if
114       specified) linked at linktime with Coin.
115
116       Simage can use:
117
118QImage from Qt to add support for the file formats Qt supports.
119GDI+ (gdiplus) under Microsoft Windows to add support for the file
120         formats supported by GDI+.
121QuickTime under Mac OS X to add support for the file formats
122         QuickTime supports.
123libungif or giflib for GIF file support.
124libjpeg for JPEG file support.
125libpng for PNG file support. This will also require that zlib is
126         used.
127libtiff for TIFF file support.
128JASPER support for JPEG 2000 file support.
129mpeg2enc for MPEG2 encoding.
130vfw (Video for Windows) for AVI video encoding.
131libogg, libvorbis and libvorbisfile for Ogg Vorbis support. This is
132         for VRML97 sound support in Coin.
133libsndfile for VRML97 sound support in Coin.
134libguile for a Guile (Scheme) binding for the Simage library API.
135Version 4.0.1                   Mon Nov 20 2023              coin_libraries(3)
Impressum