Blitz:Object types

From AmigaBlitzWiki
Jump to: navigation, search

The following NewTypes define the structure of the internal Blitz objects. This can allow you to access the individual properties of many objects directly. In order to use these newtypes, include the resident file Blitzlibs:Bb2objtypes.res in the residents list in the compiler options. This list builds upon the definitions found in Blitzlibs:Bb2objtypes.bb. (The BlitzLibs: assign is not used for AmiBlitz 3, relevant files are in the BlitzLibs drawer inside the AmiBlitz drawer.)

Please note that these are different to the OS object structures, which are defined in the C includes of the relevant SDK, and contained in the BlitzLibs:amigalibs.res file.


rgbcomp

NEWTYPE.rgbcomp

 _red.l        ;left justified red component
 _green.l      ;left justified green component
 _blue.l       ;left justified blue component

End NEWTYPE

palette

NEWTYPE.palette  ;size=128

 *_pdata.palettedata   ;00: pointer to palettedata null=none
 _numcols.w            ;04: num cols present in palettedata.
 _cycle.cycleinfo[14]  ;06: below is colour cycling info.
 _pad.b[10]

End NEWTYPE

cycleinfo

NEWTYPE.cycleinfo

 _lowcol.w               ;06: low colour for cycle range 0=end
 _hicol.w                ;08: high colour for cycle range.
 _speed.w                ;10: speed of cycle : 16384 = max speed sign=direction
 _var.w                  ;12: cvariable speed is added to.

End NEWTYPE

palettedata

NEWTYPE .palettedata

 _numcols.w          ;same as palette/_numcols.
 _zero.w             ;for compatibility with graphics lib LoadRGB32.
 _rgbs.rgbcomp[256]  ;256 is the max the amount it will vary
 _zero2.l            ;for graphics lib too.

End NEWTYPE

bitmap

NEWTYPE.bitmap  ;size=64

 _ebwidth.w[0]      ;00: for compatability.
 _linemod.w         ;00: value to get from one scanline to next.
 _height.w          ;02: currently pixel height - but open to commodore 'enhancement'.
 _depth.w           ;04: number of bitplanes.
 _pad.b[2]          ;06: nothing.
 _data.l[8]         ;08: actual bitplane pointers.
 _pad2.b[12]        ;40: zilch.
 _flags.w           ;0=normal bitmap, <0=interleaved.
 _bitplanemod.w     ;value to get from one bitplane to next. MAY BE 0!
 _xclip.w           ;pixel width for render clipping
 _yclip.w           ;pixel height for render clipping
 _cclip.w           ;number of colours available on bitmap ( = 2^_depth)
 _isreal.w          ;0=no bitmap here, <0=blitz created bitmap, >0=borrowed

End NEWTYPE

module

NEWTYPE.module  ;size=8

 _mt_data.l      ;00 else pointer to module data null=nomod
 _length.l       ;04 length of module data

End NEWTYPE

blitzfont

NEWTYPE.blitzfont ;size=4

 _font.l         ;00 pointer to GFX TextFont struct null=nofont

End NEWTYPE

shape

NEWTYPE.shape  ;size=32

 _pixwidth.w         ;00: pixel width of shape null=noshape
 _pixheight.w        ;02: pixel height of shape
 _depth.w            ;04: depth, in bitplanes, of shape
 _ebwidth.w          ;06: even byte width of shape
 _bltsize.w          ;08: BLTSIZE of shape
 _xhandle.w          ;10: horizontal handle of shape
 _yhandle.w          ;12: vertical handle of shape
 _data.l             ;14: pointer to graphic data - Plane1, Plane2...
 _cookie.l           ;18: pointer to one bitplane cookiecut
 _onebpmem.w         ;22: memory taken by one bitplane of shape
 _onebpmemx.w        ;24: memory taken by one bitplane of shape,
                     ;    plus an extra word per bitplane per
                     ;    vertical pixel
 _allbpmem.w         ;26: memory taken by entire shape.
 _allbpmemx.w        ;28: memory taken by entire shape, plus an
                     ;    extra word per bitplane per vertical
                     ;    pixel
 _pad.b[2]           ;30:

End NEWTYPE

tape

NEWTYPE.tape  ;size=16

 _ielist.l           ;00: pointer to list of InputEvents null=none
 _timevalhi.l        ;04: high 4 bytes of timeval of first event
 _timevallo.l        ;08: low 4 bytes of timeval of first event
 _pad.b[4]           ;12:

End NEWTYPE

stencil

NEWTYPE.stencil  ;size=8

 _ebwidth.w          ;00: NULL if no stencil present else even byte width
 _height.w           ;02: height of stencil
 _data.l             ;04: pointer to one bitplane of stencil data

End NEWTYPE

queueitem

NEWTYPE.queueitem  ;size=16

 _mod.w              ;00: blitter BLTDMOD value
 _bltsize.w          ;02: blitter BLTSIZE value
 _depth.w            ;04: depth, in bitplanes, of bitmap
 _bitmap.l           ;06: bitmap object QBLIT was made to
 _offset.l           ;10: offset into bitmap QBLIT was made at
 _pad.b[2]

End NEWTYPE

queue

