Code archives/Graphics/DrawImageBlock

This code has been declared by its author to be Public Domain code.

Download source code

DrawImageBlock by N2004
Similar to the original Blitz DrawImageRect.

Place this under mod/cower.mod/drawing.mod as drawing.bmx

Edit: Hm.. got put under .BB. Oh well, no matter.

Edit 2: Need to upload new version...

Edit 3: Updated.
Strict

Module Cower.Drawing
ModuleInfo "Cower drawing module"
ModuleInfo "This code is public domain ( because it's not special in any way )"

Import BRL.GLMax2D
Import Pub.OpenGL

Function DrawImageBlock( Img:TImage, X#, Y#, Width#, Height#, TX#, TY#, TWidth#, THeight#, Frame%=0, Rotation#=0, MX#=0, MY#=0 )
	Global __glob_ix#
	Global __glob_iy#
	Global __glob_jx#
	Global __glob_jy#
	
	Local frm:TGLImageFrame = TGLImageFrame( Img.frames[frame] )
	If frm = Null Then Return
	
	Local texEnabled:Int = glIsEnabled( GL_TEXTURE_2D )
	If texEnabled=0 Then
		glEnable( GL_TEXTURE_2D )
	EndIf
	
	Local lastTex:Int
	glGetIntegerv( GL_TEXTURE_BINDING_2D, Varptr lastTex )
	
	c_setupTrans( rotation )
	
	Local wo1:Float = 1.0 / Img.Width
	Local ho1:Float = 1.0 / Img.Height
	
	Local UF:Float = TX * wo1
	Local VF:Float = TY * ho1
	Local UT:Float = ( TX+TWidth ) * wo1
	Local VT:Float = ( TY+THeight ) * ho1
	
	glBindTexture( GL_TEXTURE_2D, frm.name )
	
	glBegin GL_QUADS
	
	glTexCoord2f( UF, VF )
	glVertex2f( mx+x*__glob_ix+y*__glob_iy, my+x*__glob_jx+y*__glob_jy )
	
	glTexCoord2f( UT, VF )
	glVertex2f( mx+( x+width )*__glob_ix+y*__glob_iy, my+( x+width )*__glob_jx+y*__glob_jy )
	
	glTexCoord2f( UT, VT )
	glVertex2f( mx+( x+width )*__glob_ix+( y+height )*__glob_iy, my+( x+width )*__glob_jx+( y+height )*__glob_jy )
	
	glTexCoord2f( UF, VT )
	glVertex2f( mx+x*__glob_ix+( y+height )*__glob_iy, my+x*__glob_jx+( y+height )*__glob_jy )
	
	glEnd( )
	
	glBindTexture( GL_TEXTURE_2D, lastTex )
	If texEnabled=0 Then glDisable( GL_TEXTURE_2D )
	
	Function c_setupTrans( theta# )
		Local c#, s#
		c=Cos( theta )
		s=Sin( theta )
		__glob_ix=c
		__glob_iy=-s
		__glob_jx=s
		__glob_jy=c
	End Function
End Function

Comments

None.

Code Archives Forum