TABLE OF CONTENTS graphics.library/AddAnimOb graphics.library/AddBob graphics.library/AddFont graphics.library/AddVSprite graphics.library/AllocRaster graphics.library/AndRectRegion graphics.library/AndRegionRegion graphics.library/Animate graphics.library/AreaCircle graphics.library/AreaDraw graphics.library/AreaEllipse graphics.library/AreaEnd graphics.library/AreaMove graphics.library/AskFont graphics.library/AskSoftStyle graphics.library/AttemptLockLayerRom graphics.library/BitMapScale graphics.library/BltBitMap graphics.library/BltBitMapRastPort graphics.library/BltClear graphics.library/BltMaskBitMapRastPort graphics.library/BltPattern graphics.library/BltTemplate graphics.library/CBump graphics.library/CEND graphics.library/ChangeSprite graphics.library/CINIT graphics.library/ClearEOL graphics.library/ClearRectRegion graphics.library/ClearRegion graphics.library/ClearScreen graphics.library/ClipBlit graphics.library/CloseFont graphics.library/CloseMonitor graphics.library/CMOVE graphics.library/CopySBitMap graphics.library/CWAIT graphics.library/DisownBlitter graphics.library/DisposeRegion graphics.library/DoCollision graphics.library/Draw graphics.library/DrawEllipse graphics.library/DrawGList graphics.library/EraseRect graphics.library/ExtendFont graphics.library/FindDisplayInfo graphics.library/Flood graphics.library/FontExtent graphics.library/FreeColorMap graphics.library/FreeCopList graphics.library/FreeCprList graphics.library/FreeGBuffers graphics.library/FreeRaster graphics.library/FreeSprite graphics.library/FreeVPortCopLists graphics.library/GetColorMap graphics.library/GetDisplayInfoData graphics.library/GetGBuffers graphics.library/GetRGB4 graphics.library/GetSprite graphics.library/GetVPModeID graphics.library/GfxAssociate graphics.library/GfxFree graphics.library/GfxLookUP graphics.library/GfxNew graphics.library/InitArea graphics.library/InitBitMap graphics.library/InitGels graphics.library/InitGMasks graphics.library/InitMasks graphics.library/InitRastPort graphics.library/InitTmpRas graphics.library/InitView graphics.library/InitVPort graphics.library/LoadRGB4 graphics.library/LoadView graphics.library/LockLayerRom graphics.library/MakeVPort graphics.library/ModeNotAvailable graphics.library/Move graphics.library/MoveSprite graphics.library/MrgCop graphics.library/NewRegion graphics.library/NextDisplayInfo graphics.library/OpenFont graphics.library/OpenMonitor graphics.library/OrRectRegion graphics.library/OrRegionRegion graphics.library/OwnBlitter graphics.library/PolyDraw graphics.library/QBlit graphics.library/QBSBlit graphics.library/ReadPixel graphics.library/ReadPixelArray8 graphics.library/ReadPixelLine8 graphics.library/RectFill graphics.library/RemBob graphics.library/RemFont graphics.library/RemIBob graphics.library/RemVSprite graphics.library/ScalerDiv graphics.library/ScrollRaster graphics.library/ScrollVPort graphics.library/SetAPen graphics.library/SetBPen graphics.library/SetCollision graphics.library/SetDrMd graphics.library/SetFont graphics.library/SetOPen graphics.library/SetRast graphics.library/SetRGB4 graphics.library/SetRGB4CM graphics.library/SetSoftStyle graphics.library/SortGList graphics.library/StripFont graphics.library/SyncSBitMap graphics.library/Text graphics.library/TextExtent graphics.library/TextFit graphics.library/TextLength graphics.library/UnlockLayerRom graphics.library/VBeamPos graphics.library/VideoControl graphics.library/WaitBlit graphics.library/WaitBOVP graphics.library/WaitTOF graphics.library/WeighTAMatch graphics.library/WritePixel graphics.library/WritePixelArray8 graphics.library/WritePixelLine8 graphics.library/XorRectRegion graphics.library/XorRegionRegion graphics.library/AddAnimOb graphics.library/AddAnimOb NAME AddAnimOb -- Add an AnimOb to the linked list of AnimObs. SYNOPSIS AddAnimOb(anOb, anKey, rp) A0 A1 A2 void AddAnimOb(struct AnimOb *,struct AnimOb **, struct RastPort *); FUNCTION Links this AnimOb into the current list pointed to by animKey. Initializes all the Timers of the AnimOb's components. Calls AddBob with each component's Bob. rp->GelsInfo must point to an initialized GelsInfo structure. INPUTS anOb = pointer to the AnimOb structure to be added to the list anKey = address of a pointer to the first AnimOb in the list (anKey = NULL if there are no AnimObs in the list so far) rp = pointer to a valid RastPort RESULT BUGS SEE ALSO Animate() graphics/rastport.h graphics/gels.h graphics.library/AddBob graphics.library/AddBob NAME AddBob -- Adds a Bob to current gel list. SYNOPSIS AddBob(Bob, rp) A0 A1 void AddBob(struct Bob *, struct RastPort *); FUNCTION Sets up the system Bob flags, then links this gel into the list via AddVSprite. INPUTS Bob = pointer to the Bob structure to be added to the gel list rp = pointer to a RastPort structure RESULT BUGS SEE ALSO InitGels() AddVSprite() graphics/gels.h graphics/rastport.h graphics.library/AddFont graphics.library/AddFont NAME AddFont -- add a font to the system list SYNOPSIS AddFont(textFont) A1 void AddFont(struct TextFont *); FUNCTION This function adds the text font to the system, making it available for use by any application. The font added must be in public memory, and remain until successfully removed. INPUTS textFont - a TextFont structure in public ram. RESULT BUGS SEE ALSO SetFont() RemFont() graphics/text.h graphics.library/AddVSprite graphics.library/AddVSprite NAME AddVSprite -- Add a VSprite to the current gel list. SYNOPSIS AddVSprite(vs, rp) A0 A1 void AddVSprite(struct VSprite *, struct RastPort *); FUNCTION Sets up the system VSprite flags Links this VSprite into the current gel list using its Y,X INPUTS vs = pointer to the VSprite structure to be added to the gel list rp = pointer to a RastPort structure RESULT BUGS SEE ALSO InitGels() graphics/rastport.h graphics/gels.h graphics.library/AllocRaster graphics.library/AllocRaster NAME AllocRaster -- Allocate space for a bitplane. SYNOPSIS planeptr = AllocRaster( width, height ) d0 d0:16 d1:16 PLANEPTR AllocRaster(UWORD,UWORD); FUNCTION This function calls the memory allocation routines to allocate memory space for a bitplane width bits wide and height bits high. INPUTS width - number of bits wide for bitplane height - number of rows in bitplane RESULT planeptr - pointer to first word in bitplane, or NULL if it was not possible to allocate the desired amount of memory. BUGS SEE ALSO FreeRaster() graphics/gfx.h graphics.library/AndRectRegion graphics.library/AndRectRegion NAME AndRectRegion -- Perform 2d AND operation of rectangle with region, leaving result in region. SYNOPSIS AndRectRegion(region,rectangle) a0 a1 void AndRectRegion( struct Region *, struct Rectangle * ); FUNCTION Clip away any portion of the region that exists outside of the rectangle. Leave the result in region. INPUTS region - pointer to Region structure rectangle - pointer to Rectangle structure NOTES Unlike the other rect-region primitives, AndRectRegion() cannot fail. BUGS SEE ALSO AndRegionRegion() OrRectRegion() graphics/regions.h graphics.library/AndRegionRegion graphics.library/AndRegionRegion NAME AndRegionRegion -- Perform 2d AND operation of one region with second region, leaving result in second region. SYNOPSIS status = AndRegionRegion(region1,region2) d0 a0 a1 BOOL AndRegionRegion(struct Region *, struct Region * ); FUNCTION Remove any portion of region2 that is not in region1. INPUTS region1 - pointer to Region structure region2 - pointer to Region structure to use and for result RESULTS status - return TRUE if successful operation return FALSE if ran out of memory BUGS SEE ALSO OrRegionRegion() AndRectRegion() graphics/regions.h graphics.library/Animate graphics.library/Animate NAME Animate -- Processes every AnimOb in the current animation list. SYNOPSIS Animate(anKey, rp) A0 A1 void Animate(struct AnimOb **, struct RastPort *); FUNCTION For every AnimOb in the list - update its location and velocities - call the AnimOb's special routine if one is supplied - for each component of the AnimOb - if this sequence times out, switch to the new one - call this component's special routine if one is supplied - set the sequence's VSprite's y,x coordinates based on whatever these routines cause INPUTS ankey = address of the variable that points to the head AnimOb rp = pointer to the RastPort structure RESULT BUGS SEE ALSO AddAnimOb() graphics/gels.h graphics/rastport.h graphics.library/AreaCircle graphics.library/AreaCircle NAME AreaCircle -- add a circle to areainfo list for areafill. SYNOPSIS error = (int) AreaCircle( rp, cx, cy, radius) D0 A1 D0 D1 D2 ULONG AreaCircle(struct RastPort *, WORD, WORD, UWORD); FUNCTION Add circle to the vector buffer. It will be drawn to the rastport when AreaEnd is executed. INPUTS rp - pointer to a RastPort structure cx, cy - the coordinates of the center of the desired circle. radius - is the radius of the circle to draw around the centerpoint. RESULTS 0 if no error -1 if no space left in vector list NOTES This function is actually a macro which calls AreaEllipse(rp,cx,cy,radius,radius). SEE ALSO AreaMove() AreaDraw() AreaCircle() InitArea() AreaEnd() graphics/rastport.h graphics/gfxmacros.h graphics.library/AreaDraw graphics.library/AreaDraw NAME AreaDraw -- Add a point to a list of end points for areafill. SYNOPSIS error = AreaDraw( rp, x, y) d0 A1 D0:16 D1:16 ULONG AreaDraw( struct RastPort *, SHORT, SHORT); FUNCTION Add point to the vector buffer. INPUTS rp - points to a RastPort structure. x,y - are coordinates of a point in the raster. RESULT error - zero for success, else -1 if no there was no space left in the vector list. BUGS SEE ALSO AreaMove() InitArea() AreaEnd() graphics/rastport.h graphics.library/AreaEllipse graphics.library/AreaEllipse NAME AreaEllipse -- add a ellipse to areainfo list for areafill. SYNOPSIS error = AreaEllipse( rp, cx, cy, a, b ) d0 a1 d0:16 d1:16 d2:16 d3:16 LONG AreaEllipse( struct RastPort *, SHORT, SHORT, SHORT, SHORT) FUNCTION Add an ellipse to the vector buffer. It will be draw when AreaEnd() is called. INPUTS rp - pointer to a RastPort structure cx - x coordinate of the centerpoint relative to the rastport. cy - y coordinate of the centerpoint relative to the rastport. a - the horizontal radius of the ellipse (note: a must be > 0) b - the vertical radius of the ellipse (note: b must be > 0) RESULT error - zero for success, or -1 if there is no space left in the vector list SEE ALSO AreaMove() AreaDraw() AreaCircle() InitArea() AreaEnd() graphics/rastport.h graphics.library/AreaEnd graphics.library/AreaEnd NAME AreaEnd -- Process table of vectors and ellipses and produce areafill. SYNOPSIS error = AreaEnd(rp) d0 A1 LONG AreaEnd( struct RastPort * ); FUNCTION Trigger the filling operation. Process the vector buffer and generate required fill into the raster planes. After the fill is complete, reinitialize for the next AreaMove or AreaEllipse. Use the raster set up by InitTmpRas when generating an areafill mask. RESULT error - zero for success, or -1 if an error occured anywhere. INPUTS rp - pointer to a RastPort structure which specifies where the filled regions will be rendered to. BUGS SEE ALSO InitArea() AreaMove() AreaDraw() AreaEllipse() InitTmpRas() graphics/rastport.h graphics.library/AreaMove graphics.library/AreaMove NAME AreaMove -- Define a new starting point for a new shape in the vector list. SYNOPSIS error = AreaMove( rp, x, y) d0 a1 d0:16 d1:16 LONG AreaMove( struct RastPort *, SHORT, SHORT ); FUNCTION Close the last polygon and start another polygon at (x,y). Add the necessary points to vector buffer. Closing a polygon may result in the generation of another AreaDraw() to close previous polygon. Remember to have an initialized AreaInfo structure attached to the RastPort. INPUTS rp - points to a RastPort structure x,y - positions in the raster RETURNS error - zero for success, or -1 if there is no space left in the vector list BUGS SEE ALSO InitArea() AreaDraw() AreaEllipse() AreaEnd() graphics/rastport.h graphics.library/AskFont graphics.library/AskFont NAME AskFont -- get the text attributes of the current font SYNOPSIS AskFont(rp, textAttr) A1 A0 void AskFont(struct RastPort *, struct TextAttr *); FUNCTION This function fills the text attributes structure with the attributes of the current font in the RastPort. INPUTS rp - the RastPort from which the text attributes are extracted textAttr - the TextAttr structure to be filled. Note that there is no support for a TTextAttr. RESULT The textAttr structure is filled with the RastPort's text attributes. BUGS SEE ALSO graphics/text.h graphics.library/AskSoftStyle graphics.library/AskSoftStyle NAME AskSoftStyle -- Get the soft style bits of the current font. SYNOPSIS enable = AskSoftStyle(rp) D0 A1 ULONG AskSoftStyle(struct RastPort *); FUNCTION This function returns those style bits of the current font that are not intrinsic in the font itself, but algorithmically generated. These are the bits that are valid to set in the enable mask for SetSoftStyle(). INPUTS rp - the RastPort from which the font and style are extracted. RESULTS enable - those bits in the style algorithmically generated. Style bits that are not defined are also set. BUGS SEE ALSO SetSoftStyle() graphics/text.h graphics.library/AttemptLockLayerRom graphics.library/AttemptLockLayerRom * NAME AttemptLockLayerRom -- Attempt to Lock Layer structure by rom(gfx lib) code SYNOPSIS gotit = AttemptLockLayerRom( layer ) d0 a5 BOOL AttempLockLayerRom( struct Layer * ); FUNCTION Query the current state of the lock on this Layer. If it is already locked then return FALSE, could not lock. If the Layer was not locked then lock it and return TRUE. This call does not destroy any registers. This call nests so that callers in this chain will not lock themselves out. INPUTS layer - pointer to Layer structure RESULT gotit - TRUE or FALSE depending on whether the Layer was successfully locked by the caller. SEE ALSO LockLayerRom() UnlockLayerRom() graphics.library/BitMapScale graphics.library/BitMapScale NAME BitMapScale -- Perform raster scaling on a bit map. (V36) SYNOPSIS BitMapScale(bitScaleArgs) A0 void BitMapScale(struct BitScaleArgs *); FUNCTION Scale a source bit map to a non-overlapping destination bit map. INPUTS bitScaleArgs - structure of parameters describing scale: bsa_SrcX, bsa_SrcY - origin of the source bits. bsa_SrcWidth, bsa_SrcHeight - number of bits to scale from in x and y. bsa_DestX, bsa_DestY - origin of the destination. bsa_DestWidth, bsa_DestHeight - resulting number of bits in x and y. NOTE: these values are set by this function. bsa_XSrcFactor:bsa_XDestFactor - equivalant to the ratio srcWidth:destWidth, but not necessarily the same numbers. Each must be in the range 1..16383. bsa_YSrcFactor:bsa_YDestFactor - equivalant to the ratio srcHeight:destHeight, but not necessarily the same numbers. Each must be in the range 1..16383. bsa_SrcBitMap - source of the bits to scale. bsa_DestBitMap - destination for the bits to scale. This had better be big enough! bsa_Flags - future scaling options. Set it to zero! bsa_XDDA, bsa_YDDA - for future use. Need not be set by user. bsa_Reserved1, bsa_Reserved2 - for future use. Need not be set. RESULT The destWidth, destHeight fields are set by this function as described above. NOTES o This function may use the blitter. o Overlapping source and destination bit maps are not supported. o No check is made to ensure destBitMap is big enough: use ScalerDiv to calculate a destination dimension. BUGS o This function does not use the HighRes Agnus 'Big Blit' facility. You should not use XSrcFactor == XDestFactor, where SrcWidth or DestWidth > 1024. o Also, the blitter is used when expanding in the Y direction. You should not expand in the Y direction if ((DestX & 0xf) + DestWidth) >= 1024 pixels. (Up to 1008 pixels is always safe). SEE ALSO ScalerDiv() graphics/scale.h graphics.library/BltBitMap graphics.library/BltBitMap NAME BltBitMap -- Move a rectangular region of bits in a BitMap. SYNOPSIS planecnt = BltBitMap(SrcBitMap, SrcX, SrcY, DstBitMap, D0 A0 D0:16 D1:16 A1 DstX, DstY, SizeX, SizeY, Minterm, Mask [, TempA]) D2:16 D3:16 D4:16 D5:16 D6:8 D7:8 [A2] ULONG BltBitMap(struct BitMap *, WORD, WORD, struct BitMap *, WORD, WORD, WORD, WORD, UBYTE, UBYTE, UWORD *); FUNCTION Perform non-destructive blits to move a rectangle from one area in a BitMap to another area, which can be on a different BitMap. This blit is assumed to be friendly: no error conditions (e.g. a rectangle outside the BitMap bounds) are tested or reported. INPUTS SrcBitMap, DstBitMap - the BitMap(s) containing the rectangles - the planes copied from the source to the destination are only those whose plane numbers are identical and less than the minimum Depth of either BitMap and whose Mask bit for that plane is non-zero. - as a special case, if a plane pointer in the SrcBitMap is zero, it acts as a pointer to a plane of all zeros, and if the plane pointer is 0xffffffff, it acts as a pointer to a plane of all ones. (Note: new for V36) - SrcBitMap and DstBitMap can be identical if they point to actual planes. SrcX, SrcY - the x and y coordinates of the upper left corner of the source rectangle. Valid range is positive signed integer such that the raster word's offset 0..(32767-Size) DstX, DstY - the x and y coordinates of the upper left corner of the destination for the rectangle. Valid range is as for Src. SizeX, SizeY - the size of the rectangle to be moved. Valid range is (X: 1..976; Y: 1..1023 such that final raster word's offset is 0..32767) Minterm - the logic function to apply to the rectangle when A is non-zero (i.e. within the rectangle). B is the source rectangle and C, D is the destination for the rectangle. - $0C0 is a vanilla copy - $030 inverts the source before the copy - $050 ignores the source and inverts the destination - see the hardware reference manual for other combinations Mask - the write mask to apply to this operation. Bits set indicate the corresponding planes (if not greater than the minimum plane count) are to participate in the operation. Typically this is set to 0xff. TempA - If the copy overlaps exactly to the left or right (i.e. the scan line addresses overlap), and TempA is non-zero, it points to enough chip accessable memory to hold a line of A source for the blit (ie CHIP RAM). BitBitMap will allocate (and free) the needed TempA if none is provided and one is needed. Blit overlap is determined from the relation of the first non-masked planes in the source and destination bit maps. RESULTS planecnt - the number of planes actually involved in the blit. NOTES o This function may use the blitter. SEE ALSO ClipBlit() graphics/gfx.h hardware/blit.h graphics.library/BltBitMapRastPort graphics.library/BltBitMapRastPort NAME BltBitMapRastPort -- Blit from source bitmap to destination rastport. SYNOPSIS error = BltBitMapRastPort (srcbm, srcx, srcy, destrp, destX, destY, sizeX, sizeY, minterm) D0 A0 D0 D1 A1 D2 D3 D4 D5 D6 BOOL BltBitMapRastPort (struct BitMap *, WORD, WORD, struct RastPort *, WORD, WORD, WORD, WORD, UBYTE); FUNCTION Blits from source bitmap to position specified in destination rastport using minterm. INPUTS srcbm - a pointer to the source bitmap srcx - x offset into source bitmap srcy - y offset into source bitmap destrp - a pointer to the destination rastport destX - x offset into dest rastport destY - y offset into dest rastport sizeX - width of blit in pixels sizeY - height of blit in rows minterm - minterm to use for this blit RESULT TRUE BUGS SEE ALSO BltMaskBitMapRastPort() graphics/gfx.h graphics/rastport.h graphics.library/BltClear graphics.library/BltClear NAME BltClear - Clear a block of memory words to zero. SYNOPSIS BltClear( memBlock, bytecount, flags ) a1 d0 d1 void BltClear( void *, ULONG, ULONG ); FUNCTION For memory that is local and blitter accessable, the most efficient way to clear a range of memory locations is to use the system's most efficient data mover, the blitter. This command accepts the starting location and count and clears that block to zeros. INPUTS memBloc - pointer to local memory to be cleared memBlock is assumed to be even. flags - set bit 0 to force function to wait until the blit is done. set bit 1 to use row/bytesperrow. bytecount - if (flags & 2) == 0 then even number of bytes to clear. else low 16 bits is taken as number of bytes per row and upper 16 bits taken as number of rows. This function is somewhat hardware dependant. In the rows/bytesperrow mode (with the pre-ECS blitter) rows must be <- 1024. In bytecount mode multiple runs of the blitter may be used to clear all the memory. Set bit 2 to use the upper 16 bits of the Flags as the data to fill memory with instead of 0 (V36). RESULT The block of memory is initialized. BUGS SEE ALSO graphics.library/BltMaskBitMapRastPort graphics.library/BltMaskBitMapRastPort NAME BltMaskBitMapRastPort -- blit from source bitmap to destination rastport with masking of source image. SYNOPSIS BltMaskBitMapRastPort (srcbm, srcx, srcy, destrp, destX, destY, sizeX, sizeY, A0 D0 D1 A1 D2 D3 D4 D5 minterm, bltmask) D6 A2 void BltMaskBitMapRastPort (struct BitMap *, WORD, WORD, struct RastPort *, WORD, WORD, WORD, WORD, UBYTE, APTR); FUNCTION Blits from source bitmap to position specified in destination rastport using bltmask to determine where source overlays destination, and minterm to determine whether to copy the source image "as is" or to "invert" the sense of the source image when copying. In either case, blit only occurs where the mask is non-zero. INPUTS srcbm - a pointer to the source bitmap srcx - x offset into source bitmap srcy - y offset into source bitmap destrp - a pointer to the destination rastport destX - x offset into dest rastport destY - y offset into dest rastport sizeX - width of blit in pixels sizeY - height of blit in rows minterm - either (ABC|ABNC|ANBC) if copy source and blit thru mask or (ANBC) if invert source and blit thru mask bltmask - pointer to the single bit-plane mask, which must be the same size and dimensions as the planes of the source bitmap. RESULT BUGS SEE ALSO BltBitMapRastPort() graphics/gfx.h graphics/rastport.h graphics.library/BltPattern graphics.library/BltPattern NAME BltPattern -- Using standard drawing rules for areafill, blit through a mask. SYNOPSIS BltPattern(rp, mask, xl, yl, maxx, maxy, bytecnt) a1, a0 d0 d1 d2 d3 d4 void BltPattern (struct RastPort *, void *, SHORT, SHORT, SHORT, SHORT, SHORT); FUNCTION Blit using drawmode,areafill pattern, and mask at position rectangle (xl,yl) (maxx,maxy). INPUTS rp - points to the destination RastPort for the blit. mask - points to 2 dimensional mask if needed if mask == NULL then use a rectangle. xl,yl - coordinates of upper left of rectangular region in RastPort maxx,maxy - points to lower right of rectangular region in RastPort bytecnt - BytesPerRow for mask RESULT SEE ALSO AreaEnd graphics.library/BltTemplate graphics.library/BltTemplate NAME BltTemplate -- Cookie cut a shape in a rectangle to the RastPort. SYNOPSIS BltTemplate(SrcTemplate, SrcX, SrcMod, rp, A0 D0:16 D1:16 A1 DstX, DstY, SizeX, SizeY) D2:16 D3:16 D4:16 D5:16 void BltTemplate(UWORD *, WORD, WORD, struct RastPort *, WORD, WORD, WORD, WORD); FUNCTION This function draws the image in the template into the RastPort in the current color and drawing mode at the specified position. The template is assumed not to overlap the destination. If the template falls outside the RastPort boundary, it is truncated to that boundary. Note: the SrcTemplate pointer should point to the "nearest" word (rounded down) of the template mask. Fine alignment of the mask is acheived by setting the SrcX bit offseet within the range of 0 to 15 decimal. INPUTS SrcTemplate - pointer to the first (nearest) word of the template mask. SrcX - x bit offset into the template mask (range 0..15). SrcMod - number of bytes per row in template mask. rp - pointer to destination RastPort. DstX, DstY - x and y coordinates of the upper left corner of the destination for the blit. SizeX, SizeY - size of the rectangle to be used as the template. NOTES o This function may use the blitter. SEE ALSO BltBitMap() graphics/rastport.h graphics.library/CBump graphics.library/CBump NAME CBump - increment user copper list pointer (bump to next position in list). SYNOPSIS CBump( c ) a1 void CBump( struct UCopList * ); FUNCTION Increment pointer to space for next instruction in user copper list. INPUTS c - pointer to UCopList structure RESULTS User copper list pointer is incremented to next position. Pointer is repositioned to next user copperlist instruction block if the current block is full. Note: CBump is usually invoked for the programmer as part of the macro definitions CWAIT or CMOVE. BUGS SEE ALSO CINIT CWAIT CMOVE CEND graphics/copper.h graphics.library/CEND graphics.library/CEND NAME CEND -- Terminate user copper list. SYNOPSIS CEND( c ) struct UCopList *c; FUNCTION Add instruction to terminate user copper list. INPUTS c - pointer to UCopList structure RESULTS This is actually a macro that calls the macro CWAIT(c,10000,255) 10000 is a magical number that the graphics.library uses. I hope display technology doesn't catch up too fast! BUGS SEE ALSO CINIT CWAIT CMOVE graphics/copper.h graphics.library/ChangeSprite graphics.library/ChangeSprite NAME ChangeSprite -- Change the sprite image pointer. SYNOPSIS ChangeSprite( vp, s, newdata) a0 a1 a2 void ChangeSprite(struct ViewPort *, struct SimpleSprite *, void * ) FUNCTION The sprite image is changed to use the data starting at newdata INPUTS vp - pointer to ViewPort structure that this sprite is relative to, or 0 if relative only top of View s - pointer to SimpleSprite structure newdata - pointer to data structure of the following form. struct spriteimage { UWORD posctl[2]; /* used by simple sprite machine*/ UWORD data[height][2]; /* actual sprite image */ UWORD reserved[2]; /* initialized to */ /* 0x0,0x0 */ }; The programmer must initialize reserved[2]. Spriteimage must be in CHIP memory. The height subfield of the SimpleSprite structure must be set to reflect the height of the new spriteimage BEFORE calling ChangeSprite(). The programmer may allocate two sprites to handle a single attached sprite. After GetSprite(), ChangeSprite(), the programmer can set the SPRITE_ATTACHED bit in posctl[1] of the odd numbered sprite. If you need more than 8 sprites, look up VSprites in the graphics documentation. RESULTS BUGS SEE ALSO FreeSprite() ChangeSprite() MoveSprite() AddVSprite() graphics/sprite.h graphics.library/CINIT graphics.library/CINIT NAME CINIT -- Initialize user copperlist to accept intermediate user copper instructions. SYNOPSIS cl = CINIT( ucl , n ) cl = UCopperListInit( ucl , n ) a0 d0 struct CopList *UCopperListInit( struct UCopList *, UWORD ); FUNCTION Allocates and/or initialize copperlist structures/buffers internal to a UCopList structure. This is a macro that calls UCopListInit. You must pass a (non-initialized) UCopList to CINIT (CINIT will NOT allocate a new UCopList if ucl==0 ). If (ucl != 0) it will initialize the intermediate data buffers internal to a UCopList. The maximum number of intermediate copper list instructions that these internal CopList data buffers contain is specified as the parameter n. INPUTS ucl - pointer to UCopList structure n - number of instructions buffer must be able to hold RESULTS cl- a pointer to a buffer which will accept n intermediate copper instructions. NOTE: this is NOT a UCopList pointer, rather a pointer to the UCopList's->FirstCopList sub-structure. BUGS CINIT will not actually allocate a new UCopList if ucl==0. Instead you must allocate a block MEMF_PUBLIC|MEMF_CLEAR, the sizeof(struct UCopList) and pass it to this function. The system's FreeVPortCopLists function will take care of deallocating it if they are called. Prior to release V36 the CINIT macro had { } braces surrounding the definition, preventing the proper return of the result value. These braces have been removed for the V36 include definitions. SEE ALSO CINIT CMOVE CEND graphics/copper.h graphics.library/ClearEOL graphics.library/ClearEOL NAME ClearEOL -- Clear from current position to end of line. SYNOPSIS ClearEOL(rp) A1 void ClearEOL(struct RastPort *); FUNCTION Clear a rectangular swath from the current position to the right edge of the rastPort. The height of the swath is taken from that of the current text font, and the vertical positioning of the swath is adjusted by the text baseline, such that text output at this position would lie wholly on this newly cleared area. Clearing consists of setting the color of the swath to zero, or, if the DrawMode is 2, to the BgPen. INPUTS rp - pointer to RastPort structure RESULT NOTES o This function may use the blitter. SEE ALSO Text() ClearScreen() SetRast() graphics/text.h graphics/rastport.h graphics.library/ClearRectRegion graphics.library/ClearRectRegion NAME ClearRectRegion -- Perform 2d CLEAR operation of rectangle with region, leaving result in region. SYNOPSIS status = ClearRectRegion(region,rectangle) d0 a0 a1 BOOL ClearRectRegion(struct Region *, struct Rectangle * ); FUNCTION Clip away any portion of the region that exists inside of the rectangle. Leave the result in region. INPUTS region - pointer to Region structure rectangle - pointer to Rectangle structure RESULTS status - return TRUE if successful operation return FALSE if ran out of memory BUGS SEE ALSO AndRectRegion() graphics/regions.h graphics.library/ClearRegion graphics.library/ClearRegion NAME ClearRegion -- Remove all rectangles from region. SYNOPSIS ClearRegion(region) a0 void ClearRegion( struct Region * ); FUNCTION Clip away all rectangles in the region leaving nothing. INPUTS region - pointer to Region structure BUGS SEE ALSO NewRegion() graphics/regions.h graphics.library/ClearScreen graphics.library/ClearScreen NAME ClearScreen -- Clear from current position to end of RastPort. SYNOPSIS ClearScreen(rp) A1 void ClearScreen(struct RastPort *); FUNCTION Clear a rectangular swath from the current position to the right edge of the rastPort with ClearEOL, then clear the rest of the screen from just beneath the swath to the bottom of the rastPort. Clearing consists of setting the color of the swath to zero, or, if the DrawMode is 2, to the BgPen. INPUTS rp - pointer to RastPort structure NOTES o This function may use the blitter. SEE ALSO ClearEOL() Text() SetRast() graphics/text.h graphics/rastport.h graphics.library/ClipBlit graphics.library/ClipBlit NAME ClipBlit -- Calls BltBitMap() after accounting for windows SYNOPSIS ClipBlit(Src, SrcX, SrcY, Dest, DestX, DestY, XSize, YSize, Minterm) A0 D0 D1 A1 D2 D3 D4 D5 D6 void ClipBlit (struct RastPort *, WORD, WORD, struct RastPort *, WORD, WORD, WORD, WORD, UBYTE); FUNCTION Performs the same function as BltBitMap(), except that it takes into account the Layers and ClipRects of the layer library, all of which are (and should be) transparent to you. So, whereas BltBitMap() requires pointers to BitMaps, ClipBlit requires pointers to the RastPorts that contain the Bitmaps, Layers, etcetera. If you are going to blit blocks of data around via the RastPort of your Intuition Window, you must call this routine (rather than BltBitMap()). Either the Src RastPort, the Dest RastPort, both, or neither, can have Layers. This routine takes care of all cases. See BltBitMap() for a thorough explanation. INPUTS Src = pointer to the RastPort of the source for your blit SrcX, SrcY = the topleft offset into Src for your data Dest = pointer to the RastPort to receive the blitted data DestX, DestY = the topleft offset into the destination RastPort XSize = the width of the blit YSize = the height of the blit Minterm = the boolean blitter function, where SRCB is associated with the Src RastPort and SRCC goes to the Dest RastPort RESULT BUGS SEE ALSO BltBitMap(); graphics.library/CloseFont graphics.library/CloseFont NAME CloseFont -- Release a pointer to a system font. SYNOPSIS CloseFont(font) A1 void CloseFont(struct TextFont *); FUNCTION This function indicates that the font specified is no longer in use. It is used to close a font opened by OpenFont, so that fonts that are no longer in use do not consume system resources. INPUTS font - a font pointer as returned by OpenFont() or OpenDiskFont() RESULT BUGS SEE ALSO OpenFont() diskfont.library/OpenDiskFont graphics/text.h graphics.library/CloseMonitor graphics.library/CloseMonitor NAME CloseMonitor -- close a MonitorSpec (V36) SYNOPSIS error = CloseMonitor( monitor_spec ) d0 a0 LONG CloseMonitor( struct MonitorSpec * ); FUNCTION Relinquish access to a MonitorSpec. INPUTS monitor_spec - a pointer to a MonitorSpec opened via OpenMonitor() RESULTS error - FALSE if MonitorSpec closed uneventfully. TRUE if MonitorSpec could not be closed. BUGS SEE ALSO OpenMonitor() graphics.library/CMOVE graphics.library/CMOVE NAME CMOVE -- append copper move instruction to user copper list. SYNOPSIS CMOVE( c , a , v ) CMove( c , a , v ) a1 d0 d1 CBump( c ) a1 void CMove( struct UCopList *, void *, WORD ); FUNCTION Add instruction to move value v to hardware register a. INPUTS c - pointer to UCopList structure a - hardware register v - 16 bit value to be written RESULTS This is actually a macro that calls CMove(c,&a,v) and then calls CBump(c) to bump the local pointer to the next instruction. Watch out for macro side affects. BUGS SEE ALSO CINIT CWAIT CEND graphics/copper.h graphics.library/CopySBitMap graphics.library/CopySBitMap NAME CopySBitMap -- Syncronize Layer window with contents of Super BitMap SYNOPSIS CopySBitMap( layer ) a0 void CopySBitMap(struct Layer *); FUNCTION This is the inverse of SyncSBitMap. Copy all bits from SuperBitMap to Layer bounds. This is used for those functions that do not want to deal with the ClipRect structures but do want to be able to work with a SuperBitMap Layer. INPUTS layer - pointer to a SuperBitMap Layer The Layer must already be locked by the caller. BUGS SEE ALSO LockLayerRom() SyncSBitMap() graphics.library/CWAIT graphics.library/CWAIT NAME CWAIT -- Append copper wait instruction to user copper list. SYNOPSIS CWAIT( c , v , h ) CWait( c , v , h ) a1 d0 d1 CBump( c ) a1 void CWait( struct UCopList *, WORD, WORD) FUNCTION Add instruction to wait for vertical beam position v and horizontal position h to this intermediate copper list. INPUTS c - pointer to UCopList structure v - vertical beam position (relative to top of viewport) h - horizontal beam position RESULTS this is actually a macro that calls CWait(c,v,h) and then calls CBump(c) to bump the local pointer to the next instruction. BUGS User waiting for horizontal values of greater than 222 decimal is illegal. SEE ALSO CINIT CMOVE CEND graphics/copper.h graphics.library/DisownBlitter graphics.library/DisownBlitter NAME DisownBlitter - return blitter to free state. SYNOPSIS DisownBlitter() void DisownBlitter( void ); FUNCTION Free blitter up for use by other blitter users. INPUTS RETURNS SEE ALSO OwnBlitter() graphics.library/DisposeRegion graphics.library/DisposeRegion NAME DisposeRegion -- Return all space for this region to free memory pool. SYNOPSIS DisposeRegion(region) a0 void DisposeRegion( struct Region * ); FUNCTION Free all RegionRectangles for this Region then free the Region itself. INPUTS region - pointer to Region structure BUGS SEE ALSO NewRegion() graphics/regions.h graphics.library/DoCollision graphics.library/DoCollision NAME DoCollision -- Test every gel in gel list for collisions. SYNOPSIS DoCollision(rp) A1 void DoCollision(struct RastPort *); FUNCTION Tests each gel in gel list for boundary and gel-to-gel collisions. On detecting one of these collisions, the appropriate collision- handling routine is called. See the documentation for a thorough description of which collision routine is called. This routine expects to find the gel list correctly sorted in Y,X order. The system routine SortGList performs this function for the user. INPUTS rp = pointer to a RastPort RESULT BUGS SEE ALSO InitGels() SortGList() graphics/gels.h graphics/gels.h graphics.library/Draw graphics.library/Draw NAME Draw -- Draw a line between the current pen position and the new x,y position. SYNOPSIS Draw( rp, x, y) a1 d0:16 d1:16 void Draw( struct RastPort *, SHORT, SHORT); FUNCTION Draw a line from the current pen position to (x,y). INPUTS rp - pointer to the destination RastPort x,y - coordinates of where in the RastPort to end the line. BUGS SEE ALSO Move() graphics/rastport.h graphics.library/DrawEllipse graphics.library/DrawEllipse NAME DrawEllipse -- Draw an ellipse centered at cx,cy with vertical and horizontal radii of a,b respectively. SYNOPSIS DrawEllipse( rp, cx, cy, a, b ) a1 d0 d1 d2 d3 void DrawEllipse( struct RastPort *, SHORT, SHORT, SHORT, SHORT); FUNCTION Creates an elliptical outline within the rectangular region specified by the parameters, using the current foreground pen color. INPUTS rp - pointer to the RastPort into which the ellipse will be drawn. cx - x coordinate of the centerpoint relative to the rastport. cy - y coordinate of the centerpoint relative to the rastport. a - the horizontal radius of the ellipse (note: a must be > 0) b - the vertical radius of the ellipse (note: b must be > 0) BUGS NOTES this routine does not clip the ellipse to a non-layered rastport. SEE ALSO DrawCircle(), graphics/rastport.h graphics.library/DrawGList graphics.library/DrawGList NAME DrawGList -- Process the gel list, queueing VSprites, drawing Bobs. SYNOPSIS DrawGList(rp, vp) A1 A0 void DrawGList(struct RastPort *, struct ViewPort *); FUNCTION Performs one pass of the current gel list. - If nextLine and lastColor are defined, these are initialized for each gel. - If it's a VSprite, build it into the copper list. - If it's a Bob, draw it into the current raster. - Copy the save values into the "old" variables, double-buffering if required. INPUTS rp = pointer to the RastPort where Bobs will be drawn vp = pointer to the ViewPort for which VSprites will be created RESULT BUGS MUSTDRAW isn't implemented yet. SEE ALSO InitGels() graphics/gels.h graphics/rastport.h graphics/view.h graphics.library/EraseRect graphics.library/EraseRect NAME EraseRect -- Fill a defined rectangular area using the current BackFill hook. (V36) SYNOPSIS EraseRect( rp, xmin, ymin, xmax, ymax) a1 d0:16 d1:16 d2:16 d3:16 void EraseRect(struct RastPort *, SHORT, SHORT, SHORT, SHORT); FUNCTION Fill the rectangular region specified by the parameters with the BackFill hook. If non-layered, the rectangular region specified by the parameters is cleared. If layered the Layer->BackFill Hook is used. INPUTS rp - pointer to a RastPort structure xmin - x coordinate of the upper left corner of the region to fill. ymin - y coordinate of the upper left corner of the region to fill. xmax - x coordinate of the lower right corner of the region to fill. ymax - y coordinate of the lower right corner of the region to fill. BUGS NOTES The following relation MUST be true: (xmax >= xmin) and (ymax >= ymin) SEE ALSO graphics/rastport.h graphics/clip.h graphics.library/ExtendFont graphics.library/ExtendFont NAME ExtendFont -- ensure tf_Extension has been built for a font (V36) SYNOPSIS success = ExtendFont(font, fontTags) D0 A0 A1 ULONG ExtendFont(struct TextFont *, struct TagItem *); SEE ALSO graphics/text.h graphics.library/FindDisplayInfo graphics.library/FindDisplayInfo NAME FindDisplayInfo -- search for a record identified by a specific key (V36) SYNOPSIS handle = FindDisplayInfo(ID) D0 D0 DisplayInfoHandle FindDisplayInfo(ULONG); FUNCTION Given a 32-bit Mode Key, return a handle to a valid DisplayInfoRecord found in the graphics database. Using this handle, you can obtain information about this Mode, including its default dimensions, properties, and whether it is currently available for use. INPUTS ID - unsigned long identifier RESULT handle - handle to a displayinfo Record with that key or NULL if no match. BUGS SEE ALSO graphics/displayinfo.h graphics.library/Flood graphics.library/Flood NAME Flood -- Flood rastport like areafill. SYNOPSIS error = Flood( rp, mode, x, y) d0 a1 d2 d0 d1 BOOL Flood(struct RastPort *, ULONG, SHORT, SHORT); FUNCTION Search the BitMap starting at (x,y). Fill all adjacent pixels if they are: Mode 0: not the same color as AOLPen Mode 1: the same color as the pixel at (x,y) When actually doing the fill use the modes that apply to standard areafill routine such as drawmodes and patterns. INPUTS rp - pointer to RastPort (x,y) - coordinate in BitMap to start the flood fill at. mode - 0 fill all adjacent pixels searching for border. 1 fill all adjacent pixels that have same pen number as the one at (x,y). NOTES In order to use Flood, the destination RastPort must have a valid TmpRas raster whose size is as large as that of the RastPort. SEE ALSO AreaEnd() InitTmpRas() graphics/rastport.h graphics.library/FontExtent graphics.library/FontExtent NAME FontExtent -- get the font attributes of the current font (V36) SYNOPSIS FontExtent(font, fontExtent) A0 A1 void FontExtent(struct TextFont *, struct TextExtent *); FUNCTION This function fills the text extent structure with a bounding (i.e. maximum) extent for the characters in the specified font. INPUTS font - the TextFont from which the font metrics are extracted. fontExtent - the TextExtent structure to be filled. RESULT fontExtent is filled. NOTES The TextFont, not the RastPort, is specified -- unlike TextExtent(), effect of algorithmic enhancements is not included, nor does te_Width include any effect of rp_TxSpacing. The returned te_Width will be negative only when FPF_REVPATH is set in the tf_Flags of the font -- the effect of left-moving characters is ignored for the width of a normal font, and the effect of right-moving characters is ignored if a REVPATH font. These characters will, however, be reflected in the bounding extent. SEE ALSO TextExtent() graphics/text.h graphics.library/FreeColorMap graphics.library/FreeColorMap NAME FreeColorMap -- Free the ColorMap structure and return memory to free memory pool. SYNOPSIS FreeColorMap( colormap ) a0 void FreeColorMap(struct ColorMap *); FUNCTION Return the memory to the free memory pool that was allocated with GetColorMap. INPUTS colormap - pointer to ColorMap allocated with GetColorMap RESULT The space is made available for others to use. BUGS SEE ALSO SetRGB4() GetColorMap() graphics/view.h graphics.library/FreeCopList graphics.library/FreeCopList NAME FreeCopList -- deallocate intermediate copper list SYNOPSIS FreeCopList(coplist) a0 void FreeCopList( struct CopList *); FUNCTION Deallocate all memory associated with this copper list. INPUTS coplist - pointer to structure CopList RESULTS memory returned to memory manager BUGS SEE ALSO graphics/copper.h graphics.library/FreeCprList graphics.library/FreeCprList NAME FreeCprList -- deallocate hardware copper list SYNOPSIS FreeCprList(cprlist) a0 void FreeCprList(struct cprlist *); FUNCTION return cprlist to free memory pool INPUTS cprlist - pointer to cprlist structure RESULTS memory returned and made available to other tasks BUGS SEE ALSO graphics/copper.h graphics.library/FreeGBuffers graphics.library/FreeGBuffers NAME FreeGBuffers -- Deallocate memory obtained by GetGBufers. SYNOPSIS FreeGBuffers(anOb, rp, db) A0 A1 D0 void FreeGBuffers(struct AnimOb *, struct RastPort *, BOOL); FUNCTION For each sequence of each component of the AnimOb, deallocate memory for: SaveBuffer BorderLine CollMask and ImageShadow (point to same buffer) if db is set (user had used double-buffering) deallocate: DBufPacket BufBuffer INPUTS anOb = pointer to the AnimOb structure rp = pointer to the current RastPort db = double-buffer indicator (set TRUE for double-buffering) RESULT BUGS SEE ALSO GetGBuffers() graphics/gels.h graphics/rastport.h graphics.library/FreeRaster graphics.library/FreeRaster NAME FreeRaster -- Release an allocated area to the system free memory pool . SYNOPSIS FreeRaster( p, width, height) a0 d0:16 d1:16 void FreeRaster( PLANEPTR, USHORT, USHORT); FUNCTION Return the memory associated with this PLANEPTR of size width and height to the MEMF_CHIP memory pool. INPUTS p = a pointer to a memory space returned as a result of a call to AllocRaster. width - the width in bits of the bitplane. height - number of rows in bitplane. BUGS NOTES Width and height should be the same values with which you called AllocRaster in the first place. SEE ALSO AllocRaster() graphics/gfx.h graphics.library/FreeSprite graphics.library/FreeSprite NAME FreeSprite -- Return sprite for use by others and virtual sprite machine. SYNOPSIS FreeSprite( pick ) d0 void FreeSprite( WORD ); FUNCTION Mark sprite as available for others to use. These sprite routines are provided to ease sharing of sprite hardware and to handle simple cases of sprite usage and movement. It is assumed the programs that use these routines do want to be good citizens in their hearts. ie: they will not FreeSprite unless they actually own the sprite. The Virtual Sprite machine may ignore the simple sprite machine. INPUTS pick - number in range of 0-7 RESULTS sprite made available for subsequent callers of GetSprite as well as use by Virtual Sprite Machine. BUGS SEE ALSO GetSprite() ChangeSprite() MoveSprite() graphics/sprite.h graphics.library/FreeVPortCopLists graphics.library/FreeVPortCopLists NAME FreeVPortCopLists -- deallocate all intermediate copper lists and their headers from a viewport SYNOPSIS FreeVPortCopLists(vp) a0 void FreeVPortCopLists(struct ViewPort *); FUNCTION Search display, color, sprite, and user copper lists and call FreeMem() to deallocate them from memory INPUTS vp - pointer to ViewPort structure RESULTS The memory allocated to the various copper lists will be returned to the system's free memory pool, and the following fields in the viewport structure will be set to NULL: DspIns, Sprins, ClrIns, UCopIns BUGS none known SEE ALSO graphics/view.h graphics.library/GetColorMap graphics.library/GetColorMap NAME GetColorMap -- allocate and initialize Colormap SYNOPSIS cm = GetColorMap( entries ) d0 d0 struct ColorMap *GetColorMap( ULONG); FUNCTION Allocates, initializes and returns a pointer to a ColorMap data structure, later enabling calls to SetRGB4 and LoadRGB4 to load colors for a view port. The ColorTable pointer in the ColorMap structure points to a hardware specific colormap data structure. You should not count on it being anything you can understand. Use GetRGB4() to query it or SetRGB4CM to set it directly. INPUTS entries - number of entries for this colormap RESULT The pointer value returned by this routine, if nonzero, may be stored into the ViewPort.ColorMap pointer. If a value of 0 is returned, the system was unable to allocate enough memory space for the required data structures. BUGS SEE ALSO SetRGB4() FreeColorMap() graphics.library/GetDisplayInfoData graphics.library/GetDisplayInfoData NAME GetDisplayInfoData -- query DisplayInfo Record parameters (V36) SYNOPSIS result = GetDisplayInfoData(handle, buf, size, tagID, [ID]) D0 A0 A1 D0 D1 [D2] ULONG GetDisplayInfoData(DisplayInfoHandle, UBYTE *, ULONG, ULONG, ULONG); FUNCTION GetDisplayInfoData() fills a buffer with data meaningful to the DisplayInfoRecord pointed at by your valid handle. The data type that you are interested in is indicated by a tagID for that chunk. The types of tagged information that may be available include: DTAG_DISP: (DisplayInfo) - properties and availability information. DTAG_DIMS: (DimensionInfo) - default dimensions and overscan info. DTAG_MNTR: (MonitorInfo) - type, position, scanrate, and compatibility DTAG_NAME: (NameInfo) - a user friendly way to refer to this mode. INPUTS handle - displayinfo handle buf - pointer to destination buffer size - buffer size in bytes tagID - data chunk type ID - displayinfo identifier, optionally used if handle is NULL RESULT result - if positive, number of bytes actually transferred if zero, no information for ID was available BUGS SEE ALSO FindDisplayInfo(), NextDisplayInfo() graphics/displayinfo.h graphics.library/GetGBuffers graphics.library/GetGBuffers NAME GetGBuffers -- Attempt to allocate ALL buffers of an entire AnimOb. SYNOPSIS status = GetGBuffers(anOb, rp, db) D0 A0 A1 D0 BOOL GetGBuffers(struct AnimOb *, struct RastPort *, BOOL); FUNCTION For each sequence of each component of the AnimOb, allocate memory for: SaveBuffer BorderLine CollMask and ImageShadow (point to same buffer) if db is set TRUE (user wants double-buffering) allocate: DBufPacket BufBuffer INPUTS anOb = pointer to the AnimOb structure rp = pointer to the current RastPort db = double-buffer indicator (set TRUE for double-buffering) RESULT status = TRUE if the memory allocations were all successful, else FALSE BUGS If any of the memory allocations fail it does not free the partial allocations that did succeed. SEE ALSO FreeGBuffers() graphics/gels.h graphics.library/GetRGB4 graphics.library/GetRGB4 NAME GetRGB4 -- Inquire value of entry in ColorMap. SYNOPSIS value = GetRGB4( colormap, entry ) d0 a0 d0 ULONG GetRGB4(struct ColorMap *, LONG); FUNCTION Read and format a value from the ColorMap. INPUTS colormap - pointer to ColorMap structure entry - index into colormap RESULT returns -1 if no valid entry return UWORD RGB value 4 bits per gun right justified NOTE Intuition's DisplayBeep() changes color 0. Reading Color 0 during a DisplayBeep() will lead to incorrect results. BUGS SEE ALSO SetRGB4() LoadRGB4() GetColorMap() FreeColorMap() graphics/view.h graphics.library/GetSprite graphics.library/GetSprite NAME GetSprite -- Attempt to get a sprite for the simple sprite manager. SYNOPSIS Sprite_Number = GetSprite( sprite, pick ) d0 a0 d0 SHORT GetSprite( struct SimpleSprite *, SHORT ); FUNCTION Attempt to allocate one of the eight sprites for private use with the simple sprite manager. This must be done before using further calls to the simple sprite machine. If the programmer wants to use 15 color sprites, they must allocate both sprites and set the 'SPRITE_ATTACHED' bit in the odd sprite's posctldata array. INPUTS sprite - ptr to programmers SimpleSprite structure. pick - number in the range of 0-7 or -1 if programmer just wants the next one. RESULTS If pick is 0-7 attempt to allocate the sprite. If the sprite is already allocated then return -1. If pick -1 allocate the next sprite starting search at 0. If no sprites are available return -1 and fill -1 in num entry of SimpleSprite structure. If the sprite is available for allocation, mark it allocated and fill in the 'num' entry of the SimpleSprite structure. If successful return the sprite number. BUGS SEE ALSO FreeSprite() ChangeSprite() MoveSprite() GetSprite() graphics/sprite.h graphics.library/GetVPModeID graphics.library/GetVPModeID NAME GetVPModeID -- get the 32 bit DisplayID from a ViewPort. (V36) SYNOPSIS modeID = GetVPModeID( vp ) d0 a0 ULONG GetVPModeID( struct ViewPort *); FUNCTION returns the normal display modeID, if one is currently associated with this ViewPort. INPUTS vp -- pointer to a ViewPort structure. RESULT modeID -- a 32 bit DisplayInfoRecord identifier associated with this ViewPort, or INVALID_ID. NOTES Test the return value of this function against INVALID_ID, not NULL. (INVALID_ID is defined in graphics/displayinfo.h). BUGS SEE ALSO graphics/displayinfo.h, ModeNotAvailable() graphics.library/GfxAssociate graphics.library/GfxAssociate NAME GfxAssociate -- associate a graphics extended node with a given pointer (V36) SYNOPSIS GfxAssociate(pointer, node); A0 A1 void GfxAssociate(VOID *, struct ExtendedNode *); FUNCTION Associate a special graphics extended data structure (each of which begins with an ExtendedNode structure) with another structure via the other structure's pointer. Later, when you call GfxLookUp() with the other structure's pointer you may retrieve a pointer to this special graphics extended data structure, if it is available. INPUTS pointer = a pointer to a data structure. node = an ExtendedNode structure to associate with the pointer RESULT an association is created between the pointer and the node such that given the pointer the node can be retrieved via GfxLookUp(). BUGS SEE ALSO graphics/gfxnodes.h GfxNew() GfxFree() GfxLookUp() graphics.library/GfxFree graphics.library/GfxFree NAME GfxFree -- free a graphics extended data structure (V36) SYNOPSIS GfxFree( node ); a0 void GfxFree(struct ExtendedNode *); FUNCTION Free a special graphics extended data structure (each of which begins with an ExtendedNode structure). INPUTS node = pointer to a graphics extended data structure obtained via GfxNew(). RESULT the node is deallocated from memory. graphics will dissassociate this special graphics extended node from any associated data structures, if necessary, before freeing it (see GfxAssociate()). BUGS an Alert() will be called if you attempt to free any structure other than a graphics extended data strucure obtained via GfxFree(). SEE ALSO graphics/gfxnodes.h GfxNew() GfxAssociate() GfxLookUp() graphics.library/GfxLookUP graphics.library/GfxLookUP NAME GfxLookUp -- find a graphics extended node associated with a given pointer (V36) SYNOPSIS result = GfxLookUp( pointer ); d0 a0 struct ExtendedNode *GfxLookUp( void *); FUNCTION Finds a special graphics extended data structure (if any) associated with the pointer to a data structure (eg: ViewExtra associated with a View structure). INPUTS pointer = a pointer to a data structure which may have an ExtendedNode associated with it (typically a View ). RESULT result = a pointer to the ExtendedNode that has previously been associated with the pointer. BUGS SEE ALSO graphics/gfxnodes.h GfxNew() GfxFree() GfxAssociate() graphics.library/GfxNew graphics.library/GfxNew NAME GfxNew -- allocate a graphics extended data structure (V36) SYNOPSIS result = GfxNew( node_type ); d0 d0 struct ExtendedNode *GfxNew( ULONG); FUNCTION Allocate a special graphics extended data structure (each of which begins with an ExtendedNode structure). The type of structure to be allocated is specified by the node_type identifier. INPUTS node_type = which type of graphics extended data structure to allocate. (see gfxnodes.h for identifier definitions.) RESULT result = a pointer to the allocated graphics node or NULL if the allocation failed. BUGS SEE ALSO graphics/gfxnodes.h GfxFree() GfxAssociate() GfxLookUp() graphics.library/InitArea graphics.library/InitArea NAME InitArea -- Initialize vector collection matrix SYNOPSIS InitArea( areainfo, buffer, maxvectors ) a0 a1 d0 void InitArea(struct AreaInfo *, void *, SHORT); FUNCTION This function provides initialization for the vector collection matrix such that it has a size of (max vectors ). The size of the region pointed to by buffer (short pointer) should be five (5) times as large as maxvectors. This size is in bytes. Areafills done by using AreaMove, AreaDraw, and AreaEnd must have enough space allocated in this table to store all the points of the largest fill. AreaEllipse takes up two vectors for every call. If AreaMove/Draw/Ellipse detect too many vectors going into the buffer they will return -1. INPUTS areainfo - pointer to AreaInfo structure buffer - pointer to chunk of memory to collect vertices maxvectors - max number of vectors this buffer can hold RESULT Pointers are set up to begin storage of vectors done by AreaMove, AreaDraw, and AreaEllipse. BUGS SEE ALSO AreaEnd() AreaMove() AreaDraw() AreaEllipse() graphics/rastport.h graphics.library/InitBitMap graphics.library/InitBitMap NAME InitBitMap -- Initialize bit map structure with input values. SYNOPSIS InitBitMap( bm, depth, width, height ) a0 d0 d1 d2 void InitBitMap( struct BitMap *, BYTE, UWORD, UWORD ); FUNCTION Initialize various elements in the BitMap structure to correctly reflect depth, width, and height. Must be used before use of BitMap in other graphics calls. The Planes[8] are not initialized and need to be set up by the caller. The Planes table was put at the end of the structure so that it may be truncated to conserve space, as well as extended. All routines that use BitMap should only depend on existence of depth number of bitplanes. The Flagsh and pad fields are reserved for future use and should not be used by application programs. INPUTS bm - pointer to a BitMap structure (gfx.h) depth - number of bitplanes that this bitmap will have width - number of bits (columns) wide for this BitMap height- number of bits (rows) tall for this BitMap BUGS SEE ALSO graphics/gfx.h graphics.library/InitGels graphics.library/InitGels NAME InitGels -- initialize a gel list; must be called before using gels. SYNOPSIS InitGels(head, tail, GInfo) A0 A1 A2 void InitGels(struct VSprite *, struct VSprite *, struct GelsInfo *); FUNCTION Assigns the VSprites as the head and tail of the gel list in GfxBase. Links these two gels together as the keystones of the list. If the collHandler vector points to some memory array, sets the BORDERHIT vector to NULL. INPUTS head = pointer to the VSprite structure to be used as the gel list head tail = pointer to the VSprite structure to be used as the gel list tail GInfo = pointer to the GelsInfo structure to be initialized RESULT BUGS SEE ALSO graphics/gels.h graphics/rastport.h graphics.library/InitGMasks graphics.library/InitGMasks NAME InitGMasks -- Initialize all of the masks of an AnimOb. SYNOPSIS InitGMasks(anOb) A0 void InitGMasks(struct AnimOb *); FUNCTION For every sequence of every component call InitMasks. INPUTS anOb = pointer to the AnimOb BUGS SEE ALSO InitMasks() graphics/gels.h graphics.library/InitMasks graphics.library/InitMasks NAME InitMasks -- Initialize the BorderLine and CollMask masks of a VSprite. SYNOPSIS InitMasks(vs) A0 void InitMasks(struct VSprite *); FUNCTION Creates the appropriate BorderLine and CollMask masks of the VSprite. Correctly detects if the VSprite is actually a Bob definition, handles the image data accordingly. INPUTS vs = pointer to the VSprite structure RESULT BUGS SEE ALSO InitGels() graphics/gels.h graphics.library/InitRastPort graphics.library/InitRastPort NAME InitRastPort -- Initialize raster port structure SYNOPSIS InitRastPort( rp ) a1 void InitRastPort(struct RastPort *); FUNCTION Initialize a RastPort structure to standard values. INPUTS rp = pointer to a RastPort structure. RESULT all entries in RastPort get zeroed out, with the following exceptions: Mask, FgPen, AOLPen, and LinePtrn are set to -1. The DrawMode is set to JAM2 The font is set to the standard system font NOTES The struct Rastport describes a control structure for a write-able raster. The RastPort structure describes how a complete single playfield display will be written into. A RastPort structure is referenced whenever any drawing or filling operations are to be performed on a section of memory. The section of memory which is being used in this way may or may not be presently a part of the current actual onscreen display memory. The name of the actual memory section which is linked to the RastPort is referred to here as a "raster" or as a bitmap. NOTE: Calling the routine InitRastPort only establishes various defaults. It does NOT establish where, in memory, the rasters are located. To do graphics with this RastPort the user must set up the BitMap pointer in the RastPort. BUGS SEE ALSO graphics/rastport.h graphics.library/InitTmpRas graphics.library/InitTmpRas NAME InitTmpRas -- Initialize area of local memory for usage by areafill, floodfill, text. SYNOPSIS InitTmpRas(tmpras, buffer, size) a0 a1 d0 void InitTmpRas( struct TmpRas *, void *, ULONG ); FUNCTION The area of memory pointed to by buffer is set up to be used by RastPort routines that may need to get some memory for intermediate operations in preparation to putting the graphics into the final BitMap. Tmpras is used to control the usage of buffer. INPUTS tmpras - pointer to a TmpRas structure to be linked into a RastPort buffer - pointer to a contguous piece of chip memory. size - size in bytes of buffer RESULT makes buffer available for users of RastPort BUGS Would be nice if RastPorts could share one TmpRas. SEE ALSO AreaEnd() Flood() Text() graphics/rastport.h graphics.library/InitView graphics.library/InitView NAME InitView - Initialize View structure. SYNOPSIS InitView( view ) a1 void InitView( struct View * ); FUNCTION Initialize View structure to default values. INPUTS view - pointer to a View structure RESULT View structure set to all 0's. (1.0,1.1.1.2) Then values are put in DxOffset,DyOffset to properly position default display about .5 inches from top and left on monitor. InitView pays no attention to previous contents of view. BUGS SEE ALSO MakeVPort graphics/view.h graphics.library/InitVPort graphics.library/InitVPort NAME InitVPort - Initialize ViewPort structure. SYNOPSIS InitVPort( vp ) a0 void InitVPort( struct ViewPort * ); FUNCTION Initialize ViewPort structure to default values. INPUTS vp - pointer to a ViewPort structure RESULT ViewPort structure set to all 0's. (1.0,1.1) New field added SpritePriorities, initialized to 0x24 (1.2) BUGS SEE ALSO MakeVPort() graphics/view.h graphics.library/LoadRGB4 graphics.library/LoadRGB4 NAME LoadRGB4 -- Load RGB color values from table. SYNOPSIS LoadRGB4( vp, colors , count ) a0 a1 d0:16 void LoadRGB4( struct ViewPort *, UWORD *, WORD); FUNCTION load the count words of the colormap from table starting at entry 0. INPUTS vp - pointer to ViewPort, whose colors you wish to change colors - pointer to table of RGB values set up as an array of USHORTS background-- 0x0RGB color1 -- 0x0RGB color2 -- 0x0RGB etc. UWORD per value. The colors are interpreted as 15 = maximum intensity. 0 = minimum intensity. count = number of UWORDs in the table to load into the colormap starting at color 0(background) and proceeding to the next higher color number RESULTS The ViewPort should have a pointer to a valid ColorMap to store the colors in. Updates the hardware copperlist to reflect the new colors. Updates the intermediate copperlist with the new colors. BUGS NOTE: With V36 and up, it is not safe to call this function from an interrupt, because of the semaphore locking on graphics copper lists. SEE ALSO SetRGB4() GetRGB4() GetColorMap() graphics/view.h graphics.library/LoadView graphics.library/LoadView NAME LoadView -- Use a (possibly freshly created) coprocessor instruction list to create the current display. SYNOPSIS LoadView( View ) A1 void LoadView( struct View * ); FUNCTION Install a new view to be displayed during the next display refresh pass. Coprocessor instruction list has been created by InitVPort(), MakeVPort(), and MrgCop(). INPUTS View - a pointer to the View structure which contains the pointer to the constructed coprocessor instructions list, or NULL. RESULT If the View pointer is non-NULL, the new View is displayed, according to your instructions. The vertical blank routine will pick this pointer up and direct the copper to start displaying this View. If the View pointer is NULL, no View is displayed. NOTE Even though a LoadView(NULL) is performed, display DMA will still be active. Sprites will continue to be displayed after a LoadView(NULL) unless an OFF_SPRITE is subsequently performed. BUGS SEE ALSO InitVPort() MakeVPort() MrgCop() intuition/RethinkDisplay() graphics/view.h graphics.library/LockLayerRom graphics.library/LockLayerRom NAME LockLayerRom -- Lock Layer structure by rom(gfx lib) code. SYNOPSIS LockLayerRom( layer ) a5 void LockLayerRom( struct Layer * ); FUNCTION Return when the layer is locked and no other task may alter the ClipRect structure in the Layer structure. This call does not destroy any registers. This call nests so that callers in this chain will not lock themselves out. Do not have the Layer locked during a call to intuition. There is a potential deadlock problem here, if intuition needs to get other locks as well. Having the layer locked prevents other tasks from using the layer library functions, most notably intuition itself. So be brief. layers.library's LockLayer is identical to LockLayerRom. INPUTS layer - pointer to Layer structure RESULTS The layer is locked and the task can render assuming the ClipRects will not change out from underneath it until an UnlockLayerRom is called. SEE ALSO UnlockLayerRom() layers.library/LockLayer() graphics/clip.h graphics.library/MakeVPort graphics.library/MakeVPort NAME MakeVPort -- generate display copper list for a viewport. SYNOPSIS MakeVPort( view, viewport ) a0 a1 void MakeVPort( struct View *, struct ViewPort * ); FUNCTION Uses information in the View, ViewPort, ViewPort->RasInfo to construct and intermediate copper list for this ViewPort. INPUTS view - pointer to a View structure viewport - pointer to a ViewPort structure The viewport must have valid pointer to a RasInfo. RESULTS constructs intermediate copper list and puts pointers in viewport.DspIns If the ColorMap ptr in ViewPort is NULL then it uses colors from the default color table. If DUALPF in Modes then there must be a second RasInfo pointed to by the first RasInfo BUGS Narrow Viewports (whose righthand edge is less than 3/4 of the way across the display) still do not work properly. SEE ALSO InitVPort() MrgCop() graphics/view.h intuition.library/MakeScreen() intuition.library/RemakeDisplay() intuition.library/RethinkDisplay() graphics.library/ModeNotAvailable graphics.library/ModeNotAvailable NAME ModeNotAvailable -- check to see if a DisplayID isn't available. (V36) SYNOPSIS error = ModeNotAvailable( modeID ) d0 d0 ULONG ModeNotAvailable( ULONG); FUNCTION returns an error code, indicating why this modeID is not available, or NULL if there is no reason known why this mode should not be there. INPUTS modeID -- a 32 bit DisplayInfoRecord identifier. RESULT error -- a general indication of why this modeID is not available, or NULL if there is no reason why it shouldn't be available. NOTE ULONG return values from this function are a proper superset of the DisplayInfo.NotAvailable field (defined in graphics/displayinfo.h). BUGS SEE ALSO graphics/displayinfo.h, GetVPModeID() graphics.library/Move graphics.library/Move NAME Move -- Move graphics pen position. SYNOPSIS Move( rp, x, y) a1 d0:16 d1:16 void Move( struct RastPort *, SHORT, SHORT ); FUNCTION Move graphics pen position to (x,y) relative to upper left (0,0) of RastPort. This sets the starting point for subsequent Draw() and Text() calls. INPUTS rp - pointer to a RastPort structure x,y - point in the RastPort RESULTS BUGS SEE ALSO Draw graphics/rastport.h graphics.library/MoveSprite graphics.library/MoveSprite NAME MoveSprite -- Move sprite to a point relative to top of viewport. SYNOPSIS MoveSprite(vp, sprite, x, y) A0 A1 D0 D1 void MoveSprite(struct ViewPort *,struct SimpleSprite *, WORD, WORD); FUNCTION Move sprite image to new place on display. INPUTS vp - pointer to ViewPort structure if vp = 0, sprite is positioned relative to View. sprite - pointer to SimpleSprite structure (x,y) - new position relative to top of viewport or view. RESULTS Calculate the hardware information for the sprite and place it in the posctldata array. During next video display the sprite will appear in new position. BUGS Sprites really appear one pixel to the left of the position you specify. This bug affects the apparent display position of the sprite on the screen, but does not affect the numeric position relative to the viewport or view. SEE ALSO FreeSprite() ChangeSprite() GetSprite() graphics/sprite.h graphics.library/MrgCop graphics.library/MrgCop NAME MrgCop -- Merge together coprocessor instructions. SYNOPSIS MrgCop( View ) A1 void MrgCop( struct View * ); FUNCTION Merge together the display, color, sprite and user coprocessor instructions into a single coprocessor instruction stream. This essentially creates a per-display-frame program for the coprocessor. This function MrgCop is used, for example, by the graphics animation routines which effectively add information into an essentially static background display. This changes some of the user or sprite instructions, but not those which have formed the basic display in the first place. When all forms of coprocessor instructions are merged together, you will have a complete per- frame instruction list for the coprocessor. Restrictions: Each of the coprocessor instruction lists MUST be internally sorted in min to max Y-X order. The merge routines depend on this! Each list must be terminated using CEND(copperlist). INPUTS View - a pointer to the view structure whose coprocessor instructions are to be merged. RESULT The view structure will now contain a complete, sorted/merged list of instructions for the coprocessor, ready to be used by the display processor. The display processor is told to use this new instruction stream through the instruction LoadView(). BUGS SEE ALSO InitVPort() MakeVPort() LoadView() graphics/view.h intuition.library/RethinkDisplay() graphics.library/NewRegion graphics.library/NewRegion NAME NewRegion -- Get an empty region. SYNOPSIS region = NewRegion() d0 struct Region *NewRegion(); FUNCTION Create a Region structure, initialize it to empty, and return a pointer it. RESULTS region - pointer to initialized region. If it could not allocate required memory region = NULL. INPUTS none BUGS SEE ALSO graphics/regions.h graphics.library/NextDisplayInfo graphics.library/NextDisplayInfo NAME NextDisplayInfo -- iterate current displayinfo identifiers (V36) SYNOPSIS next_ID = NextDisplayInfo(last_ID) D0 D0 ULONG NextDisplayInfo(ULONG); FUNCTION The basic iteration function with which to find all records in the graphics database. Using each ID in succession, you can then call FindDisplayInfo() to obtain the handle associated with each ID. Each ID is a 32-bit Key which uniquely identifies one record. The INVALID_ID is special, and indicates the end-of-list. INPUTS last_ID - previous displayinfo identifier or INVALID_ID if beginning iteration. RESULT next_ID - subsequent displayinfo identifier or INVALID_ID if no more records. BUGS SEE ALSO FindDisplayInfo(), GetDisplayInfoData() graphics/displayinfo.h graphics.library/OpenFont graphics.library/OpenFont NAME OpenFont -- Get a pointer to a system font. SYNOPSIS font = OpenFont(textAttr) D0 A0 struct TextFont *OpenFont(struct TextAttr *); FUNCTION This function searches the system font space for the graphics text font that best matches the attributes specified. The pointer to the font returned can be used in subsequent SetFont and CloseFont calls. It is important to match this call with a corresponding CloseFont call for effective management of ram fonts. INPUTS textAttr - a TextAttr or TTextAttr structure that describes the text font attributes desired. RESULT font is zero if the desired font cannot be found. If the named font is found, but the size and style specified are not available, a font with the nearest attributes is returned. SEE ALSO CloseFont() SetFont() diskfont.library/OpenDiskFont graphics/text.h graphics.library/OpenMonitor graphics.library/OpenMonitor NAME OpenMonitor -- open a named MonitorSpec (V36) SYNOPSIS mspc = OpenMonitor( monitor_name , display_id) d0 a1 d0 struct MonitorSpec *OpenMonitor( char *, ULONG ); FUNCTION Locate and open a named MonitorSpec. INPUTS monitor_name - a pointer to a null terminated string. display_id - an optional 32 bit monitor/mode identifier RESULTS mspc - a pointer to an open MonitorSpec structure. NULL if MonitorSpec could not be opened. NOTE if monitor_name is non-NULL, the monitor will be opened by name. if monitor_name is NULL the monitor will be opened by optional ID. if both monitor_name and display_id are NULL returns default monitor. BUGS SEE ALSO CloseMonitor() graphics/monitor.h graphics.library/OrRectRegion graphics.library/OrRectRegion NAME OrRectRegion -- Perform 2d OR operation of rectangle with region, leaving result in region. SYNOPSIS status = OrRectRegion(region,rectangle) d0 a0 a1 BOOL OrRectRegion( struct Region *, struct Rectangle * ); FUNCTION If any portion of rectangle is not in the region then add that portion to the region. INPUTS region - pointer to Region structure rectangle - pointer to Rectangle structure RESULTS status - return TRUE if successful operation return FALSE if ran out of memory BUGS SEE ALSO AndRectRegion() OrRegionRegion() graphics/regions.h graphics.library/OrRegionRegion graphics.library/OrRegionRegion NAME OrRegionRegion -- Perform 2d OR operation of one region with second region, leaving result in second region SYNOPSIS status = OrRegionRegion(region1,region2) d0 a0 a1 BOOL OrRegionRegion( struct Region *, struct Region * ); FUNCTION If any portion of region1 is not in the region then add that portion to the region2 INPUTS region1 - pointer to Region structure region2 - pointer to Region structure RESULTS status - return TRUE if successful operation return FALSE if ran out of memory BUGS SEE ALSO OrRectRegion() graphics/regions.h graphics.library/OwnBlitter graphics.library/OwnBlitter NAME OwnBlitter -- get the blitter for private usage SYNOPSIS OwnBlitter() void OwnBlitter( void ); FUNCTION If blitter is available return immediately with the blitter locked for your exclusive use. If the blitter is not available put task to sleep. It will be awakened as soon as the blitter is available. When the task first owns the blitter the blitter may still be finishing up a blit for the previous owner. You must do a WaitBlit before actually using the blitter registers. Calls to OwnBlitter() do not nest. If a task that owns the blitter calls OwnBlitter() again, a lockup will result. (Same situation if the task calls a system function that tries to own the blitter). INPUTS NONE RETURNS NONE SEE ALSO DisownBlitter() WaitBlit() graphics.library/PolyDraw graphics.library/PolyDraw NAME PolyDraw -- Draw lines from table of (x,y) values. SYNOPSIS PolyDraw( rp, count , array ) a1 d0 a0 void PolyDraw( struct RastPort *, WORD, WORD * ); FUNCTION starting with the first pair in the array, draw connected lines to it and every successive pair. INPUTS rp - pointer to RastPort structure count - number of (x,y) pairs in the array array - pointer to first (x,y) pair BUGS SEE ALSO Draw() Move() graphics/rastport.h graphics.library/QBlit graphics.library/QBlit NAME QBlit -- Queue up a request for blitter usage SYNOPSIS QBlit( bp ) a1 void QBlit( struct bltnode * ); FUNCTION Link a request for the use of the blitter to the end of the current blitter queue. The pointer bp points to a blit structure containing, among other things, the link information, and the address of your routine which is to be called when the blitter queue finally gets around to this specific request. When your routine is called, you are in control of the blitter ... it is not busy with anyone else's requests. This means that you can directly specify the register contents and start the blitter. See the description of the blit structure and the uses of QBlit in the section titled Graphics Support in the OS Kernel Manual. Your code must be written to run either in supervisor or user mode on the 68000. INPUTS bp - pointer to a blit structure RESULT Your routine is called when the blitter is ready for you. In general requests for blitter usage through this channel are put in front of those who use the blitter via OwnBlitter and DisownBlitter. However for small blits there is more overhead using the queuer than Own/Disown Blitter. BUGS SEE ALSO QBSBlit() hardware/blit.h graphics.library/QBSBlit graphics.library/QBSBlit NAME QBSBlit -- Synchronize the blitter request with the video beam. SYNOPSIS QBSBlit( bsp ) a1 void QBSBlit( struct bltnode * ); FUNCTION Call a user routine for use of the blitter, enqueued separately from the QBlit queue. Calls the user routine contained in the blit structure when the video beam is located at a specified position onscreen. Useful when you are trying to blit into a visible part of the screen and wish to perform the data move while the beam is not trying to display that same area. (prevents showing part of an old display and part of a new display simultaneously). Blitter requests on the QBSBlit queue take precedence over those on the regular blitter queue. The beam position is specified the blitnode. INPUTS bsp - pointer to a blit structure. See description in the Graphics Support section of the manual for more info. RESULT User routine is called when the QBSBlit queue reaches this request AND the video beam is in the specified position. If there are lots of blits going on and the video beam has wrapped around back to the top it will call all the remaining bltnodes as fast as it can to try and catch up. BUGS Not very smart when getting blits from different tasks. They all get put in same queue so there are unfortunately some interdependencies with the beam syncing. SEE ALSO QBlit() hardware/blit.h graphics.library/ReadPixel graphics.library/ReadPixel NAME ReadPixel -- read the pen number value of the pixel at a specified x,y location within a certain RastPort. SYNOPSIS penno = ReadPixel( rp, x, y ) d0 a1 d0:16 d1:16 LONG ReadPixel( struct RastPort *, SHORT, SHORT ); FUNCTION Combine the bits from each of the bit-planes used to describe a particular RastPort into the pen number selector which that bit combination normally forms for the system hardware selection of pixel color. INPUTS rp - pointer to a RastPort structure (x,y) a point in the RastPort RESULT penno - the pen number of the pixel at (x,y) is returned. -1 is returned if the pixel cannot be read for some reason. BUGS SEE ALSO WritePixel() graphics/rastport.h graphics.library/ReadPixelArray8 graphics.library/ReadPixelArray8 NAME ReadPixelArray8 -- read the pen number value of a rectangular array of pixels starting at a specified x,y location and continuing through to another x,y location within a certain RastPort. (V36) SYNOPSIS count = ReadPixelArray8(rp,xstart,ystart,xstop,ystop,array,temprp) D0 A0 D0:16 D1:16 D2:16 D3:16 A2 A1 LONG ReadPixelArray8(struct RastPort *, UWORD, UWORD, UWORD, UWORD, UBYTE *, struct RastPort *); FUNCTION For each pixel in a rectangular region, combine the bits from each of the bit-planes used to describe a particular RastPort into the pen number selector which that bit combination normally forms for the system hardware selection of pixel color. INPUTS rp - pointer to a RastPort structure (xstart,ystart) - starting point in the RastPort (xstop,ystop) - stopping point in the RastPort array - pointer to an array of ubytes from which to fetch the pixel data allocate at least ((((width+15)>>4)<<4)*(ystop-ystart+1)) bytes. temprp - temporary rastport (copy of rp with Layer set == NULL, temporary memory allocated for temprp->BitMap with Rows set == 1, temprp->BytesPerRow == (((width+15)>>4)<<1), and temporary memory allocated for temprp->BitMap->Planes[]) RESULT For each pixel in the array: Pen - (0..255) number at that position is returned count - the number of pixels read. NOTE xstop must be >= xstart ystop must be >= ystart BUGS SEE ALSO ReadPixel() ReadPixelLine8() graphics/rastport.h graphics.library/ReadPixelLine8 graphics.library/ReadPixelLine8 NAME ReadPixelLine8 -- read the pen number value of a horizontal line of pixels starting at a specified x,y location and continuing right for count pixels. (V36) SYNOPSIS count = ReadPixelLine8(rp,xstart,ystart,width,array,temprp) D0 A0 D0:16 D1:16 D2 A2 A1 LONG ReadPixelLine8(struct RastPort *, UWORD, UWORD, UWORD, UBYTE *, struct RastPort * ); FUNCTION For each pixel in a rectangular region, combine the bits from each of the bit-planes used to describe a particular RastPort into the pen number selector which that bit combination normally forms for the system hardware selection of pixel color. INPUTS rp - pointer to a RastPort structure (x,y) - a point in the RastPort width - count of horizontal pixels to read array - pointer to an array of UBYTEs from which to fetch the pixel data allocate at least (((width+15)>>4)<<4) bytes. temprp - temporary rastport (copy of rp with Layer set == NULL, temporary memory allocated for temprp->BitMap with Rows set == 1, temprp->BytesPerRow == (((width+15)>>4)<<1), and temporary memory allocated for temprp->BitMap->Planes[]) RESULT For each pixel in the array: Pen - (0..255) number at that position is returned count - the number of pixels read. NOTE width must be non negative BUGS SEE ALSO ReadPixel() graphics/rastport.h graphics.library/RectFill graphics.library/RectFill NAME RectFill -- Fill a rectangular region in a RastPort. SYNOPSIS RectFill( rp, xmin, ymin, xmax, ymax) a1 d0:16 d1:16 d2:16 d3:16 void RectFill( struct RastPort *, SHORT, SHORT, SHORT, SHORT ); FUNCTION Fills the rectangular region specified by the parameters with the chosen pen colors, areafill pattern, and drawing mode. If no areafill pattern is specified, fill the rectangular region with the FgPen color, taking into account the drawing mode. INPUTS rp - pointer to a RastPort structure (xmin,ymin) (xmax,ymax) are the coordinates of the upper left corner and the lower right corner, respectively, of the rectangle. NOTE The following relation MUST be true: (xmax >= xmin) and (ymax >= ymin) BUGS Complement mode with FgPen complements all bitplanes. SEE ALSO AreaEnd() graphics/rastport.h graphics.library/RemBob graphics.library/RemBob NAME RemBob -- Macro to remove a Bob from the gel list. SYNOPSIS RemBob(bob) RemBob(struct Bob *); FUNCTION Marks a Bob as no-longer-required. The gels internal code then removes the Bob from the list of active gels the next time DrawGList is executed. This is implemented as a macro. If the user is double-buffering the Bob, it could take two calls to DrawGList before the Bob actually disappears from the RastPort. INPUTS Bob = pointer to the Bob to be removed RESULT BUGS SEE ALSO RemIBob() DrawGList() graphics/gels.h graphics/gfxmacros.h graphics.library/RemFont graphics.library/RemFont NAME RemFont -- Remove a font from the system list. SYNOPSIS RemFont(textFont) A1 void RemFont(struct TextFont *); FUNCTION This function removes a font from the system, ensuring that access to it is restricted to those applications that currently have an active pointer to it: i.e. no new SetFont requests to this font are satisfied. INPUTS textFont - the TextFont structure to remove. RESULT BUGS SEE ALSO SetFont() AddFont() graphics/text.h graphics.library/RemIBob graphics.library/RemIBob NAME RemIBob -- Immediately remove a Bob from the gel list and the RastPort. SYNOPSIS RemIBob(bob, rp, vp) A0 A1 A2 void RemIBob(struct Bob *, struct RastPort *, struct ViewPort *); FUNCTION Removes a Bob immediately by uncoupling it from the gel list and erases it from the RastPort. INPUTS bob = pointer to the Bob to be removed rp = pointer to the RastPort if the Bob is to be erased vp = pointer to the ViewPort for beam-synchronizing RESULT BUGS SEE ALSO InitGels() RemVSprite() graphics/gels.h graphics.library/RemVSprite graphics.library/RemVSprite NAME RemVSprite -- Remove a VSprite from the current gel list. SYNOPSIS RemVSprite(vs) A0 void RemVSprite(struct VSprite *); FUNCTION Unlinks the VSprite from the current gel list. INPUTS vs = pointer to the VSprite structure to be removed from the gel list RESULT BUGS SEE ALSO InitGels() RemIBob() graphics/gels.h graphics.library/ScalerDiv graphics.library/ScalerDiv NAME ScalerDiv -- Get the scaling result that BitMapScale would. (V36) SYNOPSIS result = ScalerDiv(factor, numerator, denominator) D0 D0 D1 D2 UWORD ScalerDiv(UWORD, UWORD, UWORD); FUNCTION Calculate the expression (factor*numerator/denominator) such that the result is the same as the width of the destination result of BitMapScale when the factor here is the width of the source, and the numerator and denominator are the XDestFactor and XSrcFactor for BitMapScale. INPUTS factor - a number in the range 0..16383 numerator, denominator - numbers in the range 1..16383 RESULT this returns factor*numerator/denominator graphics.library/ScrollRaster graphics.library/ScrollRaster NAME ScrollRaster -- Push bits in rectangle in raster around by dx,dy towards 0,0 inside rectangle. SYNOPSIS ScrollRaster(rp, dx, dy, xmin, ymin, xmax, ymax) A1 D0 D1 D2 D3 D4 D5 void ScrollRaster (struct RastPort *, WORD, WORD, WORD, WORD, WORD, WORD); FUNCTION Move the bits in the raster by (dx,dy) towards (0,0) The space vacated is RectFilled with BGPen. Limit the scroll operation to the rectangle defined by (xmin,ymin)(xmax,ymax). Bits outside will not be affected. If xmax,ymax is outside the rastport then use the lower right corner of the rastport. If you are dealing with a SimpleRefresh layered RastPort you should check rp->Layer->Flags & LAYER_REFRESH to see if there is any damage in the damage list. If there is you should call the appropriate BeginRefresh(Intuition) or BeginUpdate(graphics) routine sequence. INPUTS rp - pointer to a RastPort structure dx,dy are integers that may be postive, zero, or negative xmin,ymin - upper left of bounding rectangle xmax,ymax - lower right of bounding rectangle EXAMPLE ScrollRaster(rp,0,1) /* shift raster up by one row */ ScrollRaster(rp,-1,-1) /* shift raster down and to the right by 1 pixel BUGS In 1.2/V1.3 if you ScrollRaster a SUPERBITMAP exactly left or right, and there is no TmpRas attached to the RastPort, the system will allocate one for you, but will never free it or record its location. This bug has been fixed for V1.4. The workaround for 1.2/1.3 is to attach a valid TmpRas of size at least MAXBYTESPERROW to the RastPort before the call. Begining with V1.4 ScrollRaster adds the shifted areas into the damage list for SIMPLE_REFRESH windows. Due to unacceptable system overhead, the decision was made NOT to propagate this shifted area damage for SMART_REFRESH windows. SEE ALSO graphics/rastport.h graphics.library/ScrollVPort graphics.library/ScrollVPort NAME ScrollVPort -- Reinterpret RasInfo information in ViewPort to reflect the current Offset values. SYNOPSIS ScrollVPort( vp ) a0 void ScrollVPort(struct ViewPort *); FUNCTION After the programmer has adjusted the Offset values in the RasInfo structures of ViewPort, change the the copper lists to reflect the the Scroll positions. Changing the BitMap ptr in RasInfo and not changing the the Offsets will effect a double buffering affect. INPUTS vp - pointer to a ViewPort structure that is currently be displayed. RESULTS modifies hardware and intermediate copperlists to reflect new RasInfo BUGS pokes not fast enough to avoid some visible hashing of display SEE ALSO MakeVPort() MrgCop() LoadView() graphics/view.h graphics.library/SetAPen graphics.library/SetAPen NAME SetAPen -- Set the primary pen for a RastPort. SYNOPSIS SetAPen( rp, pen ) a1 d0 void SetAPen( struct RastPort *, UBYTE ); FUNCTION Set the primary drawing pen for lines, fills, and text. INPUTS rp - pointer to RastPort structure. pen - (0-255) RESULT Changes the minterms in the RastPort to reflect new primary pen. Sets line drawer to restart pattern. BUGS SEE ALSO SetBPen() graphics/rastport.h graphics.library/SetBPen graphics.library/SetBPen NAME SetBPen -- Set secondary pen for a RastPort SYNOPSIS SetBPen( rp, pen ) a1 d0 void SetBPen( struct RastPort *, UBYTE ); FUNCTION Set the secondary drawing pen for lines, fills, and text. INPUTS rp - pointer to RastPort structure. pen - (0-255) RESULT Changes the minterms in the RastPort to reflect new secondary pen. Sets line drawer to restart pattern. BUGS SEE ALSO SetAPen() graphics/rastport.h graphics.library/SetCollision graphics.library/SetCollision NAME SetCollision -- Set a pointer to a user collision routine. SYNOPSIS SetCollision(num, routine, GInfo) D0 A0 A1 void SetCollision(ULONG, VOID (*)(), struct GelsInfo *); FUNCTION Sets a specified entry (num) in the user's collision vectors table equal to the address of the specified collision routine. INPUTS num = collision vector number routine = pointer to the user's collision routine GInfo = pointer to a GelsInfo structure RESULT BUGS SEE ALSO InitGels() graphics/gels.h graphics/rastport.h graphics.library/SetDrMd graphics.library/SetDrMd NAME SetDrMd -- Set drawing mode for a RastPort SYNOPSIS SetDrMd( rp, mode ) a1 d0:8 void SetDrMd( struct RastPort *, UBYTE ); FUNCTION Set the drawing mode for lines, fills and text. Get the bit definitions from rastport.h INPUTS rp - pointer to RastPort structure. mode - 0-255, some combinations may not make much sense. RESULT The mode set is dependant on the bits selected. Changes minterms to reflect new drawing mode. Sets line drawer to restart pattern. BUGS SEE ALSO SetAPen() SetBPen() graphics/rastport.h graphics.library/SetFont graphics.library/SetFont NAME SetFont -- Set the text font and attributes in a RastPort. SYNOPSIS SetFont(rp, font) A1 A0 void SetFont(struct RastPort *, struct TextFont *); FUNCTION This function sets the font in the RastPort to that described by font, and updates the text attributes to reflect that change. This function clears the effect of any previous soft styles. INPUTS rp - the RastPort in which the text attributes are to be changed font - pointer to a TextFont structure returned from OpenFont() or OpenDiskFont() RESULT NOTES This function had previously been documented that it would accept a null font. This practice is discouraged. o Use of a RastPort with a null font with text routines has always been incorrect and risked the guru. o Keeping an obsolete font pointer in the RastPort is no more dangerous than keeping a zero one there. o SetFont(rp, 0) causes spurious low memory accesses under some system software releases. As of V36, the following Amiga font variants are no longer directly supported: fonts with NULL tf_CharSpace and non-NULL tf_CharKern. fonts with non-NULL tf_CharSpace and NULL tf_CharKern. fonts with NULL tf_CharSpace and NULL tf_CharKern with a tf_CharLoc size component greater than tf_XSize. Attempts to SetFont these one of these font variants will cause the system to modify your font to make it acceptable. BUGS Calling SetFont() on in-code TextFonts (ie fonts not OpenFont()ed) will result in a loss of 24 bytes from the system as of V36. This can be resolved by calling StripFont(). SEE ALSO OpenFont() StripFont() diskfont.library/OpenDiskFont() graphics/text.h graphics.library/SetOPen graphics.library/SetOPen NAME SetOPen -- Change the Area OutLine pen and turn on Outline mode for areafills. SYNOPSIS SetOPen(rp, pen) void SetOPen( struct RastPort *, UBYTE ); FUNCTION This is implemented as a c-macro. Pen is the pen number that will be used to draw a border around an areafill during AreaEnd(). INPUTS rp = pointer to RastPort structure pen = number between 0-255 BUGS SEE ALSO AreaEnd() graphics/gfxmacros.h graphics/rastport.h graphics.library/SetRast graphics.library/SetRast NAME SetRast - Set an entire drawing area to a specified color. SYNOPSIS SetRast( rp, pen ) a1 d0 void SetRast( struct RastPort *, UBYTE ); FUNCTION Set the entire contents of the specified RastPort to the specified pen. INPUTS rp - pointer to RastPort structure pen - the pen number (0-255) to jam into bitmap RESULT All pixels within the drawing area are set to the selected pen number. BUGS SEE ALSO RectFill() graphics/rastport.h graphics.library/SetRGB4 graphics.library/SetRGB4 NAME SetRGB4 -- Set one color register for this viewport. SYNOPSIS SetRGB4( vp, n, r, g, b) a0 d0 d1:4 d2:4 d3:4 void SetRGB4( struct ViewPort *, SHORT, UBYTE, UBYTE, UBYTE ); FUNCTION Change the color look up table so that this viewport displays the color (r,g,b) for pen number n. INPUTS vp - pointer to viewport structure n - the color number (range from 0 to 31) r - red level (0-15) g - green level (0-15) b - blue level (0-15) RESULT If there is a ColorMap for this viewport, then the value will be stored in the ColorMap. The selected color register is changed to match your specs. If the color value is unused then nothing will happen. BUGS NOTE: Under V36 and up, it is not safe to call this function from an interrupt, due to semaphore protection of graphics copper lists. SEE ALSO LoadRGB4() GetRGB4() graphics/view.h graphics.library/SetRGB4CM graphics.library/SetRGB4CM NAME SetRGB4CM -- Set one color register for this ColorMap. SYNOPSIS SetRGB4CM( cm, n, r, g, b) a0 d0 d1:4 d2:4 d3:4 void SetRGB4CM( struct ColorMap *, SHORT, UBYTE, UBYTE, UBYTE ); INPUTS cm = colormap n = the number of the color register to set. Ranges from 0 to 31 on current amiga displays. r = red level (0-15) g = green level (0-15) b = blue level (0-15) RESULT Store the (r,g,b) triplet at index n of the ColorMap structure. This function can be used to set up a ColorMap before before linking it into a viewport. BUGS SEE ALSO GetColorMap() GetRGB4() SetRGB4() graphics/view.h graphics.library/SetSoftStyle graphics.library/SetSoftStyle NAME SetSoftStyle -- Set the soft style of the current font. SYNOPSIS newStyle = SetSoftStyle(rp, style, enable) D0 A1 D0 D1 ULONG SetSoftStyle(struct RastPort *, ULONG, ULONG); FUNCTION This function alters the soft style of the current font. Only those bits that are also set in enable are affected. The resulting style is returned, since some style request changes will not be honored when the implicit style of the font precludes changing them. INPUTS rp - the RastPort from which the font and style are extracted. style - the new font style to set, subject to enable. enable - those bits in style to be changed. Any set bits here that would not be set as a result of AskSoftStyle will be ignored, and the newStyle result will not be as expected. RESULTS newStyle - the resulting style, both as a result of previous soft style selection, the effect of this function, and the style inherent in the set font. BUGS SEE ALSO AskSoftStyle() graphics/text.h graphics.library/SortGList graphics.library/SortGList NAME SortGList -- Sort the current gel list, ordering its y,x coordinates. SYNOPSIS SortGList(rp) A1 void SortGList(struct RastPort *); FUNCTION Sorts the current gel list according to the gels' y,x coordinates. This sorting is essential before calls to DrawGList or DoCollision. INPUTS rp = pointer to the RastPort structure containing the GelsInfo RESULT BUGS SEE ALSO InitGels() DoCollision() DrawGList() graphics/rastport.h graphics.library/StripFont graphics.library/StripFont NAME StripFont -- remove the tf_Extension from a font (V36) SYNOPSIS StripFont(font) A0 VOID StripFont(struct TextFont *); graphics.library/SyncSBitMap graphics.library/SyncSBitMap NAME SyncSBitMap -- Syncronize Super BitMap with whatever is in the standard Layer bounds. SYNOPSIS SyncSBitMap( layer ) a0 void SyncSBitMap( struct Layer * ); FUNCTION Copy all bits from ClipRects in Layer into Super BitMap BitMap. This is used for those functions that do not want to deal with the ClipRect structures but do want to be able to work with a SuperBitMap Layer. INPUTS layer - pointer to a Layer that has a SuperBitMap The Layer should already be locked by the caller. RESULT After calling this function, the programmer can manipulate the bits in the superbitmap associated with the layer. Afterwards, the programmer should call CopySBitMap to copy the bits back into the onscreen layer. BUGS SEE ALSO CopySBitMap() graphics/clip.h graphics.library/Text graphics.library/Text NAME Text -- Write text characters (no formatting). SYNOPSIS Text(rp, string, length) A1 A0 D0-0:16 void Text(struct RastPort *, STRPTR, WORD); FUNCTION This graphics function writes printable text characters to the specified RastPort at the current position. No control meaning is applied to any of the characters, thus only text on the current line is output. The current position in the RastPort is updated to the next character position. If the characters displayed run past the RastPort boundary, the current position is truncated to the boundary, and thus does not equal the old position plus the text length. INPUTS rp - a pointer to the RastPort which describes where the text is to be output string - the address of string to output length - the number of characters in the string. If zero, there are no characters to be output. NOTES o This function may use the blitter. o Changing the text direction with RastPort->TxSpacing is not supported. BUGS For V34 and earlier: o The maximum string length (in pixels) is limited to (1024 - 16 = 1008) pixels wide. o A text string whose last character(s) have a tf_CharLoc size component that extends to the right of the rightmost of the initial and final CP positions will be (inappropriately) clipped. SEE ALSO Move() TextLength() graphics/text.h graphics/rastport.h graphics.library/TextExtent graphics.library/TextExtent NAME TextExtent -- Determine raster extent of text data. (V36) SYNOPSIS TextExtent(rp, string, count, textExtent) A1 A0 D0:16 A2 void TextExtent(struct RastPort *, STRPTR, WORD, struct TextExtent *); FUNCTION This function determines a more complete metric of the space that a text string would render into than the TextLength() function. INPUTS rp - a pointer to the RastPort which describes where the text attributes reside. string - the address of the string to determine the length of. count - the number of characters in the string. If zero, there are no characters in the string. textExtent - a structure to hold the result. RESULTS textExtent is filled in as follows: te_Width - same as TextLength() result: the rp_cp_x advance that rendering this text would cause. te_Height - same as tf_YSize. The height of the font. te_Extent.MinX - the offset to the left side of the rectangle this would render into. Often zero. te_Extent.MinY - same as -tf_Baseline. The offset from the baseline to the top of the rectangle this would render into. te_Extent.MaxX - the offset of the left side of the rectangle this would render into. Often the same as te_Width-1. te_Extent.MaxY - same as tf_YSize-tf_Baseline-1. The offset from the baseline to the bottom of the rectanangle this would render into. SEE ALSO TextLength() Text() TextFit() graphics/text.h graphics/rastport.h graphics.library/TextFit graphics.library/TextFit NAME TextFit - count characters that will fit in a given extent (V36) SYNOPSIS chars = TextFit(rastport, string, strLen, textExtent, D0 A1 A0 D0 A2 constrainingExtent, strDirection, A3 D1 constrainingBitWidth, constrainingBitHeight) D2 D3 ULONG TextFit(struct RastPort *, STRPTR, UWORD, struct TextExtent *, struct TextExtent *, WORD, UWORD, UWORD); FUNCTION This function determines how many of the characters of the provided string will fit into the space described by the constraining parameters. It also returns the extent of that number of characters. INPUTS rp - a pointer to the RastPort which describes where the text attributes reside. string - the address of string to determine the constraint of strLen - The number of characters in the string. If zero, there are no characters in the string. textExtent - a structure to hold the extent result. constrainingExtent - the extent that the text must fit in. This can be NULL, indicating only the constrainingBit dimensions will describe the constraint. strDirection - the offset to add to the string pointer to get to the next character in the string. Usually 1. Set to -1 and the string to the end of the string to perform a TextFit() anchored at the end. No other value is valid. constrainingBitWidth - an alternative way to specify the rendering box constraint width that is independent of the rendering origin. Range 0..32767. constrainingBitHeight - an alternative way to specify the rendering box constraint height that is independent of the rendering origin. Range 0..32767. RESULTS chars - the number of characters from the origin of the given string that will fit in both the constraining extent (which specifies a CP bound and a rendering box relative to the origin) and in the rendering width and height specified. NOTES The result is zero chars and an empty textExtent when the fit cannot be performed. This occurs not only when no text will fit in the provided constraints, but also when: - the RastPort rp's rp_TxSpacing sign and magnitude is so great it reverses the path of the text. - the constrainingExtent does not include x = 0. SEE ALSO TextExtent() TextLength() Text() graphics/text.h graphics/rastport.h graphics.library/TextLength graphics.library/TextLength NAME TextLength -- Determine raster length of text data. SYNOPSIS length = TextLength(rp, string, count) D0 A1 A0 D0:16 WORD TextLength(struct RastPort *, STRPTR, WORD); FUNCTION This graphics function determines the length that text data would occupy if output to the specified RastPort with the current attributes. The length is specified as the number of raster dots: to determine what the current position would be after a Write() using this string, add the length to cp_x (cp_y is unchanged by Write()). Use the newer TextExtent() to get more information. INPUTS rp - a pointer to the RastPort which describes where the text attributes reside. string - the address of string to determine the length of count - the string length. If zero, there are no characters in the string. RESULTS length - the number of pixels in x this text would occupy, not including any negative kerning that may take place at the beginning of the text string, nor taking into account the effects of any clipping that may take place. NOTES Prior to V36, the result length occupied only the low word of d0 and was not sign extended into the high word. BUGS A length that would overflow single word arithmatic is not calculated correctly. SEE ALSO TextExtent() Text() TextFit() graphics/text.h graphics/rastport.h graphics.library/UnlockLayerRom graphics.library/UnlockLayerRom NAME UnlockLayerRom -- Unlock Layer structure by rom(gfx lib) code. SYNOPSIS UnlockLayerRom( layer ) a5 void UnlockLayerRom( struct Layer * ); FUNCTION Release the lock on this layer. If the same task has called LockLayerRom more than once than the same number of calls to UnlockLayerRom must happen before the layer is actually freed so that other tasks may use it. This call does destroy scratch registers. This call is identical to UnlockLayer (layers.library). INPUTS layer - pointer to Layer structure BUGS SEE ALSO LockLayerRom() layers.library/UnlockLayer() graphics/clip.h graphics.library/VBeamPos graphics.library/VBeamPos NAME VBeamPos -- Get vertical beam position at this instant. SYNOPSIS pos = VBeamPos() d0 LONG VBeamPos( void ); FUNCTION Get the vertical beam position from the hardware. INPUTS none RESULT interrogates hardware for beam position and returns value. valid results in are the range of 0-511. Because of multitasking, the actual value returned may have no use. If you are the highest priority task then the value returned should be close, within 1 line. BUGS SEE ALSO graphics.library/VideoControl graphics.library/VideoControl NAME VideoControl -- Modify the operation of a ViewPort's ColorMap (V36) SYNOPSIS error = VideoControl( cm , tags ) d0 a0 a1 ULONG VideoControl( struct ColorMap *, struct TagItem * ); FUNCTION Process the commands in the VideoControl command TagItem buffer using cm as the target, with respect to its "attached" ViewPort. viewport commands: VTAG_ATTACH_CM [_SET | _GET] -- set\get attached viewport VTAG_VIEWPORTEXTRA [_SET | _GET] -- set\get attached vp_extra VTAG_NORMAL_DISP [_SET | _GET] -- set\get DisplayInfoHandle (natural mode) VTAG_COERCE_DISP [_SET | _GET] -- set\get DisplayInfoHandle (coerced mode) genlock commands: VTAG_BORDERBLANK [_SET | _CLR | _GET] -- on\off\inquire blanking VTAG_BORDERNOTRANS [_SET | _CLR | _GET] -- on\off\inquire notransparency VTAG_CHROMAKEY [_SET | _CLR | _GET] -- on\off\inquire chroma mode VTAG_BITPLANEKEY [_SET | _CLR | _GET] -- on\off\inquire bitplane mode VTAG_CHROMA_PEN [_SET | _CLR | _GET] -- set\clr\get chromakey pen # VTAG_CHROMA_PLANE [_SET | | _GET] -- set\get bitplanekey plane # copper commands VTAG_USERCLIP [_SET | _CLR | _GET] -- on\off\inquire clipping of UserCopperList at bottom edge of ColorMap->cm_vp (defaults to off) buffer commands: VTAG_NEXTBUF_CM -- link to more VTAG commands VTAG_END_CM -- terminate command buffer batch mode commands: (if you want your videocontol taglist to be processed in "batch" mode, that is, at the next MakeVPort() for the ColorMap->cm_vp; you may intall a static list of videocontrol TagItems into the ColorMap with the BATCH_ITEMS_SET command; and then enable/disable batch mode processing of those items via the BATCH_CM control command) VTAG_BATCH_CM [_SET | _CLR | _GET] -- on\off\inquire batch mode VTAG_BATCH_ITEMS [_SET | _ADD | _GET] -- set\add\get batched TagLists private commands (used internally by intuition -- do not call): VTAG_VPMODEID [_SET | _CLR | _GET] -- force GetVPModeID() return INPUTS cm = pointer to struct ColorMap obtained via GetColorMap(). tags = pointer to a table of videocontrol tagitems. RESULT error = NULL if no error occured in the control operation. (non-NULL if bad colormap pointer, no tagitems or bad tag) The operating characteristics of the ColorMap and its attached ViewPort are modified. The result will be incorporated into the ViewPort when its copper lists are reassembled via MakeVPort(). BUGS SEE ALSO graphics/videocontrol.h, GetColorMap(), FreeColorMap() graphics.library/WaitBlit graphics.library/WaitBlit NAME WaitBlit -- Wait for the blitter to be finished before proceeding with anything else. SYNOPSIS WaitBlit() void WaitBlit( void ); FUNCTION WaitBlit returns when the blitter is idle. This function should normally only be used when dealing with the blitter in a synchronous manner, such as when using OwnBlitter and DisownBlitter. WaitBlit does not wait for all blits queued up using QBlit or QBSBlit. You should call WaitBlit if you are just about to modify or free some memory that the blitter may be using. INPUTS none RESULT Your program waits until the blitter is finished. This routine does not use any the CPU registers. do/d1/a0/a1 are preserved by this routine. It may change the condition codes though. BUGS When examining bits with the CPU right after a blit, or when freeeing temorary memory used by the blitter, a WaitBlit() may be required. Note that many graphics calls fire up the blitter, and let it run. The CPU does not need to wait for the blitter to finish before returning. Because of a bug in agnus (prior to all revisions of fat agnus) this code may return too soon when the blitter has, in fact, not started the blit yet, even though BltSize has been written. This most often occurs in a heavily loaded systen with extended memory, HIRES, and 4 bitplanes. WaitBlit currently tries to avoid this agnus problem by testing the BUSY bit multiple times to make sure the blitter has started. If the blitter is BUSY at first check, this function busy waits. This initial hardware bug was fixed as of the first "Fat Agnus" chip, as used in all A500 and A2000 computers. Because of a different bug in agnus (currently all revisions thru ECS) this code may return too soon when the blitter has, in fact, not stopped the blit yet, even though blitter busy has been cleared. This most often occurs in a heavily loaded systen with extended memory, in PRODUCTIVITY mode, and 2 bitplanes. WaitBlit currently tries to avoid this agnus problem by testing the BUSY bit multiple times to make sure the blitter has really written its final word of desination data. SEE ALSO OwnBlitter() DisownBlitter() hardware/blit.h graphics.library/WaitBOVP graphics.library/WaitBOVP NAME WaitBOVP -- Wait till vertical beam reached bottom of this viewport. SYNOPSIS WaitBOVP( vp ) a0 void WaitBOVP( struct ViewPort * ); FUNCTION Returns when the vertical beam has reached the bottom of this viewport INPUTS vp - pointer to ViewPort structure RESULT This function will return sometime after the beam gets beyond the bottom of the viewport. Depending on the multitasking load of the system, the actual beam position may be different than what would be expected in a lightly loaded system. BUGS Horrors! This function currently busy waits waiting for the beam to get to the right place. It should use the copper interrupt to trigger and send signals like WaitTOF does. SEE ALSO WaitTOF() VBeamPos() graphics.library/WaitTOF graphics.library/WaitTOF NAME WaitTOF -- Wait for the top of the next video frame. SYNOPSIS WaitTOF() void WaitTOF( void ); FUNCTION Wait for vertical blank to occur and all vertical blank interrupt routines to complete before returning to caller. INPUTS none RESULT Places this task on the TOF wait queue. When the vertical blank interupt comes around, the interrupt service routine will fire off signals to all the tasks doing WaitTOF. The highest priority task ready will get to run then. BUGS SEE ALSO exec.library/Wait() exec.library/Signal() graphics.library/WeighTAMatch graphics.library/WeighTAMatch NAME WeighTAMatch -- Get a measure of how well two fonts match. (V36) SYNOPSIS weight = WeighTAMatch(reqTextAttr, targetTextAttr, targetTags) D0 A0 A1 A2 WORD WeighTAMatch(struct TTextAttr *, struct TextAttr *, struct TagItem *); FUNCTION This function provides a metric to describe how well two fonts match. This metric ranges from MAXFONTMATCHWEIGHT (perfect match) through lower positive numbers to zero (unsuitable match). INPUTS reqTextAttr - the text attributes requested. targetTextAttr - the text attributes of a potential match. targetTags - tags describing the extended target attributes, or zero if not available. The [t]ta_Name fields of the [T]TextAttr structures are not used. The tags affect the weight only when both a) the reqTextAttr has the FSF_TAGGED bit set in ta_Style, and b) targetTags is not zero. To fairly compare two different weights, the inclusion or exclusion of tags in the weighing must be the same for both. RESULTS weight -- a positive weight describes suitable matches, in increasing desirability. MAXFONTMATCHWEIGHT is a perfect match. A zero weight is an unsuitable match. SEE ALSO OpenFont() graphics.library/WritePixel graphics.library/WritePixel NAME WritePixel -- Change the pen num of one specific pixel in a specified RastPort. SYNOPSIS error = WritePixel( rp, x, y) d0 a1 D0 D1 LONG WritePixel( struct RastPort *, SHORT, SHORT ); FUNCTION Changes the pen number of the selected pixel in the specified RastPort to that currently specified by PenA, the primary drawing pen. Obeys minterms in RastPort. INPUTS rp - a pointer to the RastPort structure (x,y) - point within the RastPort at which the selected pixel is located. RESULT error = 0 if pixel succesfully changed = -1 if (x,y) is outside the RastPort BUGS SEE ALSO ReadPixel() graphics/rastport.h graphics.library/WritePixelArray8 graphics.library/WritePixelArray8 NAME WritePixelArray8 -- write the pen number value of a rectangular array of pixels starting at a specified x,y location and continuing through to another x,y location within a certain RastPort. (V36) SYNOPSIS count = WritePixelArray8(rp,xstart,ystart,xstop,ystop,array,temprp) D0 A0 D0:16 D1:16 D2:16 D3:16 A2 A1 LONG WritePixelArray8(struct RastPort *, UWORD, UWORD, UWORD, UWORD, UBYTE *, struct RastPort *); FUNCTION For each pixel in a rectangular region, decode the pen number selector from a linear array of pen numbers into the bit-planes used to describe a particular rastport. INPUTS rp - pointer to a RastPort structure (xstart,ystart) - starting point in the RastPort (xstop,ystop) - stopping point in the RastPort array - pointer to an array of UBYTEs from which to fetch the pixel data. Allocate at least ((((width+15)>>4)<<4)*(ystop-ystart+1)) bytes. temprp - temporary rastport (copy of rp with Layer set == NULL, temporary memory allocated for temprp->BitMap with Rows set == 1, temprp->BytesPerRow == (((width+15)>>4)<<1), and temporary memory allocated for temprp->BitMap->Planes[]) RESULT For each pixel in the array: Pen - (0..255) number at that position is returned NOTE xstop must be >= xstart ystop must be >= ystart BUGS SEE ALSO WritePixel() graphics/rastport.h graphics.library/WritePixelLine8 graphics.library/WritePixelLine8 NAME WritePixelLine8 -- write the pen number value of a horizontal line of pixels starting at a specified x,y location and continuing right for count pixels. (V36) SYNOPSIS count = WritePixelLine8(rp,xstart,ystart,width,array,temprp) D0 A0 D0:16 D1:16 D2 A2 A1 LONG WritePixelLine8(struct RastPort *, UWORD, UWORD, UWORD, UBYTE *, struct RastPort *); FUNCTION For each pixel in a horizontal region, decode the pen number selector from a linear array of pen numbers into the bit-planes used to describe a particular rastport. INPUTS rp - pointer to a RastPort structure (x,y) - a point in the RastPort width - count of horizontal pixels to write array - pointer to an array of UBYTEs from which to fetch the pixel data allocate at least (((width+15)>>4)<<4) bytes. temprp - temporary rastport (copy of rp with Layer set == NULL, temporary memory allocated for temprp->BitMap with Rows set == 1, temprp->BytesPerRow == (((width+15)>>4)<<1), and temporary memory allocated for temprp->BitMap->Planes[]) RESULT For each pixel in the array: Pen - (0..255) number at that position is returned NOTE width must be non negative BUGS SEE ALSO WritePixel() graphics/rastport.h graphics.library/XorRectRegion graphics.library/XorRectRegion NAME XorRectRegion -- Perform 2d XOR operation of rectangle with region, leaving result in region SYNOPSIS status = XorRectRegion(region,rectangle) d0 a0 a1 BOOL XorRectRegion( struct Region *, struct Rectangle * ); FUNCTION Add portions of rectangle to region if they are not in the region. Remove portions of rectangle from region if they are in the region. INPUTS region - pointer to Region structure rectangle - pointer to Rectangle structure RESULTS status - return TRUE if successful operation return FALSE if ran out of memory BUGS SEE ALSO OrRegionRegion() AndRegionRegion() graphics/regions.h graphics.library/XorRegionRegion graphics.library/XorRegionRegion NAME XorRegionRegion -- Perform 2d XOR operation of one region with second region, leaving result in second region SYNOPSIS status = XorRegionRegion(region1,region2) d0 a0 a1 BOOL XorRegionRegion( struct Region *, struct Region * ); FUNCTION Join the regions together. If any part of region1 overlaps region2 then remove that from the new region. INPUTS region1 = pointer to Region structure region2 = pointer to Region structure RESULTS status - return TRUE if successful operation return FALSE if ran out of memory BUGS