Page 1 of 1

Librairie load_Net()

Posted: Sat Jul 02, 2016 4:45 pm
by dobro
when you have to share codes, on forum
and that they need images, music etc ...

for aid to debugging, we need to provide images, sprites, sounds etc ...

this is where intervene, the library below!
it allows to share a listing on the forums, without having to provide the media that go with ...
just use the media on the NET :)

An example of use is included with the procedures of the library

click the play button and you'll see it appear an image and hear a famous music !! ;)

the code :

Code: Select all

;***********************************************
;Titre  :*internet_load()
;Auteur  : Dobro and Ar-s
;Date  :02/07/2016
;Heure  :17:01:08
;Version Purebasic :  PureBasic 5.42 LTS (Windows - x86)
;Version de l'editeur :EPB V2.64
; Libairies necessaire : Aucune 
;***********************************************
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()


Declare openwindow_win()
Declare.l loadimage_net(adr$,nom_fichier$)
Declare.l loadsound_net(adr$,nom_fichier$)
Declare.l loadsound3d_net(adr$,nom_fichier$)
Declare.l loadmusic_net(adr$,nom_fichier$)
Declare.l loadsprite_net(adr$,nom_fichier$)
Declare.l loadmovie_net(adr$,nom_fichier$)
Declare.l loadfont_net(adr$,nom_fichier$,taille)
Declare catchimage_net(adr$)
Declare catchsound_net(adr$)
Declare catchmusic_net(adr$)
Declare catchsprite_net(adr$)



