1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728 |
- {
- This file is part of the Free Pascal run time library.
- Copyright (c) 2016 by Free Pascal development team
- graphics.library functions for Amiga OS 4.x
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- {$PACKRECORDS 2}
- {$IFNDEF FPC_DOTTEDUNITS}
- unit agraphics;
- {$ENDIF FPC_DOTTEDUNITS}
- interface
- {$IFDEF FPC_DOTTEDUNITS}
- uses
- Amiga.Core.Exec, Amiga.Core.Utility;
- {$ELSE FPC_DOTTEDUNITS}
- uses
- exec, utility;
- {$ENDIF FPC_DOTTEDUNITS}
- const
- // tag definitions for BltBitMapTagList, BltBitMapTags
- BLTBMTAGS_BASE = TAG_USER; // attributes specifying the source and destination coordinates of the blit operation. Default is 0 (WORD). */
- BLITA_SrcX = BLTBMTAGS_BASE + 1;
- BLITA_SrcY = BLTBMTAGS_BASE + 2;
- BLITA_DestX = BLTBMTAGS_BASE + 3;
- BLITA_DestY = BLTBMTAGS_BASE + 4; // size of blit operation, default is 0 (WORD)
- BLITA_Width = BLTBMTAGS_BASE + 5;
- BLITA_Height = BLTBMTAGS_BASE + 6; // source and destination object, also see BLITT definitions below default is NULL (APTR)
- BLITA_Source = BLTBMTAGS_BASE + 7;
- BLITA_Dest = BLTBMTAGS_BASE + 8; // minterm of blit, default is 0xc0 (copy blit, UBYTE)
- BLITA_Minterm = BLTBMTAGS_BASE + 9; // blit mask, default is $ff (Byte) if BLITA_Dest is not a rastport otherwise the rp^.Mask value of the destination rastport is used.
- BLITA_Mask = BLTBMTAGS_BASE + 10; // see BltMaskBitMapRastPort()
- BLITA_MaskPlane = BLTBMTAGS_BASE + 11; // 8bit alpha mask, default is nil (APTR). Mask and source bitmap must have the same dimension
- BLITA_AlphaMask = BLTBMTAGS_BASE + 12; // specifies the bytes per row value of the source object, if source is neither a rastport nor a bitmap (UWORD)
- BLITA_SrcBytesPerRow = BLTBMTAGS_BASE + 13; // type of source object, default is BLITT_BITMAP
- BLITA_SrcType = BLTBMTAGS_BASE + 14; // specifies the bytes per row value of the destination object, if destination is neither a rastport nor a bitmap (UWORD)
- BLITA_DestBytesPerRow = BLTBMTAGS_BASE + 15; // type of destination object, default is BLITT_BITMAP
- BLITA_DestType = BLTBMTAGS_BASE + 16; // use alpha data stored in the source object for transparent blits, default is FALSE (BOOL). BLITA_UseSrcAlpha and BLITA_AlphaMask are mutually-exclusive.
- BLITA_UseSrcAlpha = BLTBMTAGS_BASE + 17; // not implemented yet
- BLITA_UseDestAlpha = BLTBMTAGS_BASE + 18; // global alpha value applied to each pixel, default is $ffffffff (LongWord, 32 bit left justified fraction). A value of ULONG_MAX means non-opaque blit unless
- // BLIT_UseSrcAlpha is TRUE or BLITA_AlphaMask is used. To convert an 8bit alpha value to 32bit one multiply it by $01010101. BLITA_Alpha can be used in combination with the two tags mentioned above.
- BLITA_Alpha = BLTBMTAGS_BASE + 19; // color lookuptable (256 entries each 4bytes large, format $00RRGGBB) to use when blitting chunky bitmaps to
- // directmapped bitmaps. Default is NULL (APTR), means palette of destination bitmap is used (if available). Currently not supported by alpha blits.
- BLITA_CLUT = BLTBMTAGS_BASE + 20;
- // possible types for BLITA_SrcType / BLITA_DestType
- BLITT_BITMAP = 0; // a bitmap (default)
- BLITT_RASTPORT = 1; // a rastport
- BLITT_TEMPLATE = 2; // 1bit template, source only!
- BLITT_ALPHATEMPLATE = 3; // 8bit alpha template, source only!
- BLITT_CHUNKY = 4; // 8bit chunky buffer
- BLITT_RGB24 = 5; // 24bit RGB buffer
- BLITT_ARGB32 = 6; // 32bit ARGB buffer
- BLITT_RGB16 = 7; // 16bit RGB buffer (same as RGBFB_R5G6B5)
- // graphics board definitions
- GBD_TagBase = TAG_USER;
- GBD_BoardName = GBD_TagBase + 1;
- GBD_TotalMemory = GBD_TagBase + 2;
- GBD_FreeMemory = GBD_TagBase + 3;
- GBD_LargestFreeMemory = GBD_TagBase + 4;
- GBD_InternalMemorySize = GBD_TagBase + 5;
- GBD_PCIVendorID = GBD_TagBase + 6;
- GBD_PCIProductID = GBD_TagBase + 7;
- GBD_BoardDriver = GBD_TagBase + 8;
- GBD_ChipDriver = GBD_TagBase + 9;
- BITSET = $8000;
- BITCLR = 0;
- type
- PRectangle = ^TRectangle;
- TRectangle = record
- MinX, MinY: SmallInt;
- MaxX, MaxY: SmallInt;
- end;
- PRect32 = ^TRect32;
- TRect32 = record
- MinX, MinY: LongInt;
- MaxX, MaxY: LongInt;
- end;
- PPoint = ^TPoint;
- TPoint = record
- x, y: SmallInt;
- end;
- TPLANEPTR = PByte;
- PBitMap = ^TBitMap;
- TBitMap = record
- BytesPerRow: Word;
- Rows: Word;
- Flags: Byte;
- Depth: Byte;
- pad: Word;
- Planes: array[0..7] of TPLANEPTR;
- end;
- PRegionRectangle = ^TRegionRectangle;
- TRegionRectangle = record
- Next, Prev: PRegionRectangle;
- bounds: TRectangle;
- end;
- PRegion = ^tRegion;
- tRegion = record
- bounds: TRectangle;
- RegionRectangle: PRegionRectangle;
- end;
- PExtendedNode = ^TExtendedNode;
- TExtendedNode = record
- xln_Succ: PNode;
- xln_Pred: PNode;
- xln_Type: Byte;
- xln_Pri: ShortInt;
- xln_Name: STRPTR;
- xln_Subsystem: Byte;
- xln_Subtype: Byte;
- xln_Library: LongInt;
- xln_Init: Pointer; // only used if MONITOR_SPEC_TYPE
- end;
- const
- // flags for AllocBitMap, etc.
- BMB_CLEAR = 0;
- BMB_DISPLAYABLE = 1;
- BMB_INTERLEAVED = 2;
- BMB_STANDARD = 3;
- BMB_MINPLANES = 4;
- // New V45 flags follow. If this bit combination is set,
- // the AllocBitMap() friends pointer points to a tag
- // list describing further data
- BMB_HIJACKED = 7; // must be clear
- BMB_RTGTAGS = 8; // must be one for tag extension
- BMB_RTGCHECK = 9; // must be one for tag extension
- BMB_FRIENDISTAG = 10; // must be one as well
- BMB_INVALID = 11; // must be clear
- // Flags introduced in V51 of graphics.library
- BMB_LOCKED = 12; // private
- BMF_CLEAR = 1 shl BMB_CLEAR;
- BMF_DISPLAYABLE = 1 shl BMB_DISPLAYABLE;
- BMF_INTERLEAVED = 1 shl BMB_INTERLEAVED;
- BMF_STANDARD = 1 shl BMB_STANDARD;
- BMF_MINPLANES = 1 shl BMB_MINPLANES;
- BMF_HIJACKED = 1 shl BMB_HIJACKED; // aka BMF_SPECIALFMT
- BMF_RTGTAGS = 1 shl BMB_RTGTAGS;
- BMF_RTGCHECK = 1 shl BMB_RTGCHECK;
- BMF_FRIENDISTAG = 1 shl BMB_FRIENDISTAG;
- BMF_INVALID = 1 shl BMB_INVALID;
- BMF_LOCKED = 1 shl BMB_LOCKED;
- BMF_CHECKMASK = BMF_HIJACKED or BMF_RTGTAGS or BMF_RTGCHECK or BMF_FRIENDISTAG or BMF_INVALID;
- BMF_CHECKVALUE = BMF_RTGTAGS or BMF_RTGCHECK or BMF_FRIENDISTAG;
- // tags for AllocBitMap
- BMATags_Friend = TAG_USER + 0; // Specify a friend-bitmap by tags Default is no friend bitmap
- BMATags_Depth = TAG_USER + 1; // depth of the bitmap. Default is the depth parameter of AllocBitMap
- BMATags_PixelFormat = TAG_USER + 2; // bitmap data format (see enPixelFormat)
- BMATags_Clear = TAG_USER + 3; // clear bitmap? Default is the BMF_CLEAR flag specified value.
- BMATags_Displayable = TAG_USER + 4; // bitmap usable for hardware? Default is the BMF_DISPLAYABLE flag.
- BMATags_Private1 = TAG_USER + 5; // internal use only!
- BMATags_NoMemory = TAG_USER + 6; // do not provide memory for the bitmap, just allocate the structure Default is false.
- BMATags_NoSprite = TAG_USER + 7; // disallow generation of a sprite default is sprite enabled.
- BMATags_Private2 = TAG_USER + 8; // internal use only!
- BMATags_Private3 = TAG_USER + 9; // internal use only!
- BMATags_ModeWidth = TAG_USER + 10; // width of the display mode in pixels. Default is the width of the displayID in the monitor database.
- BMATags_ModeHeight = TAG_USER + 11; // height of the display mode in pixels. Default is the height of the displayID in the monitor database.
- BMATags_RenderFunc = TAG_USER + 12; // Private. Do not use in new code.
- BMATags_SaveFunc = TAG_USER + 13; // Pivate. Do not use in new code.
- BMATags_UserData = TAG_USER + 14; // Private. Do not use in new code.
- BMATags_Alignment = TAG_USER + 15; // specify additional alignment (power of two; for the bitmap rows. If this tag is set,
- // then bitplane rows are aligned to this boundary. Otherwise, the native alignment restriction is provided.
- BMATags_ConstantBytesPerRow = TAG_USER + 16; // set with the above to enforce alignment for displayable screens
- BMATags_UserPrivate = TAG_USER + 17; // user bitmap which will never be in video memory
- BMATags_Private4 = TAG_USER + 18; // internal use only!
- BMATags_Private5 = TAG_USER + 19; // internal use only!
- BMATags_Private6 = TAG_USER + 20; // internal use only!
- BMATags_Private7 = TAG_USER + 21; // internal use only!
- BMATags_DisplayID = TAG_USER +$32; // a display ID from the monitor data base the system tries then to extract all necessary information
- // to build a suitable bitmap This is intentionally identical to intuition SA_DisplayID
- BMATags_BitmapInvisible = TAG_USER + $37; // if set to TRUE, the bitmap is not allocated on the graphics board directly, but may remain in an off-hardware location
- // if the screen is invisible. This is intentionally identically to SA_Behind. Default is FALSE
- BMATags_BitmapColors = TAG_USER + $29; // ti_Data is an array of struct ColorSpec, terminated by ColorIndex = -1. Specifies
- // initial screen palette colors. This is intentionally identically to SA_Colors
- BMATags_BitmapColors32 = TAG_USER + $43; // Tag to set the bitmaps's initial palette colors at 32 bits-per-gun. ti_Data is a pointer
- // to a table to be passed to the graphics.library/LoadRGB32(; function. This format supports both runs of color
- // registers and sparse registers. See the autodoc for that function for full details.
- // Any color set here has precedence over the same register set by ABMA_BitmapColors. Intentionally identical to SA_Colors32
- // the following are for GetBitMapAttr()
- BMA_HEIGHT = 0;
- BMA_DEPTH = 4;
- BMA_WIDTH = 8;
- BMA_FLAGS = 12;
- BMA_ISRTG = 16; // (V54)
- BMA_BYTESPERPIXEL = 17; // (V54)
- BMA_BITSPERPIXEL = 18; // (V54)
- BMA_PIXELFORMAT = 19; // (V54)
- BMA_ACTUALWIDTH = 20; // (V54)
- // Supported pixel formats (V54)
- // enPixelFormat = TPIX_FMT
- PIXF_NONE = 0; // no valid RGB format (error condition)
- PIXF_CLUT = 1; // palette mode, set colors when opening screen using tags or use SetRGB32/LoadRGB32(...)
- PIXF_R8G8B8 = 2; // TrueColor RGB (8 bit each)
- PIXF_B8G8R8 = 3; // TrueColor BGR (8 bit each)
- PIXF_R5G6B5PC = 4; // HiColor16 (5 bit R, 6 bit G, 5 bit B), format: gggbbbbbrrrrrggg
- PIXF_R5G5B5PC = 5; // HiColor15 (5 bit each) format: gggbbbbb0rrrrrgg
- PIXF_A8R8G8B8 = 6; // 4 Byte TrueColor ARGB (A unused alpha channel)
- PIXF_A8B8G8R8 = 7; // 4 Byte TrueColor ABGR (A unused alpha channel)
- PIXF_R8G8B8A8 = 8; // 4 Byte TrueColor RGBA (A unused alpha channel)
- PIXF_B8G8R8A8 = 9; // 4 Byte TrueColor BGRA (A unused alpha channel)
- PIXF_R5G6B5 = 10; // HiColor16 (5 bit R, 6 bit G, 5 bit B) format: rrrrrggggggbbbbb
- PIXF_R5G5B5 = 11; // HiColor15 (5 bit each) format: 0rrrrrgggggbbbbb
- PIXF_B5G6R5PC = 12; // HiColor16 (5 bit R, 6 bit G, 5 bit B) format: gggrrrrrbbbbbggg
- PIXF_B5G5R5PC = 13; // HiColor15 (5 bit each) format: gggrrrrr0bbbbbbgg
- PIXF_YUV422CGX = 14; // 2 Byte TrueColor YUV (CCIR recommendation CCIR601). Each two-pixel unit is stored as one longword
- // containing luminance (Y) for each of the two pixels, and chrominance (U,V) for alternate pixels.
- // The missing chrominance values are generated by interpolation. (Y0-U0-Y1-V0)
- PIXF_YUV411 = 15; // 1 Byte TrueColor ACCUPAK. Four adjacent pixels form a packet of 5 bits Y (luminance) each pixel and
- // 6 bits U and V (chrominance) shared by the four pixels
- PIXF_YUV422PA = 16; // 2 Byte TrueColor CCIR601 for use with YUV12 planar assist mode on Cirrus Logic base graphics chips. (Y0-Y1-V0-U0)
- PIXF_YUV422 = 17; // 2 Byte TrueColor YUV (CCIR recommendation CCIR601). Each two-pixel unit is stored as one longword
- // containing luminance (Y) for each of the two pixels, and chrominance (U,V) for alternate pixels.
- // The missing chrominance values are generated by interpolation. (Y1-U0-Y0-V0)
- PIXF_YUV422PC = 18; // 2 Byte TrueColor CCIR601 byte swapped (V0-Y0-U0-Y1)
- PIXF_YUV420P = 19; // 12 Bit TrueColor 3-plane YUV
- PIXF_YUV410P = 20; // 9 Bit TrueColor 3-plane YUV
- PIXF_ALPHA8 = 21; // 8 bit alpha
- // Tags for LockBitMapTagList() (V54)
- LBM_TagBase = TAG_USER;
- LBM_BaseAddress = LBM_TagBase + 1;
- LBM_BytesPerRow = LBM_TagBase + 2;
- LBM_PixelFormat = LBM_TagBase + 3;
- LBM_PlanarYUVInfo = LBM_TagBase + 4;
- LBM_IsOnBoard = LBM_TagBase + 5;
- // Basic minterm value.
- // enMinterm
- MINTERM_ABC = $80;
- MINTERM_ABNC = $40;
- MINTERM_ANBC = $20;
- MINTERM_ANBNC = $10;
- MINTERM_NABC = $08;
- MINTERM_NABNC = $04;
- MINTERM_NANBC = $02;
- MINTERM_NANBNC = $01;
- // enMintermOperations
- // Copy source and blit thru mask
- MINTERM_SRCMASK = MINTERM_ABC or MINTERM_ABNC or MINTERM_ANBC;
- // Invert source and blit thru mask
- MINTERM_NOTSRCMASK = MINTERM_ANBC;
- // Copy source and blit thru mask
- MINTERM_B_EQUALS_C = MINTERM_ABC or MINTERM_ANBNC or MINTERM_NABC or MINTERM_NANBNC;
- MINTERM_B_OR_C = MINTERM_ABC or MINTERM_ABNC or MINTERM_NABC or MINTERM_NABNC or MINTERM_ANBC or MINTERM_NANBC;
- MINTERM_A_OR_B = MINTERM_ABC or MINTERM_ANBC or MINTERM_NABC or MINTERM_ABNC or MINTERM_ANBNC or MINTERM_NABNC;
- MINTERM_A_OR_C = MINTERM_ABC or MINTERM_NABC or MINTERM_ABNC or MINTERM_ANBC or MINTERM_NANBC or MINTERM_ANBNC;
- MINTERM_A_XOR_C = MINTERM_NABC or MINTERM_ABNC or MINTERM_NANBC or MINTERM_ANBNC;
- MINTERM_A_TO_D = MINTERM_ABC or MINTERM_ANBC or MINTERM_ABNC or MINTERM_ANBNC;
- type
- TPIX_FMT = LongWord;
- PPlanarYUVInfo = ^TPlanarYUVInfo;
- TPlanarYUVInfo = record
- YMemory: APTR;
- UMemory: APTR;
- VMemory: APTR;
- YBytesPerRow: LongWord;
- UBytesPerRow: LongWord;
- VBytesPerRow: LongWord;
- end;
- const
- // defines for code values for getcode this really belongs to graphics, and is of no
- // use for layers. It's here only for traditional reasons.
- ISLESSX = 1;
- ISLESSY = 2;
- ISGRTRX = 4;
- ISGRTRY = 8;
- //------ Font Styles
- FS_NORMAL = 0; // normal text (no style bits set)
- FSB_UNDERLINED = 0; // underlined (under baseline)
- FSF_UNDERLINED = $01;
- FSB_BOLD = 1; // bold face text (ORed w/ shifted)
- FSF_BOLD = $02;
- FSB_ITALIC = 2; // italic (slanted 1:2 right)
- FSF_ITALIC = $04;
- FSB_EXTENDED = 3; // extended face (wider than normal)
- FSF_EXTENDED = $08;
- FSB_ANTIALIASED = 4; // this uses AATextFont structure (V48)
- FSF_ANTIALIASED = $10;
- FSB_COLORFONT = 6; // this uses ColorTextFont structure
- FSF_COLORFONT = $40;
- FSB_TAGGED = 7; // the TextAttr is really an TTextAttr,
- FSF_TAGGED = $80;
- //------ Font Flags
- FPB_ROMFONT = 0; // font is in rom
- FPF_ROMFONT = $01;
- FPB_DISKFONT = 1; // font is from diskfont.library
- FPF_DISKFONT = $02;
- FPB_REVPATH = 2; // designed path is reversed (e.g. left)
- FPF_REVPATH = $04;
- FPB_TALLDOT = 3; // designed for hires non-interlaced
- FPF_TALLDOT = $08;
- FPB_WIDEDOT = 4; // designed for lores interlaced
- FPF_WIDEDOT = $10;
- FPB_PROPORTIONAL = 5; // character sizes can vary from nominal
- FPF_PROPORTIONAL = $20;
- FPB_DESIGNED = 6; // size is "designed", not constructed
- FPF_DESIGNED = $40;
- FPB_REMOVED = 7; // the font has been removed
- FPF_REMOVED = 1 shl 7;
- const
- // ****** Text Tags ****************************************************
- TA_DeviceDPI = 1 or TAG_USER; // Tag value is Point union: Hi LongInt XDPI, Lo LongInt YDPI
- TA_CharSet = 3 or TAG_USER; // New in V46: IANA Charset number
- TA_Rebuild = 4 or TAG_USER; // V50: boolean flag for OpenDiskFont() to force rebuilding a font
- MAXFONTMATCHWEIGHT = 32767; // perfect match from WeighTAMatch
- //----- tfe_Flags0 (partial definition) ----------------------------
- TE0B_NOREMFONT = 0; // disallow RemFont for this font
- TE0F_NOREMFONT = $01;
- //----- tfe_Flags1 (private) ---------------------------------------
- TE1F_NOUNDERLINING = $01; // Cant make this font underlined
- TE1F_NOEMBOLDENING = $02; // Cant make this font bold
- TE1F_NOSHEARING = $04; // Cant make this font italic
- TE1F_NODEUNDERLINING = $08; // Cant make this font non-underlined
- TE1F_NODEEMBOLDENING = $10; // Cant make this font non-bold
- TE1F_NODESHEARING = $20; // Cant make this font non-italic
- TE1F_NOANTIALIASING = $40; // Cant make this font antialiased
- TE1F_GENFONT = $80; // This font was generated via bullet API
- //----- ctf_Flags --------------------------------------------------
- const
- CT_COLORMASK = $000F; // mask to get to following color styles
- CT_COLORFONT = $0001; // color map contains designer's colors
- CT_GREYFONT = $0002; // color map describes even-stepped brightnesses from low to high
- CT_ANTIALIAS = $0004; // zero background thru fully saturated AnsiChar
- CTB_MAPCOLOR = 8; // map ctf_FgColor to the rp_FgPen if it's
- CTF_MAPCOLOR = $0100; // is a valid color within ctf_Low..ctf_High
- // drawing modes
- JAM1 = 0; // jam 1 color into raster
- JAM2 = 1; // jam 2 colors into raster
- COMPLEMENT = 2; // XOR bits into raster
- INVERSVID = 4; // inverse video for drawing modes
- BGBACKFILL = 8; // use backfill instead of BgPen
- FILLALPHA = 16; // draw background under alpha pixels
- LEVELS = 32; // fill text extent with alpha levels
- // these are the flag bits for RastPort flags
- FRST_DOT = $01; // draw the first dot of this line ?
- ONE_DOT = $02; // use one dot mode for drawing lines
- DBUFFER = $04; // flag set when RastPorts are double-buffered
- // only used for bobs
- AREAOUTLINE = $08; // used by areafiller
- NOCROSSFILL = $20; // areafills have no crossovers
- // graphics.library V51 extensions
- RPF_USE_FGCOLOR = $80; // draw with rp->FGPenColor
- RPF_USE_BGCOLOR = $100; // draw with rp->BGPenColor
- RPF_USE_OCOLOR = $200; // draw with rp->OPenColor
- RPF_FG_BLEND = $800; // private for now
- RPF_REMAP_COLORFONTS = $2000; // use ctf->ctf_ColorFontTable
- // there is only one style of clipping: raster clipping
- // this preserves the continuity of jaggies regardless of clip window
- // When drawing into a RastPort, if the ptr to ClipRect is nil then there
- // is no clipping done, this is dangerous but useful for speed
- // graphics copper list intstruction definitions
- COPPER_MOVE = 0; // pseude opcode for move #XXXX,dir
- COPPER_WAIT = 1; // pseudo opcode for wait y,x
- CPRNXTBUF = 2; // continue processing with next buffer
- CPR_NT_LOF = $8000; // copper instruction only for short frames
- CPR_NT_SHT = $4000; // copper instruction only for long frames
- CPR_NT_SYS = $2000; // copper user instruction only
- // mode coercion definitions
- PRESERVE_COLORS = 1; // Ensure that the mode coerced to can display just as many colours as the ViewPort being coerced.
- AVOID_FLICKER = 2; // Ensure that the mode coerced to is not interlaced.
- IGNORE_MCOMPAT = 4; // Coercion should ignore monitor compatibility issues.
- BIDTAG_COERCE = 1; // Private
- // VSprite flags
- // user-set VSprite flags:
- SUSERFLAGS = $00FF; // mask of all user-settable VSprite-flags
- VSPRITE_f = $0001; // set if VSprite, clear if Bob
- SAVEBACK = $0002; // set if background is to be saved/restored
- OVERLAY = $0004; // set to mask image of Bob onto background
- MUSTDRAW = $0008; // set if VSprite absolutely must be drawn
- // system-set VSprite flags:
- BACKSAVED = $0100; // this Bob's background has been saved
- BOBUPDATE = $0200; // temporary flag, useless to outside world
- GELGONE = $0400; // set if gel is completely clipped (offscreen)
- VSOVERFLOW = $0800; // VSprite overflow (if MUSTDRAW set we draw!)
- // Bob flags
- // these are the user flag bits
- BUSERFLAGS = $00FF; // mask of all user-settable Bob-flags
- SAVEBOB = $0001; // set to not erase Bob
- BOBISCOMP = $0002; // set to identify Bob as AnimComp
- // these are the system flag bits
- BWAITING = $0100; // set while Bob is waiting on 'after'
- BDRAWN = $0200; // set when Bob is drawn this DrawG pass
- BOBSAWAY = $0400; // set to initiate removal of Bob
- BOBNIX = $0800; // set when Bob is completely removed
- SAVEPRESERVE = $1000;// for back-restore during double-buffer
- OUTSTEP = $2000; // for double-clearing if double-buffer
- // defines for the animation procedures
- ANFRACSIZE = 6;
- ANIMHALF = $0020;
- RINGTRIGGER = $0001;
- type
- PBob = ^TBob;
- PAnimComp = ^TAnimComp;
- PVSprite = ^TVSprite;
- PDBufPacket = ^TDBufPacket;
- PAnimOb = ^TAnimOb;
- PRastPort = ^TRastPort;
- PLayer = ^TLayer;
- // a structure to contain the 16 collision procedure addresses
- CollTable = array[0..15] of Pointer;
- PCollTable = ^CollTable;
- PClipRect = ^TClipRect;
- TClipRect = record
- Next: PClipRect; // roms used to find next ClipRect
- OffX: SmallInt; // offsets of cliprect into bitmap (V52)
- OffY: SmallInt;
- lobs: PLayer; // In V45, this is no longer a valid pointer since a cliprect can be obscured by more than one
- // layer. Just test for NULL or non-nil, do *NOT* dereference.
- BitMap: PBitMap; // backing store bitmap if lobs <> nil
- bounds: TRectangle; // bounds of this cliprect
- vlink: PClipRect; // Layers private use!!!
- home: Pointer; // PLayer_Info where this cliprect belongs to.
- Flags: LongInt; // Layers private field for cliprects
- end;
- TLayer = record
- front,
- back: PLayer;
- ClipRect: PClipRect; // singly linked list of active cliprects
- rp: PRastPort; // rastport to draw into. Its layer is me
- bounds: TRectangle; // screen bounds of this layer
- nlink: PLayer; // new in V45: next back layer for display reorganization
- priority: Word; // internal use: on layer front/back move, relative priority of the layers. Topmost layer has lowest priority.
- Flags: Word; // flags: LAYER*
- SuperBitMap: PBitMap; // if non-nil, superbitmap layer
- SuperClipRect: PClipRect; // super bitmap cliprects if VBitMap <> nil else damage cliprect list for refresh
- Window: APTR; // Intuition keeps its window here
- Scroll_X: Word; // layer displacement
- Scroll_Y: Word;
- cr: PClipRect; // used by moveinfrontof
- cr2: PClipRect; // the new on- and off-screen cliprects to combine.
- cr3: PClipRect; // keeps the new templates that are not clipped by user/damage list
- SuperSaveClipRects: PClipRect; // five preallocated super cr's
- _Cliprects: PClipRect; // templates that are not clipped by damage list or user clip rect
- LayerInfo: Pointer; // PLayer_Info points to head of the list
- Lock: TSignalSemaphore; // access to this layer
- BackFill: PHook; // backfill hook
- ShapeRegion: PRegion; // the region that comprises the shape of this layer
- ClipRegion: PRegion; // user InstallClipRegion()'d region
- Clipped: PClipRect; // clipped away by damage list or user clip rect
- Width: SmallInt; // system use
- Height: SmallInt; // system use
- ShapeHook: PHook; // hook used to generate the shaperegion
- reserved2: array [0..3] of Byte; // more reserved fields
- BitMap: PBitMap; // layer's own off-screen bitmap
- Extension: APTR; // layer extension (system private)
- Reserved3: Byte; // another reserved field
- Opaqueness: Byte; // layer opaqueness
- DamageList: PRegion; // list of rectangles to refresh
- end;
- //****** TextAttr node, matches text attributes in RastPort
- PTextAttr = ^TTextAttr;
- TTextAttr = record
- ta_Name: STRPTR; // name of the font
- ta_YSize: Word; // height of the font
- ta_Style: Byte; // intrinsic font style
- ta_Flags: Byte; // font preferences and flags
- end;
- PTTextAttr = ^TTTextAttr;
- TTTextAttr = record
- tta_Name: STRPTR; // name of the font
- tta_YSize: Word; // height of the font
- tta_Style: Byte; // intrinsic font style
- tta_Flags: Byte; // font preferences AND flags
- tta_Tags: PTagItem; // extended attributes
- end;
- // ***** TextFonts node ************************************************
- PTextFont = ^TTextFont;
- TTextFont = record
- tf_Message: TMessage; // reply message for font removal
- // font name in LN \ used in this
- tf_YSize: Word; // font height | order to best
- tf_Style: Byte; // font style | match a font
- tf_Flags: Byte; // preferences and flags / request.
- tf_XSize: Word; // nominal font width
- tf_Baseline: Word; // distance from the top of AnsiChar to baseline
- tf_BoldSmear: Word; // smear to affect a bold enhancement
- tf_Accessors: Word; // access count
- tf_LoChar: Byte; // the first character described here
- tf_HiChar: Byte; // the last character described here
- tf_CharData: APTR; // the bit character data
- tf_Modulo: Word; // the row modulo for the strike font data
- tf_CharLoc: APTR; // ptr todata for the strike font
- // 2 words: bit offset then size
- tf_CharSpace: APTR; // ptr to words of proportional spacing data
- tf_CharKern: APTR; // ptr to words of kerning data
- end;
- PTextFontExtension = ^TTextFontExtension; // this structure is read-only
- TTextFontExtension = record // this structure is read-only
- tfe_MatchWord: Word; // a magic cookie for the extension
- tfe_Flags0: Byte; // (system private flags)
- tfe_Flags1: Byte; // (system private flags)
- tfe_BackPtr: PTextFont; // validation of compilation
- tfe_OrigReplyPort: PMsgPort; // original value in tf_Extension
- tfe_Tags: PTagItem; // Text Tags for the font
- tfe_OFontPatchS, // (system private use)
- tfe_OFontPatchK: APTR; // (system private use)
- tfe_Private0: APTR; // (guess what)
- // this space is reserved for future expansion
- end;
- //----- ColorFontColors --------------------------------------------
- PColorFontColors = ^TColorFontColors;
- TColorFontColors = record
- cfc_Reserved: Word; // *must* be zero
- cfc_Count: Word; // number of entries in cfc_ColorTable
- cfc_ColorTable: PWord; // 4 bit per component color map packed xRGB
- end;
- //----- ColorTextFont ----------------------------------------------
- PColorTextFont = ^TColorTextFont;
- TColorTextFont = record
- ctf_TF: TTextFont;
- ctf_Flags: Word; // extended flags
- ctf_Depth, // number of bit planes
- ctf_FgColor, // color that is remapped to FgPen
- ctf_Low, // lowest color represented here
- ctf_High, // highest color represented here
- ctf_PlanePick, // PlanePick ala Images
- ctf_PlaneOnOff: Byte; // PlaneOnOff ala Images
- ctf_ColorFontColors: PColorFontColors; // colors for font
- ctf_CharData: array[0..7] of APTR; //Pointers to bit planes ala tf_CharData
- end;
- //----- AATextFont -------------------------------------------------
- PAATextFont = ^TAATextFont;
- TAATextFont = record
- aatf_CTF: TColorTextFont;
- aatf_Modulo: Word; // Row modulo for the strike font data
- aatf_FreeMe: Word; // Private, defaults to 0 */
- aatf_CharData: APTR; // Chunky alpha maps for characters */
- aatf_CharLoc: APTR; // Pointer to location data for the strike font. Two words: pixel offset then size
- aatf_SelfPtr: PAATextFont; // Pointer to the structure itself to be able to detect modified
- // TextFont copies that are no real AATextFonts
- aatf_Reserved: array[0..1] of LongWord; // For future expansion, default to 0
- end;
- // ***** TextExtent node ***********************************************
- PTextExtent = ^TTextExtent;
- TTextExtent = record
- te_Width: Word; // same as TextLength
- te_Height: Word; // same as tf_YSize
- te_Extent: TRectangle; // relative to CP
- end;
- PCopIns = ^TCopIns;
- TCopIns = record
- OpCode: SmallInt; // 0 = move, 1 = wait
- VWaitAddr: SmallInt; // vertical or horizontal wait position
- HWaitData: SmallInt; // destination Pointer or data to send
- end;
- // structure of cprlist that points to list that hardware actually executes }
- PCprList = ^TCprList;
- TCprList = record
- Next: PCprList;
- Start: PSmallInt; // start of copper list
- MaxCount: SmallInt; // number of long instructions
- end;
- PCopList = ^TCopList;
- TCopList = record
- Next: PCopList; // next block for this copper list
- CopList: PCopList; // system use
- ViewPort : Pointer; // system use
- CopIns: PCopIns; // start of this block
- CopPtr: PCopIns; // intermediate ptr
- CopLStart: PWord; // mrgcop fills this in for Long Frame
- CopSStart: PWord; // mrgcop fills this in for Short Frame
- Count: SmallInt; // intermediate counter
- MaxCount: SmallInt; // max # of copins for this block
- DyOffset: SmallInt; // offset this copper list vertical waits
- SLRepeat: Word;
- Flags: Word;
- end;
- PUCopList = ^TUCopList;
- TUCopList = record
- Next: PUCopList;
- FirstCopList: PCopList; // head node of this copper list
- CopList: PCopList; // node in use
- end;
- // Private graphics data structure. This structure has changed in the past,
- // and will continue to change in the future. Do Not Touch!
- PCopInit = ^TCopInit;
- TCopInit = record
- vsync_hblank: array[0..1] of word;
- diagstrt: array[0..11] of word; // copper list for first bitplane
- fm0: array[0..1] of word;
- diwstart: array[0..9] of word;
- bplcon2: array[0..1] of word;
- sprfix: array[0..(2*8) - 1] of word;
- sprstrtup: array[0..(2*8*2) - 1] of Word;
- wait14: array[0..1] of word;
- norm_hblank: array[0..1] of word;
- jump: array[0..1] of word;
- wait_forever: array[0..5] of word;
- sprstop: array[0..7] of Word;
- end;
- PAreaInfo = ^TAreaInfo;
- TAreaInfo = record
- VctrTbl: PSmallInt; // ptr to start of vector table
- VctrPtr: PSmallInt; // ptr to current vertex
- FlagTbl: PByte; // ptr to start of vector flag table
- FlagPtr: PByte; // ptrs to areafill flags
- Count: SmallInt; // number of vertices in list
- MaxCount: SmallInt; // AreaMove/Draw will not allow Count>MaxCount
- FirstX: SmallInt;
- FirstY: SmallInt; // first point for this polygon
- end;
- PTmpRas = ^TTmpRas;
- TTmpRas = record
- RasPtr: TPlanePtr;
- Size: LongInt;
- end;
- // unoptimized for 32bit alignment of Pointers
- PGelsInfo = ^TGelsInfo;
- TGelsInfo = record
- sprRsrvd: Shortint; // flag of which sprites to reserve from vsprite system
- Flags: Byte; // system use
- gelHead: PVSprite;
- gelTail: PVSprite; // dummy vSprites for list management
- // Pointer to array of 8 WORDS for sprite available lines
- nextLine: PWord;
- // Pointer to array of 8 Pointers for color-last-assigned to vSprites
- lastColor: Pointer;
- collHandler: PCollTable; // addresses of collision routines
- leftmost: SmallInt;
- rightmost: SmallInt;
- topmost: SmallInt;
- bottommost: SmallInt;
- firstBlissObj: APTR;
- lastBlissObj: APTR; // system use only
- end;
- TRastPort = record
- Layer: PLayer;
- BitMap: PBitMap;
- AreaPtrn: PWord; // ptr to areafill pattern
- TmpRas: PTmpRas;
- AreaInfo: PAreaInfo;
- GelsInfo: PGelsInfo;
- Mask: Byte; // write mask for this raster
- FgPen: Shortint; // foreground pen for this raster
- BgPen: Shortint; // background pen
- AOlPen: Shortint; // areafill outline pen
- DrawMode: Shortint; // drawing mode for fill, lines, and text
- AreaPtSz: Shortint; // 2^n words for areafill pattern
- linpatcnt: Shortint; // current line drawing pattern preshift
- dummy: Shortint;
- Flags: Word; // miscellaneous control bits
- LinePtrn: Word; // 16 bits for textured lines
- cp_x, cp_y: SmallInt; // current pen position
- minterms: array[0..7] of Byte;
- PenWidth: SmallInt;
- PenHeight: SmallInt;
- Font: PTextFont; // current font Pointer
- AlgoStyle: Byte; // the algorithmically generated style
- TxFlags: Byte; // text specific flags
- TxHeight: Word; // text height
- TxWidth: Word; // text nominal width
- TxBaseline: Word; // text baseline
- TxSpacing: SmallInt; // text spacing (per character)
- RP_User: Pointer;
- LongFlags: LongWord; // V51: private
- ExtensionData: APTR; // V51: private rastport extension pointer
- RenderDomain: TRectangle; // V51: private
- FGColor: LongWord; // V51: foreground color, don't peek or poke directly!
- BGColor: LongWord; // V51: background color, don't peek or poke directly!
- OColor: LongWord; // V51: outline color, don't peek or poke directly!
- wordreserved: Word; // for future use
- end;
- // Extended RastPort data, new for v52.2. GfxNew() must be used to
- // allocate this structure! Currently unused, reserved for future use.
- PRastPortExtra = ^TRastPortExtra;
- TRastPortExtra = record
- Node: TExtendedNode; // graphics extended node
- RastPort: PRastPort; // backlink
- Reserved: array[0..15] of LongWord; // avoid recompilation ;-)
- end;
- // UserStuff definitions
- // the user can define these to be a single variable or a sub-structure
- // if undefined by the user, the system turns these into innocuous variables
- // see the manual for a thorough definition of the UserStuff definitions
- VUserStuff = SmallInt; // Sprite user stuff
- BUserStuff = SmallInt; // Bob user stuff
- AUserStuff = SmallInt; // AnimOb user stuff
- // ********************** GEL STRUCTURES *******************************
- TVSprite = record
- //-- SYSTEM VARIABLES
- NextVSprite: PVSprite; // GEL linked list forward/backward Pointers sorted by y,x value
- PrevVSprite: PVSprite;
- // GEL draw list constructed in the order the Bobs are actually drawn, then list is copied to clear list must be here in VSprite for system boundary detection
- DrawPath: PVSprite; // Pointer of overlay drawing
- ClearPath: PVSprite; // Pointer for overlay clearing
- // the VSprite positions are defined in (y,x) order to make sorting sorting easier, since (y,x) as a long LongInt
- OldY, OldX: SmallInt; // previous position
- //-- COMMON VARIABLES
- Flags: SmallInt; // VSprite flags
- //-- USER VARIABLES
- // the VSprite positions are defined in (y,x) order to make sorting sorting easier, since (y,x) as a long LongInt
- Y, X: SmallInt; // screen position
- Height: SmallInt;
- Width: SmallInt; // number of words per row of image data
- Depth: SmallInt; // number of planes of data
- MeMask: SmallInt; // which types can collide with this VSprite
- HitMask: SmallInt; // which types this VSprite can collide with
- ImageData: PSmallInt; // Pointer to VSprite image
- // borderLine is the one-dimensional logical OR of all the VSprite bits, used for fast collision detection of edge
- BorderLine: PSmallInt; // logical OR of all VSprite bits
- CollMask: PSmallInt; // similar to above except this is a matrix
- // Pointer to this VSprite's color definitions (not used by Bobs)
- SprColors: PSmallInt;
- VSBob: PBob; // points home if this VSprite is part of a Bob
- { planePick flag: set bit selects a plane from image, clear bit selects
- use of shadow mask for that plane
- OnOff flag: if using shadow mask to fill plane, this bit (corresponding
- to bit in planePick) describes whether to fill with 0's or 1's
- There are two uses for these flags:
- - if this is the VSprite of a Bob, these flags describe how the Bob
- is to be drawn into memory
- - if this is a simple VSprite and the user intends on setting the
- MUSTDRAW flag of the VSprite, these flags must be set too to describe
- which color registers the user wants for the image}
- PlanePick: Shortint;
- PlaneOnOff: Shortint;
- VUserExt: VUserStuff; // user definable: see note above
- end;
- // blitter-objects
- TBob = record
- //-- SYSTEM VARIABLES
- //-- COMMON VARIABLES
- Flags: SmallInt; // general purpose flags (see definitions below)
- //-- USER VARIABLES
- SaveBuffer: PSmallInt; // Pointer to the buffer for background save
- // used by Bobs for "cookie-cutting" and multi-plane masking
- ImageShadow : PSmallInt;
- // Pointer to BOBs for sequenced drawing of Bobs for correct overlaying of multiple component animations
- Before: PBob; // draw this Bob before Bob pointed to by before
- After: PBob; // draw this Bob after Bob pointed to by after
- BobVSprite: PVSprite; // this Bob's VSprite definition
- BobComp: PAnimComp; // Pointer to this Bob's AnimComp def
- DBuffer: PDBufPacket; // Pointer to this Bob's dBuf packet
- BUserExt: BUserStuff; // Bob user extension
- end;
- TAnimComp = record
- //-- SYSTEM VARIABLES
- //-- COMMON VARIABLES
- Flags: SmallInt; // AnimComp flags for system & user
- // timer defines how long to keep this component active:
- // if set non-zero, timer decrements to zero then switches to nextSeq
- // if set to zero, AnimComp never switches
- Timer: SmallInt;
- //-- USER VARIABLES
- // initial value for timer when the AnimComp is activated by the system
- TimeSet: SmallInt;
- // Pointer to next and previous components of animation object
- NextComp: PAnimComp;
- PrevComp: PAnimComp;
- // Pointer to component component definition of next image in sequence
- NextSeq: PAnimComp;
- PrevSeq: PAnimComp;
- // address of special animation procedure
- AnimCRoutine: Pointer;
- YTrans: SmallInt; // initial y translation (if this is a component)
- XTrans: SmallInt; // initial x translation (if this is a component)
- HeadOb: PAnimOb;
- AnimBob: pBob;
- end;
- PPAnimOb = ^PAnimOb;
- TAnimOb = record
- //-- SYSTEM VARIABLES
- NextOb: PAnimOb;
- PrevOb: PAnimOb;
- Clock: LongInt; // number of calls to Animate this AnimOb has endured
- AnOldY, AnOldX: SmallInt; // old y,x coordinates
- //-- COMMON VARIABLES
- AnY, AnX: SmallInt; // y,x coordinates of the AnimOb
- //-- USER VARIABLES
- YVel, XVel: SmallInt; // velocities of this object
- YAccel, XAccel: SmallInt; // accelerations of this object
- RingYTrans,
- RingXTrans: SmallInt; // ring translation values
- AnimORoutine: Pointer; // Pointer of special animation procedure
- HeadComp: PAnimComp; // Pointer to first component
- AUserExt: AUserStuff; // AnimOb user extension
- end;
- // dBufPacket defines the values needed to be saved across buffer to buffer
- // when in double-buffer mode
- tDBufPacket = record
- BufY, BufX: SmallInt; // save other buffers screen coordinates
- BufPath: PVSprite; // carry the draw path over the gap
- // these Pointers must be filled in by the user
- // Pointer to other buffer's background save buffer
- BufBuffer: PSmallInt;
- end;
- const
- B2NORM = 0;
- B2SWAP = 1;
- B2BOBBER = 2;
- { ************************************************************************ }
- const
- // internal TClipRect.flags
- CR_USERCLIPPED = 16; // out of user clip rectangle
- CR_DAMAGECLIPPED = 32; // out of damage cliprects
- CR_LAYERBITMAP = 64; // don't free the BitMap
- CR_ALPHATYPE = 128; // not opaque, or covered by same
- CR_INVISIBLE = 256; // fully obscured, no own BitMap
- CR_INTUITION = 1024; // internal system use
- // defines for shape hooks
- SHAPEHOOKACTION_CREATELAYER = 0;
- SHAPEHOOKACTION_MOVELAYER = 1; // Only sent if LAYERMOVECHANGESSHAPE is set
- SHAPEHOOKACTION_SIZELAYER = 2;
- SHAPEHOOKACTION_MOVESIZELAYER = 3;
- SHAPEHOOKACTION_CHANGELAYERSHAPE = 4;
- SHAPEHOOKACTION_DELETELAYER = 5;
- SHAPEHOOKACTION_GETHOOKACTIONS = 6;
- type
- PShapeHookMsg = ^TShapeHookMsg;
- TShapeHookMsg = record
- Action: LongWord;
- NewShape: PRegion;
- OldShape: PRegion;
- NewBounds: PRectangle;
- OldBounds: PRectangle;
- end;
- // defines for alpha hooks
- const
- ALPHAHOOKACTION_CREATELAYER = 0;
- ALPHAHOOKACTION_MOVELAYER = 1; // Only sent if LAYERMOVECHANGESSHAPE is set
- ALPHAHOOKACTION_SIZELAYER = 2;
- ALPHAHOOKACTION_MOVESIZELAYER = 3;
- ALPHAHOOKACTION_CHANGELAYERALPHA = 4;
- ALPHAHOOKACTION_DELETELAYER = 5;
- ALPHAHOOKACTION_GETHOOKACTIONS = 6;
- type
- PAlphaHookMsg = ^TAlphaHookMsg;
- TAlphaHookMsg = record
- Action: LongWord;
- NewAlphaCR: PClipRect;
- OldAlphaCR: PClipRect;
- NewBounds: PRectangle;
- OldBounds: PRectangle;
- end;
- const
- { These bit descriptors are used by the GEL collide routines.
- * These bits are set in the hitMask and meMask variables of
- * a GEL to describe whether or not these types of collisions
- * can affect the GEL. BNDRY_HIT is described further below;
- * this bit is permanently assigned as the boundary-hit flag.
- * The other bit GEL_HIT is meant only as a default to cover
- * any GEL hitting any other; the user may redefine this bit.}
- BORDERHIT = 0;
- { These bit descriptors are used by the GEL boundry hit routines.
- * When the user's boundry-hit routine is called (via the argument
- * set by a call to SetCollision) the first argument passed to
- * the user's routine is the Pointer of the GEL involved in the
- * boundry-hit, and the second argument has the appropriate bit(s)
- * set to describe which boundry was surpassed }
- TOPHIT = 1;
- BOTTOMHIT = 2;
- LEFTHIT = 4;
- RIGHTHIT = 8;
- // Porter/Duff Image Composition
- COMPOSITE_Clear = 0;
- COMPOSITE_Src = 1;
- COMPOSITE_Dest = 2;
- COMPOSITE_Src_Over_Dest = 3;
- COMPOSITE_Dest_Over_Src = 4;
- COMPOSITE_Src_In_Dest = 5;
- COMPOSITE_Dest_In_Src = 6;
- COMPOSITE_Src_Out_Dest = 7;
- COMPOSITE_Dest_Out_Src = 8;
- COMPOSITE_Src_Atop_Dest = 9;
- COMPOSITE_Dest_Atop_Src = 10;
- COMPOSITE_Src_Xor_Dest = 11;
- COMPOSITE_Plus = 12;
- COMPOSITE_Maximum = 13;
- COMPOSITE_Minimum = 14;
- COMPOSITE_NumOperators = 15;
- // Tag items for the Composite call
- COMPTAG_Base = TAG_USER;
- COMPTAG_SrcX = COMPTAG_Base + 0; // (uint32) X clip coordinate on source bitmap (defaults to 0)
- COMPTAG_SrcY = COMPTAG_Base + 1; // (uint32) Y clip coordinate on source bitmap (defaults to 0)
- COMPTAG_SrcWidth = COMPTAG_Base + 2; // (uint32) Width of clip rectangle on source (defaults to full width)
- COMPTAG_SrcHeight = COMPTAG_Base + 3; // (uint32) Height of clip rectangle on source (defaults to full height)
- COMPTAG_DestX = COMPTAG_Base + 4; // (uint32) X clip coordinate on dest bitmap (defaults to 0)
- COMPTAG_DestY = COMPTAG_Base + 5; // (uint32) Y clip coordinate on dest bitmap (defaults to 0)
- COMPTAG_DestWidth = COMPTAG_Base + 6; // (uint32) Width of clip rectangle on dest (defaults to full width)
- COMPTAG_DestHeight = COMPTAG_Base + 7; // (uint32) Height of clip rectangle on dest (defaults to full height)
- COMPTAG_SrcAlpha = COMPTAG_Base + 8; // (fixpoint) (additional) Alpha for source bitmap (no default)
- COMPTAG_DestAlpha = COMPTAG_Base + 9; // (fixpoint) (additional) Alpha for destination bitmap (no default)
- COMPTAG_ScaleX = COMPTAG_Base + 10; // (fixpoint) X scale factor for source bitmap (defaults to 1.0)
- COMPTAG_ScaleY = COMPTAG_Base + 11; // (fixpoint) Y scale factor for source bitmap (defaults to 1.0)
- COMPTAG_SrcAlphaMask = COMPTAG_Base + 12; // (struct Bitmap *; Alpha mask for source. Specifying this tag overrides any alpha that might be present in the source bitmap.
- COMPTAG_DestAlphaMask = COMPTAG_Base + 13; // (struct Bitmap *; Alpha mask for the destination. Specifying this tag overrides any alpha that might be present in the destination bitmap.
- COMPTAG_Flags = COMPTAG_Base + 18; // (uint32, see defines below; Specifies a set of flags that may modify the operation. See the defines below
- COMPTAG_OffsetX = COMPTAG_Base + 20; // (int32; X Coordinate on the destination bitmap that the operation should be applied to. Defaults to zero.
- COMPTAG_OffsetY = COMPTAG_Base + 21; // (int32; Y Coordinate on the destination bitmap that the operation should be applied to. Defaults to zero.
- COMPTAG_FriendBitMap = COMPTAG_Base + 22; // (struct BitMap *; when the source and/or destination bitmaps are located in main memory, this tag tells the graphics system to upload the bitmaps to the same board the friend bitmap is located on.
- COMPTAG_DisplayID = COMPTAG_Base + 23; // (uint32; the same as above, but a DisplayID is used as reference to the board and not a bitmap.
- COMPTAG_SrcAlphaX = COMPTAG_Base + 14; // (uint32; the X/Y coordinates on the src alpha map to use for compositing. If not specified, use the same as the SrcX and SrcY
- COMPTAG_SrcAlphaY = COMPTAG_Base + 15;
- COMPTAG_DestAlphaX = COMPTAG_Base + 16; // (uint32; the X/Y coordinates on the destination alpha map to use. If not specified, use the DestX and DestY
- COMPTAG_DestAlphaY = COMPTAG_Base + 17;
- // The following group of tag items deals with direct triangle mapping. Read the autodoc for a detailed explanation
- COMPTAG_VertexArray = COMPTAG_Base + 30;
- COMPTAG_IndexArray = COMPTAG_Base + 31;
- COMPTAG_VertexFormat = COMPTAG_Base + 32;
- COMPTAG_NumTriangles = COMPTAG_Base + 33;
- // This group of tag items can be used to specify up to four colors, either as an 32 bit ARGB value, or as a set of discreet fixpoint numbers.
- // The fixpoint numbers range is 0 to 1. Specifying a fixpoint component overrides the ARGB value completely.
- COMPTAG_Color0 = COMPTAG_Base + 40;
- COMPTAG_Color1 = COMPTAG_Base + 41;
- COMPTAG_Color2 = COMPTAG_Base + 42;
- COMPTAG_Color3 = COMPTAG_Base + 43;
- COMPTAG_Color0_Red = COMPTAG_Base + 44;
- COMPTAG_Color0_Green = COMPTAG_Base + 45;
- COMPTAG_Color0_Blue = COMPTAG_Base + 46;
- COMPTAG_Color0_Alpha = COMPTAG_Base + 47;
- COMPTAG_Color1_Red = COMPTAG_Base + 48;
- COMPTAG_Color1_Green = COMPTAG_Base + 49;
- COMPTAG_Color1_Blue = COMPTAG_Base + 50;
- COMPTAG_Color1_Alpha = COMPTAG_Base + 51;
- COMPTAG_Color2_Red = COMPTAG_Base + 52;
- COMPTAG_Color2_Green = COMPTAG_Base + 53;
- COMPTAG_Color2_Blue = COMPTAG_Base + 54;
- COMPTAG_Color2_Alpha = COMPTAG_Base + 55;
- COMPTAG_Color3_Red = COMPTAG_Base + 56;
- COMPTAG_Color3_Green = COMPTAG_Base + 57;
- COMPTAG_Color3_Blue = COMPTAG_Base + 58;
- COMPTAG_Color3_Alpha = COMPTAG_Base + 59;
- { Specifies the YUV to RGB conversion standard to use for YUV source bitmaps.
- The options are:
- - COMPYUV_BT601 - SD video standard ITU-R BT.601
- - COMPYUV_BT709 - HD video standard ITU-R BT.709
- NOTE: This is only relevant if the source bitmap is in one of the YUV formats
- (e.g., RGBFB_YUV420P).}
- COMPTAG_SrcYUVStandard = COMPTAG_Base + 60;
- COMPYUV_BT601 = 0;
- COMPYUV_BT709 = 1;
- COMPTAG_SrcYUVMatrix = COMPTAG_Base + 61; // (PSingle) Provide a custom YUV to RGB conversion matrix
- //Reserved
- COMPTAG_Private = COMPTAG_Base + 34;
- COMPTAG_Private2 = COMPTAG_Base + 35;
- // Vertex Array format flags
- COMPVF_STW0_Present = $02;
- COMPVF_STW1_Present = $04;
- COMPFLAG_SrcAlphaOverride = 1 shl 0; // If set, the value specified in SrcAlpha overrides the value in the source bitmap, which means that the source bitmap is
- // assumed to have a constant alpha over the entire image. If not set, the SrcAlpha value is used to modulate/scale any other alpha channel.
- COMPFLAG_DestAlphaOverride = 1 shl 1; // Like COMPFLAG_SrcAlphaOverride, for the destination bitmap.
- COMPFLAG_SrcFilter = 1 shl 2; // If set, enables bilinear filtering of the source bitmap while scaling. While this can improve the quality of scaled images,
- // it might cause a dramatic slowdown when the operation is emulated in software.
- COMPFLAG_HardwareOnly = 1 shl 3; // If set, the call will fail with an error code if the operation cannot be performed in hardware. Reasons for this include software-only bitmaps, unsupported color formats, etc.
- COMPFLAG_IgnoreDestAlpha = 1 shl 4;
- COMPFLAG_ForceSoftware = 1 shl 7; // If set, the operation will be emulated in software even if it could be performed in hardware. This is mostly useful for testing purposes. Setting this overrides COMPFLAG_HardwareOnly.
- COMPFLAG_Color1Modulate = 1 shl 8; // If set, then Color 1 is used as a modulate color for the src bitmap. That is, each color component of each pixel in the source bitmap is multiplied with the color 1 (including its
- // alpha). All other effects stay in effect. This flag can essentially be used to "tint" a bitmap in the given color
- // Tags for GraphicsControlTagList()
- GCTRL_GetForceSWComposite = TAG_USER + 1;
- GCTRL_SetForceSWComposite = TAG_USER + 2;
- GCTRL_GetUseDMA = TAG_USER + 3;
- GCTRL_SetUseDMA = TAG_USER + 4;
- GCTRL_GetUseAltiVec = TAG_USER + 5;
- GCTRL_SetUseAltiVec = TAG_USER + 6;
- GCTRL_GetDisableAmigaBlitter = TAG_USER + 7;
- GCTRL_SetDisableAmigaBlitter = TAG_USER + 8;
- GCTRL_GetPlanesToFast = TAG_USER + 9;
- GCTRL_SetPlanesToFast = TAG_USER + 10;
- GCTRL_Get31KHzScanRate = TAG_USER + 11;
- GCTRL_Set31KHzScanRate = TAG_USER + 12;
- // enCompositeError
- COMPERR_Success = 0;
- COMPERR_Incompatible = 1; // Incompatible bitmaps for operation
- COMPERR_Value = 2; // An input value is out of range
- COMPERR_SoftwareFallback = 3; // Operation would fall back to software emulation and hardware only was requested
- COMPERR_OutOfMemory = 4; // The operation tried to allocate memory but failed
- COMPERR_Generic = 5; // Some generic error has occurred
- COMPERR_UnknownOperator = 6; // Unknown operator specified
- COMPERR_MissingInput = 7; // Missing a mandatory tag item
- GMD_TagBase = TAG_USER;
- GMD_VendorID = GMD_TagBase + 1;
- GMD_Product = GMD_TagBase + 2;
- GMD_ProductID = GMD_TagBase + 3;
- GMD_HSyncMin = GMD_TagBase + 4;
- GMD_HSyncMax = GMD_TagBase + 5;
- GMD_VSyncMin = GMD_TagBase + 6;
- GMD_VSyncMax = GMD_TagBase + 7;
- GMD_DotClockMin = GMD_TagBase + 8;
- GMD_DotClockMax = GMD_TagBase + 9;
- GMD_DisplayWidth = GMD_TagBase + 10;
- GMD_DisplayHeight = GMD_TagBase + 11;
- GMD_InputType = GMD_TagBase + 12;
- GMD_EDIDVersion = GMD_TagBase + 13;
- GMD_EDIDRevision = GMD_TagBase + 14;
- GMD_BasicAudio = GMD_TagBase + 15;
- // enMonitorInputType
- INPUTTYPE_VGA = 0;
- INPUTTYPE_DVI = 1;
- const
- SS_GRAPHICS = $02;
- VIEW_EXTRA_TYPE = 1;
- VIEWPORT_EXTRA_TYPE = 2;
- SPECIAL_MONITOR_TYPE = 3;
- MONITOR_SPEC_TYPE = 4;
- type
- // structure used by AddTOFTask
- PIsrvstr = ^TIsrvstr;
- TIsrvstr = record
- is_Node: TNode;
- Iptr: PIsrvstr; // passed to srvr by os
- code: Pointer;
- ccode: Pointer;
- Carg: APTR;
- end;
- PAnalogSignalInterval = ^TAnalogSignalInterval;
- TAnalogSignalInterval = record
- asi_Start: Word;
- asi_Stop: Word;
- end;
- PSpecialMonitor = ^TSpecialMonitor;
- TSpecialMonitor = record
- spm_Node: TExtendedNode;
- spm_Flags: Word;
- do_monitor: Pointer;
- reserved1: Pointer;
- reserved2: Pointer;
- reserved3: Pointer;
- hblank: TAnalogSignalInterval;
- vblank: TAnalogSignalInterval;
- hsync: TAnalogSignalInterval;
- vsync: TAnalogSignalInterval;
- end;
- PMonitorSpec = ^TMonitorSpec;
- TMonitorSpec = record
- ms_Node: TExtendedNode;
- ms_Flags: Word;
- ratioh: LongInt;
- ratiov: LongInt;
- total_rows: Word;
- total_colorclocks: Word;
- DeniseMaxDisplayColumn: Word;
- BeamCon0: Word;
- min_row: Word;
- ms_Special: PSpecialMonitor;
- ms_OpenCount: Word;
- ms_transform: Pointer;
- ms_translate: Pointer;
- ms_scale: Pointer;
- ms_xoffset: Word;
- ms_yoffset: Word;
- ms_LegalView: TRectangle;
- ms_maxoscan: Pointer; // maximum legal overscan
- ms_videoscan: Pointer; // video display overscan
- DeniseMinDisplayColumn: Word;
- DisplayCompatible: LongWord;
- DisplayInfoDataBase: TList;
- DisplayInfoDataBaseSemaphore: TSignalSemaphore;
- ms_MrgCop: Pointer;
- ms_LoadView: Pointer;
- ms_KillView: Pointer;
- end;
- const
- TO_MONITOR = 0;
- FROM_MONITOR = 1;
- STANDARD_XOFFSET = 9;
- STANDARD_YOFFSET = 0;
- MSB_REQUEST_NTSC = 0;
- MSB_REQUEST_PAL = 1;
- MSB_REQUEST_SPECIAL = 2;
- MSB_REQUEST_A2024 = 3;
- MSB_DOUBLE_SPRITES = 4;
- MSF_REQUEST_NTSC = 1 shl MSB_REQUEST_NTSC;
- MSF_REQUEST_PAL = 1 shl MSB_REQUEST_PAL;
- MSF_REQUEST_SPECIAL = 1 shl MSB_REQUEST_SPECIAL;
- MSF_REQUEST_A2024 = 1 shl MSB_REQUEST_A2024;
- MSF_DOUBLE_SPRITES = 1 shl MSB_DOUBLE_SPRITES;
- // obsolete, v37 compatible definitions follow
- REQUEST_NTSC = 1 shl MSB_REQUEST_NTSC;
- REQUEST_PAL = 1 shl MSB_REQUEST_PAL;
- REQUEST_SPECIAL = 1 shl MSB_REQUEST_SPECIAL;
- REQUEST_A2024 = 1 shl MSB_REQUEST_A2024;
- DEFAULT_MONITOR_NAME: PAnsiChar = 'default.monitor';
- NTSC_MONITOR_NAME: PAnsiChar = 'ntsc.monitor';
- PAL_MONITOR_NAME: PAnsiChar = 'pal.monitor';
- STANDARD_MONITOR_MASK = REQUEST_NTSC or REQUEST_PAL;
- STANDARD_NTSC_ROWS = 262;
- STANDARD_PAL_ROWS = 312;
- STANDARD_COLORCLOCKS = 226;
- STANDARD_DENISE_MAX = 455;
- STANDARD_DENISE_MIN = 93 ;
- STANDARD_NTSC_BEAMCON = $0000;
- STANDARD_PAL_BEAMCON = $0020;
- //SPECIAL_BEAMCON = VARVBLANK or LOLDIS or VARVSYNC or VARHSYNC or VARBEAM or CSBLANK or VSYNCTRUE;
- MIN_NTSC_ROW = 21;
- MIN_PAL_ROW = 29;
- STANDARD_VIEW_X = $81;
- STANDARD_VIEW_Y = $2C;
- STANDARD_HBSTRT = $06;
- STANDARD_HSSTRT = $0B;
- STANDARD_HSSTOP = $1C;
- STANDARD_HBSTOP = $2C;
- STANDARD_VBSTRT = $0122;
- STANDARD_VSSTRT = $02A6;
- STANDARD_VSSTOP = $03AA;
- STANDARD_VBSTOP = $1066;
- VGA_COLORCLOCKS = STANDARD_COLORCLOCKS / 2;
- VGA_TOTAL_ROWS = STANDARD_NTSC_ROWS * 2;
- VGA_DENISE_MIN = 59;
- MIN_VGA_ROW = 29;
- VGA_HBSTRT = $08;
- VGA_HSSTRT = $0E;
- VGA_HSSTOP = $1C;
- VGA_HBSTOP = $1E;
- VGA_VBSTRT = $0000;
- VGA_VSSTRT = $0153;
- VGA_VSSTOP = $0235;
- VGA_VBSTOP = $0CCD;
- VGA_MONITOR_NAME: PAnsiChar = 'vga.monitor';
- // NOTE: VGA70 definitions are obsolete - a VGA70 monitor has never been implemented.
- VGA70_COLORCLOCKS = STANDARD_COLORCLOCKS / 2;
- VGA70_TOTAL_ROWS = 449;
- VGA70_DENISE_MIN = 59;
- MIN_VGA70_ROW = 35;
- VGA70_HBSTRT = $08;
- VGA70_HSSTRT = $0E;
- VGA70_HSSTOP = $1C;
- VGA70_HBSTOP = $1E;
- VGA70_VBSTRT = $0000;
- VGA70_VSSTRT = $02A6;
- VGA70_VSSTOP = $0388;
- VGA70_VBSTOP = $0F73;
- //VGA70_BEAMCON = SPECIAL_BEAMCON xor VSYNCTRUE;
- VGA70_MONITOR_NAME: PAnsiChar = 'vga70.monitor';
- BROADCAST_HBSTRT = $01;
- BROADCAST_HSSTRT = $06;
- BROADCAST_HSSTOP = $17;
- BROADCAST_HBSTOP = $27;
- BROADCAST_VBSTRT = $0000;
- BROADCAST_VSSTRT = $02A6;
- BROADCAST_VSSTOP = $054C;
- BROADCAST_VBSTOP = $1C40;
- //BROADCAST_BEAMCON = LOLDIS or CSBLANK;
- RATIO_FIXEDPART = 4;
- RATIO_UNITY = 1 shl RATIO_FIXEDPART;
- Type
- PColorMap = ^TColorMap;
- PViewPort = ^TViewPort;
- PRasInfo = ^TRasInfo;
- TRasInfo = record // used by callers to and InitDspC()
- Next: PRasInfo; // used for dualpf
- BitMap: PBitMap;
- RxOffset: SmallInt; // scroll offsets in this BitMap
- RyOffset: SmallInt;
- end;
- PView = ^TView;
- TView = record
- ViewPort: PViewPort;
- LOFCprList: PCprList; // used for interlaced and noninterlaced
- SHFCprList: PCprList; // only used during interlace
- DyOffset: SmallInt; // for complete View positioning
- DxOffset: SmallInt; // offsets are +- adjustments to standard #s
- Modes: Word; // such as INTERLACE, GENLOC
- end;
- // these structures are obtained via GfxNew and disposed by GfxFree
- PViewExtra = ^TViewExtra;
- TViewExtra = record
- n: TExtendedNode;
- View: PView; // backwards link
- Monitor: PMonitorSpec; // monitors for this view
- TopLine: Word;
- end;
- TViewPort = record
- Next: PViewPort;
- ColorMap: PColorMap; // table of colors for this viewport if this is nil, MakeVPort assumes default values
- DspIns: pCopList; // user by MakeView()
- SprIns: pCopList; // used by sprite stuff
- ClrIns: pCopList; // used by sprite stuff
- UCopIns: PUCopList; // User copper list
- DWidth, DHeight: SmallInt;
- DxOffset, DyOffset: SmallInt;
- Modes: Word;
- SpritePriorities: Byte;
- ExtendedModes: Byte;
- RasInfo: PRasInfo;
- end;
- // private structure
- PVecTable = ^TVecTable;
- TVecTable = record
- end;
- // this structure is obtained via GfxNew and disposed by GfxFree
- PViewPortExtra = ^tViewPortExtra;
- tViewPortExtra = record
- n: TExtendedNode;
- ViewPort: PViewPort; // backwards link
- DisplayClip: TRectangle; // makevp display clipping information
- // These are added for V39
- VecTable: Pointer; // Private
- DriverData: array[0..1] of APTR;
- Flags: Word;
- Origin: array[0..1] of TPoint; // First visible point relative to the DClip. One for each possible playfield.
- cop1ptr: LongWord; // private
- cop2ptr: LongWord; // private
- MonitorData: APTR; // private
- end;
- TColorMap = record
- Flags: Byte;
- Type_: Byte;
- Count: Word;
- ColorTable: APTR;
- cm_vpe: PViewPortExtra;
- LowColorBits: APTR;
- TransparencyPlane: Byte;
- SpriteResolution: Byte;
- SpriteResDefault: Byte;
- AuxFlags: Byte;
- cm_vp: PViewPort;
- NormalDisplayInfo: APTR;
- CoerceDisplayInfo: APTR;
- cm_batch_items: PTagItem;
- VPModeID: LongWord;
- PalExtra: Pointer; // PPaletteExtra
- SpriteBase_Even: Word;
- SpriteBase_Odd: Word;
- Bp_0_base: Word;
- Bp_1_base: Word;
- end;
- const
- // if Type = 0 then ColorMap is V1.2/V1.3 compatible
- // if Type <> 0 then ColorMap is V36 compatible
- // the system will never create other than V39 type colormaps when running V39
- COLORMAP_TYPE_V1_2 = $00;
- COLORMAP_TYPE_V1_4 = $01;
- COLORMAP_TYPE_V36 = COLORMAP_TYPE_V1_4; // use this definition
- COLORMAP_TYPE_V39 = $02;
- // Flags variable
- COLORMAP_TRANSPARENCY = $01;
- COLORPLANE_TRANSPARENCY = $02;
- BORDER_BLANKING = $04;
- BORDER_NOTRANSPARENCY = $08;
- VIDEOCONTROL_BATCH = $10;
- USER_COPPER_CLIP = $20;
- CMF_CMTRANS = 0;
- CMF_CPTRANS = 1;
- CMF_BRDRBLNK = 2;
- CMF_BRDNTRAN = 3;
- CMF_BRDRSPRT = 6;
- // All these VPXF_ flags are private
- VPXB_FREE_ME = 0;
- VPXF_FREE_ME = 1 shl VPXB_FREE_ME;
- VPXB_LAST = 1;
- VPXF_LAST = 1 shl VPXB_LAST;
- VPXB_STRADDLES_256 = 4;
- VPXF_STRADDLES_256 = 1 shl VPXB_STRADDLES_256;
- VPXB_STRADDLES_512 = 5;
- VPXF_STRADDLES_512 = 1 shl VPXB_STRADDLES_512;
- EXTEND_VSTRUCT = $1000; // unused bit in Modes field of View
- // defines used for Modes in IVPargs
- GENLOCK_VIDEO = $0002;
- LACE = $0004;
- SUPERHIRES = $0020;
- PFBA = $0040;
- EXTRA_HALFBRITE= $0080;
- GENLOCK_AUDIO = $0100;
- DUALPF = $0400;
- HAM = $0800;
- EXTENDED_MODE = $1000;
- VP_HIDE = $2000;
- SPRITES = $4000;
- HIRES = $8000;
- VPF_A2024 = $40;
- VPF_AGNUS = $20;
- VPF_TENHZ = $20;
- BORDERSPRITES = $40;
- SPRITERESN_ECS = 0;
- // ^140ns, except in 35ns viewport, where it is 70ns.
- SPRITERESN_140NS = 1;
- SPRITERESN_70NS = 2;
- SPRITERESN_35NS = 3;
- SPRITERESN_DEFAULT = -1;
- // AuxFlags :
- CMAB_FULLPALETTE = 0;
- CMAF_FULLPALETTE = 1 shl CMAB_FULLPALETTE;
- CMAB_NO_INTERMED_UPDATE = 1;
- CMAF_NO_INTERMED_UPDATE = 1 shl CMAB_NO_INTERMED_UPDATE;
- CMAB_NO_COLOR_LOAD = 2;
- CMAF_NO_COLOR_LOAD = 1 shl CMAB_NO_COLOR_LOAD;
- CMAB_DUALPF_DISABLE = 3;
- CMAF_DUALPF_DISABLE = 1 shl CMAB_DUALPF_DISABLE;
- type
- PPaletteExtra = ^TPaletteExtra;
- TPaletteExtra = record // structure may be extended so watch out!
- pe_Semaphore: TSignalSemaphore; // shared semaphore for arbitration
- pe_FirstFree: Word; // *private*
- pe_NFree: Word; // number of free colors
- pe_FirstShared: Word; // *private*
- pe_NShared: Word; // *private*
- pe_RefCnt: PByte; // *private*
- pe_AllocList: PByte; // *private*
- pe_ViewPort: PViewPort; // back Pointer to viewport
- pe_SharableColors: Word; // the number of sharable colors.
- end;
- // flags values for ObtainPen
- const
- PENB_EXCLUSIVE = 0;
- PENB_NO_SETCOLOR = 1;
- PENF_EXCLUSIVE = 1 shl PENB_EXCLUSIVE;
- PENF_NO_SETCOLOR = 1 shl PENB_NO_SETCOLOR;
- // obsolete names for PENF_xxx flags:
- PEN_EXCLUSIVE = PENF_EXCLUSIVE;
- PEN_NO_SETCOLOR = PENF_NO_SETCOLOR;
- // precision values for ObtainBestPen:
- PRECISION_EXACT = -1;
- PRECISION_IMAGE = 0;
- PRECISION_ICON = 16;
- PRECISION_GUI = 32;
- // tags for ObtainBestPen:
- OBP_Precision = $84000000;
- OBP_FailIfBad = $84000001;
- // From V39, MakeVPort() will return an error if there is not enough memory,
- // or the requested mode cannot be opened with the requested depth with the
- // given bitmap (for higher bandwidth alignments).
- MVP_OK = 0; // you want to see this one
- MVP_NO_MEM = 1; // insufficient memory for intermediate workspace
- MVP_NO_VPE = 2; // ViewPort does not have a ViewPortExtra, and insufficient memory to allocate a temporary one.
- MVP_NO_DSPINS = 3; // insufficient memory for intermidiate copper instructions.
- MVP_NO_DISPLAY = 4; // BitMap data is misaligned for this viewport's mode and depth - see AllocBitMap().
- MVP_OFF_BOTTOM = 5; // PRIVATE - you will never see this.
- // From V39, MrgCop() will return an error if there is not enough memory,
- // or for some reason MrgCop() did not need to make any copper lists.
- MCOP_OK = 0; // you want to see this one
- MCOP_NO_MEM = 1; // insufficient memory to allocate the system copper lists.
- MCOP_NOP = 2; // MrgCop() did not merge any copper lists (eg, no ViewPorts in the list, or all marked as hidden).
- type
- PDBufInfo = ^TDBufInfo;
- TDBufInfo = record
- dbi_Link1: APTR;
- dbi_Count1: LongWord;
- dbi_SafeMessage: TMessage; // replied to when safe to write to old bitmap
- dbi_UserData1: Pointer; { first user data }
- dbi_Link2: Pointer;
- dbi_Count2: LongWord;
- dbi_DispMessage: tMessage; { replied to when new bitmap has been displayed at least
- once }
- dbi_UserData2: Pointer; { second user data }
- dbi_MatchLong: LongWord;
- dbi_CopPtr1,
- dbi_CopPtr2,
- dbi_CopPtr3: Pointer;
- dbi_BeamPos1,
- dbi_BeamPos2: WORD;
- end;
- const
- INVALID_ID = not 0;
- { With all the new modes that are available under V38 and V39, it is highly
- recommended that you use either the asl.library screenmode requester,
- and/or the V39 graphics.library function BestModeIDA().
- DO NOT interpret the any of the bits in the ModeID for its meaning. For
- example, do not interpret bit 3 ($4) as meaning the ModeID is interlaced.
- Instead, use GetDisplayInfoData() with DTAG_DISP, and examine the DIPF_...
- flags to determine a ModeID's characteristics. The only exception to
- this rule is that bit 7 ($80) will always mean the ModeID is
- ExtraHalfBright, and bit 11 ($800) will always mean the ModeID is HAM.}
- // normal identifiers
- MONITOR_ID_MASK = $FFFF1000;
- DEFAULT_MONITOR_ID = $00000000;
- NTSC_MONITOR_ID = $00011000;
- PAL_MONITOR_ID = $00021000;
- { the following 22 composite keys are for Modes on the default Monitor.
- NTSC & PAL "flavors" of these particular keys may be made by or'ing
- the NTSC or PAL MONITOR_ID with the desired MODE_KEY...
- For example, to specifically open a PAL HAM interlaced ViewPort
- (or intuition screen), you would use the modeid of
- (PAL_MONITOR_ID OR HAMLACE_KEY)}
- LORES_KEY = $00000000;
- HIRES_KEY = $00008000;
- SUPER_KEY = $00008020;
- HAM_KEY = $00000800;
- LORESLACE_KEY = $00000004;
- HIRESLACE_KEY = $00008004;
- SUPERLACE_KEY = $00008024;
- HAMLACE_KEY = $00000804;
- LORESDPF_KEY = $00000400;
- HIRESDPF_KEY = $00008400;
- SUPERDPF_KEY = $00008420;
- LORESLACEDPF_KEY = $00000404;
- HIRESLACEDPF_KEY = $00008404;
- SUPERLACEDPF_KEY = $00008424;
- LORESDPF2_KEY = $00000440;
- HIRESDPF2_KEY = $00008440;
- SUPERDPF2_KEY = $00008460;
- LORESLACEDPF2_KEY = $00000444;
- HIRESLACEDPF2_KEY = $00008444;
- SUPERLACEDPF2_KEY = $00008464;
- EXTRAHALFBRITE_KEY = $00000080;
- EXTRAHALFBRITELACE_KEY = $00000084;
- // New for AA ChipSet (V39)
- HIRESHAM_KEY = $00008800;
- SUPERHAM_KEY = $00008820;
- HIRESEHB_KEY = $00008080;
- SUPEREHB_KEY = $000080a0;
- HIRESHAMLACE_KEY = $00008804;
- SUPERHAMLACE_KEY = $00008824;
- HIRESEHBLACE_KEY = $00008084;
- SUPEREHBLACE_KEY = $000080a4;
- // Added for V40 - may be useful modes for some games or animations.
- LORESSDBL_KEY = $00000008;
- LORESHAMSDBL_KEY = $00000808;
- LORESEHBSDBL_KEY = $00000088;
- HIRESHAMSDBL_KEY = $00008808;
- // VGA identifiers
- VGA_MONITOR_ID = $00031000;
- VGAEXTRALORES_KEY = $00031004;
- VGALORES_KEY = $00039004;
- VGAPRODUCT_KEY = $00039024;
- VGAHAM_KEY = $00031804;
- VGAEXTRALORESLACE_KEY = $00031005;
- VGALORESLACE_KEY = $00039005;
- VGAPRODUCTLACE_KEY = $00039025;
- VGAHAMLACE_KEY = $00031805;
- VGAEXTRALORESDPF_KEY = $00031404;
- VGALORESDPF_KEY = $00039404;
- VGAPRODUCTDPF_KEY = $00039424;
- VGAEXTRALORESLACEDPF_KEY = $00031405;
- VGALORESLACEDPF_KEY = $00039405;
- VGAPRODUCTLACEDPF_KEY = $00039425;
- VGAEXTRALORESDPF2_KEY = $00031444;
- VGALORESDPF2_KEY = $00039444;
- VGAPRODUCTDPF2_KEY = $00039464;
- VGAEXTRALORESLACEDPF2_KEY = $00031445;
- VGALORESLACEDPF2_KEY = $00039445;
- VGAPRODUCTLACEDPF2_KEY = $00039465;
- VGAEXTRAHALFBRITE_KEY = $00031084;
- VGAEXTRAHALFBRITELACE_KEY = $00031085;
- // New for AA ChipSet (V39)
- VGAPRODUCTHAM_KEY = $00039824;
- VGALORESHAM_KEY = $00039804;
- VGAEXTRALORESHAM_KEY = VGAHAM_KEY;
- VGAPRODUCTHAMLACE_KEY = $00039825;
- VGALORESHAMLACE_KEY = $00039805;
- VGAEXTRALORESHAMLACE_KEY = VGAHAMLACE_KEY;
- VGAEXTRALORESEHB_KEY = VGAEXTRAHALFBRITE_KEY;
- VGAEXTRALORESEHBLACE_KEY = VGAEXTRAHALFBRITELACE_KEY;
- VGALORESEHB_KEY = $00039084;
- VGALORESEHBLACE_KEY = $00039085;
- VGAEHB_KEY = $000390a4;
- VGAEHBLACE_KEY = $000390a5;
- // These ModeIDs are the scandoubled equivalents of the above, with the
- // exception of the DualPlayfield modes, as AA does not allow for scandoubling dualplayfield.
- VGAEXTRALORESDBL_KEY = $00031000;
- VGALORESDBL_KEY = $00039000;
- VGAPRODUCTDBL_KEY = $00039020;
- VGAEXTRALORESHAMDBL_KEY = $00031800;
- VGALORESHAMDBL_KEY = $00039800;
- VGAPRODUCTHAMDBL_KEY = $00039820;
- VGAEXTRALORESEHBDBL_KEY = $00031080;
- VGALORESEHBDBL_KEY = $00039080;
- VGAPRODUCTEHBDBL_KEY = $000390a0;
- // a2024 identifiers
- A2024_MONITOR_ID = $00041000;
- A2024TENHERTZ_KEY = $00041000;
- A2024FIFTEENHERTZ_KEY = $00049000;
- // prototype identifiers (private)
- PROTO_MONITOR_ID = $00051000;
- // These monitors and modes were added for the V38 release.
- EURO72_MONITOR_ID = $00061000;
- EURO72EXTRALORES_KEY = $00061004;
- EURO72LORES_KEY = $00069004;
- EURO72PRODUCT_KEY = $00069024;
- EURO72HAM_KEY = $00061804;
- EURO72EXTRALORESLACE_KEY = $00061005;
- EURO72LORESLACE_KEY = $00069005;
- EURO72PRODUCTLACE_KEY = $00069025;
- EURO72HAMLACE_KEY = $00061805;
- EURO72EXTRALORESDPF_KEY = $00061404;
- EURO72LORESDPF_KEY = $00069404;
- EURO72PRODUCTDPF_KEY = $00069424;
- EURO72EXTRALORESLACEDPF_KEY = $00061405;
- EURO72LORESLACEDPF_KEY = $00069405;
- EURO72PRODUCTLACEDPF_KEY = $00069425;
- EURO72EXTRALORESDPF2_KEY = $00061444;
- EURO72LORESDPF2_KEY = $00069444;
- EURO72PRODUCTDPF2_KEY = $00069464;
- EURO72EXTRALORESLACEDPF2_KEY = $00061445;
- EURO72LORESLACEDPF2_KEY = $00069445;
- EURO72PRODUCTLACEDPF2_KEY = $00069465;
- EURO72EXTRAHALFBRITE_KEY = $00061084;
- EURO72EXTRAHALFBRITELACE_KEY = $00061085;
- // New AA modes (V39)
- EURO72PRODUCTHAM_KEY = $00069824;
- EURO72PRODUCTHAMLACE_KEY = $00069825;
- EURO72LORESHAM_KEY = $00069804;
- EURO72LORESHAMLACE_KEY = $00069805;
- EURO72EXTRALORESHAM_KEY = EURO72HAM_KEY;
- EURO72EXTRALORESHAMLACE_KEY = EURO72HAMLACE_KEY ;
- EURO72EXTRALORESEHB_KEY = EURO72EXTRAHALFBRITE_KEY;
- EURO72EXTRALORESEHBLACE_KEY = EURO72EXTRAHALFBRITELACE_KEY;
- EURO72LORESEHB_KEY = $00069084;
- EURO72LORESEHBLACE_KEY = $00069085;
- EURO72EHB_KEY = $000690a4;
- EURO72EHBLACE_KEY = $000690a5;
- // These ModeIDs are the scandoubled equivalents of the above, with the
- // exception of the DualPlayfield modes, as AA does not allow for scandoubling dualplayfield.
- EURO72EXTRALORESDBL_KEY = $00061000;
- EURO72LORESDBL_KEY = $00069000;
- EURO72PRODUCTDBL_KEY = $00069020;
- EURO72EXTRALORESHAMDBL_KEY = $00061800;
- EURO72LORESHAMDBL_KEY = $00069800;
- EURO72PRODUCTHAMDBL_KEY = $00069820;
- EURO72EXTRALORESEHBDBL_KEY = $00061080;
- EURO72LORESEHBDBL_KEY = $00069080;
- EURO72PRODUCTEHBDBL_KEY = $000690a0;
- EURO36_MONITOR_ID = $00071000;
- // Euro36 modeids can be ORed with the default modeids a la NTSC and PAL.
- // For example, Euro36 SuperHires is (EURO36_MONITOR_ID OR SUPER_KEY)
- SUPER72_MONITOR_ID = $00081000;
- // Super72 modeids can be ORed with the default modeids a la NTSC and PAL. For example, Super72 SuperHiresLace (80$600) is
- // (SUPER72_MONITOR_ID OR SUPERLACE_KEY). The following scandoubled Modes are the exception:
- SUPER72LORESDBL_KEY = $00081008;
- SUPER72HIRESDBL_KEY = $00089008;
- SUPER72SUPERDBL_KEY = $00089028;
- SUPER72LORESHAMDBL_KEY = $00081808;
- SUPER72HIRESHAMDBL_KEY = $00089808;
- SUPER72SUPERHAMDBL_KEY = $00089828;
- SUPER72LORESEHBDBL_KEY = $00081088;
- SUPER72HIRESEHBDBL_KEY = $00089088;
- SUPER72SUPEREHBDBL_KEY = $000890a8;
- // These monitors and modes were added for the V39 release.
- DBLNTSC_MONITOR_ID = $00091000;
- DBLNTSCLORES_KEY = $00091000;
- DBLNTSCLORESFF_KEY = $00091004;
- DBLNTSCLORESHAM_KEY = $00091800;
- DBLNTSCLORESHAMFF_KEY = $00091804;
- DBLNTSCLORESEHB_KEY = $00091080;
- DBLNTSCLORESEHBFF_KEY = $00091084;
- DBLNTSCLORESLACE_KEY = $00091005;
- DBLNTSCLORESHAMLACE_KEY = $00091805;
- DBLNTSCLORESEHBLACE_KEY = $00091085;
- DBLNTSCLORESDPF_KEY = $00091400;
- DBLNTSCLORESDPFFF_KEY = $00091404;
- DBLNTSCLORESDPFLACE_KEY = $00091405;
- DBLNTSCLORESDPF2_KEY = $00091440;
- DBLNTSCLORESDPF2FF_KEY = $00091444;
- DBLNTSCLORESDPF2LACE_KEY = $00091445;
- DBLNTSCHIRES_KEY = $00099000;
- DBLNTSCHIRESFF_KEY = $00099004;
- DBLNTSCHIRESHAM_KEY = $00099800;
- DBLNTSCHIRESHAMFF_KEY = $00099804;
- DBLNTSCHIRESLACE_KEY = $00099005;
- DBLNTSCHIRESHAMLACE_KEY = $00099805;
- DBLNTSCHIRESEHB_KEY = $00099080;
- DBLNTSCHIRESEHBFF_KEY = $00099084;
- DBLNTSCHIRESEHBLACE_KEY = $00099085;
- DBLNTSCHIRESDPF_KEY = $00099400;
- DBLNTSCHIRESDPFFF_KEY = $00099404;
- DBLNTSCHIRESDPFLACE_KEY = $00099405;
- DBLNTSCHIRESDPF2_KEY = $00099440;
- DBLNTSCHIRESDPF2FF_KEY = $00099444;
- DBLNTSCHIRESDPF2LACE_KEY = $00099445;
- DBLNTSCEXTRALORES_KEY = $00091200;
- DBLNTSCEXTRALORESHAM_KEY = $00091a00;
- DBLNTSCEXTRALORESEHB_KEY = $00091280;
- DBLNTSCEXTRALORESDPF_KEY = $00091600;
- DBLNTSCEXTRALORESDPF2_KEY = $00091640;
- DBLNTSCEXTRALORESFF_KEY = $00091204;
- DBLNTSCEXTRALORESHAMFF_KEY = $00091a04;
- DBLNTSCEXTRALORESEHBFF_KEY = $00091284;
- DBLNTSCEXTRALORESDPFFF_KEY = $00091604;
- DBLNTSCEXTRALORESDPF2FF_KEY = $00091644;
- DBLNTSCEXTRALORESLACE_KEY = $00091205;
- DBLNTSCEXTRALORESHAMLACE_KEY = $00091a05;
- DBLNTSCEXTRALORESEHBLACE_KEY = $00091285;
- DBLNTSCEXTRALORESDPFLACE_KEY = $00091605;
- DBLNTSCEXTRALORESDPF2LACE_KEY = $00091645;
- DBLPAL_MONITOR_ID = $000a1000;
- DBLPALLORES_KEY = $000a1000;
- DBLPALLORESFF_KEY = $000a1004;
- DBLPALLORESHAM_KEY = $000a1800;
- DBLPALLORESHAMFF_KEY = $000a1804;
- DBLPALLORESEHB_KEY = $000a1080;
- DBLPALLORESEHBFF_KEY = $000a1084;
- DBLPALLORESLACE_KEY = $000a1005;
- DBLPALLORESHAMLACE_KEY = $000a1805;
- DBLPALLORESEHBLACE_KEY = $000a1085;
- DBLPALLORESDPF_KEY = $000a1400;
- DBLPALLORESDPFFF_KEY = $000a1404;
- DBLPALLORESDPFLACE_KEY = $000a1405;
- DBLPALLORESDPF2_KEY = $000a1440;
- DBLPALLORESDPF2FF_KEY = $000a1444;
- DBLPALLORESDPF2LACE_KEY = $000a1445;
- DBLPALHIRES_KEY = $000a9000;
- DBLPALHIRESFF_KEY = $000a9004;
- DBLPALHIRESHAM_KEY = $000a9800;
- DBLPALHIRESHAMFF_KEY = $000a9804;
- DBLPALHIRESLACE_KEY = $000a9005;
- DBLPALHIRESHAMLACE_KEY = $000a9805;
- DBLPALHIRESEHB_KEY = $000a9080;
- DBLPALHIRESEHBFF_KEY = $000a9084;
- DBLPALHIRESEHBLACE_KEY = $000a9085;
- DBLPALHIRESDPF_KEY = $000a9400;
- DBLPALHIRESDPFFF_KEY = $000a9404;
- DBLPALHIRESDPFLACE_KEY = $000a9405;
- DBLPALHIRESDPF2_KEY = $000a9440;
- DBLPALHIRESDPF2FF_KEY = $000a9444;
- DBLPALHIRESDPF2LACE_KEY = $000a9445;
- DBLPALEXTRALORES_KEY = $000a1200;
- DBLPALEXTRALORESHAM_KEY = $000a1a00;
- DBLPALEXTRALORESEHB_KEY = $000a1280;
- DBLPALEXTRALORESDPF_KEY = $000a1600;
- DBLPALEXTRALORESDPF2_KEY = $000a1640;
- DBLPALEXTRALORESFF_KEY = $000a1204;
- DBLPALEXTRALORESHAMFF_KEY = $000a1a04;
- DBLPALEXTRALORESEHBFF_KEY = $000a1284;
- DBLPALEXTRALORESDPFFF_KEY = $000a1604;
- DBLPALEXTRALORESDPF2FF_KEY = $000a1644;
- DBLPALEXTRALORESLACE_KEY = $000a1205;
- DBLPALEXTRALORESHAMLACE_KEY = $000a1a05;
- DBLPALEXTRALORESEHBLACE_KEY = $000a1285;
- DBLPALEXTRALORESDPFLACE_KEY = $000a1605;
- DBLPALEXTRALORESDPF2LACE_KEY = $000a1645;
- // Use these tags for passing to BestModeID() (V39)
- //SPECIAL_FLAGS = DIPF_IS_DUALPF or DIPF_IS_PF2PRI or DIPF_IS_HAM or DIPF_IS_EXTRAHALFBRITE;
- BIDTAG_DIPFMustHave = $80000001; // mask of the DIPF_ flags the ModeID must have Default - nil
- BIDTAG_DIPFMustNotHave = $80000002; // mask of the DIPF_ flags the ModeID must not have Default - SPECIAL_FLAGS
- BIDTAG_ViewPort = $80000003; // ViewPort for which a ModeID is sought. Default - nil
- BIDTAG_NominalWidth = $80000004; // \ together make the aspect ratio and | Default - SourceID NominalDimensionInfo,
- BIDTAG_NominalHeight = $80000005; // / override the vp->Width/Height. | or vp->DWidth/Height, or (640 * 200), in that preferred order.
- BIDTAG_DesiredWidth = $80000006; // \ Nominal Width and Height of the
- BIDTAG_DesiredHeight = $80000007; // / returned ModeID. Default - same as Nominal
- BIDTAG_Depth = $80000008; // ModeID must support this depth. Default - vp->RasInfo->BitMap->Depth or 1
- BIDTAG_MonitorID = $80000009; // ModeID must use this monitor. Default - use best monitor available
- BIDTAG_SourceID = $8000000a; // instead of a ViewPort. Default - VPModeID(vp) if BIDTAG_ViewPort is specified, else leave the DIPFMustHave and DIPFMustNotHave values untouched.
- BIDTAG_RedBits = $8000000b; // \
- BIDTAG_BlueBits = $8000000c; // > Match up from the database Default - 4
- BIDTAG_GreenBits = $8000000d; // /
- BIDTAG_GfxPrivate = $8000000e; // Private
- BIDTAG_MaxDepth = $8000000f; // Maximum depth ModeID must have.
- const
- // bplcon0 defines
- MODE_640 = $8000;
- PLNCNTMSK = $7; // how many bit planes? 0 = none, 1->6 = 1->6, 7 = reserved
- PLNCNTSHFT = 12; // bits to shift for bplcon0
- PF2PRI = $40; // bplcon2 bit
- COLORON = $0200; // disable color burst
- DBLPF = $400;
- HOLDNMODIFY = $800;
- INTERLACE = 4; // interlace mode for 400
- // bplcon1 defines
- PFA_FINE_SCROLL = $F;
- PFB_FINE_SCROLL_SHIFT = 4;
- PF_FINE_SCROLL_MASK = $F;
- // display window start and stop defines
- DIW_HORIZ_POS = $7F; // horizontal start/stop
- DIW_VRTCL_POS = $1FF; // vertical start/stop
- DIW_VRTCL_POS_SHIFT = $7;
- // Data fetch start/stop horizontal position
- DFTCH_MASK = $FF;
- // vposr bits
- VPOSRLOF = $8000;
- // for displayinfo database
- // datachunk type identifiers
- DTAG_DISP = $80000000;
- DTAG_DIMS = $80001000;
- DTAG_MNTR = $80002000;
- DTAG_NAME = $80003000;
- DTAG_VEC = $80004000; // internal use only
- type
- // the "public" handle to a DisplayInfoRecord
- DisplayInfoHandle = APTR;
- PQueryHeader = ^TQueryHeader;
- TQueryHeader = record
- StructID: LongWord; // datachunk type identifier
- DisplayID: LongWord; // copy of display record key
- SkipID: LongWord; // TAG_SKIP -- see tagitems.h
- Length: LongWord; // length of local data in double-longwords
- end;
- PDisplayInfo = ^TDisplayInfo;
- TDisplayInfo = record
- Header: TQueryHeader;
- NotAvailable: Word; // if 0 available, else see defines
- PropertyFlags: LongWord; // Properties of this mode see defines
- Resolution: TPoint; // ticks-per-pixel X/Y
- PixelSpeed: Word; // aproximation in nanoseconds
- NumStdSprites: Word; // number of standard amiga sprites
- PaletteRange: Word; // OBSOLETE - use Red/Green/Blue bits instead
- SpriteResolution: TPoint; // std sprite ticks-per-pixel X/Y
- Pad: array[0..3] of Byte; // used internally
- RedBits: Byte; // number of Red bits display supports (V39)
- GreenBits: Byte; // number of Green bits display supports (V39)
- BlueBits: Byte; // number of Blue bits display supports (V39)
- Pad2: array[0..4] of Byte; // find some use for this.
- RTGBoardNum: Byte; // RTG board number this mode belongs to (V53)
- PixelFormat: LongWord; // Pixel format (enPixelFormat) (V54)
- Reserved: Array[0..1] of LongWord; // terminator
- end;
- const
- // availability
- DI_AVAIL_NOCHIPS = $0001; // No custom chips
- DI_AVAIL_NOMONITOR = $0002; // No suitable monitor
- DI_AVAIL_NOTWITHGENLOCK = $0004; // Not allowed with genlock
- DI_AVAIL_INVALID = $1000; // Mode is invalid (V54)
- DI_AVAIL_MONITOOL = $2000; // Reserved; do not use (V54)
- // mode properties
- DIPF_IS_LACE = $00000001;
- DIPF_IS_DUALPF = $00000002;
- DIPF_IS_PF2PRI = $00000004;
- DIPF_IS_HAM = $00000008;
- DIPF_IS_ECS = $00000010; // note: ECS modes (SHIRES, VGA, AND PRODUCTIVITY) do not support attached sprites.
- DIPF_IS_AA = $00010000; // AA modes - may only be available if machine has correct memory type to support required
- // bandwidth - check availability. (V39)
- DIPF_IS_PAL = $00000020;
- DIPF_IS_SPRITES = $00000040;
- DIPF_IS_GENLOCK = $00000080;
- DIPF_IS_WB = $00000100;
- DIPF_IS_DRAGGABLE = $00000200;
- DIPF_IS_PANELLED = $00000400;
- DIPF_IS_BEAMSYNC = $00000800;
- DIPF_IS_EXTRAHALFBRITE = $00001000;
- DIPF_IS_SPRITES_ATT = $00002000; // supports attached sprites (V39)
- DIPF_IS_SPRITES_CHNG_RES = $00004000; // supports variable sprite resolution (V39)
- DIPF_IS_SPRITES_BORDER = $00008000; // sprite can be displayed in the border (V39)
- DIPF_IS_SCANDBL = $00020000; // scan doubled (V39)
- DIPF_IS_SPRITES_CHNG_BASE = $00040000; // can change the sprite base colour (V39)
- DIPF_IS_SPRITES_CHNG_PRI = $00080000; // can change the sprite priority with respect to the playfield(s). (V39)
- DIPF_IS_DBUFFER = $00100000; // can support double buffering (V39)
- DIPF_IS_PROGBEAM = $00200000; // is a programmed beam-sync mode (V39)
- DIPF_IS_HWCOMPOSITE = $00400000; // can support hardware compositing (V53)
- DIPF_IS_PREFERREDMODE = $00800000; // preferred/native resolution of monitor (V53)
- DIPF_IS_RTG = $80000000; // mode is RTG and does not use the native chip set
- DIPF_IS_FOREIGN = DIPF_IS_RTG; // Old synonym not to be used in any new code.
- Type
- PDimensionInfo =^TDimensionInfo;
- TDimensionInfo = record
- Header: TQueryHeader;
- MaxDepth: Word; // log2(max number of colors)
- MinRasterWidth: Word; // minimum width in pixels
- MinRasterHeight: Word; // minimum height in pixels
- MaxRasterWidth: Word; // maximum width in pixels
- MaxRasterHeight: Word; // maximum height in pixels
- Nominal: TRectangle; // "standard" dimensions
- MaxOScan: TRectangle; // fixed, hardware dependant
- VideoOScan: TRectangle; // fixed, hardware dependant
- TxtOScan: TRectangle; // editable via preferences
- StdOScan: TRectangle; // editable via preferences
- Pad: array[0..13] of Byte;
- Reserved: array[0..1] of LongWord; // terminator
- end;
- PMonitorInfo = ^TMonitorInfo;
- TMonitorInfo = record
- Header: TQueryHeader;
- Mspc: PMonitorSpec; // pointer to monitor spec.
- ViewPosition: TPoint; // editable via preferences
- ViewResolution: TPoint; // standard monitor ticks-per-pixel
- ViewPositionRange: TRectangle; // fixed, hardware dependent
- TotalRows: Word; // display height in scanlines
- TotalColorClocks: Word; // scanline width in 280 ns units
- MinRow: Word; // absolute min. active scanline
- Compatibility: SmallInt; // how this coexists with others
- Pad: Array[0..31] of Byte;
- MouseTicks: TPoint;
- DefaultViewPosition: TPoint; // original, never changes
- PreferredModeID: LongWord; // for Preferences
- Reserved: array[0..1] of LongWord; // terminator
- end;
- // monitor compatibility
- const
- MCOMPAT_MIXED = 0; // can share display with other MCOMPAT_MIXED
- MCOMPAT_SELF = 1; // can share only within same monitor
- MCOMPAT_NOBODY = -1; // only one viewport at a time
- DISPLAYNAMELEN = 32;
- type
- PNameInfo = ^TNameInfo;
- TNameInfo = record
- Header: tQueryHeader;
- Name: array[0..DISPLAYNAMELEN-1] of AnsiChar;
- Reserved: array[0..1] of LongWord; // terminator
- end;
- // *********************************************************************
- // The following VecInfo structure is PRIVATE, for our use only
- // Touch these, and burn! (V39)
- PVecInfo = ^TVecInfo;
- TVecInfo = record
- Header: TQueryHeader;
- Vec: APTR;
- Data: APTR;
- vi_Type: Word;
- Pad: array[0..2] of Word;
- Reserved: array[0..1] of LongWord;
- end;
- const
- VTAG_END_CM = $00000000;
- VTAG_CHROMAKEY_CLR = $80000000;
- VTAG_CHROMAKEY_SET = $80000001;
- VTAG_BITPLANEKEY_CLR = $80000002;
- VTAG_BITPLANEKEY_SET = $80000003;
- VTAG_BORDERBLANK_CLR = $80000004;
- VTAG_BORDERBLANK_SET = $80000005;
- VTAG_BORDERNOTRANS_CLR = $80000006;
- VTAG_BORDERNOTRANS_SET = $80000007;
- VTAG_CHROMA_PEN_CLR = $80000008;
- VTAG_CHROMA_PEN_SET = $80000009;
- VTAG_CHROMA_PLANE_SET = $8000000A;
- VTAG_ATTACH_CM_SET = $8000000B;
- VTAG_NEXTBUF_CM = $8000000C;
- VTAG_BATCH_CM_CLR = $8000000D;
- VTAG_BATCH_CM_SET = $8000000E;
- VTAG_NORMAL_DISP_GET = $8000000F;
- VTAG_NORMAL_DISP_SET = $80000010;
- VTAG_COERCE_DISP_GET = $80000011;
- VTAG_COERCE_DISP_SET = $80000012;
- VTAG_VIEWPORTEXTRA_GET = $80000013;
- VTAG_VIEWPORTEXTRA_SET = $80000014;
- VTAG_CHROMAKEY_GET = $80000015;
- VTAG_BITPLANEKEY_GET = $80000016;
- VTAG_BORDERBLANK_GET = $80000017;
- VTAG_BORDERNOTRANS_GET = $80000018;
- VTAG_CHROMA_PEN_GET = $80000019;
- VTAG_CHROMA_PLANE_GET = $8000001A;
- VTAG_ATTACH_CM_GET = $8000001B;
- VTAG_BATCH_CM_GET = $8000001C;
- VTAG_BATCH_ITEMS_GET = $8000001D;
- VTAG_BATCH_ITEMS_SET = $8000001E;
- VTAG_BATCH_ITEMS_ADD = $8000001F;
- VTAG_VPMODEID_GET = $80000020;
- VTAG_VPMODEID_SET = $80000021;
- VTAG_VPMODEID_CLR = $80000022;
- VTAG_USERCLIP_GET = $80000023;
- VTAG_USERCLIP_SET = $80000024;
- VTAG_USERCLIP_CLR = $80000025;
- //The following tags are V39 specific. They will be ignored (returing error -3) by earlier versions
- VTAG_PF1_BASE_GET = $80000026;
- VTAG_PF2_BASE_GET = $80000027;
- VTAG_SPEVEN_BASE_GET = $80000028;
- VTAG_SPODD_BASE_GET = $80000029;
- VTAG_PF1_BASE_SET = $8000002a;
- VTAG_PF2_BASE_SET = $8000002b;
- VTAG_SPEVEN_BASE_SET = $8000002c;
- VTAG_SPODD_BASE_SET = $8000002d;
- VTAG_BORDERSPRITE_GET = $8000002e;
- VTAG_BORDERSPRITE_SET = $8000002f;
- VTAG_BORDERSPRITE_CLR = $80000030;
- VTAG_SPRITERESN_SET = $80000031;
- VTAG_SPRITERESN_GET = $80000032;
- VTAG_PF1_TO_SPRITEPRI_SET = $80000033;
- VTAG_PF1_TO_SPRITEPRI_GET = $80000034;
- VTAG_PF2_TO_SPRITEPRI_SET = $80000035;
- VTAG_PF2_TO_SPRITEPRI_GET = $80000036;
- VTAG_IMMEDIATE = $80000037;
- VTAG_FULLPALETTE_SET = $80000038;
- VTAG_FULLPALETTE_GET = $80000039;
- VTAG_FULLPALETTE_CLR = $8000003A;
- VTAG_DEFSPRITERESN_SET = $8000003B;
- VTAG_DEFSPRITERESN_GET = $8000003C;
- {all the following tags follow the new, rational standard for videocontrol tags:
- VC_xxx,state set the state of attribute 'xxx' to value 'state'
- VC_xxx_QUERY,&var get the state of attribute 'xxx' and store it into the longword
- pointed to by &var.
- The following are new for V40:}
- VC_IntermediateCLUpdate = $80000080; // default=true. When set graphics will update the intermediate copper
- // lists on color changes, etc. When false, it won't, and will be faster.
- VC_IntermediateCLUpdate_Query = $80000081;
- VC_NoColorPaletteLoad = $80000082; // default = false. When set, graphics will only load color 0 for this ViewPort, and so the ViewPort's colors will come
- // from the previous ViewPort's. NB - Using this tag and VTAG_FULLPALETTE_SET together is undefined.
- VC_NoColorPaletteLoad_Query = $80000083;
- VC_DUALPF_Disable = $80000084;
- { default = false. When this flag is set, the dual-pf bit
- in Dual-Playfield screens will be turned off. Even bitplanes
- will still come from the first BitMap and odd bitplanes
- from the second BitMap, and both R[xy]Offsets will be
- considered. This can be used (with appropriate palette
- selection) for cross-fades between differently scrolling
- images.
- When this flag is turned on, colors will be loaded for
- the viewport as if it were a single viewport of depth
- depth1+depth2 }
- VC_DUALPF_Disable_Query = $80000085;
- VC_DPMSLevel = $80000086; //default = DPMSLEVEL_ON Sets the DPMS level for the associated viewport. See enDPMSLevel for values. (V54)
- // enDPMSLevel
- DPMSLEVEL_ON = 0; // Full operation (no power saving)
- DPMSLEVEL_STANDBY = 1; // Optional state of minimal power reduction
- DPMSLEVEL_SUSPEND = 2; // Significant reduction of power consumption
- DPMSLEVEL_OFF = 3; // Lowest level of power consumption
- SPRITE_ATTACHED = $80;
- type
- PSimpleSprite = ^TSimpleSprite;
- TSimpleSprite = record
- posctldata: PWord;
- height: Word;
- x, y: Word; // current position
- num: Word;
- end;
- PExtSprite = ^TExtSprite;
- TExtSprite = record
- es_SimpleSprite: TSimpleSprite; // conventional simple sprite structure
- es_wordwidth: Word; // graphics use only, subject to change
- es_flags: Word; // graphics use only, subject to change
- end;
- const
- // tags for AllocSpriteData()
- SPRITEA_Width = $81000000;
- SPRITEA_XReplication = $81000002;
- SPRITEA_YReplication = $81000004;
- SPRITEA_OutputHeight = $81000006;
- SPRITEA_Attached = $81000008;
- SPRITEA_OldDataFormat = $8100000a; // MUST pass in outputheight if using this tag
- // tags for GetExtSprite()
- GSTAG_SPRITE_NUM = $82000020;
- GSTAG_ATTACHED = $82000022;
- GSTAG_SOFTSPRITE = $82000024;
- // tags valid for either GetExtSprite or ChangeExtSprite
- GSTAG_SCANDOUBLED = $83000000; // request "NTSC-Like" height if possible.
- type
- PBitScaleArgs = ^TBitScaleArgs;
- TBitScaleArgs = record
- bsa_SrcX, bsa_SrcY, // source origin
- bsa_SrcWidth, bsa_SrcHeight, // source size
- bsa_XSrcFactor, bsa_YSrcFactor, // scale factor denominators
- bsa_DestX, bsa_DestY, // destination origin
- bsa_DestWidth, bsa_DestHeight, // destination size result
- bsa_XDestFactor, bsa_YDestFactor: Word; // scale factor numerators
- bsa_SrcBitMap, // source BitMap
- bsa_DestBitMap: PBitMap; // destination BitMap
- bsa_Flags: LongWord; // reserved. Must be zero!
- bsa_XDDA, bsa_YDDA: Word; // reserved
- bsa_Reserved1, // "
- bsa_Reserved2: LongInt; // "
- end;
- const
- BSAF_RESERVED1 = 1;
- BSAF_RESERVED2 = 2;
- BSAF_AVERAGE = 4;
- BSAF_BILINEAR = 8;
- // tag definitions for GetRPAttr, SetRPAttr
- const
- RPTAG_Font = $80000000; // get/set font
- RPTAG_APen = $80000002; // get/set apen
- RPTAG_BPen = $80000003; // get/set bpen
- RPTAG_DrMd = $80000004; // get/set draw mode
- RPTAG_OutlinePen = $80000005; // get/set outline pen
- RPTAG_OPen = $80000005; // get/set outline pen, short alias
- RPTAG_WriteMask = $80000006; // get/set WriteMask
- RPTAG_MaxPen = $80000007; // get/set maxpen
- RPTAG_DrawBounds = $80000008; // get only rastport draw bounds. pass @rect
- // V51 extensions
- RPTAG_APenColor = $80000009; // get/set apen color = $aarrggbb
- RPTAG_BPenColor = $8000000A; // get/set bpen color = $aarrggbb
- RPTAG_OPenColor = $8000000B; // get/set open color = $aarrggbb
- RPTAG_OutlinePenColor = $8000000B; // get/set open color = $aarrggbb. alias.
- RPTAG_RemapColorFonts = $8000000C; // get/set
- RPTAG_BitMap = $8000000D; // get/set bitmap of rastport
- // V54 extensions
- RPTAG_XPos = $8000000E; // get/set x position
- RPTAG_YPos = $8000000F; // get/set y position
- type
- PBltNode= Pointer; // in Hardware
- PGfxBase = ^TGfxBase;
- TGfxBase = record
- LibNode: TLibrary;
- ActiView: PView;
- copinit: PCopInit; // ptr to copper start up list
- cia: PLongInt; // for 8520 resource use
- blitter: PLongInt; // for future blitter resource use
- LOFlist: PWord;
- SHFlist: PWord;
- blthd: PBltNode;
- blttl: PBltNode;
- bsblthd: PBltNode;
- bsblttl: PBltNode;
- vbsrv: TInterrupt;
- timsrv: TInterrupt;
- bltsrv: TInterrupt;
- TextFonts: TList;
- DefaultFont: PTextFont;
- Modes: Word; // copy of current first bplcon0
- VBlank: Shortint;
- Debug: Shortint;
- BeamSync: SmallInt;
- system_bplcon0: SmallInt; // it is ored into each bplcon0 for display
- SpriteReserved: Byte;
- bytereserved: Byte;
- Flags: Word;
- BlitLock: SmallInt;
- BlitNest: SmallInt;
- BlitWaitQ: TList;
- BlitOwner: PTask;
- TOF_WaitQ: TList;
- DisplayFlags: Word; // NTSC PAL GENLOC etc. flags initialized at power on
- SimpleSprites: Pointer; // PPSimpleSprite
- MaxDisplayRow: Word; // hardware stuff, do not use
- MaxDisplayColumn: Word; // hardware stuff, do not use
- NormalDisplayRows: Word;
- NormalDisplayColumns: Word;
- // the following are for standard non interlace, 1/2 wb width
- NormalDPMX: Word; // Dots per meter on display
- NormalDPMY: Word; // Dots per meter on display
- LastChanceMemory: PSignalSemaphore;
- LCMptr: Pointer;
- MicrosPerLine: Word; // 256 time usec/line
- MinDisplayColumn: Word;
- ChipRevBits0: Byte;
- MemType: Byte;
- crb_reserved: array[0..3] of Byte;
- monitor_id: Word;
- hedley: array[0..7] of LongWord;
- hedley_sprites: array[0..7] of LongWord; // sprite ptrs for intuition mouse
- hedley_sprites1: array[0..7] of LongWord; // sprite ptrs for intuition mouse
- hedley_count: SmallInt;
- hedley_flags: Word;
- hedley_tmp: smallint;
- hash_table: PLongInt;
- current_tot_rows: Word;
- current_tot_cclks: Word;
- hedley_hint: Byte;
- hedley_hint2: Byte;
- nreserved: array[0..3] of LongWord;
- a2024_sync_raster: PLongInt;
- control_delta_pal: Word;
- control_delta_ntsc: Word;
- current_monitor: PMonitorSpec;
- MonitorList: TList;
- default_monitor: PMonitorSpec;
- MonitorListSemaphore: PSignalSemaphore;
- DisplayInfoDataBase: Pointer;
- TopLine: Word;
- ActiViewCprSemaphore: PSignalSemaphore;
- UtilityBase: Pointer; // for hook AND tag utilities
- ExecBase: Pointer; // to link with rom.lib
- bwshifts: PByte;
- StrtFetchMasks: PWord;
- StopFetchMasks: PWord;
- Overrun: PWord;
- RealStops: PSmallInt;
- SpriteWidth: Word; // current width (in words) of sprites
- SpriteFMode: Word; // current sprite fmode bits
- SoftSprites: SHortInt; // bit mask of size change knowledgeable sprites
- arraywidth: Shortint;
- DefaultSpriteWidth: Word; // what width intuition wants
- SprMoveDisable: Shortint;
- WantChips: Byte;
- BoardMemType: Byte;
- Bugs: Byte;
- gb_LayersBase: Pointer;
- ColorMask: LongWord;
- IVector: APTR;
- IData: APTR;
- SpecialCounter: LongWord; // special for double buffering
- DBList: APTR;
- MonitorFlags: Word;
- ScanDoubledSprites: Byte;
- BP3Bits: Byte;
- MonitorVBlank: TAnalogSignalInterval;
- natural_monitor: PMonitorSpec;
- ProgData: APTR;
- ExtSprites: Byte;
- ClassicAmiga: Byte; // Private - dont use
- GfxFlags: Word;
- VBCounter: LongWord;
- HashTableSemaphore: PSignalSemaphore;
- HWEmul: array[0..8] of PLongWord;
- // Added in V46
- DefaultCharSet: LongWord; // Private - for diskfont.library
- RegionPool: APTR; // Private
- RegionPoolSemaphore: PSignalSemaphore; // private
- // Added in V47
- DiskfontBase: PLibrary; // Private - for diskfont.library
- // Added in V48
- Antialiasing: LongWord; // Private - for diskfont.library
- // There are more fields beyond here and they are all private.
- end;
- const
- // Values for GfxBase^.DisplayFlags
- NTSC = 1;
- GENLOC = 2;
- PAL = 4;
- TODA_SAFE = 8;
- REALLY_PAL = 16; // what is actual crystal frequency (as opposed to what bootmenu set the agnus to)? (V39)
- LPEN_SWAP_FRAMES = 32; // for LightpenSoftware (V40)
- // bits for dalestuff, which may go away when blitter becomes a resource
- QBOWNERn = 1; // blitter owned by blit queuer
- BLITMSG_FAULTn = 2;
- QBOWNER = 1 shl QBOWNERn;
- BLITMSG_FAULT = 1 shl BLITMSG_FAULTn;
- // bits defs for ChipRevBits
- GFXB_BIG_BLITS = 0;
- GFXB_HR_AGNUS = 0;
- GFXB_HR_DENISE = 1;
- GFXB_AA_ALICE = 2;
- GFXB_AA_LISA = 3;
- GFXB_AA_MLISA = 4; // internal use only.
- GFXF_BIG_BLITS = 1;
- GFXF_HR_AGNUS = 1;
- GFXF_HR_DENISE = 2;
- GFXF_AA_ALICE = 4;
- GFXF_AA_LISA = 8;
- GFXF_AA_MLISA = 16; // internal use only
- // Pass ONE of these to SetChipRev()
- SETCHIPREV_A = GFXF_HR_AGNUS;
- SETCHIPREV_ECS = GFXF_HR_AGNUS or GFXF_HR_DENISE;
- SETCHIPREV_AA = GFXF_AA_ALICE or GFXF_AA_LISA or SETCHIPREV_ECS;
- SETCHIPREV_BEST= $ffffffff;
- // memory type
- BUS_16 = 0;
- NML_CAS = 0;
- BUS_32 = 1;
- DBL_CAS = 2;
- BANDWIDTH_1X = BUS_16 or NML_CAS;
- BANDWIDTH_2XNML = BUS_32;
- BANDWIDTH_2XDBL = DBL_CAS;
- BANDWIDTH_4X = BUS_32 or DBL_CAS;
- // Values for GfxBase->GfxFlags
- GFXF_NEW_DATABASE = $0001; // New display database
- GFXF_HAVECOMPOSITE = $0002; // CompositeTagList() is available
- GRAPHICSNAME: PAnsiChar = 'graphics.library';
- var
- GfxBase: PLibrary = nil;
- IGfx: PInterface = nil;
- function GfxObtain(): LongWord; syscall IGfx 60;
- function GfxRelease(): LongWord; syscall IGfx 64;
- procedure GfxExpunge(); syscall IGfx 68;
- function GfxClone(): PInterface; syscall IGfx 72;
- function BltBitMap(const SrcBitMap: PBitMap; XSrc, YSrc: LongInt; DestBitMap: PBitMap; XDest, YDest, XSize, YSize: LongInt; MinTerm, Mask: LongWord; TempA: PAnsiChar): LongInt; syscall IGfx 76;
- procedure BltTemplate(const Source: TPlanePtr; XSrc, SrcMod: LongInt; DestRP: PRastPort; XDest, YDest, XSize, YSize: LongInt); syscall IGfx 80;
- procedure ClearEOL(Rp: PRastPort); syscall IGfx 84;
- procedure ClearScreen(Rp: PRastPort); syscall IGfx 88;
- function TextLength(Rp: PRastPort; const String_: PAnsiChar; Count: LongWord): LongInt; syscall IGfx 92;
- procedure GfxText(Rp: PRastPort; const String_: PAnsiChar; Count: LongWord); syscall IGfx 96;
- procedure SetFont(Rp: PRastPort; const TextFont: PTextFont); syscall IGfx 100;
- function OpenFont(TextAttr: PTextAttr): PTextFont; syscall IGfx 104;
- procedure CloseFont(TextFont: PTextFont); syscall IGfx 108;
- function AskSoftStyle(Rp: PRastPort): LongWord; syscall IGfx 112;
- function SetSoftStyle(Rp: PRastPort; Style: LongWord; Enable: LongWord): LongWord; syscall IGfx 116;
- procedure AddBob(Bob: PBob; Rp: PRastPort); syscall IGfx 120;
- procedure AddVSprite(VSprite: PVSprite; Rp: PRastPort); syscall IGfx 124;
- procedure DoCollision(Rp: PRastPort); syscall IGfx 128;
- procedure DrawGList(Rp: PRastPort; Vp: PViewPort); syscall IGfx 132;
- procedure InitGels(Head: PVSprite; Tail: PVSprite; GelsInfo: PGelsInfo); syscall IGfx 136;
- procedure InitMasks(VSprite: PVSprite); syscall IGfx 140;
- procedure RemIBob(Bob: PBob; Rp: PRastPort; Vp: PViewPort); syscall IGfx 144;
- procedure RemVSprite(VSprite: PVSprite); syscall IGfx 148;
- procedure SetCollision(Num: LongWord; Routine: Pointer; GelsInfo: PGelsInfo); syscall IGfx 152;
- procedure SortGList(Rp: PRastPort); syscall IGfx 156;
- procedure AddAnimOb(AnOb: PAnimOb; AnKey: PPAnimOb; Rp: PRastPort); syscall IGfx 160;
- procedure Animate(AnKey: PPAnimOb; Rp: PRastPort); syscall IGfx 164;
- function GetGBuffers(AnOb: PAnimOb; Rp: PRastPort; Flag: LongInt): LongBool; syscall IGfx 168;
- procedure InitGMasks(AnOb: PAnimOb); syscall IGfx 172;
- procedure DrawEllipse(Rp: PRastPort; XCenter, YCenter, A, B: LongInt); syscall IGfx 176;
- function AreaEllipse(Rp: PRastPort; XCenter, YCenter, A, B: LongInt): LongInt; syscall IGfx 180;
- procedure LoadRGB4(Vp: PViewPort; const Colors: PWord; Count: LongWord); syscall IGfx 184;
- procedure InitRastPort(Rp: PRastPort); syscall IGfx 188;
- procedure InitVPort(Vp: PViewPort); syscall IGfx 192;
- function MrgCop(View: PView): LongWord; syscall IGfx 196;
- function MakeVPort(View: PView; Vp: PViewPort): LongWord; syscall IGfx 200;
- procedure LoadView(View: PView); syscall IGfx 204;
- procedure WaitBlit; syscall IGfx 208;
- procedure SetRast(Rp: PRastPort; Pen: LongWord); syscall IGfx 212;
- procedure GfxMove(Rp: PRastPort; X, Y: LongInt); syscall IGfx 216;
- procedure Draw(Rp: PRastPort; X, Y: LongInt); syscall IGfx 220;
- function AreaMove(Rp: PRastPort; X, Y: LongInt): LongInt; syscall IGfx 224;
- function AreaDraw(Rp: PRastPort; X, Y: LongInt): LongInt; syscall IGfx 228;
- function AreaEnd(Rp: PRastPort): LongInt; syscall IGfx 232;
- procedure WaitTOF; syscall IGfx 236;
- procedure QBlit(blit: PBltNode); syscall IGfx 240;
- procedure InitArea(AreaInfo: PAreaInfo; VectorBuffer: APTR; MaxVectors: LongInt); syscall IGfx 244;
- procedure SetRGB4(Vp: PViewPort; ColIndex: LongWord; Red, Green, Blue: LongWord); syscall IGfx 248;
- procedure QBSBlit(Blit: PBltNode); syscall IGfx 252;
- procedure BltClear(MemBlock: TPlanePtr; ByteCount, Flags: LongWord); syscall IGfx 256;
- procedure RectFill(Rp: PRastPort; XMin, YMin, XMax, YMax: LongInt); syscall IGfx 260;
- procedure BltPattern(Rp: PRastPort; const Mask: TPlanePtr; XMin, YMin, XMax, YMax: LongInt; MaskBPR: LongWord); syscall IGfx 264;
- function ReadPixel(Rp: PRastPort; X, Y: LongInt): LongInt; syscall IGfx 268;
- function WritePixel(Rp: PRastPort; X, Y: LongInt): LongInt; syscall IGfx 272;
- function Flood(Rp: PRastPort; Mode: LongWord; X, Y: LongInt): LongBool; syscall IGfx 276;
- procedure PolyDraw(Rp: PRastPort; Count: LongInt; const PolyTable: PSmallInt); syscall IGfx 280;
- procedure SetAPen(Rp: PRastPort; Pen: LongWord); syscall IGfx 284;
- procedure SetBPen(Rp: PRastPort; Pen: LongWord); syscall IGfx 288;
- procedure SetDrMd(Rp: PRastPort; DrawMode: LongWord); syscall IGfx 292;
- procedure InitView(View: PView); syscall IGfx 296;
- procedure CBump(CopList: PUCopList); syscall IGfx 300;
- procedure CMove(CopList: PUCopList; DestOffset: LongInt; data: LongInt); syscall IGfx 304;
- procedure CWait(CopList: PUCopList; V, H: LongInt); syscall IGfx 308;
- function VBeamPos: LongInt; syscall IGfx 312;
- procedure InitBitMap(BitMap: PBitMap; Depth: LongInt; Width, Height: LongWord); syscall IGfx 316;
- procedure ScrollRaster(Rp: PRastPort; Dx, Dy, XMin, YMin, XMax, YMax: LongInt); syscall IGfx 320;
- procedure WaitBOVP(Vp: PViewPort); syscall IGfx 324;
- function GetSprite(Sprite: PSimpleSprite; Num: LongInt): LongInt; syscall IGfx 328;
- procedure FreeSprite(Num: LongInt); syscall IGfx 332;
- procedure ChangeSprite(Vp: PViewPort; Sprite: PSimpleSprite; NewData: APTR); syscall IGfx 336;
- procedure MoveSprite(Vp: PViewPort; Sprite: PSimpleSprite; X, Y: LongInt); syscall IGfx 340;
- procedure LockLayerRom(Layer: PLayer); syscall IGfx 344;
- procedure UnlockLayerRom(Layer: PLayer); syscall IGfx 348;
- procedure SyncSBitMap(Layer: PLayer); syscall IGfx 352;
- procedure CopySBitMap(Layer: PLayer); syscall IGfx 356;
- procedure OwnBlitter; syscall IGfx 360;
- procedure DisownBlitter; syscall IGfx 364;
- function InitTmpRas(TmpRas: PTmpRas; Buffer: TPlanePtr; Size: LongInt): PTmpRas; syscall IGfx 368;
- procedure AskFont(Rp: PRastPort; TextAttr: PTextAttr); syscall IGfx 372;
- procedure AddFont(TextFont: PTextFont); syscall IGfx 376;
- procedure RemFont(TextFont: PTextFont); syscall IGfx 380;
- function AllocRaster(Width, Height: LongWord): TPlanePtr; syscall IGfx 384;
- procedure FreeRaster(P: TPlanePtr; Width, Height: LongWord); syscall IGfx 388;
- procedure AndRectRegion(Region: PRegion; const Rectangle: PRectangle); syscall IGfx 392;
- function OrRectRegion(Region: PRegion; const Rectangle: PRectangle): LongBool; syscall IGfx 396;
- function NewRegion: PRegion; syscall IGfx 400;
- function ClearRectRegion(Region: PRegion; const Rectangle: PRectangle): LongBool; syscall IGfx 404;
- procedure ClearRegion(Region: PRegion); syscall IGfx 408;
- procedure DisposeRegion(Region: PRegion); syscall IGfx 412;
- procedure FreeVPortCopLists(Vp: PViewPort); syscall IGfx 416;
- procedure FreeCopList(CopList: PCopList); syscall IGfx 420;
- procedure ClipBlit(SrcRP: PRastPort; XSrc, ySrc: LongInt; DestRP: PRastPort; XDest, YDest, XSize, YSize: LongWord; MinTerm: LongWord); syscall IGfx 424;
- function XorRectRegion(Region: PRegion; const Rectangle: PRectangle): LongBool; syscall IGfx 428;
- procedure FreeCprList(CprList: PCprList); syscall IGfx 432;
- function GetColorMap(Entries: LongWord): PColorMap; syscall IGfx 436;
- procedure FreeColorMap(ColorMap: PColorMap); syscall IGfx 440;
- function GetRGB4(ColorMap: PColorMap; Entry: LongWord): LongInt; syscall IGfx 444;
- procedure ScrollVPort(Vp: PViewPort); syscall IGfx 448;
- function UCopperListInit(UCopList: PUCopList; N: LongInt): PCopList; syscall IGfx 452;
- procedure FreeGBuffers(AnOb: PAnimOb; Rp: PRastPort; Flag: LongInt); syscall IGfx 456;
- function BltBitMaPRastPort(const SrcBitMap: PBitMap; XSrc, YSrc: LongInt; DestRP: PRastPort; XDest, YDest, XSize, YSize: LongInt; Minterm: LongWord): LongBool; syscall IGfx 460;
- function OrRegionRegion(const SrcRegion: PRegion; DestRegion: PRegion): LongBool; syscall IGfx 464;
- function XorRegionRegion(const SrcRegion: PRegion; DestRegion: PRegion): LongBool; syscall IGfx 468;
- function AndRegionRegion(const SrcRegion: PRegion; DestRegion: PRegion): LongBool; syscall IGfx 472;
- procedure SetRGB4CM(ColorMap: PColorMap; ColIndex: LongWord; Red, Green, Blue: LongWord); syscall IGfx 476;
- procedure BltMaskBitMapRastPort(const SrcBitMap: PBitMap; XSrc, YSrc: LongInt; DestRP: PRastPort; XDest, YDest, XSize, YSize: LongInt; MinTerm: LongWord; const BltMask: TPlanePtr); syscall IGfx 480;
- // 484 private
- // 488 private
- function AttemptLockLayerRom(Layer: PLayer): LongBool; syscall IGfx 492;
- function GfxNew(GfxNodeType: LongWord): APTR; syscall IGfx 496;
- procedure GfxFree(GfxNodePtr: PExtendedNode); syscall IGfx 500;
- procedure GfxAssociate(const AssociateNode: APTR; GfxNodePtr: PExtendedNode); syscall IGfx 504;
- procedure BitMapScale(BitScaleArgs: PBitScaleArgs); syscall IGfx 508;
- function ScalerDiv(Factor, Numerator, Denominator: LongWord): LongWord; syscall IGfx 512;
- procedure TextExtent(Rp: PRastPort; const String_: STRPTR; Count: LongWord; TextExtent: PTextExtent); syscall IGfx 516;
- function TextFit(Rp: PRastPort; const String_: STRPTR; StrLen: LongWord; TextExtent: PTextExtent; ConstrainingExtent: PTextExtent; StrDirection: LongInt; ConstrainingBitWidth, ConstrainingBitHeight: LongWord): LongWord; syscall IGfx 520;
- function GfxLookUp(const AssociateNode: APTR): APTR; syscall IGfx 524;
- function VideoControl(ColorMap: PColorMap; TagArray: PTagItem): LongWord; syscall IGfx 528;
- // 532 VideoControlTags
- function OpenMonitor(const MonitorName: STRPTR; DisplayID: LongWord): PMonitorSpec; syscall IGfx 536;
- function CloseMonitor(MonitorSpec: PMonitorSpec): LongBool; syscall IGfx 540;
- function FindDisplayInfo(DisplayID: LongWord): Pointer; syscall IGfx 544;
- function NextDisplayInfo(DisplayID: LongWord): LongWord; syscall IGfx 548;
- // 552 private
- // 556 private
- // 560 private
- function GetDisplayInfoData(const Handle: Pointer; Buf: APTR; Size: LongWord; TagID: LongWord; DisplayID: LongWord): LongWord; syscall IGfx 564;
- procedure FontExtent(const Font: PTextFont; FontExtent: PTextExtent); syscall IGfx 568;
- function ReadPixelLine8(Rp: PRastPort; XStart, YStart, Width: LongWord; Array_: PByte; TempRP: PRastPort): LongInt; syscall IGfx 572;
- function WritePixelLine8(Rp: PRastPort; XStart, YStart, Width: LongWord; Array_: PByte; TempRP: PRastPort): LongInt; syscall IGfx 576;
- function ReadPixelArray8(Rp: PRastPort; XStart, YStart, XStop, YStop: LongWord; Array_: PByte; TempRP: PRastPort): LongInt; syscall IGfx 580;
- function WritePixelArray8(Rp: PRastPort; XStart, YStart, XStop, YStop: LongWord; Array_: PByte; TempRP: PRastPort): LongInt; syscall IGfx 584;
- function GetVPModeID(const Vp: PViewPort): LongWord; syscall IGfx 588;
- function ModeNotAvailable(ModeID: LongWord): LongWord; syscall IGfx 592;
- // 596 private
- // 600 private
- procedure EraseRect(Rp: PRastPort; XMin, YMin, XMax, YMax: LongInt); syscall IGfx 604;
- function ExtendFont(Font: PTextFont; const FontTags: PTagItem): LongWord; syscall IGfx 608;
- // 612 ExtendFontTags
- procedure StripFont(Font: PTextFont); syscall IGfx 616;
- function CalcIVG(V: PView; Cp: PViewPort): LongWord; syscall IGfx 620;
- function AttachPalExtra(Cm: PColorMap; Vp: PViewPort): LongInt; syscall IGfx 624;
- function ObtainBestPenA(Cm: PColorMap; R, G, B: LongWord;const Tags: PTagItem): LongInt; syscall IGfx 628;
- // 632 ObtainBestPen
- // 636 private
- procedure SetRGB32(Vp: PViewPort; N, R, G, B: LongWord); syscall IGfx 640;
- function GetAPen(Rp: PRastPort): LongWord; syscall IGfx 644;
- function GetBPen(Rp: PRastPort): LongWord; syscall IGfx 648;
- function GetDrMd(Rp: PRastPort): LongWord; syscall IGfx 652;
- function GetOutlinePen(Rp: PRastPort): LongWord; syscall IGfx 656;
- procedure LoadRGB32(Vp: PViewPort; const Table: PLongWord); syscall IGfx 660;
- function SetChipRev(Want: LongWord): LongWord; syscall IGfx 664;
- procedure SetABPenDrMd(Rp: PRastPort; APen, BPen, DrawMode: LongWord); syscall IGfx 668;
- procedure GetRGB32(const Cm: pColorMap; Firstcolor, NColors: LongWord; Table: PLongWord); syscall IGfx 672;
- function BltBitMapTagList(const Tags: PTagItem): LongInt; syscall IGfx 676;
- // 680 private
- function AllocBitMap(SizeX, SizeY, Depth, Flags: LongWord; const FriendBitmap: PBitMap): PBitMap; syscall IGfx 684;
- procedure FreeBitMap(Bm: PBitMap); syscall IGfx 688;
- function GetExtSpriteA(Ss: PExtSprite; const Tags: PTagItem): LongInt; syscall IGfx 692;
- // 696 GetExtSprite
- function CoerceMode(Vp: PViewPort; MonitorID, Flags: LongWord): LongWord; syscall IGfx 700;
- procedure ChangeVPBitMap(Vp: PViewPort; Bm: PBitMap; Db: PDBufInfo); syscall IGfx 704;
- procedure ReleasePen(Cm: PColorMap; N: LongWord); syscall IGfx 708;
- function ObtainPen(Cm: PColorMap; N, R, G, B: LongWord; F: LongInt): LongInt; syscall IGfx 712;
- function GetBitMapAttr(const Bm: PBitMap; AttrNum: LongWord): LongWord; syscall IGfx 716;
- function AllocDBufInfo(Vp: PViewPort): PDBufInfo; syscall IGfx 720;
- procedure FreeDBufInfo(Dbi: PDBufInfo); syscall IGfx 724;
- function SetOutlinePen(Rp: PRastPort; Pen: LongWord): LongWord; syscall IGfx 728;
- function SetWriteMask(Rp: PRastPort; Msk: LongWord): LongWord; syscall IGfx 732;
- procedure SetMaxPen(Rp: PRastPort; MaxPen: LongWord); syscall IGfx 736;
- procedure SetRGB32CM(Cm: pColorMap; N, R, G, B: LongWord); syscall IGfx 740;
- procedure ScrollRasterBF(Rp: PRastPort; Dx, Dy, XMin, YMin, XMax, yMax: LongWord); syscall IGfx 744;
- function FindColor(Cm: pColorMap; R, G, B: LongWord; MaxColor: LongInt): LongWord; syscall IGfx 748;
- // 752 BltBitMapTags
- function AllocSpriteDataA(const Bm: PBitMap; const Tags: PTagItem): PExtSprite; syscall IGfx 756;
- // 758 AllocSpriteData
- function ChangeExtSpriteA(Vp: PViewPort; OldSprite: PExtSprite; NewSprite: PExtSprite; const Tags: PTagItem): LongInt; syscall IGfx 764;
- // 768 ChangeExtSprite
- procedure FreeSpriteData(Sp: PExtSprite); syscall IGfx 772;
- function SetRPAttrsA(Rp: PRastPort; const Tags: PTagItem): LongWord; syscall IGfx 776;
- // 780 SetRPAttrs
- function GetRPAttrsA(const Rp: PRastPort; const Tags: PTagItem): LongWord; syscall IGfx 784;
- // 788 GetRPAttrs
- function BestModeIDA(const Tags: pTagItem): LongWord; syscall IGfx 1050;
- // 796 BestModeID
- procedure WriteChunkyPixels(Rp: PRastPort; XStart, YStart, XStop, YStop: LongWord; Array_: PByte; BytesPerRow: LongInt); syscall IGfx 800;
- function CompositeTagList(const Operator_: LongWord; const Source: PBitMap; const Destination: PBitMap; const Tags: PTagItem): LongWord; syscall IGfx 804;
- // 808 CompositeTags
- function AllocBitMapTagList(SizeX, SizeY, Depth: LongWord; const Tags: PTagItem): PBitMap; syscall IGfx 812;
- // 812 AllocBitMapTags
- function GetMonitorDataTagList(BoardNum, MonitorNum: LongWord; Tags: PTagItem): LongInt; syscall IGfx 820;
- // 824 GetMonitorDataTags
- function GetBoardDataTagList(BoardNum: LongWord; const Tags: PTagItem): LongInt; syscall IGfx 828;
- // 832 GetBoardDataTags
- function LockBitMapTagList(BitMap: PBitMap; Tags: PTagItem): APTR; syscall IGfx 836;
- // 840 LockBitMapTags
- procedure UnlockBitMap(Lock: APTR); syscall IGfx 844;
- procedure RectFillColor(Rp: PRastPort; XMin, YMin, XMax, YMax, Color: LongWord); syscall IGfx 848;
- function WritePixelColor(Rp: PRastPort; X, Y, Color: LongWord): LongInt; syscall IGfx 852;
- function ReadPixelColor(Rp: PRastPort; X, Y: LongWord): LongWord; syscall IGfx 856;
- procedure ReadPixelArray(Src: PRastPort; SrcX, SrcY: LongWord; Dst: PByte; DstX, DstY, DstBytesPerRow: LongWord; DstPixelFormat: LongWord; SizeX, SizeY: LongWord); syscall IGfx 860;
- procedure WritePixelArray(Src: PByte; SrcX, SrcY, SrcBytesPerRow: LongWord; SrcPixelFormat: LongWord; Dst: PRastPort; DstX, DstY, SizeX, SizeY: LongWord); syscall IGfx 864;
- function GraphicsControlTagList(const Tags: PTagItem): LongWord; syscall IGfx 868;
- // 872 GraphicsControlTags
- function LockBitMapToBoardTagList(BitMap: PBitMap; BoardNum: LongWord; Tags: PTagItem): APTR; syscall IGfx 876;
- // 880 LockBitMapToBoardTags
- procedure UnlockBitMapFromBoard(Lock: APTR; Modified: LongInt); syscall IGfx 884;
- function GetBoardBytesPerRow(BoardNum: LongWord; PixelFormat: LongWord; Width: LongWord): LongWord; syscall IGfx 888;
- // 892 private
- // 896 private
- // 900 private
- function AllocSpriteData(bm: PBitMap; const argv: array of PtrUInt): pExtSprite;
- function BestModeID(const argv: array of PtrUInt): LongWord;
- function ChangeExtSprite(vp: PViewPort; oldsprite: PExtSprite; newsprite: PExtSprite; const argv: array of PtrUInt): LongInt;
- function ExtendFontTags(font: PTextFont; const argv: array of PtrUInt): LongWord;
- function GetExtSprite(ss: pExtSprite; const argv: array of PtrUInt): LongInt;
- procedure GetRPAttrs(rp: PRastPort; const argv: array of PtrUInt);
- function ObtainBestPen(cm: pColorMap; r: LongWord; g: LongWord; b: LongWord; const argv: array of PtrUInt): LongInt;
- procedure SetRPAttrs(rp: PRastPort; const argv: array of PtrUInt);
- function VideoControlTags(colorMap: PColorMap; const argv: array of PtrUInt): LongWord;
- // gfxmacros
- procedure BNDRYOFF(w: PRastPort);
- procedure InitAnimate(animkey: PPAnimOb);
- procedure SetAfPt(w: PRastPort; p: Pointer; n: Byte);
- procedure SetDrPt(w: PRastPort; p: Word);
- procedure SetOPen(w: PRastPort; c: Byte);
- procedure SetWrMsk(w: PRastPort; m: Byte);
- procedure RemBob(Bob: PBob); inline;
- procedure SafeSetOutlinePen(w: PRastPort; c: Byte);
- procedure SafeSetWriteMask(w: PRastPort; m: SmallInt) ;
- {procedure OFF_DISPLAY (cust: pCustom);
- procedure ON_DISPLAY (cust: pCustom);
- procedure OFF_SPRITE (cust: pCustom);
- procedure ON_SPRITE (cust: pCustom);
- procedure OFF_VBLANK (cust: pCustom);
- procedure ON_VBLANK (cust: pCustom);}
- procedure DrawCircle(Rp: PRastPort; xCenter, yCenter, r: LongInt); inline;
- function AreaCircle(Rp: PRastPort; xCenter, yCenter, r: SmallInt): LongWord; inline;
- function RasSize(w, h: Word): Integer;
- implementation
- procedure RemBob(Bob: PBob);
- begin
- Bob^.Flags := Bob^.Flags or BOBSAWAY;
- end;
- function AllocSpriteData(bm: PBitMap; const argv: array of PtrUInt): PExtSprite;
- begin
- AllocSpriteData := AllocSpriteDataA(bm, @argv);
- end;
- function BestModeID(const argv: array of PtrUInt): LongWord;
- begin
- BestModeID := BestModeIDA(@argv);
- end;
- function ChangeExtSprite(vp: PViewPort; oldsprite: pExtSprite; newsprite: pExtSprite; const argv: array of PtrUInt): LongInt;
- begin
- ChangeExtSprite := ChangeExtSpriteA(vp, oldsprite, newsprite, @argv);
- end;
- function ExtendFontTags(font: PTextFont; const argv: array of PtrUInt): LongWord;
- begin
- ExtendFontTags := ExtendFont(font, @argv);
- end;
- function GetExtSprite(ss: pExtSprite; const argv: array of PtrUInt): LongInt;
- begin
- GetExtSprite := GetExtSpriteA(ss, @argv);
- end;
- procedure GetRPAttrs(rp: PRastPort; const argv: array of PtrUInt);
- begin
- GetRPAttrsA(rp, @argv);
- end;
- function ObtainBestPen(cm: pColorMap; r: LongWord; g: LongWord; b: LongWord; const argv: array of PtrUInt): LongInt;
- begin
- ObtainBestPen := ObtainBestPenA(cm, r, g, b, @argv);
- end;
- procedure SetRPAttrs(rp: PRastPort; const argv: array of PtrUInt);
- begin
- SetRPAttrsA(rp, @argv);
- end;
- function VideoControlTags(colorMap: pColorMap; Const argv: array of PtrUInt): LongWord;
- begin
- VideoControlTags := VideoControl(colorMap, @argv);
- end;
- procedure BNDRYOFF(w: PRastPort);
- begin
- with w^ do
- Flags := Flags and (not AREAOUTLINE);
- end;
- procedure InitAnimate(animkey: PPAnimOb);
- begin
- animkey^ := nil;
- end;
- procedure SetAfPt(w: PRastPort;p: Pointer; n: Byte);
- begin
- with w^ do
- begin
- AreaPtrn := p;
- AreaPtSz := n;
- end;
- end;
- procedure SetDrPt(w: PRastPort; p: Word);
- begin
- with w^ do
- begin
- LinePtrn := p;
- Flags := Flags or FRST_DOT;
- linpatcnt := 15;
- end;
- end;
- procedure SetOPen(w: PRastPort; c: Byte);
- begin
- WITH w^ DO
- begin
- AOlPen := c;
- Flags := Flags or AREAOUTLINE;
- end;
- end;
- procedure SetWrMsk(w: PRastPort; m: Byte);
- begin
- w^.Mask := m;
- end;
- procedure SafeSetOutlinePen(w: PRastPort; c: byte);
- begin
- if pGfxBase(GfxBase)^.LibNode.Lib_Version < 39 then
- begin
- w^.AOlPen := c;
- w^.Flags := w^.Flags or AREAOUTLINE;
- end
- else
- c := SetOutlinePen(w,c);
- end;
- procedure SafeSetWriteMask(w: PRastPort; m: SmallInt) ;
- begin
- if PGfxBase(GfxBase)^.LibNode.Lib_Version < 39 then
- w^.Mask := Byte(m)
- else
- SetWriteMask(w, m);
- end;
- {
- procedure OFF_DISPLAY (cust: pCustom);
- begin
- cust^.dmacon := BITCLR OR DMAF_RASTER;
- end;
- procedure ON_DISPLAY (cust: pCustom);
- begin
- cust^.dmacon := BITSET OR DMAF_RASTER;
- end;
- procedure OFF_SPRITE (cust: pCustom);
- begin
- cust^.dmacon := BITCLR OR DMAF_SPRITE;
- end;
- procedure ON_SPRITE (cust: pCustom);
- begin
- cust^.dmacon := BITSET OR DMAF_SPRITE;
- end;
- procedure OFF_VBLANK (cust: pCustom);
- begin
- cust^.intena := BITCLR OR INTF_VERTB;
- end;
- procedure ON_VBLANK (cust: pCustom);
- begin
- cust^.intena := BITSET OR INTF_VERTB;
- end;}
- function RasSize(w, h: Word): Integer; inline;
- begin
- RasSize := h * (((w + 15) shr 3) and $FFFE);
- end;
- procedure DrawCircle(Rp: PRastPort; xCenter, yCenter, r: LongInt); inline;
- begin
- DrawEllipse(Rp, xCenter, yCenter, r, r);
- end;
- function AreaCircle(Rp: PRastPort; xCenter, yCenter, r: SmallInt): LongWord; inline;
- begin
- AreaCircle := AreaEllipse(Rp, xCenter, yCenter, r, r);
- end;
- const
- // Change VERSION and LIBVERSION to proper values
- VERSION: string[2] = '0';
- LIBVERSION: LongWord = 0;
- initialization
- GfxBase := OpenLibrary(GRAPHICSNAME,LIBVERSION);
- if Assigned(GfxBase) then
- IGfx := GetInterface(GfxBase, 'main', 1, nil);
- finalization
- if Assigned(IGfx) then
- DropInterface(IGfx);
- if Assigned(GfxBase) then
- CloseLibrary(GfxBase);
- end.
|