Drag selected image using mouse
Add ,Delete ,Move & Change Zero-Order
Arrow keys To move the selected Image
Ctrl-Arrow To change selected image size
Ctrl- - ,Ctrl- + To change selected image size With respect To Aspect Ratio
Mouse wheel To chang selected image size With respect To Aspect Ratio
Save & Print the final image
Code: Select all
; UseJPEG2000ImageDecoder()
; UseJPEG2000ImageEncoder()
UseJPEGImageDecoder()
UseJPEGImageEncoder()
UsePNGImageDecoder()
UsePNGImageEncoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
Structure canvasitem
img.i : x.i : y.i : width.i : height.i : alphatest.i
EndStructure
Global isCurrentItem = #False
Global currentItemXOffset.i, currentItemYOffset.i
Global NewList Images.canvasitem()
Procedure DrawCanvas()
If StartDrawing(CanvasOutput(0))
Box(0,0,GadgetWidth(0),GadgetHeight(0),RGB(255,255,255))
;DrawingMode(#PB_2DDrawing_AlphaBlend)
ForEach Images()
DrawAlphaImage(ImageID(Images()\img),Images()\x,Images()\y,Images()\alphatest)
;DrawImage(ImageID(Images()\img),Images()\x,Images()\y) ; draw all images with z-order
Next
StopDrawing()
EndIf
EndProcedure
Procedure AddImage(x,y,img,alphatest=255)
If AddElement(Images())
Images()\img = img
Images()\x = x
Images()\y = y
Images()\width = ImageWidth(img)
Images()\height = ImageHeight(img)
Images()\alphatest = alphatest
EndIf
EndProcedure
Procedure DelImage()
Index = ListIndex(Images())
DeleteElement(Images(), Index)
DrawCanvas()
EndProcedure
Procedure HitTest(x,y)
isCurrentItem = #False
If LastElement(Images()) ; search for hit, starting from end (z-order)
Repeat
If x >= Images()\x And x < Images()\x + Images()\width
If y >= Images()\y And y < Images()\y + Images()\height
alpha=255
If Images()\alphatest And ImageDepth(Images()\img)>31
If StartDrawing(ImageOutput(Images()\img))
DrawingMode(#PB_2DDrawing_AlphaChannel)
alpha = Alpha(Point(x-Images()\x,y-Images()\y)) ; get alpha
StopDrawing()
EndIf
EndIf
If alpha
MoveElement(Images(), #PB_List_Last)
isCurrentItem = #True
currentItemXOffset = x - Images()\x
currentItemYOffset = y - Images()\y
Break
EndIf
EndIf
EndIf
Until PreviousElement(Images())=0
EndIf
ProcedureReturn isCurrentItem
EndProcedure
Procedure Bring2Top(index)
SelectElement(Images(), index)
MoveElement(Images(), #PB_List_Last)
isCurrentItem = #True
currentItemXOffset = x - Images()\x
currentItemYOffset = y - Images()\y
DrawCanvas()
EndProcedure
Procedure saveCB()
StartDrawing(CanvasOutput(0))
GrabDrawingImage(20,0,0,GadgetWidth(0)-5,GadgetHeight(0)-5)
StopDrawing()
EndProcedure
Procedure printCB(file.s)
If PrintRequester()
If StartPrinting("Vector Print Test")
HDC = PrinterVectorOutput(#PB_Unit_Pixel)
StartVectorDrawing(HDC)
PageWidth = PrinterPageWidth()
PageHeight = PrinterPageHeight()
AddPathBox(50, 50, PageWidth-100 , PageHeight-100)
StrokePath(10)
If LoadImage(0,file)
MovePathCursor(100,100)
scale.f = (PrinterPageWidth()-200)/ImageWidth(0)
DrawVectorImage(ImageID(0),255,ImageWidth(0)*scale , ImageHeight(0)*scale)
Else
MessageRequester("Error","Can't load the image")
EndIf
StopVectorDrawing()
StopPrinting()
EndIf
EndIf
EndProcedure
Procedure sizeCB()
ResizeGadget(0,#PB_Ignore,#PB_Ignore,WindowWidth(0)-20,WindowHeight(0)-20)
ResizeGadget(1,#PB_Ignore,WindowHeight(0)-65,190,34)
DrawCanvas()
EndProcedure
CatchImage(0,?Image_000)
StartDrawing(ImageOutput(0))
GrabDrawingImage(10,6,5,24,24)
GrabDrawingImage(12,32,0,35,32)
GrabDrawingImage(13,68,5,24,24)
GrabDrawingImage(18,95,2,24,24)
GrabDrawingImage(14,125,5,24,24)
GrabDrawingImage(16,155,5,24,24)
StopDrawing()
FreeImage(0)
winflags = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered | #PB_Window_SizeGadget ;| #PB_Window_Invisible
If OpenWindow(0, 0, 0, 420, 520, "Merge Images", winflags)
WindowBounds(0,300,300,#PB_Default,#PB_Default)
CanvasGadget(0, 10, 10, 400, 500 ,#PB_Canvas_Border | #PB_Canvas_Container)
SetGadgetAttribute(0, #PB_Canvas_Cursor , #PB_Cursor_Hand)
ContainerGadget(1,5,WindowHeight(0)-65,190,34,#PB_Container_Raised)
SetGadgetColor(1,#PB_Gadget_BackColor,$88FE98)
ImageGadget(8,5,3,30,30,ImageID(10))
GadgetToolTip(8,"New Page")
ImageGadget(9,32,-2,30,30,ImageID(12))
GadgetToolTip(9,"Add Image")
ImageGadget(10,68,3,30,30,ImageID(13))
GadgetToolTip(10,"Del Image")
ImageGadget(11,95,0,30,30,ImageID(18))
GadgetToolTip(11,"Bring2Top")
ImageGadget(12,125,3,30,30,ImageID(14))
GadgetToolTip(12,"Save..")
ImageGadget(13,155,3,30,30,ImageID(16))
GadgetToolTip(13,"Print..")
CloseGadgetList()
CloseGadgetList()
items = 1 : itemy = 10
BindEvent(#PB_Event_SizeWindow,@sizeCB())
AddKeyboardShortcut(0,#PB_Shortcut_Left,1)
AddKeyboardShortcut(0,#PB_Shortcut_Right,2)
AddKeyboardShortcut(0,#PB_Shortcut_Up,3)
AddKeyboardShortcut(0,#PB_Shortcut_Down,4)
AddKeyboardShortcut(0,#PB_Shortcut_Control|#PB_Shortcut_Left,5)
AddKeyboardShortcut(0,#PB_Shortcut_Control|#PB_Shortcut_Right,6)
AddKeyboardShortcut(0,#PB_Shortcut_Control|#PB_Shortcut_Up,7)
AddKeyboardShortcut(0,#PB_Shortcut_Control|#PB_Shortcut_Down,8)
AddKeyboardShortcut(0,#PB_Shortcut_Control|#PB_Shortcut_Subtract,9)
AddKeyboardShortcut(0,#PB_Shortcut_Control|#PB_Shortcut_Add,10)
AddKeyboardShortcut(0,#PB_Shortcut_Alt|#PB_Shortcut_Subtract,11)
AddKeyboardShortcut(0,#PB_Shortcut_Alt|#PB_Shortcut_Add,12)
;HideWindow(0,0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Menu
If EventMenu() > 4
For index = 1 To items
If Images()\img = index*100
nimg = index*100
CopyImage(index,nimg)
Break
EndIf
Next
EndIf
Select EventMenu()
Case 1
Images()\x - 1
If ListSize(Images()) > 0 And Images()\x < 0
Images()\x + 5
EndIf
Case 2
Images()\x + 1
Case 3
Images()\y - 1
If ListSize(Images()) > 0 And Images()\y < 0
Images()\y + 5
EndIf
Case 4
Images()\y + 1
Case 5
ResizeImage(nimg,Images()\width-1,Images()\height)
Case 6
ResizeImage(nimg,Images()\width+1,Images()\height)
Case 7
ResizeImage(nimg,Images()\width,Images()\height-1)
Case 8
ResizeImage(nimg,Images()\width,Images()\height+1)
Case 9
ResizeImage(nimg,Images()\width/1.01,Images()\height/1.01)
Case 10
ResizeImage(nimg,Images()\width*1.01,Images()\height*1.01)
Case 11
ResizeImage(nimg,Images()\width,Images()\height)
If Images()\alphatest > 0
Images()\alphatest - 1
EndIf
Case 12
ResizeImage(nimg,Images()\width,Images()\height)
If Images()\alphatest < 255
Images()\alphatest + 1
EndIf
EndSelect
If EventMenu() > 4
images()\img = nimg
Images()\width = ImageWidth(nimg)
Images()\height = ImageHeight(nimg)
DrawCanvas()
Else
DrawCanvas()
EndIf
Case #PB_Event_Gadget
Select EventGadget()
Case 0
Select EventType()
Case #PB_EventType_LeftButtonDown
x = GetGadgetAttribute(0, #PB_Canvas_MouseX)
y = GetGadgetAttribute(0, #PB_Canvas_MouseY)
If HitTest(x,y)
DrawCanvas()
EndIf
Drag = #True
Case #PB_EventType_LeftButtonUp
Drag = #False
Case #PB_EventType_MouseMove
x = GetGadgetAttribute(0, #PB_Canvas_MouseX)
y = GetGadgetAttribute(0, #PB_Canvas_MouseY)
If ListSize(Images()) > 0 And Images()\x < 0
Drag = #False
Images()\x + 5
ElseIf ListSize(Images()) > 0 And Images()\y < 0
Drag = #False
Images()\y + 5
EndIf
If Drag = #True
If isCurrentItem
x = GetGadgetAttribute(0, #PB_Canvas_MouseX)
y = GetGadgetAttribute(0, #PB_Canvas_MouseY)
If LastElement(Images())
Images()\x = x - currentItemXOffset
Images()\y = y - currentItemYOffset
DrawCanvas()
EndIf
EndIf
EndIf
Case #PB_EventType_MouseWheel
Value.f = GetGadgetAttribute(0,#PB_Canvas_WheelDelta )
For index = 1 To items
If Images()\img = index*100
nimg = index*100
CopyImage(index,nimg)
Break
EndIf
Next
If value > 0
ResizeImage(nimg,Images()\width/1.05,Images()\height/1.05)
Else
ResizeImage(nimg,Images()\width*1.05,Images()\height*1.05)
EndIf
images()\img = nimg
Images()\width = ImageWidth(nimg)
Images()\height = ImageHeight(nimg)
DrawCanvas()
EndSelect
Case 8 ;New page
Select EventType()
Case #PB_EventType_LeftClick
For i = 1 To 10
If IsImage(i)
FreeImage(i)
EndIf
Next
ClearList(Images())
StartDrawing(CanvasOutput(0))
Box(0,0,GadgetWidth(0),GadgetHeight(0),$FFFFFF)
StopDrawing()
EndSelect
Case 1 ;Add items
Select EventType()
Case #PB_EventType_LeftClick
File$ = OpenFileRequester("SELECT IMAGE","","All supported formats|*.*;*.bmp; *.jpg; *.jpeg; *.png;*.tif;*.tiff;*.tga|TGA image (*.tga)|*.tga|TIF image (*.tif)|*.tif|TIFF image (*.tiff)|*.tiff|PNG image (*.png)|*.png|BMP image (*.bmp)|*.bmp|JPEG image (*.jpg;*.jpeg)|*.jpg;*.jpeg",0)
If FileSize(file$) > 0
result = LoadImage(items, file$)
If result
cimg = items*100
ResizeImage(items,595,595*ImageHeight(items)/ImageWidth(items))
CopyImage(items,cimg)
AddImage(10,itemy,cimg)
itemy + 40
DrawCanvas()
items + 1
Else
MessageRequester("Error","Format not supported !", #PB_MessageRequester_Ok | #PB_MessageRequester_Error)
EndIf
Else
MessageRequester("Error","No File loaded !", #PB_MessageRequester_Ok | #PB_MessageRequester_Error)
EndIf
EndSelect
Case 10
If ListSize(Images()) > 0
DelImage()
EndIf
Case 11 ;Bring item 2 top
Select EventType()
Case #PB_EventType_LeftClick
If ListSize(Images()) > 0
Bring2Top(0)
EndIf
EndSelect
Case 12 ;Save page
Select EventType()
Case #PB_EventType_LeftClick
If ListSize(Images()) > 0
sFile$ = SaveFileRequester("Please choose file to save",""," All supported formats|*.bmp; *.jpg; *.png | BMP image (*.bmp)| *.bmp| JPEG image (*.jpg;*.jpeg)|*.jpg| PNG image (*.png)| *.png",0)
If sFile$
saveCB()
If GetExtensionPart(sFile$) = ""
If SelectedFilePattern() = 1
sFile$ + ".bmp"
ElseIf SelectedFilePattern() = 2
sFile$ + ".jpg"
ElseIf SelectedFilePattern() = 0 Or SelectedFilePattern() = 3
sFile$ + ".png"
EndIf
EndIf
If GetExtensionPart(sFile$) = "bmp"
SaveImage(20, sfile$ ,#PB_ImagePlugin_BMP)
ElseIf GetExtensionPart(sFile$) = "jpg"
SaveImage(20, sfile$ ,#PB_ImagePlugin_JPEG)
ElseIf GetExtensionPart(sFile$) = "png"
SaveImage(20, sfile$ ,#PB_ImagePlugin_PNG)
EndIf
FreeImage(20)
MessageRequester("Info","File saved successfully", #PB_MessageRequester_Ok | #PB_MessageRequester_Info)
Else
MessageRequester("Error","Process failed !", #PB_MessageRequester_Ok | #PB_MessageRequester_Error)
EndIf
EndIf
EndSelect
Case 13
Select EventType() ;Print page
Case #PB_EventType_LeftClick
If ListSize(Images()) > 0
saveCB()
SaveImage(20, GetTemporaryDirectory()+"print.png" ,#PB_ImagePlugin_PNG)
FreeImage(20)
printCB(GetTemporaryDirectory()+"print.png")
DeleteFile(GetTemporaryDirectory()+"print.png")
MessageRequester("Info","File printed successfully", #PB_MessageRequester_Ok | #PB_MessageRequester_Info )
Else
MessageRequester("Error","Process failed !", #PB_MessageRequester_Ok | #PB_MessageRequester_Error)
EndIf
EndSelect
EndSelect
EndSelect
Until Quit = 1
EndIf
DataSection
Image_000:
Data.q $464A1000E0FFD8FF,$0100000101004649,$4300DBFF00000100,$0A06070807070A00,$0E0B0A0A0B080808
Data.q $151D0E0D0D0E1018,$2224251F23181116,$262F372B2621221F,$3141302221293429,$2E253E3E3E3B3934
Data.q $3E3D37483C434944,$0B0A014300DBFF3B,$1C10101C0E0D0E0B,$3B3B3B3B2822283B,$3B3B3B3B3B3B3B3B
Data.q $3B3B3B3B3B3B3B3B,$3B3B3B3B3B3B3B3B,$3B3B3B3B3B3B3B3B,$3B3B3B3B3B3B3B3B,$C0FF3B3B3B3B3B3B
Data.q $03BB002100081100,$1103011102002201,$0100001F00C4FF01,$0001010101010105,$0100000000000000
Data.q $0908070605040302,$0010B500C4FF0B0A,$0503040203030102,$017D010000040405,$2112051104000302
Data.q $2207615113064131,$2308A19181321471,$24F0D15215C1B142,$17160A0982726233,$29282726251A1918
Data.q $3A3938373635342A,$4A49484746454443,$5A59585756555453,$6A69686766656463,$7A79787776757473
Data.q $8A89888786858483,$9998979695949392,$A8A7A6A5A4A3A29A,$B7B6B5B4B3B2AAA9,$C6C5C4C3C2BAB9B8
Data.q $D5D4D3D2CAC9C8C7,$E3E2E1DAD9D8D7D6,$F1EAE9E8E7E6E5E4,$F9F8F7F6F5F4F3F2,$0300011F00C4FFFA
Data.q $0101010101010101,$0100000000000001,$0908070605040302,$0011B500C4FF0B0A,$0704030404020102
Data.q $0077020100040405,$3121050411030201,$1371610751411206,$A191421408813222,$15F052332309C1B1
Data.q $E13424160AD17262,$27261A191817F125,$39383736352A2928,$494847464544433A,$595857565554534A
Data.q $696867666564635A,$797877767574736A,$888786858483827A,$9796959493928A89,$A6A5A4A3A29A9998
Data.q $B5B4B3B2AAA9A8A7,$C4C3C2BAB9B8B7B6,$D3D2CAC9C8C7C6C5,$E2DAD9D8D7D6D5D4,$EAE9E8E7E6E5E4E3
Data.q $F9F8F7F6F5F4F3F2,$0001030C00DAFFFA,$F4003F0011031102,$C0295157566E2FB9,$EEAA35AC71410562
Data.q $05FDD4037A66EB9A,$F9214B33B764F232,$B04D13ABFD7D9250,$37AA8BAF6E79D4FE,$15F60CFA04D860DD
Data.q $4929A7C36BBC78F3,$59ADCA25DEE09793,$A9917DBB69BB08B5,$231E6EDA67D28907,$1A00FFF10700C8D8
Data.q $95FE98C893EBF6BF,$B0F228DCA68D3E9D,$FD7D72DCF268A38C,$69B22C725768674D,$AB6E847C2CC92AF7
Data.q $39336173C59D3EEA,$29E0C6E94CBB3462,$D35D2E290D5717FB,$0068566D7AA33B7D,$F60F15C07172332F
Data.q $91EF3F59CF00FFF3,$EB0FEF9FBA1F3555,$D257FB7A06FBEC59,$B469B5BDE12885D3,$B35661B478E6EBBA
Data.q $79FB6F33BF6D8351,$A9C8F79FACE700FF,$0ECEACF69965D622,$3D2375D48315C833,$27274FFBC1D3580D
Data.q $8EFC2A46A9ABF56F,$777D973C7DEFB556,$BD9B938392502AF4,$DBE746DEFE7E6DED,$F73E2BFDB1E77FAE
Data.q $24965B8A306329C5,$CF915C9F70A5F27D,$F4D20675D7A0E6B0,$7F264CF4C6C49B5B,$DB34CE6BEA074EBC
Data.q $F78BB14F14F5EE89,$88F8B763818D9663,$D4AC0E79CDF71CC1,$73F964EB797F9B5C,$34ADF249AB55C2C5
Data.q $95F194F4C8CFBF76,$643D65D9252A93B4,$568CE3BFD7AF761B,$F420311120B9BFA8,$4B8611DA97E61523
Data.q $B6CC21D9EA8EB7B7,$902585621E295CF2,$4A1FA01E07C39D63,$F68CED25AB2EF0DB,$00FFA1C06CE3B6B2
Data.q $21EAFC41E0C7B365,$D9E6FDC978237588,$9B866F7F380A599E,$DB879DFA7DD3B5B2,$EBBA2AFDB1E77FAE
Data.q $064B8017B666AEA1,$EB7564648C5B31DF,$0CEB2CF32C43A5C7,$45F75BCA2C173716,$F9510FF37E800038
Data.q $E675A7FD4B6B9AD4,$6372CC2198BB25C1,$DBB57E24F4A5F970,$B94B9BF7AB56A787,$6F62B75DADF6B0F3
Data.q $00FFC49F00FF76ED,$6D4F2FCFF53185BE,$90715E2CDBCAEE41,$85D233C63963028E,$264B3C6D539FECD7
Data.q $36F2B3DD8F4B60FC,$15AF23F207F7FE06,$ECBFAE4DF25FEACE,$8A98D624FA00FF0E,$393976B769CBA352
Data.q $A9C4C37253CF7BAB,$64F231716BAF24A9,$005BD9782059E4F2,$ADC61F183D28ABE0,$FE9B3D00FFCF697F
Data.q $D5801F56EB00FFF9,$D41AB7B245D74E9F,$BF8C5E4C1EC7219C,$A49139EA9278BACE,$3AFE1FCB19868249
Data.q $F7E7FDAFBEAD917F,$1AF3BE347FC1FE9D,$DB58F2F7D796C5CF,$3AD02ABFC5D3485E,$C306941936B6B103
Data.q $FEE7BAFD684D7070,$0FEEC3EBBCD21F7B,$CF529F9507F57BC4,$28B0CE3377AD04FE,$E21AAB830AB7BBE0
Data.q $797F32925321EDAD,$F7272339359E5BC3,$BBB762F2F5620D92,$70907111BD2B4199,$52F9D270B31ED17B
Data.q $FA6E0065D9EFD6F9,$C98C4A27D44D7A54,$20C0A52C77B97134,$AE691375B1163596,$1820862C2C49F1C8
Data.q $2E165EF58AC39D64,$B77CC2D5D4DF4D36,$00FF73DD7E347752,$F5C5B4F65CE98F3D,$00FF2454498E5949
Data.q $1CE225DED96845C0,$6BA86EE3E1104929,$EE9F949000FF5737,$F3290B832B80FEA7,$49C9F3290B8F4DC9
Data.q $80B8A2DABF95FA9A,$B57EE45C1F27161C,$B300FFAC2E98A591,$95224BF3E668B867,$93DC56BC7ED081E9
Data.q $915830980BBBD240,$D3BBCE1A00FFE5FB,$098ABCA3F364EEAC,$EBCFF4939749EFBA,$53F9BD520533465E
Data.q $52CCB2F4BC3FFA4E,$3BDD2D6AAA42A7A4,$BAF6692B99FCFC6C,$92DBB1A29BDBCB6E,$A100FF7192035772
Data.q $E2A1CE7874B1CA0F,$6CB3513C3B48AD2B,$E90F7B0CE039E376,$AB73CB8E4C871F4B,$B1042751DC16E4C7
Data.q $616DB706D7074EFC,$44B7E52D58B7B2B2,$CF354F7DF272DE5E,$DF2E756E52ABCB84,$4EA514C6C58DD3A1
Data.q $7D8996AE9594E693,$F587F74FDD8F3AC4,$B7757E3C498CC2AC,$3938887B00CEDA32,$B6EC8B1A00FF65E2
Data.q $5F00FFFD17F1F35F,$1AA1D7A87476AFF1,$C4848FC7DEBDD455,$60AEE6EB08EBC2D6,$3773231791FD5C5E
Data.q $4B2C9E68A8E25CDD,$4AE50FA48C94F98B,$561CF5A8E7B471DB,$E569AB0E3F3C899F,$0817648503137145
Data.q $932BBD9E83F38CA4,$3C8FEAA7CF1E7ED0,$DC8DE9FEE68B42B2,$52697203B47F2A64,$EF93CCA5928AC2C3
Data.q $B65E112BB4FEF5BB,$FD795A924DA75E25,$BCD6791AC4F74EFD,$A27B342F0F69753B,$18677A1D866119CF
Data.q $AAACC3FEEED025AF,$6448916CD76DCCDD,$E2E075E44825E407,$97440AC1B31FAABD,$C0B9CC8C428D6D30
Data.q $EBA121BCD7C25A1F,$598FEEAD689667EE,$7F7086F76F0199A1,$DB49C2C549A9609D,$54C6C2F271CAEDD0
Data.q $BCE3D8B6BEF2C56A,$DAD95FBCB5DBAE51,$70836EE69F374D9A,$FE90772039720128,$4BD79A4BD7F0BF55
Data.q $CB97B1FD4A9D509F,$F227893FCF45A907,$9D55FA8600FFF4A8,$91D3DE0DA736CDCA,$76CD0DA89F36A51C
Data.q $03B7CD4D8128BC91,$C3519AE5078A2C1F,$C07FF9BBB07C2AFB,$50E80E530573CC37,$F2BFE92DD376DF4D
Data.q $12FA00FFE0FA5F15,$14F5F9C69E743553,$FB268EA3298AB3B9,$5D8F60C45286E14E,$612E7EABCC52A5DF
Data.q $68B43C450485A2D5,$E3A0CF969320C989,$6FD07F5DB67FAA1D,$AF8900FF831E00FF,$F4779A04674F8542
Data.q $5F9450D3A8498F67,$49AB79CB5E5967DC,$6744B50592621F34,$9EA36DF62641168C,$6DD51C4746E8A9A3
Data.q $B76DD4039EECDF7A,$678CDD63C974F2EF,$A012C9C2569C1111,$3299B1602016EE06,$2DEFECA8CB34F87D
Data.q $1A99E1DD9AB8B566,$3A829132BFCC1439,$7425A9D6592D57FA,$7C92A34A96639FEC,$27BE16698E87DEAE
Data.q $F47D7D74F9B52ED5,$26DBAFD3BD2B6BCB,$09020282323B3388,$D1201E5AED9360C2,$15AF9B5B6CF8213E
Data.q $3B35F26D372E4C5C,$C2FB033967DCC696,$A98BE8D2C0331DBA,$0EEA5AD3E9AC6341,$572C6C98A576E98C
Data.q $ADF7E4783F5749E6,$26895475D74D4F3D,$06B2DB6E1154F4D6,$5E7AA58F99EB38E7,$BC683F3D737F3ED6
Data.q $97B8E60BDF70E6FE,$0D619646EA0277C6,$B8C78B592C6677C1,$24D56B729E247992,$CB5DE4C56A5D4BB9
Data.q $2DFCE59AEF3F5EB2,$6D567D76EDE191E0,$6A130557E7E1D266,$E94A1FCB13835D00,$C937279EAFEDAC6F
Data.q $19DFC9246BBBC513,$3B85F5B729AEF4EB,$B353B7BFB21C7A3B,$A47B04D3BE08A1B7,$7A46B92D6639D082
Data.q $591A71FB68AB4FD4,$358F1BA86A97A179,$D315E5C55BA2BD2D,$6F6EE092BC3FC167,$6140DFDBA57B43AD
Data.q $38C5124172C8B468,$7FEF1E7A453DB8DC,$B83FBB6AAF8EFCCF,$51F589E7157B6DB1,$E43B4E6E45026114
Data.q $5242FE5F6D55F83F,$5E1AAB00FA9FBA7F,$16D438714DA66B97,$C96496248942AE79,$ABBAAAA9C7749CDB
Data.q $51EDBA3A3232EAAB,$573AAE77741F3995,$ACEE4A65682BA575,$B3AE288A220E6DA5,$8AA228008AA228A8
Data.q $8AA228008AA22800,$8AA228008AA22800,$8AA228008AA22800,$8AA228008AA22800,$D9FF008AA22800
Image_000end:
EndDataSection
Edit 2: Code Modified
Edit 3: Code modified
1- Added transparency effect as per infratec suggestion
2- Fixed some bugs as per davido remarks
Edit 4:Bug fixed