Tinkering about with images and bitmaps using memblocks by Duffer24th Sep 2006 17:11
|
---|
Summary using memblocks to tinker around with images and bitmaps at pixel level Description fairly self-explanatory really... Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com Rem Project: Experiments with Images & Memblocks Rem Created: 19/08/2006 22:30:21 Rem ***** Main Source File ***** function GetImgWidth(ImageNumber as integer) if image exist(ImageNumber) < 1 exitfunction endif if memblock exist(200) > 0 delete memblock 200 endif make memblock from image 200,ImageNumber Width as integer Width = memblock dword(200,0) delete memblock 200 endfunction Width function GetImgHeight(ImageNumber as integer) if image exist(ImageNumber) < 1 exitfunction endif if memblock exist(200) > 0 delete memblock 200 endif make memblock from image 200,ImageNumber Height as integer Height = memblock dword(200,4) delete memblock 200 endfunction Height function GetImgDepth(ImageNumber as integer) if image exist(ImageNumber) < 1 exitfunction endif if memblock exist(200) > 0 delete memblock 200 endif make memblock from image 200,ImageNumber Depth as integer Depth = memblock dword(200,8) delete memblock 200 endfunction Depth function GetImgPixels(ImageNumber as integer) if image exist(ImageNumber) < 1 exitfunction endif hh = GetImgHeight(ImageNumber) ww = GetImgWidth(ImageNumber) pixels as integer pixels = hh * ww endfunction pixels function GetImgPixelLoc(ImageNumber as integer,xx as integer,yy as integer) ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) dd = GetImgDepth(ImageNumber) if xx < 1 xx = 1 endif if xx > ww xx = ww endif if yy < 1 yy = 1 endif if yy > hh yy = hh endif remstart from byte 12 onwards remend if image exist(ImageNumber) < 1 exitfunction endif if memblock exist(300) > 0 delete memblock 300 endif make memblock from image 300,ImageNumber loc as integer loc = 12 + ((yy * xx) * 4) - 4 delete memblock 300 endfunction loc function GetImgPixelLocBlue(ImageNumber as integer,xx as integer,yy as integer) loc as integer loc = GetImgPixelLoc(ImageNumber,xx,yy) endfunction loc function GetImgPixelLocGreen(ImageNumber as integer,xx as integer,yy as integer) loc as integer loc = GetImgPixelLoc(ImageNumber,xx,yy) loc = loc + 1 endfunction loc function GetImgPixelLocRed(ImageNumber as integer,xx as integer,yy as integer) loc as integer loc = GetImgPixelLoc(ImageNumber,xx,yy) loc = loc + 2 endfunction loc function GetImgPixelLocAlpha(ImageNumber as integer,xx as integer,yy as integer) loc as integer loc = GetImgPixelLoc(ImageNumber,xx,yy) loc = loc + 3 endfunction loc function GetImgPixelColour(ImageNumber as integer,xx as integer,yy as integer) rr as byte gg as byte bb as byte if image exist(ImageNumber) < 1 exitfunction endif if memblock exist(100) > 0 delete memblock 100 endif make memblock from image 100,ImageNumber rr = memblock byte(100,GetImgPixelLocRed(ImageNumber,xx,yy)) gg = memblock byte(100,GetImgPixelLocGreen(ImageNumber,xx,yy)) bb = memblock byte(100,GetImgPixelLocBlue(ImageNumber,xx,yy)) col as integer col = rgb(rr,gg,bb) delete memblock 100 endfunction col function GetImgPixelRed(ImageNumber as integer,xx as integer,yy as integer) rr as byte if image exist(ImageNumber) < 1 exitfunction endif if memblock exist(100) > 0 delete memblock 100 endif make memblock from image 100,ImageNumber rr = memblock byte(100,GetImgPixelLocRed(ImageNumber,xx,yy)) delete memblock 100 endfunction rr function GetImgPixelGreen(ImageNumber as integer,xx as integer,yy as integer) gg as byte if image exist(ImageNumber) < 1 exitfunction endif if memblock exist(100) > 0 delete memblock 100 endif make memblock from image 100,ImageNumber gg = memblock byte(100,GetImgPixelLocGreen(ImageNumber,xx,yy)) delete memblock 100 endfunction gg function GetImgPixelBlue(ImageNumber as integer,xx as integer,yy as integer) bb as byte if image exist(ImageNumber) < 1 exitfunction endif if memblock exist(100) > 0 delete memblock 100 endif make memblock from image 100,ImageNumber bb = memblock byte(100,GetImgPixelLocBlue(ImageNumber,xx,yy)) delete memblock 100 endfunction bb function GetImgPixelAlpha(ImageNumber as integer,xx as integer,yy as integer) aa as byte if image exist(ImageNumber) < 1 exitfunction endif if memblock exist(100) > 0 delete memblock 100 endif make memblock from image 100,ImageNumber aa = memblock byte(100,GetImgPixelLocAlpha(ImageNumber,xx,yy)) delete memblock 100 endfunction aa function GetImgAlpha(ImageNumber) if image exist(ImageNumber) < 1 exitfunction endif aa as integer pixels as integer ww as integer hh as integer runningtotal as integer runningtotal = 0 pixels = GetImgPixels(ImageNumber) ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for hhh = 1 to hh for www = 1 to ww runningtotal = runningtotal + GetImgPixelAlpha(ImageNumber,www,hhh) next www next hhh runningtotal = runningtotal / pixels aa = runningtotal endfunction aa function GetImgRed(ImageNumber) if image exist(ImageNumber) < 1 exitfunction endif rr as integer pixels as integer ww as integer hh as integer runningtotal as integer runningtotal = 0 pixels = GetImgPixels(ImageNumber) ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for hhh = 1 to hh for www = 1 to ww runningtotal = runningtotal + GetImgPixelRed(ImageNumber,www,hhh) next www next hhh runningtotal = runningtotal / pixels rr = runningtotal endfunction rr function GetImgBlue(ImageNumber) if image exist(ImageNumber) < 1 exitfunction endif bb as integer pixels as integer ww as integer hh as integer runningtotal as integer runningtotal = 0 pixels = GetImgPixels(ImageNumber) ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for hhh = 1 to hh for www = 1 to ww runningtotal = runningtotal + GetImgPixelBlue(ImageNumber,www,hhh) next www next hhh runningtotal = runningtotal / pixels bb = runningtotal endfunction rr function GetImgGreen(ImageNumber) if image exist(ImageNumber) < 1 exitfunction endif gg as integer pixels as integer ww as integer hh as integer runningtotal as integer runningtotal = 0 pixels = GetImgPixels(ImageNumber) ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for hhh = 1 to hh for www = 1 to ww runningtotal = runningtotal + GetImgPixelGreen(ImageNumber,www,hhh) next www next hhh runningtotal = runningtotal / pixels gg = runningtotal endfunction gg function GetImgGrey(ImageNumber) if image exist(ImageNumber) < 1 exitfunction endif grey as integer rr as integer gg as integer bb as integer pixels as integer ww as integer hh as integer runningtotal as integer runningtotal = 0 ss as integer ss = 0 pixels = GetImgPixels(ImageNumber) ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for hhh = 1 to hh for www = 1 to ww ss = 0 ss = ss + GetImgPixelRed(ImageNumber,www,hhh) ss = ss + GetImgPixelGreen(ImageNumber,www,hhh) ss = ss + GetImgPixelBlue(ImageNumber,www,hhh) ss = ss / 3 runningtotal = runningtotal + ss next www next hhh runningtotal = runningtotal / pixels grey = runningtotal endfunction grey function CopyImg(SourceImageNumber as integer,TargetImageNumber as integer) if image exist(SourceImageNumber) < 1 exitfunction endif if image exist(TargetImageNumber) > 0 delete image TargetImageNumber endif if memblock exist(400) > 0 delete memblock 400 endif make memblock from image 400,SourceImageNumber make image from memblock TargetImageNumber,400 delete memblock 400 endfunction function SetImgAlpha(ImageNumber as integer, alpha as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) if memblock exist(400) > 0 delete memblock 400 endif make memblock from image 400,ImageNumber if alpha < 0 alpha = 0 endif if alpha > 255 alpha = 255 endif for xxx = 1 to ww for yyy = 1 to hh write memblock byte 400,GetImgPixelLocAlpha(ImageNumber,xxx,yyy),alpha next yyy next xxx delete image ImageNumber make image from memblock ImageNumber,400 delete memblock 400 endfunction function SetImgRed(ImageNumber as integer, red as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) if memblock exist(400) > 0 delete memblock 400 endif make memblock from image 400,ImageNumber if red < 0 red = 0 endif if red > 255 red = 255 endif for xxx = 1 to ww for yyy = 1 to hh write memblock byte 400,GetImgPixelLocRed(ImageNumber,xxx,yyy),red next yyy next xxx delete image ImageNumber make image from memblock ImageNumber,400 delete memblock 400 endfunction function SetImgGreen(ImageNumber as integer, green as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) if memblock exist(400) > 0 delete memblock 400 endif make memblock from image 400,ImageNumber if green < 0 green = 0 endif if green > 255 green = 255 endif for xxx = 1 to ww for yyy = 1 to hh write memblock byte 400,GetImgPixelLocGreen(ImageNumber,xxx,yyy),green next yyy next xxx delete image ImageNumber make image from memblock ImageNumber,400 delete memblock 400 endfunction function SetImgBlue(ImageNumber as integer, blue as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) if memblock exist(400) > 0 delete memblock 400 endif make memblock from image 400,ImageNumber if blue < 0 blue = 0 endif if blue > 255 blue = 255 endif for xxx = 1 to ww for yyy = 1 to hh write memblock byte 400,GetImgPixelLocBlue(ImageNumber,xxx,yyy),blue next yyy next xxx delete image ImageNumber make image from memblock ImageNumber,400 delete memblock 400 endfunction function SetImgPixelAlpha(ImageNumber as integer,xx as integer,yy as integer,colbyte as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) if xx > ww xx = ww endif if xx < 1 xx = 1 endif if yy > hh yy = hh endif if yy < 1 yy = 1 endif if colbyte < 0 colbyte = 0 endif if colbyte > 255 colbyte = 255 endif loc as integer loc = GetImgPixelLocAlpha(ImageNumber,xx,yy) if memblock exist(400) > 0 delete memblock 400 endif make memblock from image 400,ImageNumber write memblock byte 400,loc,colbyte delete image ImageNumber make image from memblock ImageNumber,400 delete memblock 400 endfunction function SetImgPixelRed(ImageNumber as integer,xx as integer,yy as integer,colbyte as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) if xx > ww xx = ww endif if xx < 1 xx = 1 endif if yy > hh yy = hh endif if yy < 1 yy = 1 endif if colbyte < 0 colbyte = 0 endif if colbyte > 255 colbyte = 255 endif loc as integer loc = GetImgPixelLocRed(ImageNumber,xx,yy) if memblock exist(400) > 0 delete memblock 400 endif make memblock from image 400,ImageNumber write memblock byte 400,loc,colbyte delete image ImageNumber make image from memblock ImageNumber,400 delete memblock 400 endfunction function SetImgPixelGreen(ImageNumber as integer,xx as integer,yy as integer,colbyte as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) if xx > ww xx = ww endif if xx < 1 xx = 1 endif if yy > hh yy = hh endif if yy < 1 yy = 1 endif if colbyte < 0 colbyte = 0 endif if colbyte > 255 colbyte = 255 endif loc as integer loc = GetImgPixelLocRed(ImageNumber,xx,yy) if memblock exist(400) > 0 delete memblock 400 endif make memblock from image 400,ImageNumber write memblock byte 400,loc,colbyte delete image ImageNumber make image from memblock ImageNumber,400 delete memblock 400 endfunction function SetImgPixelBlue(ImageNumber as integer,xx as integer,yy as integer,colbyte as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) if xx > ww xx = ww endif if xx < 1 xx = 1 endif if yy > hh yy = hh endif if yy < 1 yy = 1 endif if colbyte < 0 colbyte = 0 endif if colbyte > 255 colbyte = 255 endif loc as integer loc = GetImgPixelLocRed(ImageNumber,xx,yy) if memblock exist(400) > 0 delete memblock 400 endif make memblock from image 400,ImageNumber write memblock byte 400,loc,colbyte delete image ImageNumber make image from memblock ImageNumber,400 delete memblock 400 endfunction function SetImgPixelColour(ImageNumber as integer,xx as integer,yy as integer,red as byte,green as byte,blue as byte) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) if xx > ww xx = ww endif if xx < 1 xx = 1 endif if yy > hh yy = hh endif if yy < 1 yy = 1 endif locr as integer locg as integer locb as integer locr = GetImgPixelLocRed(ImageNumber,xx,yy) locg = GetImgPixelLocRed(ImageNumber,xx,yy) locb = GetImgPixelLocRed(ImageNumber,xx,yy) if memblock exist(400) > 0 delete memblock 400 endif make memblock from image 400,ImageNumber write memblock byte 400,locr,red write memblock byte 400,locg,green write memblock byte 400,locb,blue delete image ImageNumber make image from memblock ImageNumber,400 delete memblock 400 endfunction function GetBmpWidth(BitmapNumber as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif if memblock exist(200) > 0 delete memblock 200 endif make memblock from Bitmap 200,BitmapNumber Width as integer Width = memblock dword(200,0) delete memblock 200 endfunction Width function GetBmpHeight(BitmapNumber as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif if memblock exist(200) > 0 delete memblock 200 endif make memblock from Bitmap 200,BitmapNumber Height as integer Height = memblock dword(200,4) delete memblock 200 endfunction Height function GetBmpDepth(BitmapNumber as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif if memblock exist(200) > 0 delete memblock 200 endif make memblock from Bitmap 200,BitmapNumber Depth as integer Depth = memblock dword(200,8) delete memblock 200 endfunction Depth function GetBmpPixels(BitmapNumber as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif hh = GetBmpHeight(BitmapNumber) ww = GetBmpWidth(BitmapNumber) pixels as integer pixels = hh * ww endfunction pixels function GetBmpPixelLoc(BitmapNumber as integer,xx as integer,yy as integer) ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) dd = GetBmpDepth(BitmapNumber) if xx < 1 xx = 1 endif if xx > ww xx = ww endif if yy < 1 yy = 1 endif if yy > hh yy = hh endif remstart from byte 12 onwards remend if Bitmap exist(BitmapNumber) < 1 exitfunction endif if memblock exist(300) > 0 delete memblock 300 endif make memblock from Bitmap 300,BitmapNumber loc as integer loc = 12 + ((yy * xx) * 4) - 4 delete memblock 300 endfunction loc function GetBmpPixelLocBlue(BitmapNumber as integer,xx as integer,yy as integer) loc as integer loc = GetBmpPixelLoc(BitmapNumber,xx,yy) endfunction loc function GetBmpPixelLocGreen(BitmapNumber as integer,xx as integer,yy as integer) loc as integer loc = GetBmpPixelLoc(BitmapNumber,xx,yy) loc = loc + 1 endfunction loc function GetBmpPixelLocRed(BitmapNumber as integer,xx as integer,yy as integer) loc as integer loc = GetBmpPixelLoc(BitmapNumber,xx,yy) loc = loc + 2 endfunction loc function GetBmpPixelLocAlpha(BitmapNumber as integer,xx as integer,yy as integer) loc as integer loc = GetBmpPixelLoc(BitmapNumber,xx,yy) loc = loc + 3 endfunction loc function GetBmpPixelColour(BitmapNumber as integer,xx as integer,yy as integer) rr as byte gg as byte bb as byte if Bitmap exist(BitmapNumber) < 1 exitfunction endif if memblock exist(100) > 0 delete memblock 100 endif make memblock from Bitmap 100,BitmapNumber rr = memblock byte(100,GetBmpPixelLocRed(BitmapNumber,xx,yy)) gg = memblock byte(100,GetBmpPixelLocGreen(BitmapNumber,xx,yy)) bb = memblock byte(100,GetBmpPixelLocBlue(BitmapNumber,xx,yy)) col as integer col = rgb(rr,gg,bb) delete memblock 100 endfunction col function GetBmpPixelRed(BitmapNumber as integer,xx as integer,yy as integer) rr as byte if Bitmap exist(BitmapNumber) < 1 exitfunction endif if memblock exist(100) > 0 delete memblock 100 endif make memblock from Bitmap 100,BitmapNumber rr = memblock byte(100,GetBmpPixelLocRed(BitmapNumber,xx,yy)) delete memblock 100 endfunction rr function GetBmpPixelGreen(BitmapNumber as integer,xx as integer,yy as integer) gg as byte if Bitmap exist(BitmapNumber) < 1 exitfunction endif if memblock exist(100) > 0 delete memblock 100 endif make memblock from Bitmap 100,BitmapNumber gg = memblock byte(100,GetBmpPixelLocGreen(BitmapNumber,xx,yy)) delete memblock 100 endfunction gg function GetBmpPixelBlue(BitmapNumber as integer,xx as integer,yy as integer) bb as byte if Bitmap exist(BitmapNumber) < 1 exitfunction endif if memblock exist(100) > 0 delete memblock 100 endif make memblock from Bitmap 100,BitmapNumber bb = memblock byte(100,GetBmpPixelLocBlue(BitmapNumber,xx,yy)) delete memblock 100 endfunction bb function GetBmpPixelAlpha(BitmapNumber as integer,xx as integer,yy as integer) aa as byte if Bitmap exist(BitmapNumber) < 1 exitfunction endif if memblock exist(100) > 0 delete memblock 100 endif make memblock from Bitmap 100,BitmapNumber aa = memblock byte(100,GetBmpPixelLocAlpha(BitmapNumber,xx,yy)) delete memblock 100 endfunction aa function GetBmpAlpha(BitmapNumber) if Bitmap exist(BitmapNumber) < 1 exitfunction endif aa as integer pixels as integer ww as integer hh as integer runningtotal as integer runningtotal = 0 pixels = GetBmpPixels(BitmapNumber) ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) for hhh = 1 to hh for www = 1 to ww runningtotal = runningtotal + GetBmpPixelAlpha(BitmapNumber,www,hhh) next www next hhh runningtotal = runningtotal / pixels aa = runningtotal endfunction aa function GetBmpRed(BitmapNumber) if Bitmap exist(BitmapNumber) < 1 exitfunction endif rr as integer pixels as integer ww as integer hh as integer runningtotal as integer runningtotal = 0 pixels = GetBmpPixels(BitmapNumber) ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) for hhh = 1 to hh for www = 1 to ww runningtotal = runningtotal + GetBmpPixelRed(BitmapNumber,www,hhh) next www next hhh runningtotal = runningtotal / pixels rr = runningtotal endfunction rr function GetBmpBlue(BitmapNumber) if Bitmap exist(BitmapNumber) < 1 exitfunction endif bb as integer pixels as integer ww as integer hh as integer runningtotal as integer runningtotal = 0 pixels = GetBmpPixels(BitmapNumber) ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) for hhh = 1 to hh for www = 1 to ww runningtotal = runningtotal + GetBmpPixelBlue(BitmapNumber,www,hhh) next www next hhh runningtotal = runningtotal / pixels bb = runningtotal endfunction rr function GetBmpGreen(BitmapNumber) if Bitmap exist(BitmapNumber) < 1 exitfunction endif gg as integer pixels as integer ww as integer hh as integer runningtotal as integer runningtotal = 0 pixels = GetBmpPixels(BitmapNumber) ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) for hhh = 1 to hh for www = 1 to ww runningtotal = runningtotal + GetBmpPixelGreen(BitmapNumber,www,hhh) next www next hhh runningtotal = runningtotal / pixels gg = runningtotal endfunction gg function GetBmpGrey(BitmapNumber) if Bitmap exist(BitmapNumber) < 1 exitfunction endif grey as integer rr as integer gg as integer bb as integer pixels as integer ww as integer hh as integer runningtotal as integer runningtotal = 0 ss as integer ss = 0 pixels = GetBmpPixels(BitmapNumber) ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) for hhh = 1 to hh for www = 1 to ww ss = 0 ss = ss + GetBmpPixelRed(BitmapNumber,www,hhh) ss = ss + GetBmpPixelGreen(BitmapNumber,www,hhh) ss = ss + GetBmpPixelBlue(BitmapNumber,www,hhh) ss = ss / 3 runningtotal = runningtotal + ss next www next hhh runningtotal = runningtotal / pixels grey = runningtotal endfunction grey function CopyBmp(SourceBitmapNumber as integer,TargetBitmapNumber as integer) if Bitmap exist(SourceBitmapNumber) < 1 exitfunction endif if Bitmap exist(TargetBitmapNumber) > 0 delete Bitmap TargetBitmapNumber endif if memblock exist(400) > 0 delete memblock 400 endif make memblock from Bitmap 400,SourceBitmapNumber make Bitmap from memblock TargetBitmapNumber,400 delete memblock 400 endfunction function SetBmpAlpha(BitmapNumber as integer, alpha as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) if memblock exist(400) > 0 delete memblock 400 endif make memblock from Bitmap 400,BitmapNumber if alpha < 0 alpha = 0 endif if alpha > 255 alpha = 255 endif for xxx = 1 to ww for yyy = 1 to hh write memblock byte 400,GetBmpPixelLocAlpha(BitmapNumber,xxx,yyy),alpha next yyy next xxx delete Bitmap BitmapNumber make Bitmap from memblock BitmapNumber,400 delete memblock 400 endfunction function SetBmpRed(BitmapNumber as integer, red as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) if memblock exist(400) > 0 delete memblock 400 endif make memblock from Bitmap 400,BitmapNumber if red < 0 red = 0 endif if red > 255 red = 255 endif for xxx = 1 to ww for yyy = 1 to hh write memblock byte 400,GetBmpPixelLocRed(BitmapNumber,xxx,yyy),red next yyy next xxx delete Bitmap BitmapNumber make Bitmap from memblock BitmapNumber,400 delete memblock 400 endfunction function SetBmpGreen(BitmapNumber as integer, green as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) if memblock exist(400) > 0 delete memblock 400 endif make memblock from Bitmap 400,BitmapNumber if green < 0 green = 0 endif if green > 255 green = 255 endif for xxx = 1 to ww for yyy = 1 to hh write memblock byte 400,GetBmpPixelLocGreen(BitmapNumber,xxx,yyy),green next yyy next xxx delete Bitmap BitmapNumber make Bitmap from memblock BitmapNumber,400 delete memblock 400 endfunction function SetBmpBlue(BitmapNumber as integer, blue as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) if memblock exist(400) > 0 delete memblock 400 endif make memblock from Bitmap 400,BitmapNumber if blue < 0 blue = 0 endif if blue > 255 blue = 255 endif for xxx = 1 to ww for yyy = 1 to hh write memblock byte 400,GetBmpPixelLocBlue(BitmapNumber,xxx,yyy),blue next yyy next xxx delete Bitmap BitmapNumber make Bitmap from memblock BitmapNumber,400 delete memblock 400 endfunction function SetBmpPixelAlpha(BitmapNumber as integer,xx as integer,yy as integer,colbyte as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) if xx > ww xx = ww endif if xx < 1 xx = 1 endif if yy > hh yy = hh endif if yy < 1 yy = 1 endif if colbyte < 0 colbyte = 0 endif if colbyte > 255 colbyte = 255 endif loc as integer loc = GetBmpPixelLocAlpha(BitmapNumber,xx,yy) if memblock exist(400) > 0 delete memblock 400 endif make memblock from Bitmap 400,BitmapNumber write memblock byte 400,loc,colbyte delete Bitmap BitmapNumber make Bitmap from memblock BitmapNumber,400 delete memblock 400 endfunction function SetBmpPixelRed(BitmapNumber as integer,xx as integer,yy as integer,colbyte as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) if xx > ww xx = ww endif if xx < 1 xx = 1 endif if yy > hh yy = hh endif if yy < 1 yy = 1 endif if colbyte < 0 colbyte = 0 endif if colbyte > 255 colbyte = 255 endif loc as integer loc = GetBmpPixelLocRed(BitmapNumber,xx,yy) if memblock exist(400) > 0 delete memblock 400 endif make memblock from Bitmap 400,BitmapNumber write memblock byte 400,loc,colbyte delete Bitmap BitmapNumber make Bitmap from memblock BitmapNumber,400 delete memblock 400 endfunction function SetBmpPixelGreen(BitmapNumber as integer,xx as integer,yy as integer,colbyte as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) if xx > ww xx = ww endif if xx < 1 xx = 1 endif if yy > hh yy = hh endif if yy < 1 yy = 1 endif if colbyte < 0 colbyte = 0 endif if colbyte > 255 colbyte = 255 endif loc as integer loc = GetBmpPixelLocRed(BitmapNumber,xx,yy) if memblock exist(400) > 0 delete memblock 400 endif make memblock from Bitmap 400,BitmapNumber write memblock byte 400,loc,colbyte delete Bitmap BitmapNumber make Bitmap from memblock BitmapNumber,400 delete memblock 400 endfunction function SetBmpPixelBlue(BitmapNumber as integer,xx as integer,yy as integer,colbyte as integer) if Bitmap exist(BitmapNumber) < 1 exitfunction endif ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) if xx > ww xx = ww endif if xx < 1 xx = 1 endif if yy > hh yy = hh endif if yy < 1 yy = 1 endif if colbyte < 0 colbyte = 0 endif if colbyte > 255 colbyte = 255 endif loc as integer loc = GetBmpPixelLocRed(BitmapNumber,xx,yy) if memblock exist(400) > 0 delete memblock 400 endif make memblock from Bitmap 400,BitmapNumber write memblock byte 400,loc,colbyte delete Bitmap BitmapNumber make Bitmap from memblock BitmapNumber,400 delete memblock 400 endfunction function SetBmpPixelColour(BitmapNumber as integer,xx as integer,yy as integer,red as byte,green as byte,blue as byte) if Bitmap exist(BitmapNumber) < 1 exitfunction endif ww = GetBmpWidth(BitmapNumber) hh = GetBmpHeight(BitmapNumber) if xx > ww xx = ww endif if xx < 1 xx = 1 endif if yy > hh yy = hh endif if yy < 1 yy = 1 endif locr as integer locg as integer locb as integer locr = GetBmpPixelLocRed(BitmapNumber,xx,yy) locg = GetBmpPixelLocRed(BitmapNumber,xx,yy) locb = GetBmpPixelLocRed(BitmapNumber,xx,yy) if memblock exist(400) > 0 delete memblock 400 endif make memblock from Bitmap 400,BitmapNumber write memblock byte 400,locr,red write memblock byte 400,locg,green write memblock byte 400,locb,blue delete Bitmap BitmapNumber make Bitmap from memblock BitmapNumber,400 delete memblock 400 endfunction function ResizeImg(ImageNumber as integer,NewX as integer,NewY as integer) if image exist(ImageNumber) < 1 exitfunction endif if NewX < 1 NewX = 1 endif if NewY < 1 NewY = 1 endif if bitmap exist(6) > 0 delete bitmap 6 endif create bitmap 6,1024,768 set current bitmap 6 if sprite exist(16000) > 0 delete sprite 16000 endif sprite 16000,1,1,ImageNumber hide sprite 16000 size sprite 16000,NewX,NewY paste sprite 16000,1,1 delete image ImageNumber get image ImageNumber,1,1,NewX,NewY,1 delete bitmap 6 delete sprite 16000 set current bitmap 0 endfunction function VerticalFlipImg(ImageNumber) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) if bitmap exist(6) > 0 delete bitmap 6 endif create bitmap 6,1024,768 set current bitmap 6 if sprite exist(16000) > 0 delete sprite 16000 endif sprite 16000,1,1,ImageNumber hide sprite 16000 flip sprite 16000 paste sprite 16000,1,1 delete image ImageNumber get image ImageNumber,1,1,ww,hh,1 delete bitmap 6 delete sprite 16000 set current bitmap 0 endfunction function HorizontalFlipImg(ImageNumber) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) if bitmap exist(6) > 0 delete bitmap 6 endif create bitmap 6,1024,768 set current bitmap 6 if sprite exist(16000) > 0 delete sprite 16000 endif sprite 16000,1,1,ImageNumber hide sprite 16000 mirror sprite 16000 paste sprite 16000,1,1 delete image ImageNumber get image ImageNumber,1,1,ww,hh,1 delete bitmap 6 delete sprite 16000 set current bitmap 0 endfunction function RotateImg(ImageNumber as integer,angle as float) angle1# = wrapvalue(angle) if image exist(ImageNumber) < 1 exitfunction endif if bitmap exist(6) > 0 delete bitmap 6 endif create bitmap 6,1024,768 set current bitmap 6 if sprite exist(16000) > 0 delete sprite 16000 endif sprite 16000,1,1,ImageNumber hide sprite 16000 rotate sprite 16000,angle1# paste sprite 16000,1,1 xx = sprite width(16000) yy = sprite height(16000) delete image ImageNumber get image ImageNumber,1,1,xx,yy,1 delete bitmap 6 delete sprite 16000 set current bitmap 0 endfunction function MergeImgAWithImgB(ImageNumberA as integer,ImageNumberB as integer,ResultantImageC as integer) if image exist(ImageNumberA) < 1 exitfunction endif if image exist(ImageNumberB) < 1 exitfunction endif if image exist(ResultantImageC) > 0 delete image ResultantImageC endif CopyImg(ImageNumberA,15000) CopyImg(ImageNumberB,15001) AWidth = GetImgWidth(ImageNumberA) BWidth = GetImgWidth(ImageNumberB) AHeight = GetImgHeight(ImageNumberA) BHeight = GetImgHeight(ImageNumberB) ASize = AWidth * AHeight BSize = BWidth * BHeight if ASize > BSize ResizeImg(ImageNumberB,AWidth,AHeight) goto jump1 endif if BSize > ASize ResizeImg(ImageNumberA,BWidth,BHeight) goto jump1 endif ResizeImg(ImageNumberB,AWidth,AHeight) jump1: if memblock exist(210) > 0 delete memblock 210 endif if memblock exist(211) > 0 delete memblock 211 endif if memblock exist(212) > 0 delete memblock 212 endif make memblock from image 210,ImageNumberA make memblock from image 211,ImageNumberB siz = get memblock size(210) make memblock 212,siz www = GetImgWidth(ImageNumberA) hhh = GetImgHeight(ImageNumberA) ddd = GetImgDepth(ImageNumberA) write memblock dword 212,0,www write memblock dword 212,4,hhh write memblock dword 212,8,ddd make image from memblock ResultantImageC,212 for xx = 1 to www for yy = 1 to hhh ALocR = GetImgPixelLocRed(ImageNumberA,xx,yy) ALocG = GetImgPixelLocGreen(ImageNumberA,xx,yy) ALocB = GetImgPixelLocBlue(ImageNumberA,xx,yy) ALocA = GetImgPixelLocAlpha(ImageNumberA,xx,yy) BLocR = GetImgPixelLocRed(ImageNumberB,xx,yy) BLocG = GetImgPixelLocGreen(ImageNumberB,xx,yy) BLocB = GetImgPixelLocBlue(ImageNumberB,xx,yy) BLocA = GetImgPixelLocAlpha(ImageNumberB,xx,yy) CLocR = ALocR + BLocR / 2 CLocG = ALocG + BLocG / 2 CLocB = ALocB + BLocB / 2 CLocA = ALocA + BLocA / 2 SetImgPixelAlpha(ResultantImageC,xx,yy,CLocA) SetImgPixelRed(ResultantImageC,xx,yy,CLocR) SetImgPixelGreen(ResultantImageC,xx,yy,CLocG) SetImgPixelBlue(ResultantImageC,xx,yy,CLocB) next yy next xx CopyImg(15000,ImageNumberA) CopyImg(15001,ImageNumberB) delete memblock 210 delete memblock 211 delete memblock 212 delete image 15000 delete image 15001 endfunction function ProportionalMergeImgAWithImgB(ImageNumberA as integer,ProportionA as integer,ImageNumberB as integer,ProportionB as integer,ResultantImageC as integer) if image exist(ImageNumberA) < 1 exitfunction endif if image exist(ImageNumberB) < 1 exitfunction endif if image exist(ResultantImageC) > 0 delete image ResultantImageC endif CopyImg(ImageNumberA,15000) CopyImg(ImageNumberB,15001) AWidth = GetImgWidth(ImageNumberA) BWidth = GetImgWidth(ImageNumberB) AHeight = GetImgHeight(ImageNumberA) BHeight = GetImgHeight(ImageNumberB) ASize = AWidth * AHeight BSize = BWidth * BHeight if ASize > BSize ResizeImg(ImageNumberB,AWidth,AHeight) goto jump1 endif if BSize > ASize ResizeImg(ImageNumberA,BWidth,BHeight) goto jump1 endif ResizeImg(ImageNumberB,AWidth,AHeight) jump1: if memblock exist(210) > 0 delete memblock 210 endif if memblock exist(211) > 0 delete memblock 211 endif if memblock exist(212) > 0 delete memblock 212 endif make memblock from image 210,ImageNumberA make memblock from image 211,ImageNumberB siz = get memblock size(210) make memblock 212,siz www = GetImgWidth(ImageNumberA) hhh = GetImgHeight(ImageNumberA) ddd = GetImgDepth(ImageNumberA) write memblock dword 212,0,www write memblock dword 212,4,hhh write memblock dword 212,8,ddd make image from memblock ResultantImageC,212 for xx = 1 to www for yy = 1 to hhh ALocR = GetImgPixelLocRed(ImageNumberA,xx,yy) ALocG = GetImgPixelLocGreen(ImageNumberA,xx,yy) ALocB = GetImgPixelLocBlue(ImageNumberA,xx,yy) ALocA = GetImgPixelLocAlpha(ImageNumberA,xx,yy) BLocR = GetImgPixelLocRed(ImageNumberB,xx,yy) BLocG = GetImgPixelLocGreen(ImageNumberB,xx,yy) BLocB = GetImgPixelLocBlue(ImageNumberB,xx,yy) BLocA = GetImgPixelLocAlpha(ImageNumberB,xx,yy) TotalP = ProportionA + ProportionB CLocR = (ALocR * ProportionA) + (BLocR * ProportionB) / TotalP / 2 CLocG = (ALocG * ProportionA) + (BLocG * ProportionB) / TotalP / 2 CLocB = (ALocB * ProportionA) + (BLocB * ProportionB) / TotalP / 2 CLocA = (ALocA * ProportionA) + (BLocA * ProportionB) / TotalP / 2 SetImgPixelAlpha(ResultantImageC,xx,yy,CLocA) SetImgPixelRed(ResultantImageC,xx,yy,CLocR) SetImgPixelGreen(ResultantImageC,xx,yy,CLocG) SetImgPixelBlue(ResultantImageC,xx,yy,CLocB) next yy next xx CopyImg(15000,ImageNumberA) CopyImg(15001,ImageNumberB) delete memblock 210 delete memblock 211 delete memblock 212 delete image 15000 delete image 15001 endfunction function MakeImgGreyscale(ImageNumber as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh rr = GetImgPixelRed(ImageNumber,x,y) gg = GetImgPixelGreen(ImageNumber,x,y) bb = GetImgPixelBlue(ImageNumber,x,y) tt = rr + gg + bb / 3 SetImgPixelColour(ImageNumber,x,y,tt,tt,tt) next y next x endfunction function MakeImgRedscale(ImageNumber as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh rr = GetImgPixelRed(ImageNumber,x,y) gg = GetImgPixelGreen(ImageNumber,x,y) bb = GetImgPixelBlue(ImageNumber,x,y) tt = rr + gg + bb / 3 SetImgPixelColour(ImageNumber,x,y,tt,0,0) next y next x endfunction function MakeImgGreenscale(ImageNumber as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh rr = GetImgPixelRed(ImageNumber,x,y) gg = GetImgPixelGreen(ImageNumber,x,y) bb = GetImgPixelBlue(ImageNumber,x,y) tt = rr + gg + bb / 3 SetImgPixelColour(ImageNumber,x,y,0,tt,0) next y next x endfunction function MakeImgBluescale(ImageNumber as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh aa = GetImgPixelAlpha(ImageNumber,x,y) rr = GetImgPixelRed(ImageNumber,x,y) gg = GetImgPixelGreen(ImageNumber,x,y) bb = GetImgPixelBlue(ImageNumber,x,y) tt = rr + gg + bb / 3 SetImgPixelColour(ImageNumber,x,y,0,0,tt) next y next x endfunction function IncreaseImgAlpha(ImageNumber as integer,Percentage as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh aa = GetImgPixelAlpha(ImageNumber,x,y) aaa = 255 - aa aaaa# = aaa / 100 aaaaa# = aaaa# * Percentage aa1 = int(aaaaa#) SetImgPixelAlpha(ImageNumber,x,y,aa1) next y next x endfunction function DecreaseImgAlpha(ImageNumber as integer,Percentage as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh aa = GetImgPixelAlpha(ImageNumber,x,y) aaa = aa aaaa# = aaa / 100 aaaaa# = aaaa# * Percentage aa1 = aaa - int(aaaaa#) SetImgPixelAlpha(ImageNumber,x,y,aa1) next y next x endfunction function IncreaseImgRed(ImageNumber as integer,Percentage as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh aa = GetImgPixelRed(ImageNumber,x,y) aaa = 255 - aa aaaa# = aaa / 100 aaaaa# = aaaa# * Percentage aa1 = int(aaaaa#) SetImgPixelRed(ImageNumber,x,y,aa1) next y next x endfunction function DecreaseImgRed(ImageNumber as integer,Percentage as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh aa = GetImgPixelRed(ImageNumber,x,y) aaa = aa aaaa# = aaa / 100 aaaaa# = aaaa# * Percentage aa1 = aaa - int(aaaaa#) SetImgPixelRed(ImageNumber,x,y,aa1) next y next x endfunction function IncreaseImgGreen(ImageNumber as integer,Percentage as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh aa = GetImgPixelGreen(ImageNumber,x,y) aaa = 255 - aa aaaa# = aaa / 100 aaaaa# = aaaa# * Percentage aa1 = int(aaaaa#) SetImgPixelGreen(ImageNumber,x,y,aa1) next y next x endfunction function DecreaseImgGreen(ImageNumber as integer,Percentage as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh aa = GetImgPixelGreen(ImageNumber,x,y) aaa = aa aaaa# = aaa / 100 aaaaa# = aaaa# * Percentage aa1 = aaa - int(aaaaa#) SetImgPixelGreen(ImageNumber,x,y,aa1) next y next x endfunction function IncreaseImgBlue(ImageNumber as integer,Percentage as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh aa = GetImgPixelBlue(ImageNumber,x,y) aaa = 255 - aa aaaa# = aaa / 100 aaaaa# = aaaa# * Percentage aa1 = int(aaaaa#) SetImgPixelBlue(ImageNumber,x,y,aa1) next y next x endfunction function DecreaseImgBlue(ImageNumber as integer,Percentage as integer) if image exist(ImageNumber) < 1 exitfunction endif ww = GetImgWidth(ImageNumber) hh = GetImgHeight(ImageNumber) for x = 1 to ww for y = 1 to hh aa = GetImgPixelBlue(ImageNumber,x,y) aaa = aa aaaa# = aaa / 100 aaaaa# = aaaa# * Percentage aa1 = aaa - int(aaaaa#) SetImgPixelBlue(ImageNumber,x,y,aa1) next y next x endfunction |