logo256.gif (10449 bytes)

since 9. september 1999  

[ last update 2. februar 2001 - ver 3.0.3 ]


NEW >>> OpenGUI FORUM  <<< NEW


WHAT'S NEW:

Currently I'm trying add some METAFILEs feature and I'm writing docs - hardly ;-)

I added support for PNG & JPG files. These features don't work with WATCOM C++ compiler (because there isn't support for 16/32bit modes ). To support this I added precompiled versions of libpng, libz and libjpeg for DJGPP & Borland C++ 5.5 . Sources of ones are available too. These libs are included in the most of linux distributions as know as libpng, libz and libjpeg. You must have installed these include headers (aka develop versions). To disable JPG and PNG support you mus comment-in defines FG_PNG and FG_JPEG in the file 'config.h'. Now I started with docs ;- ). Happy christmas!

Download:

package size description
OpenGUI 3.0.3 - core 259973 core library
OpenGUI 3.0 - examples 228095 examples
OpenGUI 3.0 - libs 314469 precompiled libpng, libz & libjpeg for DJGPP & BORLAND
OpenGUI 3.0 - src libs 1438335
OpenGUI 2.0 - docs 145740 sorry, still out of date!
OpenGUI 3.0 - include 70074 includes for png, jpeg and zlib
OpenGUI 3.0 - Sourcer 37603 OpenGUI sourcer - visual code generator

There are news/changes from last beta5 version:

* added DrawBitmap::stretch(int new_width, int new_height)
* added DrawBitmap::stretch(float ratio_x, float ratio_y)
* added simple image viewer example: 'zgv'
* renamed DrawBuffer::pixel() to DrawBuffer::putpixel()
* migrated Window::WindowGetPixel() to DrawBuffer::getpixel()
* removed dependency between logical & physical width of the scan line
* improved mouse cursor for page flipping modes
* fixed flipping for 16/32 bit modes

I wrote some example of using jpg - 'fgv' - simple image viewer (for all supported formats) with image stretching if needed (4KB cpp source :-) ). It simply slideshow files from 'file.lst' file. Under LINUX, when 'file.lst' don't exist, one is created from ALL images in current directory and subdirectories if any.

Just another example that I have written is intended to the new OpenGUI PAGE FLIPPING features. These feature don't work with the WATCOM C++ (because of banked mode).   There are source for overview:

/*
* This example shows PAGE FLIPPING feature of OpenGUI library
*
*    requirement: 1MB videocards (2MB for 16bit colors or 4MB for true colors)
*    FPS (frames per secs) is based on monitor frequency & CPU speed heavily
*/

#include <fastgl/fastgl.h>

extern "C" int verbose; // be verbose, an internal var.

void animate(void)
{
    static int i=0,j=200,l=2000;
    set_ppop(_GSET);
    clear_frame_buffer(CWHITE);
    set_fcolor(CBLACK);
    fill_ellipse(X_width/2, Y_width/2,i,j);
    fill_ellipse(X_width/2, Y_width/2,j,i);
    i++;
    if (i==200) i=0;
    j--;
    if (j==0) j=200;
    Flip();
    if (l-- == 0) App::AppDone(); // return after 2000 frames
}

int main(int argc, char **argv)
{
    verbose = 1;
    App app(G640x480,argc,argv,0,APP_ALL);

    // you can use FG_DOUBLEBUFFER or FG_QUADBUFFER too
    // NOTE: DOUBLEBUFFER are flicker on some cards & drivers (nVIDIA)
    EnableBuffering(FG_TRIPLEBUFFER);

    // set main loop code
    app.SetDelayProc(animate);

    // GO!     - 'ALT+X' to exit
    app.Run();
    DisableBuffering(); // only for convenience...
}


3.0-beta5 - Bug fixes, stable DIRECTX port (Borland BCB5 only), working Double/Triple Buffering (see examples), see changelog for all.

3.0-beta4 - Bug fixes, firts version ot a working Win32 code and TAB key for switching between EditBoxes.

