BETA BETA BETA!

This zip file contains a beta version of "xlib06p", a watcom-compatible
32-bit protected mode subset of the great XLIB routines produced by
Themie Gouthas and company.  The routines were converted from 16-bit real
mode assembly to 32-bit protected mode C/C++ (I used C++ filenames and
some C++ constructs, but a plain conversion to C would be trivial).

Functions converted by Victor B. Putz of Winged Yak Productions (a
so-far nonexistent sole proprietorship).

Not all of the XLIB06 functions were converted; in fact, being lazy, I
only converted the functions that I use in yakIcons.  Fortunately, these
are what I consider the most useful functions.  The most notable omissions
are the vertical sync interrupt simulator routines ( partially complete )
and the triangle fill routines ( not even started ).

These are the functions that have been converted and which have tested
correctly:

xmain.cpp ( renamed wxmain.cpp for no good reason ):
	WaitVsyncStart
	x_set_mode
	x_select_default_plane
	x_set_splitscreen
	x_page_flip
	x_set_start_addr
	x_hide_splitscreen
	x_show_splitscreen
	x_adjust_splitscreen
	x_set_doublebuffer
	x_set_tripplebuffer ( I left it misspelled )
	x_set_cliprect
	x_text_mode                             ( only goes to 80x25 for now )
	x_wait_vsync

xcircle.cpp
	x_circle
  x_filled_circle

xline.cpp
  x_line

xmouse.cpp
	x_define_mouse_cursor
  x_mouse_init
  x_hide_mouse
  x_mouse_remove
  x_put_cursor
  x_show_mouse
  x_update_mouse
  MouseHandler
  ( not converted: x_position_mouse, x_mouse_window )

xpal.cpp
  x_get_pal_raw
  x_get_pal_struc
  x_put_pal_raw
  x_put_pal_struc
  x_set_rgb
  x_rot_pal_raw
  x_rot_pal_struc
  x_cpcontrast_pal_struc
  ( not converted: x_transpose_pal_struc, x_put_contrast_pal_struc )

xpbitmap.cpp
  x_put_masked_pbm
  x_put_pbm
  x_get_pbm
  ( not converted: flipping functions )

xpbmclip.cpp
  x_put_masked_pbm_clipxy
  x_put_pbm_clipxy
	( not converted: "partial clipping" functions like clipx, clipy, etc )

xpoint.cpp
  x_put_pix
  x_get_pix

xrect.cpp
  x_rect_fill
  x_rect_fill_clipped
  x_cp_vid_rect
  x_shift_rect
  x_rect_pattern -- WORKS IMPROPERLY-- JUST FILLS FOR NOW
  x_rect_pattern_clipped -- WORKS IMPROPERLY-- JUST FILLS FOR NOW

xtext.cpp
  x_text_init
  x_set_font
  x_register_userfont
  x_get_char_width
  x_char_put
  x_printf
  x_bgprintf


NEW MODULES!

xplain.cpp-- collision detection and solid-color bitmap puts!
  x_pbm_to_plain
  x_check_collision_plain
  x_put_plain


xscalebm.cpp -- scaling normal ( normal format ) bitmaps!
  x_scale_bm
  x_scale_masked_bm

ALSO INCLUDED

demo1.exe, demo1.cpp -- the watcom-compiled version of demo1.exe that
was included with xlib06.  It mostly works as the first, with two notable
exceptions:

	1) No vsync handler is active
  2) The "triangle fill" demo is replaced with rectangle fills

None of the text is changed!  It advertises functions that have not been
converted!  You have been warned!

icondemo.exe, demos.yar -- this is really a stub yakIcons 3 demo program
that I just included so I didn't have to write a new demonstration of
the x_scale_bm and xplain collision functions.

xvsync.cpp -- I started to convert the vsync routines, but boy howdy
did I not feel like finishing today, as I'm two weeks late with this
already.  I include the work I started in the hopes that someone will
finish it and send me the results.

assorted watcom build files-- included for the halibut.

xlib06p.lib -- so you don't have to build it yourself.



ACKNOWLEDGEMENTS:

Of course none of this would have been possible without the original
xlib, created by Themie Gouthas and enhanced by his associates.  Some
of the code was translated from some routines in w_modex.zip, but as I
can not find the author's name anywhere, I can't include it.

The xplain routines were translated from some assembly code generously
donated by Tiaan H. Geldenhuys ( spelling? ), and the xscalebm routines
were generously donated by John P. Slagel.



AS FOR DOCUMENTATION: I recommend you get the original xlib docs from
xlib06.zip; they should work okay.  As for documenting xplain and xscalebm,
I could do that -- but it would probably delay this a wee bit more.  Look
through the code-- it should be fairly self-explanatory.


IF YOU WISH TO CONTRIBUTE: I'm willing to act as a hub for keeping this
updated and fast.  If you notice a faster way to do something I've done
or wish to convert some more of the xlib routines, or finish the xvsync
module, please let me know and I'll include it in the next version
rather than just uploading a new version yourself.  My email address is:

vputz@nyx.cs.du.edu

And yes, yakIcons 3.0 is still almost finished.  Sorry again for the delay.
