Metagraphics MetaWINDOW Revision History
Versions 4.1A through 4.3D
Fixed in Version 4.3D
- TextWidth() with stroked text and non align left would not return the correct width the first time it was called.
- VESA support now available for Rational 4GW
- FrameRect with solid wide lines was not taking fill optimization
correctly, was drawing as 4 vectors (introduced in 4.2)
- WriteImage() of monochrome source to multi-plane offscreen bitmaps
did not color expand correctly.
- Stroked text and TextAlign(x,y) the y alignment was only correct at
paths 0 and 180
- Oval pen, (round really), flat and round caps, round and bevel joins
are now implemented.
- Frame Ovals, Arcs now dash.
- Rational 4GW libs now do lock code areas used for interrupt service routines
when using Virtual Memory Manager (VMM).
- Added VESA modes for 32K and 64K color.
- Added VESA modes for 1280x1024 256 color
Note: ATIGUP must use BIOS (palette #1) to set palette in 1280 mode
- Patterns greater than 8x8 on ATI Ultra in 1280x1024 would reset
hardware clip to 1024 wide.
- SetPort() with lower left origin would not bump the pen position
up when converting user pen location to global
- Negative clip coordinates would reverse min with max on 386
Fixed in Version 4.3C
- XlateImage() from 1 bit/pix would mess up if image alignment + x
pixel position exceeded 16.
- Stroked text did not draw end cap pixel on last vector of each char (introduced in v4.2C).
Fixed in Version 4.3B
- Pascal had coordAbs and coordRel reversed for FillPolygon()
- PolyMarker in Pascal did not work
- LineTo after PolySegment put an extra line down left side of screen
Fixed in Version 4.3A
- S3 WriteImage when clipped did not output correct data to bitmap.
- XlateImage with large images in 386 generated wrong images.
- Stroked text would cause a GP fault when Y went -, would not draw the
end point of line segments when it should (random behavior, reading
bad pointer for end cap status).
- Genoa 6000 board 1024x768x16 had banking problems
- VESA drivers had problems with certain chipsets (ie Cirrus Logic)
- Attempting an InitBitmap for XMS when no XMS services are installed
would cause a system hang upon CloseBitmap().
- Calling CloseBitmap() when InitBitmap() failed could free a driver
prematurely.
- Multiple EMS bitmaps in some cases would not bank in the correct
rowtable banks when switching between them.
- Using Pascal, FloodFill/BoundaryFill did not work.
- Using Pascal, HardCopy would not work if passed a device name (ie
PRN, LPT#, FILE.PRN, etc).
- S3 boards with 512K would not fill correctly when using a pattern.
- InitBitmap() for cDISK was not setting the DOS Disk Transfer Area
for Find First File operations, resulting in stack corruption.
- Some Trident boards did not work right, especially in the 640x480 256
color mode.
- XMS bitmaps with an odd number of bytes per raster and an odd number
of rasters per swap buffer would fail when accessed.
- Pascal GrafFree was not freeing 8 bytes per call
- Pascal cHalftone was not defined
- Pascal XlateImage was incorrectly declared as a procedure, s/b
function
- Pascal InitMouse was incorrectly declared as a procedure, s/b
function
- Pascal GrafAlloc was not checking for nil pointers returned
- Pascal GrafAlloc and GrafFree were not public
Fixed in Version 4.2B
- XlateImage on 386 did not return 32 bits worth of size.
- For 386, blits 7 bits wide from mono source to 8 bit had vertical
bars. Usually noticed with proportional fonts.
- Using any S3 board, bitmapped fonts (usually proportional) in
8 bit mode, have black bars & scrunched chars (VGB-30.FNT).
- CopyBlit() from 8514 or S3 in protected mode to an offscreen bitmap
caused a GP fault.
- CloseBitmap() with a partially allocated bitmap (InitBitmap failed)
freed a bogus pointer
- ClipRect after a ClipRect(NULL) didn't clip.
- QueryGraphics was erroneously returning 0 (Device located) instead of
-1 (Device status cannot be determined) for some cases.
Fixed in Version 4.2A
- SetPenState() state didn't restore text rasterop.
- RoundRect with height of 2 would hang.
- The label "fixed" conflicted with the C++ IOSTREAM class, changed to
type fxdpnt.
- Stroked text with TextSlant() had bugs
- TextFace() now operational
- PortOrigin(lowerLeft) caused some routines to update the port pen
location incorrectly (one pixel up). Affected routines:
DrawString(), QueryCursor(), PeekEvent(), KeyEvent(), PtOnOval().
- Phar Lap 386 libs now do lock code areas used for interrupt service routines
when using Virtual Memory Managers (VMM).
- HardCopy() to a file that already existed mucked the file up
- HardCopy() caused a GP fault on 386 in some cases
- XMS and DISK bitmaps would allocate the wrong size swap buffer,
depending on the type of malloc used.
- ScrollRect offscreen would set the pen color to 1, and the back color
to 0. In 16/256 color modes, things would draw blue. (only in 4.1D)
- Screen to screen blits (ScrollRect, CopyBlit) did not work for VESA
640x480, 800x600, & 1Kx768 256 color modes. (only in 4.1D)
Fixed in Version 4.1D
- HardCopy() printed garbage in 4.1C Premium for 386
- FrameArc() overdrew end point when angle = 270.0
- SetPort(NULL) did not work
- ZoomBlit() did not clip correctly for all port positions
- ZoomBlit() zoomimg down would mess up the dominate color computation
on source colors of white
- PortBitmap() on XMS or DISK bitmaps caused last cache buffer to not be
flushed out, leaving muck when CopyBlit to screen.
- PortBitmap() would 'fix up' the port size if port larger than bitmap,
this causes a bogus MovePortTo if origin lower left. This 'fixup'
was bogus anyway and was removed.
- ScrollRect used current rasterop for blit, now uses replace always
- ScrollRect on monochrome would invert the blit colors if pen color not = 1
and back color not = 0
- CopyBlit crashed if source rect is completely
or partly off the screen bitmap.
- CopyBlit did not clip correctly for all cases of port positions
- Multi plane (offscreen) bitmaps GetPixel() was broken (affected ZoomBlit)
- DupRegion didn't update region structure pointer segments
- GetPixel could return bad value if Tracking on and mouse moved (also
affected flood and boundary fill)
- Arcs (paint or frame) sometimes crashed
- ClipRect() when in virtual coords used bad address to convert rect
- FrameRect() with wide pen dashed lines did not dash
- Vir2GblPt saved point to bad address
- KeyEvent() or PeekEvent() returned bad mouse x,y for keyboard events when
in local or virtual coordinates
- Virtual Coordinate transformations did not check for divide overflow
correclty, causing divide overflow for coordinates that would have
been between (+ or -) 32767 to 65536
- GrafPool() only worked if called prior to InitGraphics(), now works
dynamically.
- Ovals 2 pixels high would crash
- ClipRect( NULL ) did not disable clipping
- When text totaly clipped via region on 8514, would crash
- Using Turbo Pascal, DrawChar did not work
- Any S3 board using the new 86C924 chip, did not work.
Fixed in Version 4.1C
- InitMouse() returned bogus values. Always.
- CloseBitmap() did not deallocate XMS memory.
- EmptyRect() return value was backwards
- PolyLine() with wide pen and origin lower left would draw one pixel too
low.
- Drawing text with a clip region where nothing should be drawn would hang.
- ZoomBlit() was broken from 4.1A, where is used to work.
- Lower left origin had some bugs.
- CopyBlit() and ZoomBlit() did not convert clip rect correctly when
using virtual coordinates.
- PtOnxx and PtInxx did not take the WIDTH and HEIGHT parameters in
global pixels, so virtual sizes would sometimes scale to 0.
- Pen position was not updated when MovePortTo() was called, resulting
in weird StringWidth() results.
- ScrollRect() would crash if preceeded only by a WriteImage().
- MetQuery.c wouldn't accept your video mode command line arg unless it
was the last arg on the command line.
Fixed in Version 4.1B
- XMS bitmap support added
- DrawText() was left out of the lib.
- TextWidth() didn't work properly.
- ScrollRect() may not scroll from correct bitmap.
- ScrollRect() deltas not correct under local or virtual.
- Point in/on hit rectangle wasn't centered properly.
- PtInFlood(), PtInBoundary() added.
- ReadPCX() now reads from current bitmap, instead of default bitmap
- Interlaced bitmaps (CGA, Hercules, etc.) corrupted memory by writing 4
bytes beyond the allocated rowtable memory.
- CenterRect() didn't match manual definition.
- PtOnxx() drew frame when pen size = 0,0.
- PtIn/Onxx() with hit size = 1,1 did not test any pixel.
- Fixed FillArc() and FrameArc() to correct intermittent hangs under Borland C
when drawing special cases of even height ovals with end angles at 360.0.
- InitGraphics() would hang if using Phar Lap 286 and fonts (or drivers)
were not in the current directory.
- TrackCursor(True) would sync the cursor to the input device, now
syncs the input device to the current cursor position.
- ProtectRect() would hang if called before ShowCursor().
- SetPenState() corrupted memory when it called PortBitmap().
- AlignPattern with y of 1 crashes.
- SetPixel() with raster ops other that replace, or with patterns other
than 0 or 1 would not draw.
- XlateImage on 386 blows up
====== History starts with version 4.1A ======
MetaWINDOW Revision History - Versions 4.4A through 5.0B
Return to Metagraphics Home Page
Metagraphics Software Corporation
PO Box 225
Woodinville, WA 98072 U.S.A.
Copyright © 1995-1998 Metagraphics Software Corporation