Page 8 sur 17

Publié : sam. 21/janv./2006 17:46
par Dr. Dri
@Cpl.Bator
Sympa comme effet !

Dri :10:

Publié : sam. 21/janv./2006 17:50
par comtois
joli :)

Publié : sam. 21/janv./2006 18:54
par Guimauve
@Cpl Bator

Sympatique comme effet visuel.

Une petite question, comment as-tu généré la DataSection ?

A+
Guimauve

Publié : sam. 21/janv./2006 19:05
par Anonyme
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.

Publié : sam. 21/janv./2006 19:23
par Backup
Cpl.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.
j'avais fait ça ya quelques temps
ça transforme une image BMP en listing purebasic "Data.pb"
le listing de lecture de l'image est directement generé !! (du code qui ecrit du code ) , ya plus qu'a copier-coller

si ça peut te servir !! ....


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 

Publié : sam. 21/janv./2006 19:26
par wolfjeremy
WoaW Cpl.Bator le meilleur en effet que se soit en dbp ou en purebasic #hello

Publié : sam. 21/janv./2006 19:51
par cha0s
InitSprite3D() ne veut pas s'initialiser O_o

Publié : sam. 21/janv./2006 20:07
par Guimauve
C'était juste par curiosité.

Mais je prend une copie de ton code Dobro, elle peut toujours servir.

Merci

A+
Guimauve

Publié : sam. 21/janv./2006 21:52
par bernard13
alors elle sort cette version

Publié : sam. 21/janv./2006 21:54
par comtois
lundi !

Publié : sam. 21/janv./2006 21:55
par wolfjeremy
8O non ? c'est vrai ?!? me suis meme pas encore fai a la version 3 qu'elle sort déjà :lol:

Publié : sam. 21/janv./2006 22:05
par comtois
euh c'est une longue histoire dont je ne suis même pas sûr d'avoir suivi le début :)

en fait je fais référence à une rumeur qui court sur le forum anglais
monday ,qu'ils disent là bas .

mais on ne sait pas lequel :)

si tu fais une recherche sur monday tu vas trouver pas mal de post dont

http://forums.purebasic.com/english/vie ... ght=monday
http://forums.purebasic.com/english/vie ... ght=monday
http://forums.purebasic.com/english/vie ... ght=monday
http://forums.purebasic.com/english/vie ... ght=monday

Et l'origine du monday doit être ici je crois
http://forums.purebasic.com/english/vie ... ght=monday

Publié : sam. 21/janv./2006 22:08
par wolfjeremy
lol ok

Sinon Dobro ton code marche mais bon faut déjà enlever les quelques balise [/color] du bbcode qui avait en trop lol mais bon apres quand j'ai choisi mon image, le programme se ferme et plus rien ne se passe... et je fai copier coller et il n'y a rien dans le presse papier a part le code que j'avai copier avant... :cry:

Publié : sam. 21/janv./2006 22:41
par Guimauve
Faut sauvegarder le code de Dobro quelque part, l'exécuter. Un fichier nommé "Data.pb" va être créer dans le même répertoire. C'est le fichier qui contient la DataSection de l'image sélectionné.

A+
Guimauve

Publié : sam. 21/janv./2006 22:44
par Backup
Pardon , ce code date de vieux !! il restait un bug , que je viens de corriger !!


pour repondre a la question ce programme genere un listing purebasic
avec comme nom "data.pb" , je n'utilise pas le press papier , c'est un fichier qui est generé
ce fichier est un prg qui contien l'ouverture d'une fenetre+callback
+l'image en Data !! bref ça genere les data + le prg pour les lires...

en general le fichier est generé a coté de l'endroit ou ce trouve le prg !!

(fait une recherche avec "Data.pb")
mais avant recomence l'operation avec le nouveau listing que je viens de déposer (non-colorisé) :)


@guimauve : ya pas de problem c'est fait pour ça :D
mais recupere le dernier listing en date !! (correction il manquait un stopdrawing ! c'est balo !! :D)