BlitzMax

BlitzMax

  • Downloads
  • Docs
  • API
  • Resources
  • About

›Max2D

BlitzMax API

  • Introduction

BRL

    Audio

    • Introduction
    • TChannel
    • TSound

    AudioSample

    • Introduction
    • TAudioSample
    • TAudioSampleLoader

    Bank

    • Introduction
    • TBank

    BankStream

    • Introduction
    • TBankStream

    Base64

    • Introduction
    • TBase64

    Blitz

    • Introduction
    • TArrayBoundsException
    • TBlitzException
    • TNullFunctionException
    • TNullMethodException
    • TNullObjectException
    • TOutOfDataException
    • TRuntimeException
  • BRL.BMPLoader
  • Clipboard

    • Introduction
    • TClipboard
    • TClipboardOpts
    • TWin32ClipboardOpts
    • TX11ClipboardOpts
  • BRL.D3D7Max2D
  • BRL.D3D9Max2D
  • BRL.DirectSoundAudio
  • BRL.EndianStream
  • Event

    • Introduction
    • TEvent
  • BRL.EventQueue
  • BRL.FileSystem
  • BRL.FreeAudioAudio
  • BRL.GLGraphics
  • BRL.GLMax2D
  • BRL.GNet
  • BRL.Graphics
  • BRL.Hook
  • IO

    • Introduction
    • MaxIO
  • BRL.JPGLoader
  • BRL.KeyCodes
  • LinkedList

    • Introduction
    • TList
    • TListEnum
    • TLink

    Map

    • Introduction
    • TMap
    • TIntMap
    • TIntKey
    • TPtrMap
    • TPtrKey
    • TStringMap
  • BRL.Math
  • Matrix

    • Introduction
    • SMat2D
    • SMat2F
    • SMat2I
    • SMat3D
    • SMat3F
    • SMat3I
    • SMat4D
    • SMat4F
    • SMat4I

    Max2D

    • Introduction
    • TImage

    MaxLua

    • Introduction
    • TLuaClass
    • TLuaObject
  • BRL.OGGLoader
  • BRL.OpenALAudio
  • ObjectList

    • Introduction
    • TObjectList
    • TObjectListEnumerator
    • TObjectListReverseEnumerator

    Pixmap

    • Introduction
    • TPixmap
    • TPixmapLoader
  • BRL.PNGLoader
  • BRL.PolledInput
  • Quaternion

    • Introduction
    • SQuatD
    • SQuatF
    • SQuatI
  • BRL.RamStream
  • Random

    • Introduction
    • TRandom

    Reflection

    • Introduction
    • TTypeId
    • TMember
    • TConstant
    • TField
    • TGlobal
    • TFunction
    • TMethod
  • BRL.Retro
  • BRL.Socket
  • BRL.SocketStream
  • BRL.StandardIO
  • Stream

    • Introduction
    • TCStream
    • TIO
    • TStream
    • TStreamException
    • TStreamFactory
    • TStreamReadException
    • TStreamWrapper
    • TStreamWriteException

    StringBuilder

    • Introduction
    • TStringBuilder
    • TSplitBuffer
  • BRL.System
  • BRL.SystemDefault
  • BRL.TextStream
  • BRL.TGALoader
  • ThreadPool

    • Introduction
    • TRunnable
    • TThreadPoolExecutor

    Threads

    • Introduction
    • TThread
    • TThreadData
    • TMutex
    • TSemaphore
    • TCondVar

    Timer

    • Introduction
    • TChrono
  • BRL.TimerDefault
  • Vector

    • Introduction
    • SVec2D
    • SVec2F
    • SVec2I
    • SVec3D
    • SVec3F
    • SVec3I
    • SVec4D
    • SVec4F
    • SVec4I

    Volumes

    • Introduction
    • TVolume
  • BRL.WAVLoader

Text

    CSV

    • Introduction
    • TCsvParser
    • TCsvHeader
    • TCsvRow
    • TCsvOptions
    • SCsvColumn

    Format

    • Introduction
    • TFormatter

    Ini

    • Introduction
    • TIni
    • TIniProperty
    • TIniSection

    JConv

    • Introduction
    • TJConv
    • TJConvBuilder
    • TJConvSerializer

    Json

    • Introduction
    • TJSON
    • TJSONObject
    • TJSONString
    • TJSONInteger
    • TJSONReal
    • TJSONBool
    • TJSONArray
    • TJSONNull
    • TJSONError
    • TJSONNumber

    Regex

    • Introduction
    • TRegEx
    • TRegExMatch
    • TRegExOptions
    • TRegExException

    TOML

    • Introduction
    • ETomlNodeType
    • TToml
    • ITomlNode
    • STomlDate
    • STomlDateTime
    • STomlTime
    • TTomlArray
    • TTomlInteger
    • TTomlString
    • TTomlTable
    • TTomlBoolean

    Xml

    • Introduction
    • TxmlDoc
    • TxmlNode
    • TxmlAttribute

