|
PegX Technical FeaturesProgramming Model
The PegX library is written entirely in C++ and implements an event-driven programming paradigm at the application level. The event-driven paradigm has proven to be a superior method for creating user interface software, providing structure and order to the otherwise difficult task of responding to external system events arriving asynchronously from many sources. Reduced SizePegX achieves a small footprint through several means, including heavy reliance on C++ inheritance to encourage code re-use. Each control type is built incrementally upon its predecessor, allowing you to select and use only the objects which meet your requirements without forcing you to carry along any unneeded baggage. In addition, PegX is written with the embedded market firmly in mind, meaning that the value of every feature is weighed against the code size and performance requirements of that feature. In addition the PegX library is configured at compile time to include only the features your application requires. A large set of configuration flags allow you to completely define the set of input devices, drawing primitives, and many higher level features that your target will require. This configuration capability allows you to remove at compile time any library features that your application does not require, in essence allowing you to customize the library to exactly meet your needs. A minimum PegX footprint requires roughly 50K of code space, 4K of stack, and 2K of dynamic memory. A typical full-featured GUI requires a PegX footprint of roughly 100K code, 4K Stack, and 8K of dynamic memory. Maximum PerformancePegX achieves maximum performance by minimizing the system overhead required to maintain a graphical presentation. This includes support for advanced window and viewport clipping techniques that prevent unnecessary screen drawing. In addition, PegX always interacts directly with video and input hardware to achieve the greatest possible throughput. Highly PortablePegX achieves portability primarily by abstracting all hardware dependent functionality. The vast majority of the PegX library is completely hardware independent, relying on well-defined hardware interface objects to provide a consistent, simple, and reliable set of I/O methods. PegX applications are running today on all of the most common embedded processors including x86, ARM, PowerPC, MIPS, StrongARM, ColdFire, Dragonball, Blackfin, TI, Hitachi, ST20, and CPU32 based microprocessors. Several working examples supporting the most common display and input types are provided with the library. PegX also avoids the use of intrinsic data types and floating point math to eliminate problems associated with CPU word length differences and the common lack of floating point support Flexible and Powerful APIThe PegX library provides an intuitive and robust object hierarchy. Objects may be used directly as provided, or enhanced through user derivation. PegX imposes no artificial limits on how objects are used, meaning that the user is free to design screens with an indefinite nesting level of controls within windows within other windows. You will find that you can do things very quickly and easily with PegX -- things that would be very difficult and time-consuming using the mainstream desktop GUI programming environments. The default appearance of PegX objects is almost identical to the common desktop graphical environments. This appearance can, of course, be enhanced or simplified to fit the requirements of the application. In fact users often prefer to create a user interface with a very custom appearance and no resemblance to the desktop graphical environments. This is also readily accommodated within the design of PegX. The PegX API is defined entirely by the public functions
provided by the library classes. This API provides robust and intuitive
methods for performing even very complex graphical operations. We
encourage you to obtain an evaluation copy of the library and experiment
with PegX to insure that the library meets your project’s
requirements. |

