Internal Libraries

From K-3D

Revision as of 18:43, 11 April 2007 by Tshead (Talk | contribs)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Overview

At its heart, K-3D is built on the K-3D SDK library (k3dsdk), which defines interfaces and classes used everywhere, including plugins, plus core internal functionality including plugin loading, application and document objects, undo/redo storage, and the like.

The design allows K-3D to be "embedded" into other apps. What you probably think of as K-3D is just our own example of such an app, one that links k3dsdk into a binary executable to create our "standard" K-3D with its "standard" user interface. The code that ties everything together is in application/main.cpp. If you wanted to create an application that used a different UI toolkit, you could copy application/main.cpp and modify a handful of lines of code to link with your UI of choice.

In newer versions of K-3D (starting with 0.5/0.6), user interfaces are now a type of plugin, so you could implement an alternate user interface without having to touch the main application at all.

Beyond user interface considerations, a person might want to embed K-3D into a scripted environment such as Perl, rather than embedding the Perl interpreter into K-3D as a plugin. There are many interesting possibilities.

Following is an overview of K-3D's internal libraries:

K-3D 0.5/0.6

  • k3dsdk - The K-3D SDK - used by plugin authors and embedders alike.
  • ngui - The Next Generation User Interface is a single-window user interface plugin based on gtkmm and gtkglext. Depends on k3dsdk.
  • nui - The Null User Interface is a do-nothing user interface plugin that can be used to run K-3D in a non-graphical server environment (why, we're not entirely sure).
  • qtui - The Qt User Interface layers a minimal, "view only" user interface on top of K-3D. It is mainly there to prove that it can be done (and because Tim needed some experience with Qt for work).

K-3D 0.4

  • sdptypes - Wraps std::string with sdpString, which was a terrible idea. Eliminated in 0.6. Don't try this at home, kids!
  • sdpxml - Provides a DOM-like model for reading / writing XML documents that is designed to work well with the C++ Standard Library. Cleaned-up extensively and merged into k3dsdk in 0.6.
  • sdpsl - Provides parsing and metadata for RenderMan Shading Language shaders. Cleaned-up and merged into k3dsdk in 0.6.
  • sdpgl - Provides optional tracing of OpenGL API calls. Merged into k3dsdk in 0.6.
  • sdpgtk - Provides C++ wrappers for GTK that have not aged well. Replaced with gtkmm in 0.6.
  • k3dsdk - The K-3D SDK - used by plugin authors and embedders alike.
  • k3dembed - The K-3D implementation library - used by application embedders.
  • k3dui - The multi-window K-3D user interface, built on sdpgtk. Replaced with a single-window Next Generation User Interface (NGUI) in 0.6.

See also External Dependencies.

Personal tools