Here is a small grab of libraries that I think may be useful for your coding endeavors. They are the selfless fruits of my vigorous labor, transforming walls of fear into wings of freedom. If you're looking for something that is not listed here, please ask, because there's a lot more where this came from!
Library filename ..... Creation - Last update .. Description Render.Lib.BB ............ 2005 - 2012 ... Generic rendering routines with various purposes, relating to rendering, calculation and RGB/HSL (hue/saturation/lightness). WindowHandling.BB ........ 2007 - 2012 ... Uses Windows' native system functions to change a window's properties, such as its dimensions, state and visual make-up. File.Lib.BB .............. 2002 - 2012 ... Generic yet handy file functions with quite unique purposes. String.Lib.BB ............ 2003 - 2012 ... Elaborate collection of general purpose text handling and manipulation routines, relating to files, conversion/modification, formatting, addition, clipping, comparison and parameters/tokens. TimerSystem 4c.BB ........ 2005 - 2012 ... Easy to use yet enhanced MilliSecs() wrapper especially for tracking and pausing time easily. Screen Transitions 1e.BB . 2007 - 2011 ... Multi-screen transition system with effects such as motion and fades. Input.Def.BB ............. 2002 - 2011 ... Collection of constants and iteration arrays including fully qualified names for buttons and keys. .......... 2003 - 2011 ... Create vertical gradients at runtime. Math.Lib.BB .............. 2002 - 2012 ... Collection of handy math-related systems and functions for various purposes such as trigonometry. Clipboard.BB ............. 2004 - 2011 ... Copy text from or to the Windows clipboard. MemoryInfo.BB ............ 2006 - 2011 ... Retrieve generic Windows memory usage statistics. Interface.Lib.BB ......... 2006 - 2011 ... Interface re-handler (mouse, keyboard, joystick): enables multi-point input polling. BlitzPrint1b.Lib.BB ...... 2007 - 2011 ... Quick Print, Write, Locate & Input replacement for BlitzPlus. BlitzPrint1c.Lib.BB ...... 2007 - 2011 ... Quick Print, Write, Locate & Input replacement for Blitz3D/2D. MaskFade 1a4.Lib.BB ...... 2006 - 2007 ... Overlay (parts of) images/screens with a dithered mask (pixelated filter) for a retro yet superfast fade in/out effect. Sound.Lib.BB ............. 2002 - 2010 ... Features customizable sound overlap prevention. Text2D.Lib.BB ............ 2008 .......... ColorText() using separate calls (faster), intended for output of text with mixed colors. GFX Selector 2a2.BB ...... 2002 - 2007 ... Graphics resolution selection screen/dialog. TimeSystem - 1a2.BB ...... 2007 .......... Advanced MilliSecs() replacement especially for speeding up or slowing down time with individual/relative time tracking, shifting and suspension. WinMouse.BB .............. 2007 - 2011 ... Locked, protected and relative mouse positioning in (and outside) a window. Print - 3.BB ............. 2002 - 2007 ... Custom Print Library V3: Elaborate Locate/Write/Print replacement. DataIncluded.BB .......... 2007 - 2011 ... Convert binary files to .BB data include files, to be embedded in the executable. Music Fade 2.Lib.BB ...... 2005 - 2011 ... For background music, smooth fades. Gamma Fade System 2.BB ... 2004 - 2007 ... Applying fullscreen gamma fades.
Almost all of my code is fully backwards compatible, so if you need a specific library that doesn't specifically match the exact version that it says is required, feel free to try a similar version or library. Download: Libraries package (02 Sep 2012)
Here are some more library picks that I could find that may be of use which are scattered all over the place. - Custom Print Library & Binary Data Library: Text wrapper & binary file inclusion [2002] - Font Shaper Live: Smooth fonts on the fly in Blitz2D [2002] - Message System Advance: Featured in Mini Gravity Well (Terra Colony) [2003] - Image Library: Simple image wrapper [2003] - MousePointer Library: Custom mouse pointer [2003] - SmarText: Message system with Char Use Lib (legacy version) [2004] - Char Use Lib & font creator/viewer: Dynamic width (bitmap) font system [2004] - VectorModelLib (Legacy version): For both vector games and accurate collision detection on vector-mapped images [2004] - MemoryInfo: Windows memory information [2006] - Blur overlay lib: Slow but works [2006] - File date/time lib: Modified wrapper by Patrick Lester [2006] - VCL (vector collision library): Most recent version of VectorModelLib, featured in SpaceDock [2006] - Image3D Lib: Heavily simplified/optimized/bug-free version of SpriteControl/nSprite [2006] - ZoomFont: Independent font generation and drawing at any scale [2006] - Windows file picker lib: Fixed wrapper by Berlin [2007] - BinAffix: Binary attacher, unloader and detacher [2007] - Enhanced keyboard handler system (full encapsulation): multi-point input polling queue     with key-repeat, key-up, and unification of ASCII and scancodes. [2007] - UniValueLib prototype: Variable abstraction layer [2010] - CacheDraw: Enables you to prerender and cache images on the fly [2010] - RotaCache: Automatic caching of rotated images [2010] - CacheText system: Automatic caching of rendered text [2010] - InfoStore concept: User-friendly databases (rare) [2010] - Graph Overlay Lib: Visual value debugging (automatic) [2010] - DrawImageRect AnimImage Lib: Animstrips are images separated in even frames     (compatibility solution, full encapsulation with collision detection etc) [2010] - KeyRepeat Lib: Support for repetitive keystrokes when holding down a key [2010] - File attrib lib: Modified wrapper by RaGR [2010] - ITinfo.Lib: Impulse Tracker and Scream Tracker module information reader [2010] - FileData system: Easy loading/saving of configuration files [2010] - Perfect loops: Modified FMOD wrapper by STREAKS, to perfectly loop any segment of any file, with VUs & spectrum analyzer [2011] - ImagesCollide_SmartWrap: Protected ImagesCollide wrapper (to prevent MAV) [2011] - ImagesCollide replacement: Modified ImagesCollide wrapped by Robert Hierl (ultimate MAV prevention) [2011] - DriveInfo: Win32 wrapper to obtain general information about any or all drives [2011] - SHFileOperation wrapper: Invoke Windows' copy/move dialog+process [2012]
Not listed here are functions which are also all over the place, originally designed for a specific purpose, but completely independent and easily exchangeable. Many, many custom rendering-related routines that are not in my main Render Lib, with the purpose of for example creating special effects, drawing special shapes or patterns, or to speed up some of Blitz' native features. Many networking routines or libraries that I've built, most of which were never actually used in a game or program. One of which is featured in Kytarix ('predecessor' to Google's current multi-user enterprises) and another in Dirty (small and simple yet addictive multiplayer game). Many information conversion routines for example to convert 1 type of text into another, like converting all the smilies in the clipboard to BB-code (for forums). Many elaborate and feature-rich text editing routines and libraries, such as those used in Kytarix and EmailThreader. Note: Most of the features in other applications and games are (usually) also independent, so can be obtained from there as well. If source code is not included, let me know you want more
The following libraries have been used in some older programs: Vector(.Lib).BB - All functions from this library are also present in Math.Lib.BB being mostly backwards compatible. Keyboard(.Def).bb - All features in this source are also present in Input.Def.BB. - All functions from this library are also present in Render.Lib.BB. In the past, I have also added various programs and code snippets to very specific websites, in locations such as: - SoCoder - BlitzCoder (search code sections for 'thechange', although there are many other gems too!)
Many native Windows features that are in any way missing in Blitz can be provided through the use of 'userlibs'. Any function from a DLL can be specified in special .decls files that will then be accessible from within Blitz. Below I've divided the userlibs into 3 categories: - Libraries, which accompany my BB source libraries     allowing for example to syntax highlight keywords in editors. - System APIs, expanding the Blitz capabilities with those of the system. - External DLLs, for adding features not provided by the system. Most of my libraries, as well as declarations in almost all of the Userlibs use a prefix to uniquely identify each declaration in order to prevent mixing of similarly named functions across libraries. For example: String_FillParameters and API_ShowCursor. LIB - Library: internal files
Declarations file Related source library lib.maskfade.decls MaskFade 1a4.Lib.BB lib.gammafade.decls Gamma Fade System 2.BB lib.file.decls File.Lib.BB lib.string.decls String.Lib.BB lib.math.decls Math.Lib.BB lib.SC.decls SC 3d4.BB (Image3D Lib) lib.render.decls Render.Lib.BB lib.input.def.decls Input.Def.BB lib.clipboard.decls Clipboard.BB lib.timersystem.decls TimerSystem 4c.BB lib.windowhandling.decls WindowHandling.BB lib.interface.decls Interface.Lib.BB lib.timesystem.decls TimeSystem - 1a2.BB lib.winmouse.decls WinMouse.BB lib.screentrans.decls Screen Transitions 1e.BB lib.gfxselect.decls GFX Selector 2a2.BB lib.sound.decls Sound.Lib.BB lib.musicfade.decls Music Fade 2.Lib.BB
Note: I have not yet created declarations for each library I have. API - Application Programmer Interface: (external) system files
Declarations file (Category) List of functions referenced api.User32.decls (User/client) GetDC, ReleaseDC, SetClassLong, EnumDisplayDevices, MonitorFromRect, GetMonitorInfo, GetAncestor, GetDesktopWindow, GetWindowRect, GetClientRect, ClientToScreen, GetCursorPos, SetCursorPos, ShowCursor, GetForegroundWindow, SetForegroundWindow, FindWindow, ShowWindow, GetActiveWindow, SetFocus, RedrawWindow, PeekMessage, GetMessage, SendMessage, GetWindowThreadProcessId, GetWindowLong, SetWindowLong, SetWindowPos, MoveWindow, LockWindowUpdate, SetLayeredWindowAttributes, GetWindowText, GetWindowTextLength, SetWindowText, GetSystemMenu, DeleteMenu, GetSystemMetrics, OpenClipboard, CloseClipboard, ExamineClipboard, EmptyClipboard, GetClipboardData$, SetClipboardData, SetClipboardData_Direct, GetKeyboardState, GetAsyncKeyState, keybd_event api.PSAPI.decls (Process Status) GetModuleFileNameEx, GetModuleBaseName, GetProcessImageFileName api.Kernel32.decls (Core) GetCommandLine, CloseHandle, OpenProcess, GetModuleFileName, GetLogicalDrives, GetDriveType, GetDiskFreeSpaceEx, GetVolumeInformation, OpenFile, GetFileTime, FileTimeToLocalFileTime, FileTimeToSystemTime, MoveFile, GetFileAttributes, SetFileAttributes, GetComputerName, GetLastError, RtlMoveMemory, GetMemoryInfo api.Shell32.decls (Explorer) SHFileOperation, ExtractIcon, ShellExecute api.comdlg32.decls (Common Dialogs) GetOpenFilename, GetSaveFilename api.Gdi32.decls (Graphical Device Interface) BitBlt, GetPixel api.msvcrt.decls (MicroSoft Visual C++ RunTime) RenameFile
Note: I've removed the API prefix for improved readability here. DLL - Dynamic Link Library: external (custom) files
BASSMOD.dll Version 2.0 by Ian Luck (34,308 bytes). dll.BASSMOD.decls BASSMOD 2.0: Not all functions included - Expanded declarations by Abrexxes. dll.BASSMOD2.decls Extra wrapper functions for easy usage. FMOD.DLL Version 3.75 by Firelight Technologies (163,816 bytes). dll.FMOD.decls Compatible with 3.75 - Expanded declarations by STREAKS. bless.dll By Chad Dylan Long (98,304 bytes). dll.bless.decls Bug-fixed for Blitz3D.
Download: Userlibs package (02 Sep 2012)
Stable environment
The approach (or 'philosophy') I prefer in most of my work and my (working/living) environment is: - If it works, don't change it, nor even update it. - Only change (or update) it, if it improves my personal experience. (which in effect improves the experience of all those who are drawn to me) This can mean that some libraries, library versions, other source or related files, or components on which some code or programs depend is not 'on par' with what some people refer to as the 'latest version' or 'up-to-date'. This, on one hand, excludes potential 'improvements' while on the other, creates an environment of stability which I choose to give priority to. While I always see and usually tend to create things that are of a pioneering nature, I also notice that working in an environment of stability makes it far more easy to 'get something done' and 'done properly', often making a seemingly old-fashioned setup look like a 'leading-edge' system: Desktop screenshot This is particularly effective and noticeable in the speed with which certain operations can be performed, which is rather difficult to show in a single screenshot, or even a slideshow. An actual realtime movie would much more easily demonstrate this.
More source
Unfortunately the code that I have online here is only a fraction of that which I have offline. (I foresee a change in this in the near future!) So if you're a little crazy like me you may wish to take a look at a listing of my entire Blitz source code directory here: Index. Note that I have only included the BB files in the listing, so there may be many other related files in a folder too. If you see something that you like, or if you're looking for something whether it already exists or not, take a leap of faith and ask me about it
Created by Teasy All universal rights honored and affirmed