• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/H04-May-2019-

data/herringbone/H03-May-2022-

deprecated/H03-May-2022-

docs/H03-May-2022-

tests/H04-May-2019-

tools/H04-May-2019-

.travis.ymlH A D04-May-201960

README.mdH A D04-May-20198.5 KiB

stb.hH A D04-May-2019455.3 KiB

stb_c_lexer.hH A D04-May-201934.8 KiB

stb_connected_components.hH A D04-May-201936.5 KiB

stb_divide.hH A D04-May-201913.8 KiB

stb_ds.hH A D04-May-201958.3 KiB

stb_dxt.hH A D04-May-201922.6 KiB

stb_easy_font.hH A D04-May-201912.4 KiB

stb_herringbone_wang_tile.hH A D04-May-201942.2 KiB

stb_image.hH A D04-May-2019257.1 KiB

stb_image_resize.hH A D04-May-2019113.3 KiB

stb_image_write.hH A D04-May-201965 KiB

stb_include.hH A D04-May-20198.9 KiB

stb_leakcheck.hH A D04-May-20196.8 KiB

stb_perlin.hH A D04-May-201915.2 KiB

stb_rect_pack.hH A D04-May-201919.7 KiB

stb_sprintf.hH A D04-May-201955.3 KiB

stb_textedit.hH A D04-May-201951.5 KiB

stb_tilemap_editor.hH A D04-May-2019142.5 KiB

stb_truetype.hH A D04-May-2019186.8 KiB

stb_vorbis.cH A D04-May-2019184.8 KiB

stb_voxel_render.hH A D04-May-2019157.5 KiB

stretchy_buffer.hH A D04-May-201911.2 KiB

README.md