MaxGUI

  • MaxGUI.MaxGUI
  • MaxGUI.Drivers
  • MaxGUI.Localization
  • MaxGUI.ProxyGadgets
  • MaxGUI.CocoaMaxGUI
  • MaxGUI.Win32MaxGUIEx

PUB

  • Pub.FreeJoy
  • Pub.FreeProcess
  • Pub.Glad
  • Pub.Glew
  • Joystick

    • Introduction
    • TJoystickDriver
  • Pub.Lua
  • Pub.OpenAL
  • Pub.OpenGLES
  • Pub.xmmintrin
  • Pub.ZLib

Crypto

    Digest

    • Introduction
    • TMessageDigest
    • TDigestRegister
    • TNoSuchAlgorithmException

    Cipher

    • Introduction
    • TCipher
    • TCipherMode
    • Crypto.AESCipher
    • Crypto.AnubisCipher
    • Crypto.BlowfishCipher
    • Crypto.CamelliaCipher
    • Crypto.Cast5Cipher
    • Crypto.DESCipher
    • Crypto.IdeaCipher
    • Crypto.KasumiCipher
    • Crypto.KhazadCipher
    • Crypto.KSeedCipher
    • Crypto.NoekeonCipher
    • Crypto.SerpentCipher
    • Crypto.SkipjackCipher
    • Crypto.TwofishCipher
    • Crypto.XTeaCipher

    CBCMode

    • Introduction
    • TCBCCipherMode

    CFBMode

    • Introduction
    • TCFBCipherMode

    CTRMode

    • Introduction
    • TCTRCipherMode

    ECBMode

    • Introduction
    • TECBCipherMode

    F8Mode

    • Introduction
    • TF8CipherMode

    LRWMode

    • Introduction
    • TLRWCipherMode

    OFBMode

    • Introduction
    • TOFBCipherMode

    XTSMode

    • Introduction
    • TXTSCipherMode

    Blake2BDigest

    • Introduction
    • TBlake2B_512
    • TBlake2B_384
    • TBlake2B_256
    • TBlake2B_160

    CRC32

    • Introduction
    • TCRC32

    MD5Digest

    • Introduction
    • TMD5

    Ripemd320Digest

    • Introduction
    • TRipemd320

    Ripemd356Digest

    • Introduction
    • TRipemd256

    Ripemd160Digest

    • Introduction
    • TRipemd160

    Ripemd128Digest

    • Introduction
    • TRipemd128

    SHA1Digest

    • Introduction
    • TSHA1

    SHA256Digest

    • Introduction
    • TSHA256

    SHA512Digest

    • Introduction
    • TSHA512

    SHA3Digest

    • Introduction
    • TSHA3_512
    • TSHA3_384
    • TSHA3_256
    • TSHA3_224

    TigerDigest

    • Introduction
    • TTiger

    WhirlpoolDigest

    • Introduction
    • TWhirlpool

    Crypto

    • Introduction
    • TCryptoRandom
    • TCryptoSecretBox
    • TCryptoHash
    • TCryptoSign
    • TCryptoKeyExchange
    • TCryptoKey
    • TCryptoHashKey
    • TCryptoSecretBoxKey
    • TCryptoSignature
    • TCryptoExchangeKeyPair
    • TCryptoSessionKeyPair
    • TCryptoNPacket
    • TCryptoKK1Packet
    • TCryptoKK2Packet
    • TCryptoXX1Packet
    • TCryptoXX2Packet
    • TCryptoXX3Packet
    • TCryptoExchangeState
    • TCryptoPWHashMasterKey
    • TCryptoPWHashStoredKey
    • TCryptoPasswordHash

SDL

    SDL

    • Introduction
    • TSDLStream

    SDLSystem

    • Introduction
    • TSDLMultiGesture

    SDLVideo

    • Introduction
    • TSDLDisplay
    • TSDLDisplayMode
    • TSDLGLContext
    • TSDLWindow

    SDLRender

    • Introduction
    • TSDLRenderer
    • TSDLTexture

    SDLTimer

    • Introduction
    • TSDLTimer

    SDLHaptic

    • Introduction
    • TSDLHaptic
    • TSDLHapticCondition
    • TSDLHapticConstant
    • TSDLHapticCustom
    • TSDLHapticDirection
    • TSDLHapticEffect
    • TSDLHapticLeftRight
    • TSDLHapticPeriodic
    • TSDLHapticRamp

    SDLSensor

    • Introduction
    • TSDLSensor
  • SDL.SDLFreeAudio
  • SDL.GLSDLMax2D
  • SDL.GL2SDLMax2D
  • SDL.D3D9SDLMax2D
  • SDLVirtualJoystick

    • Introduction
    • TVirtualJoystick