NEWTYPE.queue  ;size=16

 *_current.queueitem ;00: pointer to where to add next QBLIT QueueItem
 *_first.queueitem   ;04: pointer to start of .QueueItem block null=none
 _length.l           ;08: Length of allocated queue memory
 _pad.b[4]           ;12:

End NEWTYPE

fielditem

NEWTYPE.fielditem  ;size=16

 *_next.fielditem    ;00: For linked list.
 _data.l             ;04: pointer to where data comes from or goes to
 _lenth.l            ;08: length of above data
 _pad.b[4]

End NEWTYPE

file

NEWTYPE.file  ;size=32

 _handle.l           ;00: NULL if no file present else dos file handle of file
 _reclen.l           ;04: Byte length of 'Fields' for this file
 _pad.b[4]           ;08:
 *_fields.fielditem  ;12: list of field items
 _buffer.l           ;16: buffer for my own read/write routines
 _bufflen.w          ;20: length of above buffer
 _flags.w            ;22: =0 : buffer not altered,
                     ;    <0 : buffer written to,
                     ;    >0 : seek necessary when buffer flushed
 _valid.w            ;24: number of valid bytes in buffer
 _seekoff.w          ;26: seek (position) offset into buffer
 _seek.l             ;28: dos seek of start of buffer

End NEWTYPE

buffer

NEWTYPE.buffer  ;size=16

 _current.l          ;00: Pointer to current point in buffer to add BBLIT info to.
 _first.l            ;04: else pointer to beginning of buffer memory. null=none
 _length.l           ;08: length in bytes of buffer memory.
 _pad.b[4]           ;12:

End NEWTYPE

gadgetlist

NEWTYPE.gadgetlist  ;size=4

 _gadgets.l          ;00: pointer to INTUITION gadget list null=none

End NEWTYPE

slice

NEWTYPE.slice  ;size=32

 _ypos.w             ;00: vertical position of slice null=noslice
 _flags.w            ;02: slice flags
 _numbitplanes.w     ;04: number of bitplanes available in slice
 _numsprites.w       ;06: number of sprites available in slice
 _numcolours.w       ;08: number of colours available in slice
 _bitplanes.l        ;10: pointer to address in copper list of bitplane MOVEs
 _sprites.l          ;14: pointer to address in copper list of sprite MOVEs
 _colours.l          ;18: pointer to address in copper list of colour MOVEs
 _BPLCON1.l          ;22: pointer to address in copper list of word MOVEd to BPLCON1
 _BPLCON2.l          ;26: pointer to address in copper list of word MOVEd to BPLCON2
 _pad.b[2]           ;30:

End NEWTYPE

sound

NEWTYPE.sound  ;size=16

 _data.l             ;00: NULL if no sound present, else pointer to sound data
 _period.w           ;04: period of sound
 _length.w           ;06: length, in words, of sound data
 _loop.l             ;08: repeat to loop position of sound
 _looplength.w       ;12: length of looping section, in words
 _pad.b[2]           ;14:

End NEWTYPE

sprite

NEWTYPE.sprite  ;size=16

 _data.l             ;00: NULL if no sprite present, else pointer to sprite data
 _height.w           ;04: height of sprite, in pixels, plus an extra 1
 _channels.w         ;06: number of sprite channels required to display sprite
 _flags.w            ;08: low byte = pix width of sprite, hi bit = 1 if 16 colour sprite
 _nextoff.w          ;10: difference in bytes between seperate sprites for separate sprite channels
 _xhandle.w          ;12: horizontal handle for sprite
 _yhandle.w          ;14: vertical handle for sprite

End NEWTYPE

window

NEWTYPE.window  ;size=16

 _window.l           ;00: pointer to Intuition window struct null=none
 _cursx.w            ;04: horizontal cursor position in window
 _cursy.w            ;06: vertical cursor position in window
 _pointer.l          ;08: pointer optional window pointer sprite data.
 _length.l           ;12: length of window pointer sprite data.

End NEWTYPE

screen

NEWTYPE.screen  ;size=4

 _screen.l       ;00 pointer to INTUITION screen struct null=noscreen

End NEWTYPE

menulist

NEWTYPE.menulist  ;size=4

 _menu.l         ;00 pointer to INTUITION menu list null=nomenu

End NEWTYPE

intuifont

NEWTYPE.intuifont  ;size=16

 _fontname.l       ;00 Pointer to name of font
 _ysize.w          ;04 height of font
 _pad.w            ;06
 _font.l           ;08 pointer to GFX TextFont struct null=none
 _pad2.b[4]        ;12

End NEWTYPE

coplist

Note: This may not be included in some bb2objtypes.res files... NEWTYPE .coplist

 size.l            ;0 = not initialised
 coppos.l          ;location in chipmem
 colors.l
 sprites.l
 bpcons.l
 bplanes.l
 dot.l
 customs.l
 dob.l
 numbp.w:colpokes.w                  ;limits
 fetchwid.w:xand:xshift              ;for show calculations (3 words)
 ypos.w:height:res
 numsprites.w:numcols:numcustoms
 aga.w                               ;24bit=$8000 fetch = $00,$10,$20,$30
 resshift.w                          ;lo,hi,shi = 2 1 0
 setup.w                             ;lines taken for setup
 cblow.w                             ;if custom goes below 256
 sfetch.w:spres:spif:spwid:sspwid    ;sprite mode for display

End NEWTYPE