; ************************************* Code Sample ***********************************
;{- Enumerations / DataSections
;{ Windows
Enumeration
		#Win
EndEnumeration
;}
;{ Gadgets
Enumeration
		#Image_gadget
		#Text_titre
		#Button_Play
EndEnumeration
;}
;{ Images
Enumeration
		#Image
EndEnumeration
;}
Define.l Event
InitSound()


;}
Procedure OpenWindow_Win()
		If OpenWindow(#Win, 404, 84, 400, 400, "Demo Lib Loadnet by Dobro", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
				ImageGadget(#Image_gadget, 45, 50, 295, 270, 0, #PB_Image_Border)
				TextGadget(#Text_titre, 160, 10, 95, 25, "Demo Lib Load Net")
				ButtonGadget(#Button_Play, 45, 340, 80, 35, "Play")
				
		EndIf
EndProcedure

OpenWindow_Win()


;{- Event loop
Repeat
		Event = WaitWindowEvent(12)
		Select Event
				; ///////////////////
		Case #PB_Event_Gadget
				Select EventGadget()
				Case #Image_gadget
				Case #Text_titre
				Case #Button_Play
						Adr$="http://michel.dobro.free.fr/Bank_images/"
						nom_fichier$="girl2.bmp"
						;im=Loadimage_net(Adr$,nom_fichier$) ; Choice 1
						im=CatchImage_Net(Adr$ + nom_fichier$) ; choice 2
						if im>0
								SetGadgetState(#Image_gadget, imageId(im))
						Endif
						nom_music$="Maupiti.mod"
						;music=LoadMusic_net(Adr$,nom_music$) ; choice 1
						music= CatchMusic_Net(Adr$+nom_music$) ; choice 2
						if music>0
								PlayMusic(music)
						Endif
				EndSelect
				; ////////////////////////
		Case #PB_Event_CloseWindow
				Select EventWindow()
				Case #Win
						CloseWindow(#Win)
						Break
				EndSelect
		EndSelect
Forever
;
;}
; ********************************************************************************************

; ***************************** Librairie LoadNEt *****************************************
Procedure.l Loadimage_net(Adr$,nom_fichier$)
		
		; By Dobro
		;Adr$=adresse du fichier image a charger
		;nom_image$ = nom qu'on donne a cette image
		; la procedure renvoi l'Id de l'image recupérée ou False en cas d'erreur
		Protected image
		if InitNetwork()
				path$=GetTemporaryDirectory()
				If ReceiveHTTPFile(Adr$+nom_fichier$,path$+nom_fichier$)
						image=LoadImage(#pb_any,path$+nom_fichier$)
						DeleteFile(path$+nom_fichier$)
						ProcedureReturn image
				Else
						ProcedureReturn #false
				EndIf
		Else
				ProcedureReturn #false
		Endif
EndProcedure

Procedure.l LoadSound_net(Adr$,nom_fichier$)
		; By Dobro
		;Adr$=adresse du fichier image a charger
		;nom_fichier$ = nom qu'on donne a ce son
		; la procedure renvoi l'Id du son recupéré ou False en cas d'erreur
		Protected sound,path$
		InitNetwork()
		path$=GetTemporaryDirectory()
		If ReceiveHTTPFile(Adr$+nom_fichier$, path$+nom_fichier$)
				sound=LoadSound(#pb_any, path$+nom_fichier$)
				DeleteFile(path$+nom_fichier$)
				ProcedureReturn sound
		Else
				ProcedureReturn #false
		EndIf
EndProcedure

Procedure.l LoadSound3D_net(Adr$,nom_fichier$)
		; By Dobro
		;Adr$=adresse du fichier image a charger
		;nom_fichier$ = nom qu'on donne a ce son
		; la procedure renvoi l'Id du son recupéré ou False en cas d'erreur
		Protected sound,path$
		InitNetwork()
		path$=GetTemporaryDirectory()
		If ReceiveHTTPFile(Adr$+nom_fichier$, path$+nom_fichier$)
				sound=LoadSound3D(#pb_any, path$+nom_fichier$)
				DeleteFile(path$+nom_fichier$)
				ProcedureReturn sound
		Else
				ProcedureReturn #false
		EndIf
EndProcedure

Procedure.l LoadMusic_net(Adr$,nom_fichier$)
		; By Dobro
		;Adr$=adresse du fichier image a charger
		;nom_fichier$ = nom qu'on donne a cette Musique
		; la procedure renvoi l'Id de la Music recupérée ou False en cas d'erreur
		Protected Music, path$
		InitNetwork()
		path$=GetTemporaryDirectory()
		If ReceiveHTTPFile(Adr$+nom_fichier$, path$+nom_fichier$)
				Music=LoadMusic(#pb_any,path$+nom_fichier$)
				DeleteFile(path$+nom_fichier$)
				ProcedureReturn Music
		Else
				ProcedureReturn #false
		EndIf
EndProcedure

Procedure.l LoadSprite_net(Adr$,nom_fichier$)
		; By Dobro
		;Adr$=adresse du fichier image a charger
		;nom_fichier$ = nom qu'on donne a ce Sprite
		; la procedure renvoi l'Id du Sprite recupéré ou False en cas d'erreur
		Protected spr,path$
		InitNetwork()
		path$=GetTemporaryDirectory()
		If ReceiveHTTPFile(Adr$+nom_fichier$, path$+nom_fichier$) 
				spr=LoadSprite(#pb_any, path$+nom_fichier$)
				DeleteFile(path$+nom_fichier$)
				ProcedureReturn spr
		Else
				ProcedureReturn #false
		EndIf
EndProcedure

Procedure.l LoadMovie_net(Adr$,nom_fichier$)
		; By Dobro
		;Adr$=adresse du fichier image a charger
		;nom_fichier$ = nom qu'on donne a cette Video
		; la procedure renvoi l'Id de la video recup?r? ou False en cas d'erreur
		Protected movie
		InitNetwork()
		path$=GetTemporaryDirectory()
		If ReceiveHTTPFile(Adr$+nom_fichier$, path$+nom_fichier$)
				movie=LoadSprite(#pb_any, path$+nom_fichier$)
				DeleteFile(path$+nom_fichier$)
				ProcedureReturn movie
		Else
				ProcedureReturn #false
		EndIf
EndProcedure

Procedure.l LoadFont_net(Adr$,nom_fichier$,taille)
		; By Dobro
		;Adr$=adresse du fichier image a charger
		;taille = taille de la fonte
		; la procedure renvoi l'Id de la Fonte recupérée ou False en cas d'erreur
		Protected Font
		InitNetwork()
		path$=GetTemporaryDirectory()
		If ReceiveHTTPFile(Adr$+nom_fichier$, path$+nom_fichier$)
				Font=LoadFont(#pb_any, path$+nom_fichier$,taille)
				DeleteFile(path$+nom_fichier$)
				ProcedureReturn Font
		Else
				ProcedureReturn #false
		EndIf
EndProcedure

; ************** les Catchs ***********************************************************

Procedure CatchImage_Net(Adr$)
		InitNetwork()
		Protected image
		; By Ar-S  
		*Buffer = ReceiveHTTPMemory(Adr$)
		If *Buffer
				Image = CatchImage(#PB_Any, *Buffer, MemorySize(*Buffer) )
				FreeMemory(*Buffer)
				ProcedureReturn Image
		Else
				ProcedureReturn #false   
		EndIf
EndProcedure

Procedure CatchSound_Net(Adr$)
		InitNetwork()
		Protected sound
		
		; By Ar-S  
		*Buffer = ReceiveHTTPMemory(Adr$)
		If *Buffer
				Sound = Catchsound(#PB_Any, *Buffer, MemorySize(*Buffer) )
				FreeMemory(*Buffer)
				ProcedureReturn Sound
		Else
				ProcedureReturn #false  
		EndIf
EndProcedure


Procedure CatchMusic_Net(Adr$)
		InitNetwork()
		Protected Music
		; By Ar-S  
		*Buffer = ReceiveHTTPMemory(Adr$)
		If *Buffer
				Music = CatchMusic(#PB_Any, *Buffer, MemorySize(*Buffer) )
				FreeMemory(*Buffer)
				ProcedureReturn Music
		Else
				ProcedureReturn #false  
		EndIf
EndProcedure

Procedure CatchSprite_Net(Adr$)
		InitNetwork()
		Protected Spr
		; By Ar-S  
		*Buffer = ReceiveHTTPMemory(Adr$)
		If *Buffer
				Spr = CatchSprite(#PB_Any, *Buffer, MemorySize(*Buffer) )
				FreeMemory(*Buffer)
				ProcedureReturn Spr
		Else
				ProcedureReturn #false  
		EndIf
Endprocedure




; Epb