Steam

    SteamSDK

    • Introduction
    • TSteamClient
    • TSteamUtils
    • TSteamUserStats
    • TSteamFriends
    • TSteamUGC
    • ISteamFriendsListener
    • ISteamUGCListener
    • ISteamUserStatsListener
    • ISteamUtilsListener
    • EItemPreviewType
    • EPersonaChange
    • EPersonaState
    • ERemoteStoragePublishedFileVisibility
    • EUGCMatchingUGCType
    • EUGCQuery
    • EUserRestriction
    • EUserUGCList
    • EWorkshopFileType
Edit

BRL.Max2D

The Max2D module provides a set of commands for drawing 2D graphics.

Before using any of the Max2D commands, you must first create a Max2D graphics object. The easiest way to do this is using the Graphics command.

By default, Max2D is double buffered which means you will have to use Flip once you have finished drawing each frame of graphics.

Drawing

Max2D provides support for the following drawing commands:

Drawing commandAction
ClsClears the viewport
PlotDraws a single pixel
DrawLineDraws a line
DrawRectDraws a rectangle
DrawOvalDraws an oval
DrawPolyDraws a polygon
DrawTextDraws some text
DrawImageDraws an image
DrawPixmapDraws a pixmap

Viewport, origin and handle

Drawing commands are clipped to a rectangular area known as the viewport. Only the area within the viewport is ever modified, and attempting to draw outside the viewport will result in the drawing command being clipped or chopped to the viewport. To set the viewport, use the SetViewport command.

Drawing commands are also offset by the current origin and handle. To set these properties, use the SetOrigin and SetHandle commands.

The current handle is an x,y coordinate subtracted from all drawing x,y coordinates before any rotation or scaling occurs. This allows you to provide a local 'center' for drawing. On the other hand, the current origin is an x,y coordinate added to all drawing x,y coordinates after any rotation or scaling.

Color, alpha and blend mode

Drawing commands are affected by the current color, alpha and blend mode. You can set these properties by using the SetColor, SetAlpha and SetBlend commands.

The current alpha value controls the transparency level when using the ALPHABLEND blend mode.

The current blend mode controls how pixels are combined with existing pixels in the back buffer and can be one of the following:

Blend modeEffect
SOLIDBLENDPixels overwrite existing backbuffer pixels
MASKBLENDPixels are drawn only if their alpha component is greater than .5
ALPHABLENDPixels are alpha blended with existing backbuffer pixels
LIGHTBLENDPixel colors are added to backbuffer pixel colors, giving a 'lighting' effect
SHADEBLENDPixel colors are multiplied with backbuffer pixel colors, giving a 'shading' effect

Rotation and scale

Drawing commands can be scaled and rotated using the SetScale and SetRotation commands. Rotation and scaling occur relative to the current handle.

Images

Images are pre-rendered chunks of graphics that can be efficiently drawn using a single DrawImage command. Images are typically stored in png, bmp or jpg format, and can be loaded using the LoadImage command.

Image drawing is also affected by color, alpha, blend, rotation and scale. The current color is multiplied with each pixel color before the image is drawn to the backbuffer, allowing you to tint images. To disable this effect, you should set the current color to white.

Images can also have a mask color. This is the color that represents transparency when an image is drawn using the MASKBLEND blend mode. To set the mask color, use the SetMaskColor command.

Images can be created by snapshotting regions of the back buffer using the GrabImage command.

Pixmaps

Pixmaps are used to manipulate images at a pixel level, see the pixmaps module for details.

LockImage allows for direct Image pixel access and requires a corresponding call to UnlockImage when you have have finished reading or modifying the pixels. The DrawPixmap and GrabPixmap commands allow you to move pixels to and from the current graphic display's backbuffer.

Collisions

Max2D features a multilayered pixel perfect collision system. The CollideRect and CollideImage commands provide a dual function allowing the drawing and hit testing of Rects and Images with any combination of 32 collision layers.

The current Scale, Rotation, Origin and Handle settings are taken into account so coordinates for the collision commands acurately match their drawing counterparts DrawRect and DrawImage.

ResetCollisions is used to clear any or all of the 32 collision layers provided.


Types

TypeDescription
TImageMax2D Image type

Functions

Function Cls()

Clear graphics buffer

Clears the graphics buffer to the current cls color as determined by SetClsColor.

Example

' cls.bmx

' a spinning text message
' remove the call to cls to illustrate the
' need for clearing the screen every frame

SuperStrict

Graphics 640,480
SetOrigin 320,240

Local frame:Float

While Not KeyHit(KEY_ESCAPE)
    Cls 
    SetRotation frame
    DrawText "Press Escape To Exit",0,0
    Flip
    frame:+1
Wend


Function SetClsColor( red,green,blue )

Set current Cls color

The red, green and blue parameters should be in the range of 0 to 255.

The default cls color is black.


Function GetClsColor( red Var,green Var,blue Var )

Get red, green and blue component of current cls color.

Returns

Red, green and blue values in the range 0..255 in the variables supplied.


