WDL (whittle)
[re]usable C++, modestly
WDL is a free and open source C++ library that is designed to be easily used by other code.
Much of WDL is a set of simple C++ classes that do not attempt to do everything. You can use as little or as much of WDL as you like, mix it with whatever other toolkits you use, etc. It tries very hard not to get in your way.
WDL includes:
The Basics
- Lightweight inline classes for cleanly managing memory allocations, lists, queues, resource pools, strings, etc
- File reading/writing wrappers:
- Support various asynchronous and unbuffered reads/writes
- Large file support
- Portable API
- Memory mapped file support
- Directory scanning API
- SHA-1 implementation
- Mersenne Twister implementation
- Mergesort implementation
- Blowfish implementation
- Fast FFT implementation (based on DJBFFT)
- RDTSC timing utility (win32/x86 only)
Audio tools:
- A realtime convolution engine
- Fast sinewave generator
- dB/amplitude convertors
- Basic Reverb engine (based on FreeVerb2)
- Integer PCM audio sample conversions
- SHOUTcast source broadcaster (and PHP based server)
- Encoding/decoding audio using LAME and OGG Vorbis.
- A simple pitch shifting engine
- ADPCM encode/decode engines
- Audio buffer/pin manager
- Samplerate conversion (supporting point sampling, linear interpolation with optional IIR filters, sinc interpolation)
LICE - Lightweight Image Compositing Engine:
- 32bpp 2D image engine with full alpha channel support
- PNG, JPEG, GIF, BMP, PCX, ICO loading
- PNG, JPEG, GIF writing
- Blit, scaled blit, rotated blit, delta/grid divided blits, with optional bilinear filtering, blurred blit
- Primitives including line drawing, rectangle fills, gradients, circles, triangles, bezier curves
- Optional antialiasing for most primitives
- Alpha and source alpha support for primitives and blits
- Many blend modes including copy, additive, subtractive, dodge, multiplicative, overlay, HSV adjust
- Glyph and text drawing systems (including cached-system-text drawing)
- Texture generators
WDL Virtual Window system:
- Allows the building of dynamic, complex UIs within OS hosted windows
- Included controls for text display, combo boxes, buttons, sliders, list boxes
- Supports full transparency, overlays, controls with shadows/highlights outside of their range
- Fully themeable (uses LICE for compositing)
Plush2 - Portable, lightweight software 3D rendering engine
- 32bpp 3D rendering
- Scene management (unlimited cameras, objects)
- Frustum clipping
- Multitexture support
- Environment map support
- Texture-alpha support
- Variable-alpha materials
- Bilinear texture filtering
- Colored lighting with unlimited lightsources
- Gouraud and flat shading
- Supports most LICE blend modes as per-pixel operations
- Z-buffering
- 3DS,COB file import
- Integrates with LICE.
- Based on Plush
SWELL - Simple Windows Emulation Layer (for Linux and OS X):
- Allows targeting macOS and other platforms by using a reasonable subset of the win32 API
- Auto (PHP-based) dialog and menu resource conversion
- Many common APIs and common controls implemented
- SWELL-specific win32-style extensions
And more:
- Shared memory IPC connection and low latency messaging classes
- EEL2 expression evaluation library/realtime compiler (allow users to write code that your programs execute) (based on AVS's EEL)
- win32_curses: A graphical Curses emulation library for Win32 and OS X (port or write curses applications in a window of a larger application, or standalone)
- win32_utf8: code you can include to enable UTF8 support in normal ANSI windows applications
WDL license:
Copyright (C) 2005 and later Cockos Incorporated
Portions copyright other contributors, see each source file for more information
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
WDL includes the following 3rd party libraries (which are all similarly licensed):
Discuss WDL on
the WDL forum
Send improvements to
submissions@cockos.com.
Downloads
Latest development version:
Old versions:
Old snapshots are available on the Old Versions Page (and are also in the Git repository above).
iPlug:
WDL previously included iPlug, a framework for audio processing plug-ins. We found that other forks of iPlug were better maintained than our own, and thus we have removed iPlug from our git repository. We highly recommend that you use one of the WDL/iPlug forks, such as WDL-OL, or WDL-Tale. Otherwise, if you would like to use the last version of iPlug that we made available, you can use the branch "deprecated_iplug" in our repository.
Example uses:
- WDL/Sanders JetPack (win32 only). Uses LICE to do a nifty basic 2D sprite game. Source included, GPL.