C++ Class Library for Developing Cross-platform Applications
JUCE (Jules’ Utility Class Extensions) is an all-encompassing C++ class library for developing cross-platform applications.
It’s particularly good for creating highly-specialised user interfaces and for handling graphics and sound. The intended users are developers, who are writing large, complex applications in C++ and who would like to use just one clean, high-level API rather than a bunch of different libraries for different purposes or platforms.
JUCE is released under the GNU Public License, and costs nothing to use in open-source applications.
A few of JUCE’s features:
- Basics—World’s best string class; arrays; stream and file handling; time and date; maths functions, random numbers, reference counting, super-fast XML parser and well-stocked XML manipulation classes; abstractions for threads, processes, critical sections etc; built-in GZIP compression/decompression streams and ZIP file reading; undo/redo support; logging; messaging layer with timers, event listeners; etc. etc.
- User Interface—Cross-platform windowing capability with extremely powerful lightweight component architecture. Ready-made components include buttons, lists, menus, textboxes, treeviews, scroll-bars, etc. Components are customizable either at a low-level by creating your own (or by subclassing existing ones), or at an application-wide level by creating custom look-and-feel styles for them.
- Vector Graphics—Fast, high-quality anti-aliased rendering of shapes with transparency, gradient fills, etc; path stroking with different line styles, dashed-lines; affine transformations and geometry classes; manipulation of typefaces as paths and custom font engine to provide sub-pixel accurate text in a platform-independent manner; typefaces can be serialized for easy embedding of fonts in an executable.
- Image manipulation—High-quality rendering of images, allowing affine transformations and transparency; support for cross-platform OpenGL windows within Juce windows; built-in parser for loading JPEG, PNG and GIF image formats; image caching; easy embedding of images in an executable without having to use platform-specific resources.
- Audio—Low-latency audio engine supporting DirectSound, ASIO and CoreAudio devices; audio buffer classes for mixing and manipulating samples; Parsers for WAV and AIFF formats, as well as reading audio streams from audio CD devices (easy on the Mac, but tricky on Windows!); powerful MIDI message classes; MIDI file load/save; connectable audio-processing nodes including sample-rate conversion.
- Networking—URL handling; http and ftp reader streams; launching default browsers, etc.
- Easy to integrate-
JUCE is a static library so your application can run as a stand-alone executableno extra dlls to install, nothing for users to mess up! In your application, you’ll just need to include one header file: “juce.h” and that’s it-no platform-specific code or any other headers needed.
c,class,library,developing,cross,platform,applications,2