Function Plot( x#,y# )

Plot a pixel

Sets the color of a single pixel on the back buffer to the current drawing color defined with the SetColor command. Other commands that affect the operation of Plot include SetOrigin, SetViewPort, SetBlend and SetAlpha.

Example

' plot.bmx

' plots a cosine graph
' scrolls along the graph using an incrementing frame variable 

SuperStrict

Graphics 640,480

Local frame:Int
While Not KeyHit(KEY_ESCAPE)
    Cls
    For Local x:Int = 0 To 640
        Local theta:Int = x + frame
        Local y:Int = 240-Cos(theta)*240
        Plot x,y
    Next
    frame=frame+1
    Flip
Wend


Function DrawRect( x#,y#,width#,height# )

Draw a rectangle

Sets the color of a rectangular area of pixels using the current drawing color defined with the SetColor command.

Other commands that affect the operation of DrawRect include SetHandle, SetScale, SetRotation, SetOrigin, SetViewPort, SetBlend and SetAlpha.

Example

' drawrect.bmx

' draws a sequence of rectangles across the screen with
' increasing rotation and scale

' uses the frame variable to cycle through the values 0..9 for
' an animation effect between frames 

SuperStrict

Graphics 640,480

SetBlend ALPHABLEND
SetAlpha 0.2

Local t:Int
While Not KeyHit(KEY_ESCAPE)
    Cls
    DrawText "DrawRect Example",0,0
    For Local r:Int = t To t+500 Step 10
        SetRotation r
        SetScale r/5,r/5
        DrawRect r,r,2,2
    Next
    t=t+1
    If t=10 t=0
    Flip    
Wend


Function DrawLine( x#,y#,x2#,y2#,draw_last_pixel=True )

Draw a line

DrawLine draws a line from x, y to x2, y2 with the current drawing color.

BlitzMax commands that affect the drawing of lines include SetLineWidth, SetColor, SetHandle, SetScale, SetRotation, SetOrigin, SetViewPort, SetBlend and SetAlpha. The optional draw_last_pixel parameter can be used to control whether the last pixel of the line is drawn or not. Not drawing the last pixel can be useful if you are using certain blending modes.

Example

' drawline.bmx

' draws a cross hair at the mouse position using DrawLine

SuperStrict

Graphics 640,480

HideMouse 

While Not KeyHit(KEY_ESCAPE)
    Cls
    Local x:Int = MouseX()
    Local y:Int = MouseY()
    DrawLine 320,240,x,y
    DrawLine x-2,y,x-10,y
    DrawLine x+2,y,x+10,y
    DrawLine x,y-2,x,y-10
    DrawLine x,y+2,x,y+10
    Flip
Wend


Function DrawOval( x#,y#,width#,height# )

Draw an oval

DrawOval draws an oval that fits in the rectangular area defined by x, y, width and height parameters.

BlitzMax commands that affect the drawing of ovals include SetColor, SetHandle, SetScale, SetRotation, SetOrigin, SetViewPort, SetBlend and SetAlpha.

Example

' drawoval.bmx

' draws a pair of eyes using 4 DrawOval commands, 2 white, 2 blue
' positions the blue ovals so the eyes track the mouse

SuperStrict

Graphics 640,480
While Not KeyHit(KEY_ESCAPE)
    Cls
    SetColor 255,255,255
    DrawOval 0,0,320,200
    DrawOval 320,0,320,200
    SetColor 0,0,255
    Local x:Int = (MouseX()-320)/10
    Local y:Int = (MouseY()-240)/10
    DrawOval 220-32+x,100+y,64,40
    DrawOval 420-32+x,100+y,64,40
    Flip
Wend


Function DrawPoly( xy#[] )

Draw a polygon

DrawPoly draws a polygon with corners defined by an array of x#,y# coordinate pairs.

BlitzMax commands that affect the drawing of polygons include SetColor, SetHandle, SetScale, SetRotation, SetOrigin, SetViewPort, SetBlend and SetAlpha.

Example

' drawpoly.bmx

' draws a simple triangle using the
' DrawPoly command and an array of
' floats listed as 3 pairs of x,y
' coordinates

SuperStrict

Local tri#[]=[0.0,0.0,100.0,100.0,0.0,100.0]

Graphics 640,480
While Not KeyHit(KEY_ESCAPE)
    Cls
    DrawPoly tri
    Flip
Wend


Function DrawText( t$,x#,y# )

Draw text

DrawText prints strings at position x,@y of the graphics display using the current image font specified by the SetImageFont command.

Other commands that affect DrawText include SetColor, SetHandle, SetScale, SetRotation, SetOrigin, SetViewPort, SetBlend and SetAlpha.

It is recomended that the blend mode be set to ALPHABLEND using the SetBlend command for non jagged antialiased text. Text that will be drawn at a smaller size using the SetScale command should use fonts loaded with the SMOOTHFONT style to benefit from mip-mapped filtering, see LoadImageFont for more information.

Example

' drawtext.bmx

' scrolls a large text string across the screen by decrementing the tickerx variable

SuperStrict

Graphics 640,480

Local tickerx:Int = 640

Local Text:String = "Yo to all the Apple, Windows and Linux BlitzMax programmers in the house! "
Text:+"Game development is the most fun, most advanced and definitely most cool "
Text:+"software programming there is!"

While Not KeyHit(KEY_ESCAPE)
    Cls
    DrawText "Scrolling Text Demo",0,0
    DrawText Text,tickerx#,400
    tickerx=tickerx-1
    If tickerx<-TextWidth(Text) tickerx=640
    Flip    
Wend

End


Function DrawImage( image:TImage,x#,y#,frame=0 )

Draw an image to the back buffer

Drawing is affected by the current blend mode, color, scale and rotation.

If the blend mode is ALPHABLEND the image is affected by the current alpha value and images with alpha channels are blended correctly with the background.


Function DrawImageRect( image:TImage,x#,y#,w#,h#,frame=0 )

Draw an image to a rectangular area of the back buffer

x, y, w and h specify the destination rectangle to draw to.

frame is the image frame to draw.

Drawing is affected by the current blend mode, color, scale and rotation.

If the blend mode is ALPHABLEND, then the image is also affected by the current alpha value.


Function DrawSubImageRect( image:TImage,x#,y#,w#,h#,sx#,sy#,sw#,sh#,hx#=0,hy#=0,frame=0 )

Draw a sub rectangle of an image to a rectangular area of the back buffer

x, y, w and h specify the destination rectangle to draw to.

sx, sy, sw and sh specify the source rectangle within the image to draw from.

hx and hy specify a handle offset within the source rectangle.

frame is the image frame to draw.

Drawing is affected by the current blend mode, color, scale and rotation.

If the blend mode is ALPHABLEND, then the image is also affected by the current alpha value.


Function TileImage( image:TImage,x#=0#,y#=0#,frame=0 )

Draw an image in a tiled pattern

TileImage draws an image in a repeating, tiled pattern, filling the current viewport.


Function SetColor( red,green,blue )

Set current color

The SetColor command affects the color of Plot, DrawRect, DrawLine, DrawText, DrawImage and DrawPoly.

The red, green and blue parameters should be in the range of 0 to 255.


Function GetColor( red Var,green Var,blue Var )

Get red, green and blue component of current color.

Returns

Red, green and blue values in the range 0..255 in the variables supplied.


Function SetBlend( blend )

Set current blend mode

SetBlend controls how pixels are combined with existing pixels in the back buffer when drawing commands are used in BlitzMax.

blend should be one of:

Blend modeEffect
MASKBLENDPixels are drawn only if their alpha component is greater than .5
SOLIDBLENDPixels overwrite existing backbuffer pixels
ALPHABLENDPixels are alpha blended with existing backbuffer pixels
LIGHTBLENDPixel colors are added to backbuffer pixel colors, giving a 'lighting' effect
SHADEBLENDPixel colors are multiplied with backbuffer pixel colors, giving a 'shading' effect


Function GetBlend()

Get current blend mode

See SetBlend for possible return values.

Returns

The current blend mode.


Function SetAlpha( alpha# )

Set current alpha level

alpha should be in the range 0 to 1.

alpha controls the transparancy level when the ALPHABLEND blend mode is in effect. The range from 0.0 to 1.0 allows a range of transparancy from completely transparent to completely solid.


Function GetAlpha#()

Get current alpha setting.

Returns

the current alpha value in the range 0..1.0


Function SetLineWidth( width# )

Sets pixel width of lines drawn with the DrawLine command


Function GetLineWidth#()

Get line width

Returns

Current line width, in pixels


Function SetMaskColor( red,green,blue )

Set current mask color

The current mask color is used to build an alpha mask when images are loaded or modified. The red, green and blue parameters should be in the range of 0 to 255.


Function GetMaskColor( red Var,green Var,blue Var )

Get red, green and blue component of current mask color

Returns

Red, green and blue values in the range 0..255


Function SetVirtualResolution( width#,height# )

Set virtual graphics resolution

SetResolution allows you to set a 'virtual' resolution independent of the graphics resolution.

This allows you to design an application to work at a fixed resolution, say 640 by 480, and run it at any graphics resolution.


Function VirtualResolutionWidth#()

Get virtual graphics resolution width


Function VirtualResolutionHeight#()

Get virtual graphics resolution height


Function VirtualMouseX#()

Get virtual mouse X coordinate


Function VirtualMouseY#()

Get virtual mouse Y coordinate


Function VirtualMouseXSpeed#()

Get virtual mouse X speed


Function VirtualMouseYSpeed#()

Get virtual mouse Y speed


Function MoveVirtualMouse( x#,y# )

Move virtual mouse


Function SetViewport( x,y,width,height )

Set drawing viewport

The current ViewPort defines an area within the back buffer that all drawing is clipped to. Any regions of a DrawCommand that fall outside the current ViewPort are not drawn.


Function GetViewport( x Var,y Var,width Var,height Var )

Get dimensions of current Viewport.

Returns

The horizontal, vertical, width and height values of the current Viewport in the variables supplied.


Function SetOrigin( x#,y# )

Set drawing origin

The current Origin is an x,y coordinate added to all drawing x,y coordinates after any rotation or scaling.


Function GetOrigin( x# Var,y# Var )

Get current origin position.

Returns

The horizontal and vertical position of the current origin.


Function SetHandle( x#,y# )

Set drawing handle

The drawing handle is a 2D offset subtracted from the x,y location of all drawing commands except DrawImage as Images have their own unique handles.

Unlike SetOrigin the drawing handle is subtracted before rotation and scale are applied providing a 'local' origin.


Function GetHandle( x# Var,y# Var )

Get current drawing handle.

Returns

The horizontal and vertical position of the current drawing handle.


Function SetRotation( Rotation# )

Set current rotation

rotation is given in degrees and should be in the range 0 to 360.


Function GetRotation#()

Get current Max2D rotation setting.

Returns

The rotation in degrees.


Function SetScale( scale_x#,scale_y# )

Set current scale

scale_x and scale_y multiply the width and height of drawing commands where 0.5 will half the size of the drawing and 2.0 is equivalent to doubling the size.


Function GetScale( scale_x# Var,scale_y# Var )

Get current Max2D scale settings.

Returns

The current x and y scale values in the variables supplied.


Function SetTransform( Rotation#=0,scale_x#=1,scale_y#=1 )

Set current rotation and scale

SetTransform is a shortcut for setting both the rotation and scale parameters in Max2D with a single function call.


Function LoadImageFont:TImageFont( url:Object,size,style=SMOOTHFONT )

Load an image font

style can be a combination of BOLDFONT, ITALICFONT and SMOOTHFONT flags. Use the SMOOTHFONT flag for improved filtering if the font is to be rotated or scaled.

Returns

An image font object


Function SetImageFont( font:TImageFont )

Set current image font

In order to DrawText in fonts other than the default system font use the SetImageFont command with a font handle returned by the LoadImageFont command.

Use &{SetImageFont Null} to select the default, built-in font.


Function GetImageFont:TImageFont()

Get current image font.

Returns

The current image font.


Function TextWidth( Text$ )

Get width of text

This command is useful for calculating horizontal alignment of text when using the DrawText command.

Returns

the width, in pixels, of text based on the current image font.


Function TextHeight( Text$ )

Get height of text

This command is useful for calculating vertical alignment of text when using the DrawText command.

Returns

the height, in pixels, of text based on the current image font.


Function LoadImage:TImage( url:Object,flags=-1 )

Load an image

url can be either a string or an existing pixmap.

flags can be 0, -1 or any combination of:

Flags valueEffect
MASKEDIMAGEThe image is masked with the current mask color.
FILTEREDIMAGEThe image is smoothed when scaled up to greater than its original size, when rotated, or when drawn at fractional pixel coordinates.
MIPMAPPEDIMAGEThe image is smoothed when scaled down to less than its original size.
DYNAMICIMAGEThe image can be modified using LockImage or GrabImage.

Note MIPMAPPEDIMAGE images consume extra video memory, so this flag should only be used when really necessary.

If flags is -1, the auto image flags are used: See AutoImageFlags.

To combine flags, use the | (boolean OR) operator.

Returns

A new image object


Function LoadAnimImage:TImage( url:Object,cell_width,cell_height,first_cell,cell_count,flags=-1 )

Load a multi-frame image

LoadAnimImage extracts multiple image frames from a single, larger image. url can be either a string or an existing pixmap.

See LoadImage for valid flags values.

Returns

An image object


Function SetImageHandle( image:TImage,x#,y# )

Set an image's handle to an arbitrary point

An image's handle is subtracted from the coordinates of DrawImage before rotation and scale are applied.


Function AutoMidHandle( enable )

Enable or disable auto midhandle mode

When auto midhandle mode is enabled, all images are automatically 'midhandled' (see MidHandleImage) when they are created. If auto midhandle mode is disabled, images are handled by their top left corner.

AutoMidHandle defaults to False after calling Graphics.


Function AutoImageFlags( flags )

Set auto image flags

The auto image flags are used by LoadImage and CreateImage when no image flags are specified. See LoadImage for a full list of valid image flags. AutoImageFlags defaults to MASKEDIMAGE | FILTEREDIMAGE.


Function MidHandleImage( image:TImage )

Set an image's handle to its center


Function ImageWidth( image:TImage )

Get width of an image

Returns

The width, in pixels, of image


Function ImageHeight( image:TImage )

Get height of an image

Returns

The height, in pixels, of image


Function CreateImage:TImage( width,height,frames=1,flags=-1 )

Create an empty image

CreateImage creates an 'empty' image, which should be initialized using either GrabImage or LockImage before being drawn.

Please refer to LoadImage for valid flags values. The flags value is always combined with DYNAMICIMAGE.

Returns

A new image object

Example

' createimage.bmx

' creates a 256x1 image with a black to blue color gradient

SuperStrict

Const ALPHABITS:Int=$ff000000

Graphics 640,480,0

Local image:TImage = CreateImage(256,1)
Local map:TPixmap = LockImage(image)
For Local i:Int = 0 To 255
    WritePixel(map,i,0,ALPHABITS|i)
Next
UnlockImage(image)

DrawImageRect image,0,0,640,480
DrawText "Blue Color Gradient",0,0

Flip

WaitKey


Function LockImage:TPixmap( image:TImage,frame=0,read_lock=True,write_lock=True )

Lock an image for direct access

Locking an image allows you to directly access an image's pixels.

Only images created with the DYNAMICIMAGE flag can be locked.

Locked images must eventually be unlocked with UnlockImage before they can be drawn.

Returns

A pixmap representing the image contents


Function UnlockImage( image:TImage,frame=0 )

Unlock an image

Unlocks an image previously locked with LockImage.


Function GrabImage( image:TImage,x,y,frame=0 )

Grab an image from the back buffer

Copies pixels from the back buffer to an image frame.

Only images created with the DYNAMICIMAGE flag can be grabbed.

Example

' grabimage.bmx

' draws a small graphic then uses grabimage to make an image

' as mask color and cls color both default to black a mask is 
' created for the grabbed where any pixels unset on the backbuffer
' become transparent in the grabbed image

SuperStrict

Graphics 640,480

Cls

DrawLine 0,0,32,32
DrawLine 32,0,0,32
DrawOval 0,0,32,32

Local image:TImage = CreateImage(640,480,1,DYNAMICIMAGE|MASKEDIMAGE)
GrabImage image,0,0

Cls
For Local i:Int = 1 To 100
    DrawImage image,Float(Rnd(640)),Float(Rnd(480))
Next
Flip

WaitKey


Function DrawPixmap( pixmap:TPixmap,x,y )

Draw pixmap


Function GrabPixmap:TPixmap( x,y,width,height )

Grab pixmap


Function ImagesCollide(image1:TImage,x1,y1,frame1,image2:TImage,x2,y2,frame2)

Tests if two images collide

ImagesCollide uses the current Rotation and Scale factors from the most previous call to SetScale and SetRotation to calculate at a pixel level if the two images collide.

Returns

True if any pixels of the two images specified at the given location overlap.


Function ImagesCollide2(image1:TImage,x1,y1,frame1,rot1#,scalex1#,scaley1#,image2:TImage,x2,y2,frame2,rot2#,scalex2#,scaley2#)

Tests if two images with arbitrary Rotation and Scales collide

ImagesCollide2 uses the specified Rotation and Scale paramteters to calculate at a pixel level if the two images collide (overlap).

Returns

True if any pixels of the two images specified at the given location overlap.


Function ResetCollisions(mask%=0)

Clears collision layers specified by the value of mask, mask=0 for all layers.

The BlitzMax 2D collision system manages 32 layers, the mask parameter can be a combination of the following values or the special value COLLISION_LAYER_ALL in order to perform collision operations on multiple layers.

Note: COLLISION_LAYER_32 is used by the ImagesCollide and ImagesCollide2 commands.

LayerMask value
COLLISION_LAYER_ALL0
COLLISION_LAYER_1$0001
COLLISION_LAYER_2$0002
COLLISION_LAYER_3$0004
COLLISION_LAYER_4$0008
COLLISION_LAYER_5$0010
COLLISION_LAYER_6$0020
COLLISION_LAYER_7$0040
COLLISION_LAYER_8$0080
COLLISION_LAYER_9$0100
COLLISION_LAYER_10$0200
COLLISION_LAYER_11$0400
COLLISION_LAYER_12$0800
COLLISION_LAYER_13$1000
COLLISION_LAYER_14$2000
COLLISION_LAYER_15$4000
COLLISION_LAYER_16$8000


Function CollideImage:Object[](image:TImage,x,y,frame,collidemask%,writemask%,id:Object=Null)

Pixel accurate collision testing between transformed Images.

The collidemask specifies any layers to test for collision with.

The writemask specifies which if any collision layers the image is added to in it's currently transformed state.

The id specifies an object to be returned to future CollideImage calls when collisions occur.

Example

SuperStrict

Local rot:Int,x:Int,y:Int

Graphics 640,480

AutoMidHandle True  'image will rotate around it's center

Local image:TImage=LoadImage("bullet.png")

While Not KeyHit(KEY_ESCAPE)
    Cls
    ResetCollisions

' draw the first image at 5 times the size and on an arbitrary angle
    
    SetScale 5,5
    SetRotation 125

    DrawImage image,200,200

' add the first image to the first collision layer at same postion, rotation 
' and scale as it has just been drawn

    CollideImage image,200,200,0,0,1

' move the other image relative to the mouse and rotate it continuously

    x=MouseX()
    y=MouseY()-20
    rot:+1

    SetRotation rot
    DrawImage image,x,y

' test the image at it's current rotation, scale and position with images
' that have been added to the first collision layer

    If CollideImage(image,x,y,0,1,0)

' reset scale and rotation states so our text is drawn correctly        

        SetScale 1,1
        SetRotation 0
        DrawText "COLLISION!",20,20

    EndIf

    Flip
Wend


Function CollideRect:Object[](x,y,w,h,collidemask%,writemask%,id:Object=Null)

Pixel accurate collision testing between image layers

The collidemask specifies any layers to test for collision with.

The writemask specifies which if any collision layers the image is added to in it's currently transformed state.

The id specifies an object to be returned to future CollideImage calls when collisions occur.


← SMat4ITImage →
  • Types
  • Functions
    • Function Cls()
    • Function SetClsColor( red,green,blue )
    • Function GetClsColor( red Var,green Var,blue Var )
    • Function Plot( x#,y# )
    • Function DrawRect( x#,y#,width#,height# )
    • Function DrawLine( x#,y#,x2#,y2#,draw_last_pixel=True )
    • Function DrawOval( x#,y#,width#,height# )
    • Function DrawPoly( xy#[] )
    • Function DrawText( t$,x#,y# )
    • Function DrawImage( image:TImage,x#,y#,frame=0 )
    • Function DrawImageRect( image:TImage,x#,y#,w#,h#,frame=0 )
    • Function DrawSubImageRect( image:TImage,x#,y#,w#,h#,sx#,sy#,sw#,sh#,hx#=0,hy#=0,frame=0 )
    • Function TileImage( image:TImage,x#=0#,y#=0#,frame=0 )
    • Function SetColor( red,green,blue )
    • Function GetColor( red Var,green Var,blue Var )
    • Function SetBlend( blend )
    • Function GetBlend()
    • Function SetAlpha( alpha# )
    • Function GetAlpha#()
    • Function SetLineWidth( width# )
    • Function GetLineWidth#()
    • Function SetMaskColor( red,green,blue )
    • Function GetMaskColor( red Var,green Var,blue Var )
    • Function SetVirtualResolution( width#,height# )
    • Function VirtualResolutionWidth#()
    • Function VirtualResolutionHeight#()
    • Function VirtualMouseX#()
    • Function VirtualMouseY#()
    • Function VirtualMouseXSpeed#()
    • Function VirtualMouseYSpeed#()
    • Function MoveVirtualMouse( x#,y# )
    • Function SetViewport( x,y,width,height )
    • Function GetViewport( x Var,y Var,width Var,height Var )
    • Function SetOrigin( x#,y# )
    • Function GetOrigin( x# Var,y# Var )
    • Function SetHandle( x#,y# )
    • Function GetHandle( x# Var,y# Var )
    • Function SetRotation( Rotation# )
    • Function GetRotation#()
    • Function SetScale( scale_x#,scale_y# )
    • Function GetScale( scale_x# Var,scale_y# Var )
    • Function SetTransform( Rotation#=0,scale_x#=1,scale_y#=1 )
    • Function LoadImageFont:TImageFont( url:Object,size,style=SMOOTHFONT )
    • Function SetImageFont( font:TImageFont )
    • Function GetImageFont:TImageFont()
    • Function TextWidth( Text$ )
    • Function TextHeight( Text$ )
    • Function LoadImage:TImage( url:Object,flags=-1 )
    • Function LoadAnimImage:TImage( url:Object,cell_width,cell_height,first_cell,cell_count,flags=-1 )
    • Function SetImageHandle( image:TImage,x#,y# )
    • Function AutoMidHandle( enable )
    • Function AutoImageFlags( flags )
    • Function MidHandleImage( image:TImage )
    • Function ImageWidth( image:TImage )
    • Function ImageHeight( image:TImage )
    • Function CreateImage:TImage( width,height,frames=1,flags=-1 )
    • Function LockImage:TPixmap( image:TImage,frame=0,read_lock=True,write_lock=True )
    • Function UnlockImage( image:TImage,frame=0 )
    • Function GrabImage( image:TImage,x,y,frame=0 )
    • Function DrawPixmap( pixmap:TPixmap,x,y )
    • Function GrabPixmap:TPixmap( x,y,width,height )
    • Function ImagesCollide(image1:TImage,x1,y1,frame1,image2:TImage,x2,y2,frame2)
    • Function ImagesCollide2(image1:TImage,x1,y1,frame1,rot1#,scalex1#,scaley1#,image2:TImage,x2,y2,frame2,rot2#,scalex2#,scaley2#)
    • Function ResetCollisions(mask%=0)
    • Function CollideImage:Object[](image:TImage,x,y,frame,collidemask%,writemask%,id:Object=Null)
    • Function CollideRect:Object[](x,y,w,h,collidemask%,writemask%,id:Object=Null)
BlitzMax
Docs
Getting StartedDownloadsAbout
Community
ResourcesSyntaxBomb Forums
More
GitHubStarChat on Discord
Copyright © 2023 Bruce A Henderson