home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 December / PCWorld_2002-12_cd.bin / Software / Topware / winamp / winamp3_0-full.exe / Wasabi_Overview.txt < prev    next >
Text File  |  2002-05-30  |  5KB  |  51 lines

  1.  
  2. Wasabi Overview
  3. By Brennan Underwood
  4. 27, Libra, likes monkeys
  5.  
  6. What is wasabi?
  7. Wasabi is a completely configurable system for building skinnable applications, quickly and easily. It is written in C++ with some assembly code for optimizations.
  8. These are the major points of functionality:
  9. -    a system of interrelated components providing new functionality
  10. o    can introduce whatever new compiled code is required
  11. o    lots of code in the SDK
  12. -    a completely configurable skinnable user interface system
  13. o    layout system
  14. o    scripting system
  15. -    portability
  16. o    SDK code hides the OS
  17. o    Skins and scripts 100% portable with no recompilation
  18.  
  19. Basically, the components add new features to the system and the skin engine presents it to the user.
  20.  
  21. What is a component?
  22.     Something that becomes part of the system, and adds new functionality to it, and works with other components. Not just a plugin because it can introduce wholly new interfaces instead of just a reimplementation of a single interface. It can add an entirely new interface to the system or just a single new type of control or perhaps a new type of I/O capability entirely. Once the main kernel connects two components, they can communicate however they like.
  23.     Components can expose certain variables as configurable, so that they will show up in the configuration screen, and be modifiable by both other components and scripts.
  24.     Interfaces to the system and between components are built on the "Dispatchable" class, which allows you to add (and remove!) methods of your interface while minimizing breakage of other peoples' code.
  25.  
  26. The system is built with its own SDK, and you get that source
  27.     Our SDK is composed of the very same source files used to build the main kernel, so they automatically work well together. It's license is BSD-style, so you can also modify the files as needed. When the main program's source files are improved and debugged, those changes are reflected in the next version of the SDK, and vice versa.
  28.     And there is a lot of source in the SDK. You get high quality code to create generic windows, List Windows, Tree Windows, controls, bitmaps, rotations, etc. Some basic STL-like code is included as well, and lots of helper code to use the various system interfaces easily.
  29.     Also, all our code that displays bitmaps communicates with the skin engine, so the more of it you use, the more automatically skinnable your interface will be. It also 
  30.  
  31. A skinnable, completely configurable interface handler system
  32.     A skinning engine and much more as well, it does the work of actually generating the data structures of the interface from XML (either provided on disk or dynamically generated by a component). The various sections in the XML are optionally skinnable, so users can replace a given bitmap, or font, or entire layout of a screen.
  33.     A scripting engine: A portable virtual machine is provided with a compiled bytecode scripting language, which is mostly C-like with some C++-isms as well (overriding methods, user classes). Scripts can be attached to various events in the interface such as button clicks and system messages. Scripts can be loaded along with the skin or attached later, perhaps by another skin. Entire apps can be created just with the layout engine and scripting system. Of course, if you need to add more custom controls, you can just implement them in your component and reference the new control in your XML.
  34.     The layout engine is very powerful, rendering in full 24-bit color with 8-bit alpha blending. Most common stretching and blending operations have been MMX accelerated, including bilinear filtering modes. It can dynamically resize elements or stretch and scale them.
  35.  
  36. Portable
  37.     Almost all operating system details are abstracted out and hidden within our SDK and main kernel. If you build entirely on our code, you will be able to recompile your app with almost no changes on any Wasabi platform (currently x86 win32 and x86 Linux, with more to come.)
  38.     Skins and scripts are 100% portable with no recompilation.
  39.  
  40. Winamp 3-specific system stuff
  41.     Wasabi was originally created to build Winamp 3, and Winamp 3 serves to help define the makeup of Wasabi. However, in a short amount of time we will release a Wasabi-only SDK to allow developers to write their own app without any of our components being required. However, if you choose to create your app in the form of a Winamp 3 component or skin, you will have access to the following extra features.
  42.  
  43. -    audio playback system
  44. o    gapless
  45. o    any number of filters can be applied in any order
  46. o    smart system to specify "from" and "to" (i.e. from "c:\file.mp3" to "waveout") and generate the required filter chain
  47. -    database
  48. o    mini db accessible to all components, does standard indexing etc and can handle text-parsed queries
  49. -    jpg and PNG image loading components
  50. -    auto-configuration component: enumerates all configurable variables within all components and dynamically builds a standard config screen for them
  51.