Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
/stbPublic
forked fromnothings/stb

stb single-file public domain libraries for C/C++

NotificationsYou must be signed in to change notification settings

uTox/stb

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

single-file public domain libraries for C/C++

Most libraries by stb, except: stb_dxt by Fabian "ryg" Giesen, stb_image_resizeby Jorge L. "VinoBS" Rodriguez, and stb_sprintf by Jeff Roberts.

librarylastest versioncategoryLoCdescription
stb_vorbis.c1.10audio5447decode ogg vorbis files from file/memory to float/16-bit signed output
stb_image.h2.14graphics7049image loading/decoding from file/memory: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC
stb_truetype.h1.15graphics4061parse, decode, and rasterize characters from truetype fonts
stb_image_write.h1.05graphics1092image writing to disk: PNG, TGA, BMP
stb_image_resize.h0.92graphics2620resize images larger/smaller with good quality
stb_rect_pack.h0.10graphics623simple 2D rectangle packer with decent quality
stb_sprintf.h1.02utility1134fast sprintf, snprintf for C/C++
stretchy_buffer.h1.02utility257typesafe dynamic array for C (i.e. approximation to vector<>), doesn't compile as C++
stb_textedit.h1.10user interface1370guts of a text editor for games etc implementing them from scratch
stb_voxel_render.h0.843D graphics3792Minecraft-esque voxel rendering "engine" with many more features
stb_dxt.h1.053D graphics686Fabian "ryg" Giesen's real-time DXT compressor
stb_perlin.h0.23D graphics222revised Perlin noise (3D input, 1D output)
stb_easy_font.h1.03D graphics303quick-and-dirty easy-to-deploy bitmap font for printing frame rate, etc
stb_tilemap_editor.h0.38game dev4172embeddable tilemap editor
stb_herringbone_wa...0.6game dev1220herringbone Wang tile map generator
stb_c_lexer.h0.09parsing962simplify writing parsers for C-like languages
stb_divide.h0.91math419more useful 32-bit modulus e.g. "euclidean divide"
stb_connected_comp...0.95misc1045incrementally compute reachability on grids
stb.h2.28misc14277helper functions for C, mostly redundant in C++; basically author's personal stuff
stb_leakcheck.h0.3misc165quick-and-dirty malloc/free leak-checking

Total libraries: 20
Total lines of C code: 50916

FAQ

What's the license?

These libraries are in the public domain (or the equivalent where that is notpossible). You can do anything you want with them. You have no legal obligationto do anything else, although I appreciate attribution.

Are there other single-file public-domain/open source libraries with minimal dependencies out there?

Yes.

If I wrap an stb library in a new library, does the new library have to be public domain?

No.

Some of these libraries seem redundant to existing open source libraries. Are they better somehow?

Generally they're only better in that they're easier to integrate,easier to use, and easier to release (single file; good API; noattribution requirement). They may be less featureful, slower,and/or use more memory. If you're already using an equivalentlibrary, there's probably no good reason to switch.

Can I link directly to the table of stb libraries?

You can usethis URL to link directly to that list.

Why do you list "lines of code"? It's a terrible metric.

Just to give you some idea of the internal complexity of the library,to help you manage your expectations, or to let you know what you'regetting into. While not all the libraries are written in the samestyle, they're certainly similar styles, and so comparisons betweenthe libraries are probably still meaningful.

Note though that the lines do include both the implementation, thepart that corresponds to a header file, and the documentation.

Why single-file headers?

Windows doesn't have standard directories where librarieslive. That makes deploying libraries in Windows a lot morepainful than open source developers on Unix-derivates generallyrealize. (It also makes library dependencies a lot worse in Windows.)

There's also a common problem in Windows where a library was builtagainst a different version of the runtime library, which causeslink conflicts and confusion. Shipping the libs as headers meansyou normally just compile them straight into your project withoutmaking libraries, thus sidestepping that problem.

Making them a single file makes it very easy to justdrop them into a project that needs them. (Of course you canstill put them in a proper shared library tree if you want.)

Why not two files, one a header and one an implementation?The difference between 10 files and 9 files is not a big deal,but the difference between 2 files and 1 file is a big deal.You don't need to zip or tar the files up, you don't have toremember to attachtwo files, etc.

Why "stb"? Is this something to do with Set-Top Boxes?

No, they are just the initials for my name, Sean T. Barrett.This was not chosen out of egomania, but as a moderately saneway of namespacing the filenames and source function names.

Will you add more image types to stb_image.h?

If people submit them, I generally add them, but the goal of stb_imageis less for applications like image viewer apps (which need to supportevery type of image under the sun) and more for things like games whichcan choose what images to use, so I may decline to add them if they'retoo rare or if the size of implementation vs. apparent benefit is too low.

Do you have any advice on how to create my own single-file library?

Yes.https://github.com/nothings/stb/blob/master/docs/stb_howto.txt

Why public domain?

I prefer it over GPL, LGPL, BSD, zlib, etc. for many reasons.Some of them are listed here:https://github.com/nothings/stb/blob/master/docs/why_public_domain.md

Why C?

Primarily, because I use C, not C++. But it does also make it easierfor other people to use them from other languages.

Why not C99? stdint.h, declare-anywhere, etc.

I still use MSVC 6 (1998) as my IDE because it has better human factorsfor me than later versions of MSVC.

About

stb single-file public domain libraries for C/C++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C98.5%
  • C++1.5%

[8]ページ先頭

©2009-2025 Movatter.jp