Cockos
Incorporated
Servicing the elite consumer since 2004
Company : Products : Team : Forum
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
  • 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 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
    
    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:
Available via Git:
    http://www-dev.cockos.com/wdl/WDL.git
    (try: git clone http://www-dev.cockos.com/wdl/WDL.git or similar)
Latest snapshot: WDL v2010.08.16
  • Now available via Git! The zipped distributions may go away someday?
  • EEL2: optional eel1 compat (allows you to build AVS using EEL2 and support old presets)
  • LICE: FillTriangle/Polygon/Bezier coordinates are now cleanly inclusive
  • LineParse: when parsing small lines, no heap use (requires an extra 2k of stack space per parser)
  • PtrList: do not pass NULLs to deletion functions
  • Scrollbar: improved zoom button sizing
  • sc_bounce: fixed a session ID handling bug
  • SWELL: no WM_CTLCOLOR* on text fields
  • SWELL: rendering glitch fix when destroying small subviews
  • SWELL: font and combo box sizes are more consistent
  • SWELL: emulate WM_NC/HTCAPTION on OSX for double-click in titlebar
  • SWELL: API for setting relative raise amounts for owned windows
  • Virtwnd: VirtualStaticText: added GetCharFromCoord()
  • Virtwnd: fixed scaled blit clipping on right/bottom, various other clip problems
  • Virtwnd: bgcache handles differing images automatically
Old versions:
    Old versions are available on the Old Versions Page (and are also in the Git repository above).
Example uses:
  • WDL/Sanders JetPack (win32 only). Uses LICE to do a nifty basic 2D sprite game. Source included, GPL.




Copyright © 2004-2010 Cockos Incorporated