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:
- SWELL - Simple Windows Emulation Layer (for OS X) -- allows you to target win32 and OS X by using a reasonable subset of the win32 API.
- LICE - Lightweight Image Compositing Engine -- 32bpp 2D image manipulation, primitives drawing, and image read/write.
- Plush2 - Portable, lightweight software 3D rendering engine -- 32bpp 3D rendering and scene management. Has multitexture support, colored lighting, Z-buffering, 3DS file import, integrates with LICE. (based on Plush)
- WDL Virtual Window system -- allows the building of dynamic, complex UIs within OS hosted windows. Support for common controls with full transparency, overlays, controls with shadows/highlights outside of their range, etc. Fully themeable. Uses LICE for compositing.
- FFT support (based on DJBFFT), and a fast realtime convolution engine.
- File reading/writing wrappers (to enable higher performance read/write modes on win32 among other things)
- Code for managing memory allocations, various lists, queues, resource pools, strings, etc
- Code for encoding/decoding audio using LAME or OGG Vorbis.
- 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)
- SHA-1, Mersienne Twister implementations
- SHOUTcast source broadcaster
- Fast sinewave generator, dB to amplitude convertors, basic Reverb engine (based on FreeVerb2), functions to convert to/from integer PCM audio sample types.
- iPlug: a VST and AU plug-in framework
- and more!
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
Current: WDL v2008.11.15
- LICE JPEG loading fixes, JPEG writing, PNG writing byteorder fixes
- LICE_FillCircle() (needs optimizing)
- LICE_LoadImage, LICE_GetImageExtensoinList(),and LICE_CmpBitmap()
- LICE test app has new "fly" demo
- LICE: fixed bug in LICE_SubBitmap
- JNetLib: optional interface modes so you can easily reuse jnetlib across modules
- LICE: bitmaps no longer flipped on OS X, made isFlipped() non-virtual to enable better compile-time optimization
- LICE: reduced image resize heap thrashing
- virtwnd detects at load whether backgrounds have alphachannel info in each section
- virtwnd backgrounds disable filtering when not stretching
- LICE: optimizations for 50/50 fills, fast unfiltered stretchblt, etc
- virtwnd overhauls (removing HICON use)
- LICE: .ico loading overhaul, support for OS X
- SWELL: faster BitBlt() support
- LICE_CachedText OS X fixes
- LICE: LICE_LoadBMP() OS X support
- SWELL: GetObject() API subset
- LICE_MultiplyAddRect updated documentation and internals
- LICE_IFonts can own/destroy HFONTs
- LICE: Fixed a lot of small accuracy bugs
- LICE: PCX reading support
- Plush2: fixed singletexture mode when only multitexture compiled in
- Plush2: fixed repeating textures in bilinear mode
Old versions:
WDL v2008.10.30
- Wndsizer: margin support
- Virtwnd: now uses LICE almost exclusively to draw controls
- Added Plush2: a port of the old 8bpp 3D rendering engine to a C++, 24 bit, LICE-combining multitexture capable colored lighting rendering engine
- Added LICE_FillTriangle(), LICE_HalveBlitAA(), fixed bug in LICE_StretchedBlit()
- Added iplug, a VST/AU plug-in framework
- LICE: LICE_SubBitmap for easy clipped rendering
- LICE: Added LICE_DrawRect(), LICE_DrawGlyph(), fast tiny circle drawing (glyph based), optimizations to internals
- LICE: Added LICE_IFont and LICE_CachedFont() for quick drawing and drawing to non-sysbitmaps. Also has certain useful other effects.
- LICE: Added LICE_DrawBezier
- Virtwnd: item backgrounds can now specify (with 255,255,0,255) outside-areas for some controls
- Added mergesort.h
- Added fast sinewave genereator (sinewavegen.h)
- SWELL: Keyboard fixes
- SWELL: Changed the way ScrollWindow() is implemented (scrolls children)
- Virtwnd: fixes for large canvas drawing
- Tweaks all around to reduce memory use (WDL_String gets WDL_HeapBuf granularity options etc in constructor)
- SWELL: Fixed MK_* VK_* bugs
- Win32_Curses updates, better OS X compatability, block cursor
- SWELL: ShowWindow(SW_HIDE) DestroyWindow() deal with focus better now
- Virtwnd: support for querying painter info, etc
- audiobuffercontainer fixes, optimizations
- Virtwnd sliders can optionally always send notifications on first click
- Overhauled pooling classes to be more general and reusable
- SWELL: Improved EndDialog() processing
- SWELL: Default menu for windows, modal windows
- SWELL: made GDI pooling threadsafe (Rosetta on 10.5 requires it)
- SWELL: fixed shift+mousewheel being sent correctly
- Fixed issues with Vorbis encoding-EOF-ness for NINJAM, added Vorbis comment support
- Cleaned up WDL_Queue's endian-converting functions
- Fixed WDL_String::Ellipsize()
- Added EEL2, a fast expression evaluator/code compiler that supports x86, x64 and PPC, MSVC and GCC.
- WDL v2008.07.27
-
- SWELL: fixed an issue with OS X hanging on fractional window positions
- Added WDL_String::Ellipsize()
- Win64 compatability, wdl_types.h has GetClassLongPtr() etc defines for MSVC6/OSX
- SWELL: GDI object pooling to reduce heap thrashing
- wndsize: fixed window positioning bug when used in SWELL.
- SWELL: LVNI_SELECTED support
- SWELL: better support for 64 bit OS X 10.5.
- VirtWnd slider mousewheel fixes
- SWELL: Treeview API improvements
- Added WDL_DLGRET for DLGPROC return type to ease compiler differences (use instead of BOOL CALLBACK or UINT_PTR CALLBACK)
- added win32_curses super-basic curses emulation for windows GUI
- LICE bitmap allocation changes (safer failures)
- SWELL: fixed GetCursorPos()/SetCursorPos() relationships
- SWELL: WM_MBUTTON* support
- Heapbuf can have optional small pre-allocations, heapbuf trace mode (to monitor heap use)
- LICE: Better bezierness
- SWELL: BitBltAlpha() and BitBltAlphaFromMem()
- WDL_FileWrite: fixed GetSize() at eof before flushing
- SWELL: many more bugfixes, initial work on 64 bit support, more
- Virtwnd: userdata for all virtwnd support
- WDL v2008.05.05
- SWELL updates (HUGE update including php to convert dialog resources too)
- LICE: support for quadratic nurbs (yay schwa)
- fileread: better handling of errors in async mode
- WDL v2008.02.09
- lineparser improvements
- slightly faster drawtext, text cleanups
- virtwnd buttons only refresh on changes of button images
- virtwnd buttons support overlay outlines
- SWELL: php converter for menus: .rc to cpp
- SWELL: cursor hiding support
- wndsize: fix for when no window set
- lice: png write support (thanks cryptomail)
- shoutcast source: better encoder reinitialization, IRC channel support
- FFT: more define options
- convolution engine: fixed some bugs, added test app, _Div mode which allows high-cpu ZL operation
- LICE: flipped surface support for arcs
- WDL v2007.12.18
- SWELL: BM_SETCHECK support for buttons, basic FindWindowEx() emulation, better control font size selection
- SWELL: Basic ScrollWindow() emulation
- LICE: Updated LICE_IBitmap to include getDC()
- SWELL: GetDC(), GetWindowDC() improvements, GetSystemMetrics()
- SWELL: better WM_MOUSEWHEEL, WM_CONTEXTMENU message propagation
- SWELL: WM_NCCALCSIZE, WM_NCHITTEST etc support
- SWELL: basic _controlfp() support for rounding control (on x86)
- WDL v2007.12.09
- SWELL: updated documentation in swell.h, GlobalAlloc supports GMEM_FIXED
- WDL v2007.12.03
- SWELL: GetProp API support, GetDC/GetWindowDC now usable during WM_PAINT/NCPAINT (they get the same HDC as BeginPaint)
- SWELL: dialogs can now have their window procedures subclassed, WM_NCPAINT support
- SWELL: fixed EnumClipboardFormats sometimes getting in an infinite loop
- SWELL: big DrawText overhaul (now uses NSAttributedString to draw)
- SWELL: added a bunch more compatibility defines to swell.h
- WDL v2007.11.23
- SWELL: tons of menu fixes, dialog fixes, API extensions, more. too much to list.
- LICE: LICE_line supports flipped surfaces
- SWELL: Owned window support, tons of updates
- Virtwnd: support for controls eating mousedowns without capturing
- WDL v2007.11.09
- Fixed distribution making to include more docs/etc
- LICE: Test app now uses SWELL to run on OS X, included OS X example test project
- SWELL: Extensive updates for child dialogs, modal/modeless dialogs (mouse messages, painting, etc etc)
- SWELL: Modal/Modeless windows now support having their own menus (via GetMenu/SetMenu)
- SWELL: Added user-defined control classes for dialog template loading
- Updated GIFlib config.h for OS X support
- WDL v2007.10.30
- LICE: Added bezier drawing (schwa)
- LICE: GIF, JPEG loading (included JPEG library and GifLib)
- SWELL: WM_PAINT/BeginPaint/EndPaint emulation for child dialogs
- SWELL: SendMessage for windows that support it, made virtwnd use sendmessage
- SWELL: 3-state checkboxes, SetWindowLong improvements, fake *Capture, more
- SWELL: DialogBox/CreateDialog emulation, timer fixes, tons more
- WDL v2007.10.24
- SWELL: DialogBox emulation, timer fixes, more
- LICE: scwha added LICE_ClipLine()
- WDL v2007.09.18
- virtual window system cleanups, sliders have mouse-hiding ctrl+ modifier mode
- virtual window system listbox custom drawing
- virtual window system, other improvements
- filewrite recovers from asynchronous failures from threads quitting
- pcmfmtcvt: corrected non-standard pcm format conversion
- LICE: fixed circle drawing with vc6 (template bug)
- LICE: faster rotating blit (fixed point)
- WDL v2007.09.01
- virtwnd: sliders can have centerline color defined in their skininfo
- LICE: faster more-fixed-point mode for LICE_ScaledBlit
- LICE: LICE_ScaledBlit properly obeys using a subimage source (and wont filter from outside)
- added db2val.h for easy dB<-->linear scale conversion
- virtwnd: stuff to let control bgs and window bg images have pink lines to define unstretched edges
- virtwnd: added listbox control
- LICE: defines for disabling Dodge, Add blend modes
- LICE: updated deltablit, added transformblit
- LICE: made LICE_FillRect support LICE_MODE_USE_ALPHA
- WDL v2007.08.21
- LICE: added LICE_BLIT_MODE_DODGE (thx schwa)
- LICE: added LICE_Blur, overloaded LICE_Blit() with better parameters
- LICE: added LICE_FillRect()
- filewrite: fixed GetSize() after flushed and unflushed writes in async mode
- virtwnd: made static text labels not refresh if text did not change
- WDL v2007.08.01
- WDL v2007.07.23
- WDL v2007.07.09
- WDL v2007.07.08
- WDL v2007.07.03
- WDL v2007.06.30
- WDL v2007.06.27
- WDL v2007.06.17
- WDL v2007.05.09
|