1<!---   THIS FILE IS AUTOMATICALLY GENERATED, DO NOT CHANGE IT BY HAND   --->
2
3stb
4===
5
6single-file public domain (or MIT licensed) libraries for C/C++ <a name="stb_libs"></a>
7
8Noteworthy:
9
10* image loader: <a href="/nothings/stb/blob/master/stb_image.h">stb_image.h</a>
11* image writer: <a href="/nothings/stb/blob/master/stb_image_write.h">stb_image_write.h</a>
12* image resizer: <a href="/nothings/stb/blob/master/stb_image_resize.h">stb_image_resize.h></a>
13* font text rasterizer: <a href="/nothings/stb/blob/master/stb_truetype.h">stb_truetype.h</a>
14* typesafe containers: <a href="/nothings/stb/blob/master/stb_ds.h">stb_ds.h</a>
15
16Most libraries by stb, except: stb_dxt by Fabian "ryg" Giesen, stb_image_resize
17by Jorge L. "VinoBS" Rodriguez, and stb_sprintf by Jeff Roberts.
18
19
20library    | lastest version | category | LoC | description
21--------------------- | ---- | -------- | --- | --------------------------------
22**[stb_vorbis.c](stb_vorbis.c)** | 1.16 | audio | 5486 | decode ogg vorbis files from file/memory to float/16-bit signed output
23**[stb_image.h](stb_image.h)** | 2.22 | graphics | 7555 | image loading/decoding from file/memory: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC
24**[stb_truetype.h](stb_truetype.h)** | 1.21 | graphics | 4882 | parse, decode, and rasterize characters from truetype fonts
25**[stb_image_write.h](stb_image_write.h)** | 1.13 | graphics | 1622 | image writing to disk: PNG, TGA, BMP
26**[stb_image_resize.h](stb_image_resize.h)** | 0.96 | graphics | 2630 | resize images larger/smaller with good quality
27**[stb_rect_pack.h](stb_rect_pack.h)** | 1.00 | graphics | 628 | simple 2D rectangle packer with decent quality
28**[stb_ds.h](stb_ds.h)** | 0.4 | utility | 1669 | typesafe dynamic array and hash tables for C, will compile in C++
29**[stb_sprintf.h](stb_sprintf.h)** | 1.06 | utility | 1860 | fast sprintf, snprintf for C/C++
30**[stretchy_buffer.h](stretchy_buffer.h)** | 1.03 | utility | 262 | typesafe dynamic array for C (i.e. approximation to vector<>), doesn't compile as C++
31**[stb_textedit.h](stb_textedit.h)** | 1.13 | user&nbsp;interface | 1404 | guts of a text editor for games etc implementing them from scratch
32**[stb_voxel_render.h](stb_voxel_render.h)** | 0.88 | 3D&nbsp;graphics | 3806 | Minecraft-esque voxel rendering "engine" with many more features
33**[stb_dxt.h](stb_dxt.h)** | 1.08b | 3D&nbsp;graphics | 728 | Fabian "ryg" Giesen's real-time DXT compressor
34**[stb_perlin.h](stb_perlin.h)** | 0.4 | 3D&nbsp;graphics | 427 | revised Perlin noise (3D input, 1D output)
35**[stb_easy_font.h](stb_easy_font.h)** | 1.0 | 3D&nbsp;graphics | 303 | quick-and-dirty easy-to-deploy bitmap font for printing frame rate, etc
36**[stb_tilemap_editor.h](stb_tilemap_editor.h)** | 0.41 | game&nbsp;dev | 4161 | embeddable tilemap editor
37**[stb_herringbone_wa...](stb_herringbone_wang_tile.h)** | 0.7 | game&nbsp;dev | 1221 | herringbone Wang tile map generator
38**[stb_c_lexer.h](stb_c_lexer.h)** | 0.10 | parsing | 964 | simplify writing parsers for C-like languages
39**[stb_divide.h](stb_divide.h)** | 0.92 | math | 421 | more useful 32-bit modulus e.g. "euclidean divide"
40**[stb_connected_comp...](stb_connected_components.h)** | 0.96 | misc | 1049 | incrementally compute reachability on grids
41**[stb.h](stb.h)** | 2.34 | misc | 14451 | helper functions for C, mostly redundant in C++; basically author's personal stuff
42**[stb_leakcheck.h](stb_leakcheck.h)** | 0.5 | misc | 190 | quick-and-dirty malloc/free leak-checking
43**[stb_include.h](stb_include.h)** | 0.01 | misc | 288 | implement recursive #include support, particularly for GLSL
44
45Total libraries: 22
46Total lines of C code: 56007
47
48
49FAQ
50---
51
52#### What's the license?
53
54These libraries are in the public domain. You can do anything you
55want with them. You have no legal obligation
56to do anything else, although I appreciate attribution.
57
58They are also licensed under the MIT open source license, if you have lawyers
59who are unhappy with public domain. Every source file includes an explicit
60dual-license for you to choose from.
61
62#### <a name="other_libs"></a> Are there other single-file public-domain/open source libraries with minimal dependencies out there?
63
64[Yes.](https://github.com/nothings/single_file_libs)
65
66#### If I wrap an stb library in a new library, does the new library have to be public domain/MIT?
67
68No, because it's public domain you can freely relicense it to whatever license your new
69library wants to be.
70
71#### What's the deal with SSE support in GCC-based compilers?
72
73stb_image will either use SSE2 (if you compile with -msse2) or
74will not use any SIMD at all, rather than trying to detect the
75processor at runtime and handle it correctly. As I understand it,
76the approved path in GCC for runtime-detection require
77you to use multiple source files, one for each CPU configuration.
78Because stb_image is a header-file library that compiles in only
79one source file, there's no approved way to build both an
80SSE-enabled and a non-SSE-enabled variation.
81
82While we've tried to work around it, we've had multiple issues over
83the years due to specific versions of gcc breaking what we're doing,
84so we've given up on it. See https://github.com/nothings/stb/issues/280
85and https://github.com/nothings/stb/issues/410 for examples.
86
87#### Some of these libraries seem redundant to existing open source libraries. Are they better somehow?
88
89Generally they're only better in that they're easier to integrate,
90easier to use, and easier to release (single file; good API; no
91attribution requirement). They may be less featureful, slower,
92and/or use more memory. If you're already using an equivalent
93library, there's probably no good reason to switch.
94
95#### Can I link directly to the table of stb libraries?
96
97You can use [this URL](https://github.com/nothings/stb#stb_libs) to link directly to that list.
98
99#### Why do you list "lines of code"? It's a terrible metric.
100
101Just to give you some idea of the internal complexity of the library,
102to help you manage your expectations, or to let you know what you're
103getting into. While not all the libraries are written in the same
104style, they're certainly similar styles, and so comparisons between
105the libraries are probably still meaningful.
106
107Note though that the lines do include both the implementation, the
108part that corresponds to a header file, and the documentation.
109
110#### Why single-file headers?
111
112Windows doesn't have standard directories where libraries
113live. That makes deploying libraries in Windows a lot more
114painful than open source developers on Unix-derivates generally
115realize. (It also makes library dependencies a lot worse in Windows.)
116
117There's also a common problem in Windows where a library was built
118against a different version of the runtime library, which causes
119link conflicts and confusion. Shipping the libs as headers means
120you normally just compile them straight into your project without
121making libraries, thus sidestepping that problem.
122
123Making them a single file makes it very easy to just
124drop them into a project that needs them. (Of course you can
125still put them in a proper shared library tree if you want.)
126
127Why not two files, one a header and one an implementation?
128The difference between 10 files and 9 files is not a big deal,
129but the difference between 2 files and 1 file is a big deal.
130You don't need to zip or tar the files up, you don't have to
131remember to attach *two* files, etc.
132
133#### Why "stb"? Is this something to do with Set-Top Boxes?
134
135No, they are just the initials for my name, Sean T. Barrett.
136This was not chosen out of egomania, but as a moderately sane
137way of namespacing the filenames and source function names.
138
139#### Will you add more image types to stb_image.h?
140
141If people submit them, I generally add them, but the goal of stb_image
142is less for applications like image viewer apps (which need to support
143every type of image under the sun) and more for things like games which
144can choose what images to use, so I may decline to add them if they're
145too rare or if the size of implementation vs. apparent benefit is too low.
146
147#### Do you have any advice on how to create my own single-file library?
148
149Yes. https://github.com/nothings/stb/blob/master/docs/stb_howto.txt
150
151#### Why public domain?
152
153I prefer it over GPL, LGPL, BSD, zlib, etc. for many reasons.
154Some of them are listed here:
155https://github.com/nothings/stb/blob/master/docs/why_public_domain.md
156
157#### Why C?
158
159Primarily, because I use C, not C++. But it does also make it easier
160for other people to use them from other languages.
161
162#### Why not C99? stdint.h, declare-anywhere, etc.
163
164I still use MSVC 6 (1998) as my IDE because it has better human factors
165for me than later versions of MSVC.
166
167
168
169