1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
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.)
|