patchLibv3

22:06 Posted by Unknown
patchLibv3

Originally posted on GameDeception

patchLibv3 is finally here! After two years of paused development I brought the project back to life in the recent months and wanted to give it another go. patchLibv3 is another full rewrite of the project. I decided to rewrite from scratch again to better make use of new things I've learned as well as better incorporate new features into the project. Updating v2 would have lead into major rewrites of almost every part of the project so starting over was the better option.

The main new feature of patchLib v3 is the support for standard Win32 controls.

patchLib v3 Website Change
patchLib has a new home which is now located at:
Code:
http://67.210.99.128/patchLib/

Many thanks to Absolution for hosting patchLib prior to this release.

patchLib v3 Change Log
Overall Project Changes
  • Change: patchLibv3 is fully rewritten from the ground up.
  • Change: CEngine has been renamed to CPatchLib and is now a singleton.
  • Removed: CBaseWindow is removed. (Condensed into CWindow.)
  • Removed: CFrame is removed. (Condensed into CPatchLib.)
  • Removed: CCommand and CCommandHandler are both removed. (Condensed into CWindow.)
  • Change: Usage of Visual Studio 2010.
  • Change: Usage of Boost template library.
  • Change: Usage of Lua scripting engine. (Optional; not included in first release.)
  • Fixed: Fixed .lib inclusion problems.
  • Added: Win32 Control drawing support.


Class-Specific Changes
  • Main Engine Changes (CPatchLib)
    • Change: Class friendship fully removed and no longer required.
    • Change: Mouse and Icon are now handled by CWindow.
    • Change: Misc functions are moved to separate header. (imghelper.h)
    • Added: Frame variables are now embedded into main engine class.
    • Added: Various property exposure for more customization.
  • CWindow Changes
    • Change: CBaseWindow is now embedded into CWindow.
    • Change: CWindow is now responible for cursor and icon.
    • Change: CWindow has inherited CCommand / CCommandHandler responsibilities.
    • Change: CWindow now has Draw( .. ) and Update( .. ) to handle all controls at once.
    • Change: Object containers are now contained in a single vector.
    • Added: Various property exposure for more customization.
  • CButton, CLabel, CScroller, CUrl Changes
    • Change: All controls now inherit CChild base class.
    • Change: CButton now handles position and sizing in a single rect.
    • Change: CLabel, CScroller, CUrl no longer create separate copies of the font object.
    • Added: CScroller now has more properties exposed for better control / customization.


patchLib v3 Credits and Thanks
patchLib Lead Developer
atom0s
patchLib External Libraries
  • Boost Template Library [Boost]
  • alphablend.lib (bitRAKE, ufo-pu55y, HVC, atom0s)
  • pngLib (c) 2002 Thomas Bleeker [MadWizard.org]
  • tinyXML (c) 2000-2006 Lee Thomason [GrinningLizard.com]
  • uFMOD (c) 2005-2008 Asterix and Quantum [uFMOD.net]
  • Lua (c) 1994-2008 Lua.org, PUC-Rio [Lua.org]
  • Luabind (c) 2003 Daniel Wallin and Arvid Norberg [Luabind.com]


patchLib External Code Usage / Snippets
  • Wine Emulation Project [Winehq.org]
    • PremultipledAlpha() function snippet. (imghelper.h)
  • bobbysing
    • Framework design based on his DirectX Gui Library design.
  • ufo-pu55y
    • alphaBlend.lib - Majority of the code in this library is from him.
    • Parts of drawing code is based on some of his MASM source.
    • Graphics for the Patcher example are from his uPPP project.
  • HVC
    • Fixed up alphaBlend.lib to properly compile into a lib.
  • bitRAKE
    • Parts of alphaBlend.lib code (mainly MMX code) is by him.
  • Renkokuken / Sakuri
    • Window message override was developed for a project him and I worked on.
  • D.K. Wang
    • Article on CodeProject explaining how to use WM_PRINT to draw controls on layered windows.
    • Usage of Gdiplus for drawing the overall project.
  • Joe Woodbury
    • CodeProject article covering how to load images from resources into Gdiplus objects. (imghelper.h)


patchLib Suggestions, Bugfixes, Etc.
  • Stephenteh {RES}
    • Various suggestions for patchLib v2.


patchLib Support, Testing, Etc.
  • Absolution [GameDeception]
    • Hosted the previous patchLib site free of charge.
  • Team {RES} [Team {RES}]
    • Cracking team; home of a lot of talented people.
  • Team SnD [Team SnD]
    • Cracking team; home of a lot of talented people.
    • Home of ufo-pu55y; uPPP creator.


patchLib v3 Screenshots


(Example showing off Win32 control drawing and usage.)


(Example showing off custom control drawing. Starfield.)


All further information, downloads, updates, credits, etc. can be found on the site above.

For the lack of caring, I didn't write documentation for this version. Things should be fairly straight forward on how to use the library. There are three example projects included in the release, and I will probably release some more later on including some custom controls and such. You can use the forums over at patchLib's site (or here) if you have any questions or issues.

~ Enjoy.