Sympa comme effet !
Dri

j'avais fait ça ya quelques tempsCpl.Bator a écrit :La datasection à été generer avec une image faite sous adobe ^^
je lis l'image pixel par pixel, j'ecrit dans un fichier texte la datasection puis je le colle dans mon code.
Code : Tout sélectionner
; code by Dobro
Declare SetStringManipulationBufferSize(Bytes)
SetStringManipulationBufferSize(1048576)
If OpenWindow(1, 0, 0, 200, 50, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget , "")
NomFichier$ = OpenFileRequester("dobro_datagenerator", "c:", "Fichiers image|*.bmp", 0 )
If LoadImage(0, NomFichier$)
Hauteur = ImageHeight()
Largeur = ImageWidth()
num=CreateFile(#PB_Any,"data.pb") :; ceci ecrit le fichier pb (txt) pour etre charge dans l'editeur !!
WriteStringN("; codé Par Dobro img to data"):; ecrit la premiere ligne de code
WriteStringN("Declare WindowCallback(WindowID,message,wParam,lParam)")
WriteStringN("largeur="+Str(Largeur)):; ecrit la variable
WriteStringN("hauteur="+Str(Hauteur))
WriteStringN("CreateImage(1, Largeur, Hauteur)")
WriteStringN("For i = 0 To Largeur -1")
WriteStringN(" For j = 0 To Hauteur -1 ")
WriteStringN(" Read a.l ")
WriteStringN(" If StartDrawing(ImageOutput())")
WriteStringN(" Plot(i,j,a.l) ")
WriteStringN(" StopDrawing() ")
WriteStringN(" EndIf")
WriteStringN(" Next j")
WriteStringN("Next i")
WriteStringN(" titre$="+Chr($22)+NomFichier$+Chr($22))
; dessous: genere le code qui permet de relire les datas !!
; ouaaa du code qui s'autoecrit !!! :-D
WriteStringN("If OpenWindow (1, 0, 0, Largeur, Hauteur, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget,titre$)")
WriteStringN(" SetWindowCallback(@WindowCallback()) ")
WriteStringN(" If StartDrawing(WindowOutput())")
WriteStringN(" DrawImage(UseImage(1), 0, 0) ")
WriteStringN(" StopDrawing() ")
WriteStringN(" EndIf")
WriteStringN(" Repeat")
WriteStringN(" Until WaitWindowEvent()= #PB_EventCloseWindow")
WriteStringN("EndIf ")
WriteStringN("End ")
WriteStringN("Procedure WindowCallback(WindowID,message,wParam,lParam)")
WriteStringN(" res=#PB_ProcessPureBasicEvents")
WriteStringN(" Select message ")
WriteStringN(" Case #WM_PAINT")
WriteStringN(" StartDrawing(WindowOutput())")
WriteStringN(" DrawImage(UseImage(1), 0, 0) ")
WriteStringN(" StopDrawing() ")
WriteStringN(" ProcedureReturn #True ")
WriteStringN(" EndSelect")
WriteStringN(" ProcedureReturn res")
WriteStringN("EndProcedure ")
;************************
Resultat = StartDrawing(WindowOutput())
DrawText("encodage en cours "+Chr(10)+" attendre la fermeture de cette fenetre")
StopDrawing()
WriteStringN("DataSection") :; commence la section des data
For i =0 To Largeur -1
ligne.s="data.l " ; insere la fonction data.l avant les valeurs
For j = 0 To Hauteur-1
StartDrawing(ImageOutput() )
ligne.s=ligne.s+Str(Point(i, j))+",":; met des virgules entre les datas
StopDrawing()
Next j
ligne.s=Left(ligne.s, Len(ligne.s)-1) :; retire la derniere virgule de la ligne
WriteStringN(ligne.s):; ecrit une ligne entiere de data
Next i
WriteStringN(" "):; saute une ligne vide
WriteStringN("EndDataSection") :;ecrit la fin de section data
CloseFile(num)
EndIf
CloseWindow(0)
EndIf
End
Procedure SetStringManipulationBufferSize(Bytes)
PBStringBase.l = 0
PBMemoryBase.l = 0
!MOV eax, dword [PB_StringBase]
!MOV [esp+4],eax
!MOV eax, dword [PB_MemoryBase]
!MOV [esp+8],eax
HeapReAlloc_(PBMemoryBase, #GMEM_ZEROINIT, PBStringBase, Bytes)
!MOV dword [_PB_StringBase],eax
EndProcedure