3.0-beta3 - Bug fixes, new Win32 code and added new RTEMS platform code thanx to Rosimildo da Silva.

3.0-beta1 - This is a preview version of the new OOP API inspired by Borland VCL. You can derive a new classes from original App & Window class. Also initial support for DirectX 5 are added (still don't work but compiles with C++Builder 5). More info you can get in changelog or newapi example. There are link for download the latest snapshot of OpenGUI 3.0 beta1.

2.99 - This version fixes some bugs and is addressed as very stable. I recomend you to upgrade from any previous version of OpenGUI. Only DGA2 support is under heavy development and will be updated as soon as. I uploaded MSDOS version of libpng for future use with OpenGUI too. I can do massive update of the docs (Slovak language) and then do translation of one to the english language. After this I release version 3.0 as stable and very well documented library.

2.98.1- bug fixes and RedHat 7.0 updates, revert to the old "Sourcer v2.91". Upgrade is urgent if you have any problems or new RH installation.

2.98 - this is a long waited version with a new much sophisticated FGListBox class that will replace a legacy ListBox class. It's more friendly to use and more powered than the old ListBox. The old FileDialog class is rewrited for even easy use. MKDIR button has been added to one. Another new container class is FGList class, inspired by the STL library list template. For this reason you must use gcc version 2.91 and above. The FGString is very light implementation of the standard string class. Another big changes is a new path for library header files. You must use #include <fastgl/fastgl.h> , not <fastgl.h> like before. For other changes and bugfixes see at the 'changes.txt' file.

The next release (2.99) would have a new callback mechanism (together with current callback methods) as know as SIGNAL-SLOT dogma. For more info read this document about callbacks. Version 3.00 would have updated english docs. Uff. After this done, 3.x branch will continue with better DGA2 and DirectX support, reimplemnting RAD, and more...


 
What is OpenGUI library? [there is a Slovak INTRO]
 
OpenGUI is a high-Level C/C++ graphics & windowing library built upon a fast, low-level x86 asm graphics kernel. It is under LGPL license. OpenGUI provides 2D drawing primitives and an event-driven windowing API for easy application development, and it supports the BMP image file format. It's very powerful, but very easy to use. You can write apps in the old Borland BGI style or in a windowed style like QT. OpenGUI supports the keyboard and mouse as event sources, and the Linux framebuffer/svgalib as drawing backends. Mesa3D is also supported under Linux. On now 8, 15, 16 and 32-bit color modes are available.

OpenGUI is a very fast multi-platform 32-bit graphics library/GUI for MS-DOS (DPMI client/DJGPP), QNX (Watcom or GCC) and LINUX. It can be used to create graphic applications and games for these Operating Systems. The library can be used with GNU C++ (from ver. 2.7.2) or Watcom C++ (from 9.5) and NASM assembler (0.97). The library is very stable and is ready for programs that require realtime drawing and Windows GUI.

Features:

  • LGPL
  • ultra-fast (asm kernel & MMX support)
  • the most robust library for the Linux FrameBuffer
  • support for resolutions ranging from 320x200 to 1600x1200
  • and 8, 15, 16 and 32 color depths
  • windowing system...
  • object-oriented multi-platform API (DJGPP, WATCOM, GCC, LINUX, QNX)
  • full application development framework (configuration file, file & color dialogs, etc.)
  • professionally tested & actively used for some years (see examples)
  • a tool for interactive code generation (draw & run)
  • and much more

The library consists of three layers. The first layer is a hand-coded and fast assembler kernel. This layer does the biggest piece of hard work. The second layer implements the API for drawing graphics primitives like lines, rectangles, circles etc. This layer is comparable to Borland BGI API. The third layer is written with C++ and offers a complete object set for the GUI developer. The third layer implements objects like input windows, buttons, menus, bitmaps etc, with addition of integrated mouse & keyboards support.


 
Screenshots:
 

Diagram of DrawBuffer class inheritance:

diagram.gif (7195 bytes)


Download:


Links to other libs: