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:
- iPlug: a VST and AU plug-in framework
- 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
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 OS X):
- Allows targeting win32 and OS X 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 OS X extensions
And more:
- Shared memory IPC connection and low latency messaging classes (currently win32 only)
- 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
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 version:
WDL v2009.10.10
- HeapBuf: optional WDL_HEAPBUF_DYNAMIC setting, for simpler and less configurable allocation management
- HeapBuf/etc now handle failures better, added CopyFrom()
- IPlug: OS X updates
- LICE: line drawing optimizations, AA gamma correction
- LICE: bezier-fill improvements
- LICE: size optimizations, options to favor size over speed throughout LICE
- LICE: scaledblit() no longer processes source-clipped pixels
- LICE: scaledblit() now properly supports negative width source/dest rects (flips)
- LICE: blit() fix for negative coordinates
- LICE: Optimized copy/multiply blend modes to not require clamping (big gains in alpha-blended and filtered blits)
- LICE: Optimized alpha blending (half the multiplies)
- SHM: fixed/optimized datapipe class, added low-latency threadsafe SHM message/reply class
- SWELL: fixes to GetPrivateProfileString() with NULL second parameter
- SWELL: added SWELL_GetAudioUnitCocoaView
- SWELL: support for EndDialog() in modal WM_INITDIALOG
- SWELL: SetMenuItemModifier() cleanups
- SWELL: File browse dialogs now set default menu
- SWELL: ScrollWindow() now properly invalidates the window
- SWELL: EM_SCROLL, EM_SETSEL, EM_GETSEL support for edit fields
- SWELL: OPAQUE text bk mode suport
- SWELL: drag/drop source handling
- SWELL: GetMenuItemInfo() MIIM_ID support
- SWELL: Added SWELL_GetDefaultButtonID(), SWELL_KeyToASCII
- scsrc: support for HTTP POST-ing chunks of encoded data to URL
- scsrc: simplified data reprocessor api
- scsrc: added sc_bounce/*.php (PHP data streaming server for scsrc)
- Virtwnd: buttons now have constant icon alpha parameter
- Virtwnd: sliders no longer send excess scroll messages
- Virtwnd: theme background drawing has flag to not draw left/right sides
- WDL_PtrList::FindSorted() fixed
- AssocArray fixes
- win32_utf8 fixes
- FileRead/FileWrite: better async file reading error handling, Win32 and OS X locking improvements
- Added FFMPEG wrapper for encoding video files (with optional audio)
- RFB client support (LICE--jnetlib)
Old versions:
Example uses:
WDL/Sanders JetPack (win32 only). Uses LICE to do a nifty basic 2D sprite game. Source included, GPL.
|