femtokit ======== Femtokit is a graphical user interface toolkit. In other words, it provides an abstraction to the programmer in order to create graphical user interfaces without the need of manually manipulating the graphics primitives. The name "Femtokit" is a wordplay between *femto* (a really small order of magnitude in the SI prefixes, 10^-15 to be exact) and *"tokit"*, an abbreviation of "toolkit". Goals ----- The main goal of Femtokit is providing a *comfortable level of abstraction* over the raw graphics programming primitives, while also not sacrificing *freedom* (what the user can achieve) or *minimal resource usage*. Other goals of Femtokit include the following: - Portability (being able to run on as many platforms as possible with little or no modification). - Tying code as little as possible to third-party software or hardware. In other words, using mostly what's expected to be present in the end user's machine, both software-wise and hardware-wise. Compilation and usage --------------------- As I may have said somewhere else, you need **OpenGL** (development version, that with header files) and **freeGLUT** (development version for this one as well). After installing the required dependencies, run the following command. ./sh/platdep.sh If the command printed one or more make file macros, consider the macro that most closely represents your platform. For example, if the script outputs both `OBJS_LINUX` and `OBJS_DEBIAN`, you might want to go with `OBJS_DEBIAN` as it's more specific and should provide better support. Then, run the following line after replacing `MACRO` with the name you just chose. make 'OBJS_PLATDEP=$(MACRO)' This is going to compile all source files into object files and then build a static library out of them. These below are other useful make file targets. It is advised to specify the macro definition above for all targets since some of them may depend on it. Alternatively, you could edit the make file to make the definition permanent. - **`make`** or **`make all`** builds all the translation units, skipping those which have been built already. - **`make install`** moves all object files to the respective directories in the machine's file system. - **`make uninstall`** removes all object files from the machine's file system. - **`make clean`** removes all object files produced by `make` from the repository's directory. The ultimate object file is a library called `libfemtokit`, which is essentially what you're going to link your programs against. Repository structure -------------------- The repository's root directory contains almost everything, including the source code, a header file with definitions for all symbols, and a make file. Sub-directories contain secondary files and directories like scripts, images, data files, documentation, manual pages, et cetera. Aesthetics ---------- Follow the aesthetics. License (or "Can I steal your code?") -------------------------------------- Unlicense, see LICENSE. (Yes.)