PixelSymbolCréator

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

PixelSymbolCréator

Message par kernadec »

bjr à tous
en ces temps de ralentissement dû au froid polaire probablement...
voilà un ptit code pour ceux qui souhaite avoir des symboles perso dans leurs application
il y à longtemps que je l'ai créer, j avais commencé à l'adapter pour CanvasGadget
mais je n'ai plus de temps maintenant pour aller plus loin avec lui, il me suffisait en l'état ...
aussi je le met à la disposition de la communauté si quelqu'un y trouve de l' intérêt, je serais satisfait lol...

Cordialement
Je
ps: je vous fait part de mon avis sur le fait qu une version PB Android devrait peut être voir le jour????
car je pense qu'elle serait plus lucrative et utile qu'un émulateur java

version 2 -> https://jmp.sh/Uj8jBDq

Code : Tout sélectionner

;########################################################################################
;#####   PixelSymbolCréator crée par kernadec avec la version PB5                   #####
;#####   permet de créer des symboles en pixels de couleurs centré sur la grille.   #####
;#####   l'affichage x y sera centré de ce point central de grille                  #####
;#####   ps: taille de la grille ligne 58                                           #####
;########################################################################################

Enumeration
  #Win
EndEnumeration
Enumeration
  #image00
  #Image0
  #Image1
EndEnumeration
Enumeration
  #Container1
  #Container2
  #Canvas1
  #Canvas2
  #Canvas3
  #Canvas4
  #bouton1
  #bouton2
  #bouton3
  #bouton4
  #bouton5
  #bouton6
  #bouton7
  #bouton8
  #bouton9
  #bouton10
  #bouton11
  #bouton12
  #bouton13
  #bouton14
  #bouton15
  #bouton16
  #bouton17
  #bouton18
EndEnumeration

Structure pixel
  x.w
  y.w
  c.l
EndStructure
Structure text
  donnee.s
EndStructure

Global chemin$  =                          "C:\Purebasic\"
Global fichier$ =                          "symboledata.txt"
Global Axegrille_X.w,Axegrille_Y.w

Carre.w   = 36  ;<--PAIR de préférence            ; Nombre PAIR de Carre et avec le zero cela fera 1 case de plus en X et Y
Pixels.w  = 10                                   ; Pixels par Carre
Aire.w    = Carre * Pixels                        ; ex: pour (16+1)*16 = surface en pixel de la grille = 272
CarXcar.w = (Carre + 1) * (Carre + 1)

Global NewList cases.text()
Global NewList casesfond.Pixel()
Global NewList cases3.Pixel()
Global NewList Undo.Pixel()
Global Dim GrilleData$(CarXcar + 4)              ; ajout de 4 pour test de chargement fichiers tableaux
Global Dim GrillePlot$(CarXcar + 4)              ; ajout de 4 pour test de chargement fichiers tableaux


Global Dim pos.pixel(CarXcar + 4)
Global Dim gril_xy_col.pixel(CarXcar + 4)
Global Dim masque.pixel(CarXcar + 4)

Global couleur.l=RGBA(Random(255),Random(255),Random(255),Random(255))   ; couleurs aléatoires pour le fun
Global couleurfond = 16777215                             ; blanc par defaut

Axegrille_X = (pixels* Pixels / 2) + (Pixels / 2)         ; Axegrille_X , Axegrille_Y = 136 grille de ((16+1) x 16)/2
Axegrille_Y = (pixels* Pixels / 2) + (Pixels / 2)         ; x y point centre de reference sur la grille

Procedure reference(pixels)

  Axegrille_X = (pixels* Pixels / 2) + (Pixels / 2)         ; Axegrille_X , Axegrille_Y = 136 grille de ((16+1) x 16)/2
  Axegrille_Y = (pixels* Pixels / 2) + (Pixels / 2)         ; x y point centre de reference sur la grille
  ;Axegrille_X = 0                                           ; Axegrille_X , Axegrille_Y = 0 grille de ((16+1) x 16)/2
  ;Axegrille_Y = 0                                           ; x y point reference sur la grille
EndProcedure

Procedure listcouleurfond(couleurfond,carre,pixels)

  uuu=1                                                         ; remise en place sur la grille des objets
  For u=0 To carre                                            ; du fichier à leurs positions d'origines
    For uu=0 To carre
      gril_xy_col(uuu)\x=u                                      ; coordonnées standard x y tableau base
      gril_xy_col(uuu)\y=uu
      StartDrawing(CanvasOutput(#Canvas1))                      ; sauve la couleur du pixel dans la structure
       FillArea((gril_xy_col(uuu)\x*Pixels)+(Pixels/2),(gril_xy_col(uuu)\y*Pixels)+(Pixels/2),RGB(127, 128, 129), couleurfond)
      StopDrawing()
     
      StartDrawing(CanvasOutput(#Canvas2))
       Box(gril_xy_col(uuu)\x,gril_xy_col(uuu)\y,1,1,couleurfond)
      StopDrawing()
      uuu+1
    Next uu
  Next u

EndProcedure

Procedure boutonImage(num_Img, x, y, w, h, colorFr, ColorTx, titre$, Ft$, hf,typ)

  ImgID = CreateImage(num_Img, w, h)
  Font=LoadFont(#PB_Any, ft$  , hf, typ)
  StartDrawing(ImageOutput(num_Img))
   DrawingMode(1)
   Box(0, 0, w, h,colorFr)
   DrawingFont(FontID(Font))
   FrontColor(RGB(0,0,0))
   DrawText(x+1,y-1,titre$)
   FrontColor(colorTx)
   DrawText(x,y,titre$)
  StopDrawing()
  ProcedureReturn ImgID

EndProcedure

Procedure Dessin2Codelist(Carre,CarXcar,Pixels)

  ClearList(cases())

  uuu=1
  For u=0 To Carre
    For uu=0 To Carre
      pos(uuu)\c=couleurfond                                    ; pixel du tableau par défaut blanc
      pos(uuu)\x=u
      pos(uuu)\y=uu
      StartDrawing(CanvasOutput(#Canvas2))
      pos(uuu)\c = Point(u,uu)                                 ; sauve la couleur et les coordonnées du pixel vers la structure
      StopDrawing()
      ;    Debug "222: "+Str(uuu)+"  :  "+ Str(pos(uuu)\c)+"  :  "+ Str(couleurfond)
     
      ;~~~~~~~~~~~~~~~~~~~~~~~~ stockage du dessin dans le tableau GrilleData$ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      GrilleData$(uuu)=""
      If pos(uuu)\c <> couleurfond                           ; pas de point blanc ou autre couleur exclue
       
       
        If ((pos(uuu)\x)-(Carre/2)) < 0 : px$="Plot(x"+Str((pos(uuu)\x)-(Carre/2)) : Else : px$="Plot(x+"+Str((pos(uuu)\x)-(Carre/2)) : EndIf
        If ((pos(uuu)\y)-(Carre/2)) < 0 : py$="y"+Str((pos(uuu)\y)-(Carre/2)) : Else : py$="y+"+Str((pos(uuu)\y)-(Carre/2)) : EndIf
        If px$ = "Plot(x+0" :px$="Plot(x  " : EndIf
        If py$ = "Plot(y+0" :py$="Plot(y  " : EndIf
        GrillePlot$(uuu) = px$+","+py$+","+Space(8-Len(Str(pos(uuu)\c)))+Str(pos(uuu)\c)+")"   ; création lignes datas
       
       
        ;             If ((pos(uuu)\x)-(Pixels/2)) < 0 : px$="x"+Str((pos(uuu)\x)-(Pixels/2)) : Else : px$="x+"+Str((pos(uuu)\x)-(Pixels/2)) : EndIf
        ;             If ((pos(uuu)\y)-(Pixels/2)) < 0 : py$="y"+Str((pos(uuu)\y)-(Pixels/2)) : Else : py$="y+"+Str((pos(uuu)\y)-(Pixels/2)) : EndIf
        ;             If px$ = "x+0" :px$="x  " : EndIf
        ;             If py$ = "y+0" :py$="y  " : EndIf
        ;             GrilleData$(uuu) = px$+","+py$+","+Space(8-Len(Str(pos(uuu)\c)))+Str(pos(uuu)\c)   ; création lignes datas
        If ((pos(uuu)\x)-(Carre/2)) < 0 : px$=Str((pos(uuu)\x)-(Carre/2)) : Else : px$=Str((pos(uuu)\x)-(Carre/2)) : EndIf
        If ((pos(uuu)\y)-(Carre/2)) < 0 : py$=Str((pos(uuu)\y)-(Carre/2)) : Else : py$=Str((pos(uuu)\y)-(Carre/2)) : EndIf
        If px$ = "+0" :px$="  " : EndIf
        If py$ = "+0" :py$="  " : EndIf
        GrilleData$(uuu) = px$+","+py$+","+Space(8-Len(Str(pos(uuu)\c)))+Str(pos(uuu)\c)   ; création lignes datas
       
       
        AddElement(cases())
        cases()\donnee = GrilleData$(uuu)
       
        ;   Debug ">>:   "+cases()\donnee   ;+" : "+Str(cases()\y)+" : "+Str(cases()\c)
        ; Debug "uuu: "+Str(uuu)+"  :  "+ Str(pos(uuu)\c)
      EndIf
     
      StartDrawing(CanvasOutput(#Canvas3))
      Box(pos(uuu)\x,pos(uuu)\y,1,1,pos(uuu)\c)            ; redessine depuis la structure pour verif.
      StopDrawing()
     
      uuu+1
    Next uu
  Next u

  reference(pixels)

EndProcedure

Procedure Dessin2Codelist2(Carre,CarXcar,Pixels)

   uuu=1                                                     ; remise en place sur la grille des objets
  For u=0 To Carre
    For uu=0 To Carre
      StartDrawing(CanvasOutput(#Canvas4))                  ; sauve la couleur du pixel dans la structure
       gril_xy_col(uuu)\c = Point(u,uu)
      StopDrawing()
      StartDrawing(CanvasOutput(#Canvas1))
       FillArea((gril_xy_col(uuu)\x*Pixels)+(Pixels/2),(gril_xy_col(uuu)\y*Pixels)+(Pixels/2),RGB(127, 128, 129), gril_xy_col(uuu)\c)
      StopDrawing()
   
      StartDrawing(CanvasOutput(#Canvas2))                        ; dessine icone en pixel
       Box(gril_xy_col(uuu)\x,gril_xy_col(uuu)\y,1,1,gril_xy_col(uuu)\c)
      StopDrawing()
      uuu+1
    Next uu
  Next u

EndProcedure

Procedure fleche(Xpos,Ypos,Pixels,Carre,CarXcar)

  uuu=1                                                     ; remise en place sur la grille des objets
  For u=0 To Carre
    For uu=0 To Carre
      masque(uuu)\x=u                                       ; coordonnées standard x y tableau masque
      masque(uuu)\y=uu
      masque(uuu)\c=couleurfond                             ; pixel du tableau par défaut blanc
      gril_xy_col(uuu)\x=(u*Pixels)+(Pixels/2)                                  ; coordonnées standard x y tableau base
      gril_xy_col(uuu)\y=(uu*Pixels)+(Pixels/2)
     
      StartDrawing(CanvasOutput(#Canvas1))                  ; sauve la couleur du pixel dans la structure
       masque(uuu)\c=Point(gril_xy_col(uuu)\x,gril_xy_col(uuu)\y)
       gril_xy_col(uuu)\c = masque(uuu)\c
       FillArea(gril_xy_col(uuu)\x,gril_xy_col(uuu)\y,RGB(127, 128, 129), couleurfond)
      StopDrawing()
     
      StartDrawing(CanvasOutput(#Canvas2))
       Box(gril_xy_col(uuu)\x/pixels,gril_xy_col(uuu)\y/pixels,1,1,couleurfond)
      StopDrawing()
       
      If masque(uuu)\c <> couleurfond                          ; test pour translation de pixels sur la grille
        If xpos = -1
          gril_xy_col(uuu)\x - pixels                           ; deplacement en x - bloc pixels
        EndIf       
        If xpos =  1
          gril_xy_col(uuu)\x + pixels                           ; deplacement en x + bloc pixels
        EndIf
        If ypos = -1
          gril_xy_col(uuu)\y - pixels                           ; deplacement en y - bloc pixels
        EndIf           
        If ypos =  1
          gril_xy_col(uuu)\y + pixels                           ; deplacement en y + bloc pixels
        EndIf
      EndIf
      uuu+1
    Next uu
  Next u

  ; ------- test de defilement hors limite des points sur la grille pour rotation infinie

  Carre_max = (Carre + 1) * Pixels                                     ;ex: 17*16=272
  For w = 1 To  CarXcar
    If masque(w)\c <> couleurfond
      If gril_xy_col(w)\x => (Carre * Pixels)                          ;ex: 16*16=256
        gril_xy_col(w)\x - Carre_max
        While gril_xy_col(w)\x => Carre_max
          gril_xy_col(w)\x - Carre_max
        Wend
      EndIf
      If gril_xy_col(w)\x < 0
        gril_xy_col(w)\x + Carre_max
        While gril_xy_col(w)\x < 0                         
          gril_xy_col(w)\x = Carre_max  + gril_xy_col(w)\x             ; modulo position opposée avec nombre négatif
        Wend
      EndIf
      If gril_xy_col(w)\y => (Carre * Pixels)                          ;ex: 16*16=256
        gril_xy_col(w)\y - Carre_max   
        While gril_xy_col(w)\y => Carre_max
          gril_xy_col(w)\y - Carre_max   
        Wend
      EndIf
      If gril_xy_col(w)\y < 0
        gril_xy_col(w)\y + Carre_max         
        While gril_xy_col(w)\y < 0
          gril_xy_col(w)\y = Carre_max + gril_xy_col(w)\y              ; modulo position opposée avec nombre négatif
        Wend
      EndIf
     
      StartDrawing(CanvasOutput(#Canvas1))                             ; restore les cases sur la grille
       FillArea(gril_xy_col(w)\x,gril_xy_col(w)\y,RGB(127, 128, 129),gril_xy_col(w)\c)
      StopDrawing()
     
      StartDrawing(CanvasOutput(#Canvas2))                             ; restore l'icone en pixel
       Box(gril_xy_col(w)\x/Pixels,gril_xy_col(w)\y/Pixels,1,1,gril_xy_col(w)\c)
      StopDrawing()
    EndIf
  Next w

EndProcedure

Procedure Lecture_list(Xpos,Ypos,Pixels,Carre,CarXcar)                                 

  uuu=1                                                     ; remise en place sur la grille des objets
  For u=0 To Carre
    For uu=0 To Carre
      masque(uuu)\x=u                                       ; coordonnées standard x y tableau masque
      masque(uuu)\y=uu
      masque(uuu)\c=couleurfond                             ; pixel du tableau par défaut blanc
      pos(uuu)\c = couleurfond
      GrillePlot$(uuu) = ""
      GrilleData$(uuu) = ""
      gril_xy_col(uuu)\x=u                                  ; coordonnées standard x y tableau base
      gril_xy_col(uuu)\y=uu
     
      StartDrawing(CanvasOutput(#Canvas1))                  ; sauve la couleur du pixel dans la structure
       gril_xy_col(uuu)\c=Point((gril_xy_col(uuu)\x*Pixels)+(Pixels/2),(gril_xy_col(uuu)\y*Pixels)+(Pixels/2))
       FillArea((gril_xy_col(uuu)\x*Pixels)+(Pixels/2),(gril_xy_col(uuu)\y*Pixels)+(Pixels/2),RGB(127, 128, 129), couleurfond)
      StopDrawing()
     
      StartDrawing(CanvasOutput(#Canvas2))
       Box(gril_xy_col(uuu)\x,gril_xy_col(uuu)\y,1,1,couleurfond)
      StopDrawing()
      uuu+1
    Next uu
  Next u

  u = 0
  ForEach cases()
   
    texte$ = cases()\donnee
    ;     texte$ = Right(texte$,Len(texte$)-7)             ; supprime de la ligne le mot "data.l "
   
    texte$ = ReplaceString(texte$, "x", "")          ; supprime la variable x pour addition avec xpos
    texte$ = ReplaceString(texte$, "y", "")          ; supprime la variable y pour addition avec ypos
   
    gril_xy_col(u)\x = Xpos + (Pixels * Val(StringField(texte$, 1 , ","))) ; transfert en pixel de x
    gril_xy_col(u)\y = Ypos + (Pixels * Val(StringField(texte$, 2 , ","))) ; transfert en pixel de y
    gril_xy_col(u)\c = Val(StringField(texte$, 3 , ","))                   ; transfert de la couleur
   u + 1
     
   Next

  For w = 0 To u-1
   If gril_xy_col(w)\c <> couleurfond
    StartDrawing(CanvasOutput(#Canvas1))
     FillArea(gril_xy_col(w)\x,gril_xy_col(w)\y,RGB(127, 128, 129),gril_xy_col(w)\c)
    StopDrawing()
   
    StartDrawing(CanvasOutput(#Canvas2))                        ; dessine icone en pixel
      Box(gril_xy_col(w)\x/Pixels,gril_xy_col(w)\y/Pixels,1,1,gril_xy_col(w)\c)
    StopDrawing()
    EndIf
  Next w

EndProcedure

Procedure Lecture_clip(Xpos,Ypos,Pixels,Carre,CarXcar)                                 

  u = 0
  buffer$ = GetClipboardText()                       ; contenu du clipboard vers buffer$
  For w = 1 To CountString(buffer$,Chr(13)+Chr(10)) ; nombres de lignes de buffer$
   
    texte$=StringField(buffer$, w,Chr(13)+Chr(10))   ; Affichage ligne par ligne la variable buffer$
    nb = CountString(texte$,",")                     ; compteureur d'objet par ligne
   
    texte$ = Right(texte$,Len(texte$)-7)             ; supprime de la ligne le mot "data.l "
    texte$ = ReplaceString(texte$, "x", "")          ; supprime la variable x pour addition avec Axegrille_X
    texte$ = ReplaceString(texte$, "y", "")          ; supprime la variable y pour addition avec Axegrille_Y
    ;Debug texte$
    If u < CarXcar + 1 : Else :  Break : EndIf     ; tableau du fichier plus grand que le tableau declarer
   
    For i = 0 To nb Step 3                           
      gril_xy_col(u)\x = Xpos + (Pixels * Val(StringField(texte$, 1 + i, ","))) ; transfert en pixel de x
      gril_xy_col(u)\y = Ypos + (Pixels * Val(StringField(texte$, 2 + i, ","))) ; transfert en pixel de y
      gril_xy_col(u)\c = Val(StringField(texte$, 3 + i, ","))                   ; transfert de la couleur
     ; Debug Str(u)+" : "+Str(gril_xy_col(u)\x)+" : "+Str(gril_xy_col(u)\y)+" : "+Str(gril_xy_col(u)\c)
     
      u + 1                                                                     ; incrementation du nombre d'objet
    Next i

  Next w

   ; ----------------------------------- defilement des points x y sans fin sur la grille
   Carre_max = (Carre + 1) * Pixels                                 ;ex: 17*16=272
   For w = 0 To u-1
    If gril_xy_col(w)\x => (Carre * Pixels)                          ;ex: 16*16=256
      gril_xy_col(w)\x - Carre_max
      While gril_xy_col(w)\x => Carre_max
        gril_xy_col(w)\x - Carre_max
      Wend
    EndIf
    If gril_xy_col(w)\x < 0
      gril_xy_col(w)\x + Carre_max
      While gril_xy_col(w)\x < 0                         
        gril_xy_col(w)\x = Carre_max  + gril_xy_col(w)\x             ; modulo position opposée avec nombre négatif
      Wend
    EndIf
    If gril_xy_col(w)\y => (Carre * Pixels)                          ;ex: 16*16=256
      gril_xy_col(w)\y - Carre_max   
      While gril_xy_col(w)\y => Carre_max
        gril_xy_col(w)\y - Carre_max   
      Wend
    EndIf
    If gril_xy_col(w)\y < 0
      gril_xy_col(w)\y + Carre_max         
      While gril_xy_col(w)\y < 0
        gril_xy_col(w)\y = Carre_max + gril_xy_col(w)\y              ; modulo position opposée avec nombre négatif
      Wend
    EndIf

    StartDrawing(CanvasOutput(#Canvas1))                        ; affiche le dessin sur la grille canvas
    FillArea(gril_xy_col(w)\x,gril_xy_col(w)\y,RGB(127, 128, 129),gril_xy_col(w)\c)
    ;Box(gril_xy_col(w)\x-(Pixels/2),gril_xy_col(w)\y-(Pixels/2),14,14,gril_xy_col(w)\c)
    StopDrawing()
   
    StartDrawing(CanvasOutput(#Canvas2))                        ; dessine icone en pixel
    Box(gril_xy_col(w)\x/Pixels,gril_xy_col(w)\y/Pixels,1,1,gril_xy_col(w)\c)
    StopDrawing()

  Next w

;   uuu=1                                                         ; remise en place sur la grille des objets
;   For u=0 To Carre                                             ; du fichier à leurs positions d'origines
;     For uu=0 To Carre
;       gril_xy_col(uuu)\x=u                                      ; coordonnées standard x y tableau base
;       gril_xy_col(uuu)\y=uu
;       StartDrawing(CanvasOutput(#Canvas1))                      ; sauve la couleur du pixel dans la structure
;        gril_xy_col(uuu)\c=Point((gril_xy_col(uuu)\x*Pixels)+(Pixels/2),(gril_xy_col(uuu)\y*Pixels)+(Pixels/2))
;       StopDrawing()
;       uuu+1
;     Next uu
;   Next u

EndProcedure                                 
                                 
Procedure cleancanvas()

  StartDrawing(CanvasOutput(#Canvas1))
; DrawImage(ImageID(#Image0), 0, 0 )
  StopDrawing()
  StartDrawing(CanvasOutput(#Canvas2))
  DrawImage(ImageID(#Image1), 0, 0 )
  StopDrawing()

EndProcedure

Procedure Formatage_Datas(CarXcar,clip)   ; Procedure data modifiée par Zorro
   
  ClearClipboard()
  compteur = 0 : tampon$ = ""

   code.s="Restore Kernadec:"+Chr(13)+Chr(10)
   code.s+ "while dat<>-8888 "+Chr(13)+Chr(10)
   code.s+Chr(9)+"Read.i dat"+Chr(13)+Chr(10)
   code.s+Chr(9)+"debug dat"+Chr(13)+Chr(10)
   code.s+"Wend"
    SetClipboardText(GetClipboardText()+code.s+Chr(13)+Chr(10))
  SetClipboardText(GetClipboardText()+"DataSection"+Chr(13)+Chr(10))
    SetClipboardText(GetClipboardText()+"Kernadec:"+Chr(13)+Chr(10))
  For i = 0 To CarXcar                               ; tri pour affichage  de plusieurs Carre par lignes de data
    If GrilleData$(i) <> ""
      compteur + 1
      tampon$ = tampon$ + "," + GrilleData$(i)           ; assemblage des datas
      If compteur > 5                                   ; choix du nombre de d'objets (5=6),7 etc.. par ligne data
;       Debug "Data.l "+Right(tampon$, Len(tampon$)-1) ; avec suppression des 2 premiers caractères la virgule + l'espace
        ;fonction clipboard mise en paragraphe avec l'addition des lignes
        SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+Chr(13)+Chr(10))
        ;Debug  GetClipboardText()
        ;SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+Chr(13)+Chr(10))           
        compteur = 0 : tampon$=""
      EndIf
    EndIf
    If i = CarXcar And compteur  = 0                       ; si la dernière etait ligne complete ajoute une fin data
      SetClipboardText(GetClipboardText()+"Data.l -8888"+Chr(13)+Chr(10))
      SetClipboardText(GetClipboardText()+"EndDataSection"+Chr(13)+Chr(10))
    EndIf
    If i = CarXcar And compteur <> 0                       ; test pour la dernière ligne de data incomplete et ajoute une fin data
     
      ; Debug "Data.l "+Right(tampon$, Len(tampon$)-1) ; avec suppression des 2 premiers caractères la virgule + l'espace
      ;fonction clipboard mise en paragraphe avec l'addition des lignes
      SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+",-8888"+Chr(13)+Chr(10))
     SetClipboardText(GetClipboardText()+"EndDataSection"+Chr(13)+Chr(10))
    EndIf
  Next i
  If clip = 1
    If CreateFile(0,chemin$ +fichier$)
      WriteStringN(0,GetClipboardText())               ; creation d'un fichier symboldata.txt avec contenu du clipboard
     CloseFile(0)
    EndIf
   EndIf

EndProcedure

Procedure Formatage_Datas_old(CarXcar,clip)

  ClearClipboard()
  compteur = 0 : tampon$ = ""
  For i = 0 To CarXcar                               ; tri pour affichage  de plusieurs Carre par lignes de data
    If GrilleData$(i) <> ""
      compteur + 1
      tampon$ = tampon$ + "," + GrilleData$(i)           ; assemblage des datas
      If compteur > 5                                   ; choix du nombre de d'objets (5=6),7 etc.. par ligne data
;       Debug "Data.l "+Right(tampon$, Len(tampon$)-1) ; avec suppression des 2 premiers caractères la virgule + l'espace
        ;fonction clipboard mise en paragraphe avec l'addition des lignes
        SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+Chr(13)+Chr(10))
        ;Debug  GetClipboardText()
        ;SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+Chr(13)+Chr(10))           
        compteur = 0 : tampon$=""
      EndIf
    EndIf
    If i = CarXcar And compteur  = 0                       ; si la dernière etait ligne complete ajoute une fin data
      SetClipboardText(GetClipboardText()+"Data.l 0,0,0"+Chr(13)+Chr(10))
    EndIf
    If i = CarXcar And compteur <> 0                       ; test pour la dernière ligne de data incomplete et ajoute une fin data
     
      ; Debug "Data.l "+Right(tampon$, Len(tampon$)-1) ; avec suppression des 2 premiers caractères la virgule + l'espace
      ;fonction clipboard mise en paragraphe avec l'addition des lignes
      SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+",0,0,0"+Chr(13)+Chr(10))
      ;SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+Chr(13)+Chr(10))
    EndIf
  Next i
  If clip = 1
    If CreateFile(0,chemin$ +fichier$)
      WriteStringN(0,GetClipboardText())               ; creation d'un fichier symboldata.txt avec contenu du clipboard
     CloseFile(0)
    EndIf
   EndIf

EndProcedure

Procedure Formatage_plot(CarXcar,clip)


  ClearClipboard()
  compteur = 0 : tampon$ = ""
  For i = 0 To CarXcar                               ; tri pour affichage  de plusieurs Carre par lignes de data
    If GrillePlot$(i) <> ""
      compteur + 1
      tampon$ = tampon$ + ":" + GrillePlot$(i)           ; assemblage des datas
      If compteur > 5                                   ; choix du nombre de d'objets 5,6,7 etc.. par ligne data
;       Debug "Data.l "+Right(tampon$, Len(tampon$)-1) ; avec suppression des 2 premiers caractères la virgule + l'espace
        ;fonction clipboard mise en paragraphe avec l'addition des lignes
        SetClipboardText(GetClipboardText()+Right(tampon$, Len(tampon$)-1)+Chr(13))
        ;Debug  GetClipboardText()
        ;SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+Chr(13)+Chr(10))           
        compteur = 0 : tampon$=""
      EndIf
    EndIf
    If i = CarXcar And compteur <> 0                       ; test pour la dernière ligne de data incomplete
;     Debug "Data.l "+Right(tampon$, Len(tampon$)-1) ; avec suppression des 2 premiers caractères la virgule + l'espace
      ;fonction clipboard mise en paragraphe avec l'addition des lignes
      SetClipboardText(GetClipboardText()+Right(tampon$, Len(tampon$)-1)+Chr(13))
      ;SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+Chr(13)+Chr(10))
    EndIf
  Next i
  If clip = 1
    If CreateFile(0,chemin$ +fichier$)
      WriteStringN(0,GetClipboardText())               ; creation d'un fichier symboldata.txt avec contenu du clipboard
     CloseFile(0)
    EndIf
   EndIf

EndProcedure

Procedure Dessin2Code(Carre,CarXcar,Pixels)

      uuu=1
      For u=0 To Carre
        For uu=0 To Carre
         ; pos(uuu)\c=couleurfond                      ; pixel du tableau par défaut blanc
          pos(uuu)\x=u
          pos(uuu)\y=uu
          StartDrawing(CanvasOutput(#Canvas2))
            pos(uuu)\c=Point(pos(uuu)\x,pos(uuu)\y)              ; sauve la couleur et les coordonnées du pixel vers la structure
          StopDrawing()
         
          ;~~~~~~~~~~~~~~~~~~~~~~~~ stockage du dessin dans le tableau GrilleData$ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          GrilleData$(uuu)=""
          If pos(uuu)\c <> couleurfond                            ; pas de point blanc ou autre couleur exclue
            If ((pos(uuu)\x)-(Pixels/2)) < 0 : px$="x"+Str((pos(uuu)\x)-(Pixels/2)) : Else : px$="x+"+Str((pos(uuu)\x)-(Pixels/2)) : EndIf
            If ((pos(uuu)\y)-(Pixels/2)) < 0 : py$="y"+Str((pos(uuu)\y)-(Pixels/2)) : Else : py$="y+"+Str((pos(uuu)\y)-(Pixels/2)) : EndIf
            If px$ = "x+0" :px$="x  " : EndIf
            If py$ = "y+0" :py$="y  " : EndIf
           
            GrilleData$(uuu) = px$+","+py$+","+Space(8-Len(Str(pos(uuu)\c)))+Str(pos(uuu)\c)   ; création lignes datas
            AddElement(cases())
            cases()\donnee = GrilleData$(uuu)

          Debug ">>:   "+cases()\donnee   ;+" : "+Str(cases()\y)+" : "+Str(cases()\c)
          EndIf
         
          StartDrawing(CanvasOutput(#Canvas3))
           Box(pos(uuu)\x,pos(uuu)\y,1,1,pos(uuu)\c)            ; redessine depuis la structure pour verif.
          StopDrawing()
         
          uuu+1
        Next uu
      Next u
       
      reference(pixels)
     
EndProcedure

Procedure rotation(Pixels,carre,CarXcar,option)

  ClearClipboard()
  uuu=1
  For u=0 To Carre
    For uu=0 To Carre
      gril_xy_col(uuu)\x=u                                  ; coordonnées standard x y tableau base
      gril_xy_col(uuu)\y=uu
      masque(uuu)\x=u                                       ; coordonnées standard x y tableau masque
      masque(uuu)\y=uu
      masque(uuu)\c=couleurfond                             ; pixel du tableau par défaut blanc
      pos(uuu)\c = couleurfond
      GrillePlot$(uuu) = ""                                 ; efface les donnee tableau de la  position precedente
      GrilleData$(uuu) = ""                                 ; efface les donnee tableau de la position precedente
      StartDrawing(CanvasOutput(#Canvas1))                  ; sauve la couleur du pixel dans la structure
       gril_xy_col(uuu)\c=Point((gril_xy_col(uuu)\x*Pixels)+(Pixels/2),(gril_xy_col(uuu)\y*Pixels)+(Pixels/2))
      StopDrawing()
      uuu+1
    Next uu
  Next u

  If option = 1
    w=1                                                      ; boucle de rotation des tableaux de la grille
    For o=1+Carre To 1 Step -1
      For i=o To CarXcar
        masque(i)\c=gril_xy_col(w)\c                         ; transfert de la couleur vers tableau masque
        gril_xy_col(w)\c=couleurfond
        i+Carre                                              ; pour changer la constante step
        w+1
      Next i
    Next o
  EndIf

  If option = 2                                              ; boucle mirror horizontal
    For w =1+carre To CarXcar                                         
      x = w
      For y =1+carre To 1 Step -1
        masque(y+((CarXcar)-w))\c = gril_xy_col(x)\c          ; transfert de la couleur vers tableau masque
        gril_xy_col(x)\c = couleurfond
        x - 1
      Next y
      w + carre                                               ; step
    Next w
  EndIf

  If option = 3
    w=1
    For x = 1 To   1 + carre                                 ; boucle mirror vertical
      For y = x To CarXcar
        masque(y + (1 + carre) - w)\c = gril_xy_col(y)\c      ; transfert de la couleur vers tableau masque
        y + ((1 + carre) - 1)                                 ; step
      Next y
      w+2
    Next x
  EndIf

  If option = 4
    ; ----------------------------------- defilement des points x y sans fin sur la grille
  Carre_max = (Carre + 1) * Pixels                                 ;ex: 17*16=272
  For w = 0 To CarXcar
    If gril_xy_col(w)\c <> couleurfond
      If gril_xy_col(w)\x => (Carre * Pixels)                          ;ex: 16*16=256
        gril_xy_col(w)\x - Carre_max
        While gril_xy_col(w)\x => Carre_max
          gril_xy_col(w)\x - Carre_max
        Wend
      EndIf
      If gril_xy_col(w)\x < 0
        gril_xy_col(w)\x + Carre_max
        While gril_xy_col(w)\x < 0                         
          gril_xy_col(w)\x = Carre_max  + gril_xy_col(w)\x             ; modulo position opposée avec nombre négatif
        Wend
      EndIf
      If gril_xy_col(w)\y => (Carre * Pixels)                          ;ex: 16*16=256
        gril_xy_col(w)\y - Carre_max   
        While gril_xy_col(w)\y => Carre_max
          gril_xy_col(w)\y - Carre_max   
        Wend
      EndIf
      If gril_xy_col(w)\y < 0
        gril_xy_col(w)\y + Carre_max         
        While gril_xy_col(w)\y < 0
          gril_xy_col(w)\y = Carre_max + gril_xy_col(w)\y              ; modulo position opposée avec nombre négatif
        Wend
      EndIf
    EndIf
   
    StartDrawing(CanvasOutput(#Canvas1))
     FillArea(gril_xy_col(w)\x,gril_xy_col(w)\y,RGB(127, 128, 129),gril_xy_col(w)\c)
    StopDrawing()
   
    StartDrawing(CanvasOutput(#Canvas2))                        ; dessine icone en pixel
      Box(gril_xy_col(w)\x/Pixels,gril_xy_col(w)\y/Pixels,1,1,gril_xy_col(w)\c)
    StopDrawing()
   
  Next w
  EndIf

  For w=1 To CarXcar
    StartDrawing(CanvasOutput(#Canvas1))                       ; affiche le dessin sur la grille canvas
    FillArea((masque(w)\x*Pixels)+(Pixels/2),(masque(w)\y*Pixels)+(Pixels/2),RGB(127, 128, 129),masque(w)\c)
    StopDrawing()
    StartDrawing(CanvasOutput(#Canvas2))                      ; dessine icone en pixel
    Box((masque(w)\x),(masque(w)\y),1,1,masque(w)\c)
    StopDrawing()
  Next w

  uuu=1
  For u=0 To Carre
    For uu=0 To Carre
      gril_xy_col(uuu)\x=masque(uuu)\x                          ; replace la position x dans le tableau grille
      gril_xy_col(uuu)\y=masque(uuu)\y                          ; replace la position y dans le tableau grille
      gril_xy_col(uuu)\c=masque(uuu)\c                          ; replace la couleurs dans le tableau grille
      If masque(uuu)\c <> couleurfond
      EndIf         
      uuu+1
    Next uu
  Next u

EndProcedure

Procedure changecolor(couleur,couleurcapture2,carre,Pixels)
uuu=1                                                     ; remise en place sur la grille des objets
  For u=0 To Carre
    For uu=0 To Carre
      gril_xy_col(uuu)\x=u                                  ; coordonnées standard x y tableau base
      gril_xy_col(uuu)\y=uu
     
      StartDrawing(CanvasOutput(#Canvas1))                  ; sauve la couleur du pixel dans la structure
       gril_xy_col(uuu)\c=Point((gril_xy_col(uuu)\x*Pixels)+(Pixels/2),(gril_xy_col(uuu)\y*Pixels)+(Pixels/2))
    ;   Debug Str(uuu)+" : "+Str(couleurcapture2)+" : "+Str(gril_xy_col(uuu)\c)
        If gril_xy_col(uuu)\c = couleurcapture2
         FillArea((gril_xy_col(uuu)\x*Pixels)+(Pixels/2),(gril_xy_col(uuu)\y*Pixels)+(Pixels/2),RGB(127, 128, 129), couleur)
        EndIf
       StopDrawing()
     
       StartDrawing(CanvasOutput(#Canvas2))
        If gril_xy_col(uuu)\c = couleurcapture2
         Box(gril_xy_col(uuu)\x,gril_xy_col(uuu)\y,1,1,couleur)
        EndIf
      StopDrawing()
      uuu+1
    Next uu
  Next u
EndProcedure

Procedure dessin_grille(Aire,carre,pixels,couleurfond)   

t = Pixels-1                                                       ; variable remplace la constante step
StartDrawing(CanvasOutput(#Canvas1))                               ; dessin de la grille
Box(0,0,GadgetWidth(#Canvas1), GadgetHeight(#Canvas1),couleurfond)
Box(GadgetWidth(#Canvas1)+30,10,Carre+1, Carre+1,couleurfond)
DrawingMode(4)
For iii=0 To Aire
  For  ii=0 To Aire
    For i=ii To Aire
      Box(i,iii,t+2,t+2,RGB(127, 128, 129))
      i+t                                                          ; pour changer la constante step
    Next i
    ii+t                                                           ; pour changer la constante step
  Next ii
  iii+t                                                            ; pour changer la constante step
Next iii

StopDrawing()

EndProcedure   

Procedure bouton_couleur(bt1,bt2,bt3,bt4,couleur2)

  If bt4 = 1 Or bt2 = 1
    ButtonImageGadget(#bouton5,GadgetWidth(#Canvas1)+30+70, 130,50, 20,boutonImage(#bouton5,9,3,50, 20,couleur2,RGB(201,201,201),"Color","arial",8,#PB_Font_Bold))
  EndIf
  If bt3 = 1
    ButtonImageGadget(#bouton12,GadgetWidth(#Canvas1)+30+70, 35,50, 20,boutonImage(#bouton12,9,3,50, 20,couleur2,RGB(201,201,201),"Fond","arial",8,#PB_Font_Bold))
  EndIf
  If bt2 = 1 Or bt4 = 1
    ButtonImageGadget(#bouton13,GadgetWidth(#Canvas1)+30+70,260,50,20,boutonImage(#bouton13,7,3,50, 20,couleur2,RGB(201,201,201),"capcol","arial",8,#PB_Font_Bold))
EndIf
  If bt1 = 1
    ButtonImageGadget(#bouton14,GadgetWidth(#Canvas1)+30+70, 290,50,20,boutonImage(#bouton14,7,3,50, 20,couleur2,RGB(201,201,201),"capchang","arial",8,#PB_Font_Bold))
  EndIf
EndProcedure



UseJPEGImageDecoder()

;CreateImage(#Image00,1024, 768,32)
CreateImage(#Image0,Aire+Pixels+1, Aire+Pixels+1)
CreateImage(#Image1,Carre+1, Carre+1,32)
CreateImage(#Image00,Carre+1, Carre+1,32)

;exdemple LoadImage(#image00, "c:\purebasic\alainrouen.jpg")
ResizeImage(#image00, Carre+1, Carre+1)
ClearClipboard()                                           ; nettoyage du clipboard

;- Window & Gadgets
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

OpenWindow(#Win, 0, 0, Aire+Pixels+180, Aire+Pixels+250, "Canvas Icone", #PB_Window_SystemMenu |  #PB_Window_ScreenCentered)

ContainerGadget(#Container1, 6, 6, Aire+Pixels+9,Aire+Pixels+9, #PB_Container_Flat)
CloseGadgetList()
SetGadgetColor(#Container1,#PB_Gadget_BackColor, RGB(0,255,0))
DisableGadget(#Container1, 1)
ContainerGadget(#Container2, 8,8, Aire+Pixels+5,Aire+Pixels+5, #PB_Container_Flat)
CloseGadgetList()
SetGadgetColor(#Container2,#PB_Gadget_BackColor, RGB(255,255,255))
DisableGadget(#Container2, 1)

CanvasGadget(#Canvas1, 10, 10, Aire+Pixels+1, Aire+Pixels+1)
CanvasGadget(#Canvas2, GadgetWidth(#Canvas1)+30,10, Carre+1, Carre+1)
CanvasGadget(#Canvas3, GadgetWidth(#Canvas1)+30,90, Carre+1, Carre+1)
CanvasGadget(#Canvas4, GadgetWidth(#Canvas1)+30,170, Carre+1, Carre+1)

ButtonGadget(#bouton1, GadgetWidth(#Canvas1)+30+70, 10, 50, 20, "Efface")
ButtonGadget(#bouton2, GadgetWidth(#Canvas1)+20+70, 65, 35, 20, "Data")
ButtonGadget(#bouton3, GadgetWidth(#Canvas1)+60+70, 65, 35, 20, "PLot")
ButtonGadget(#bouton4, GadgetWidth(#Canvas1)+30, 290+carre,50, 20, "Quit")
ButtonImageGadget(#bouton5,GadgetWidth(#Canvas1)+30+70, 130,50, 20,boutonImage(#bouton5,9,3,50, 20,couleur,RGB(201,201,201),"Color","arial",8,#PB_Font_Bold))
ButtonGadget(#bouton6, GadgetWidth(#Canvas1)+30+70, 90,50, 20, "charge")
ButtonGadget(#bouton7, GadgetWidth(#Canvas1)+30+70, 230,50, 20, "rotation")
ButtonGadget(#bouton8, GadgetWidth(#Canvas1)+30+70, 180,20, 20, "<-")
ButtonGadget(#bouton9, GadgetWidth(#Canvas1)+30+110, 180,20, 20, "->")
ButtonGadget(#bouton10, GadgetWidth(#Canvas1)+30+90, 160,20, 20, "^")
ButtonGadget(#bouton11, GadgetWidth(#Canvas1)+30+90, 200,20, 20, "v")
ButtonImageGadget(#bouton12,GadgetWidth(#Canvas1)+30+70, 35,50, 20,boutonImage(#bouton12,9,3,50, 20,couleurfond,RGB(201,201,201),"Fond","arial",8,#PB_Font_Bold))
ButtonImageGadget(#bouton13,GadgetWidth(#Canvas1)+30+70, 260,50,20,boutonImage(#bouton13,7,3,50, 20,couleur,RGB(201,201,201),"capcol","arial",8,#PB_Font_Bold))
ButtonImageGadget(#bouton14,GadgetWidth(#Canvas1)+30+70, 290,50,20,boutonImage(#bouton14,7,3,50, 20,couleur,RGB(201,201,201),"capchang","arial",8,#PB_Font_Bold))
ButtonGadget(#bouton15, GadgetWidth(#Canvas1)+30, 200+carre,50, 20, "Miroir_X")
ButtonGadget(#bouton16, GadgetWidth(#Canvas1)+30, 230+carre,50, 20, "Miroir_Y")
ButtonGadget(#bouton17, GadgetWidth(#Canvas1)+30, 260+carre,50, 20, "change")
;bouton18 ouverture fichier non en attente


  StartDrawing(CanvasOutput(#Canvas4))                 
   DrawImage(ImageID(#Image00),0,0)
  StopDrawing()
  SetGadgetState(#Canvas4, ImageID(#image00))

;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;- dessin de la grille
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

reference(pixels)

dessin_grille(Aire,carre,pixels,couleurfond)

StartDrawing(CanvasOutput(#Canvas1))                              ; dessin de l'icone
Box(GadgetWidth(#Canvas1)+30,10,Carre+1, Carre+1,couleurfond)
StopDrawing()
StartDrawing(ImageOutput(#Image0))
  DrawImage(GetGadgetAttribute(#canvas1,#PB_Canvas_Image),0,0)
StopDrawing()
StartDrawing(ImageOutput(#Image1))
  DrawImage(GetGadgetAttribute(#canvas2,#PB_Canvas_Image),0,0)
StopDrawing()

listcouleurfond(couleurfond,Carre,pixels)

;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Repeat

  Event = WindowEvent()

If Event = #PB_Event_Gadget And EventGadget() = #Canvas1
   
;- clic gauche PixelCouleur
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If capture = 0
  If EventType() = #PB_EventType_LeftButtonDown Or (EventType() = #PB_EventType_MouseMove And GetGadgetAttribute(#Canvas1, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
    If StartDrawing(CanvasOutput(#Canvas1))
       x = GetGadgetAttribute(#Canvas1, #PB_Canvas_MouseX)
       y = GetGadgetAttribute(#Canvas1, #PB_Canvas_MouseY)
       c=couleur                                                  ; couleurs definie avec ColorRequester ou aléatoires
       xx=Round(x/Pixels, #PB_Round_Down)                         ; même calcul pour eviter differences canvas1 & canvas2
       yy=Round(y/Pixels, #PB_Round_Down)
       FillArea(xx*Pixels+(Pixels/2),yy*Pixels+(Pixels/2),RGB(127, 128, 129),c)       ; dessine les couleurs sur la grille avec la souris
      StopDrawing()
      StartDrawing(CanvasOutput(#Canvas2))                        ; dessine icone pixel
       Box(xx,yy,1,1,c)
      StopDrawing()
    EndIf
  EndIf
Else    ; clic gauche capture Couleur
    If EventType() = #PB_EventType_LeftButtonDown Or (EventType() = #PB_EventType_MouseMove And GetGadgetAttribute(#Canvas1, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
      If StartDrawing(CanvasOutput(#Canvas1))
        x = GetGadgetAttribute(#Canvas1, #PB_Canvas_MouseX)
        y = GetGadgetAttribute(#Canvas1, #PB_Canvas_MouseY)
        tmp = couleur
        couleur = Point(x,y)
        If couleur <> RGB(127, 128, 129)
          FillArea(x,y,RGB(127, 128, 129),couleur)                 ; dessine les couleurs sur la grille avec la souris
        Else
          couleur = tmp   
        EndIf
        StopDrawing()
        If capturecolor = 1
          couleurcapture1 = couleur
         bouton_couleur(0,1,0,0,couleur)
       EndIf
       If capturecolor = 2
          couleurcapture2 = couleur
         bouton_couleur(1,0,0,0,couleur)
       EndIf
      ; Debug Str(couleur)+" : "+Str(couleurcapture1)+" : "+Str(couleurcapture2)
       capture = 0
    EndIf
  EndIf
EndIf
   
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
;- clic droit  Pixel blanc
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     

  If EventType() = #PB_EventType_RightButtonDown Or (EventType() = #PB_EventType_MouseMove And GetGadgetAttribute(#Canvas1, #PB_Canvas_Buttons) & #PB_Canvas_RightButton)
   If StartDrawing(CanvasOutput(#Canvas1))
     x = GetGadgetAttribute(#Canvas1, #PB_Canvas_MouseX)
     y = GetGadgetAttribute(#Canvas1, #PB_Canvas_MouseY)
     capture = 0
     xx=Round(x/Pixels, #PB_Round_Down)                   ; même calcul pour eviter differences canvas1 & canvas2
     yy=Round(y/Pixels, #PB_Round_Down)
     FillArea(xx*Pixels+(Pixels/2),yy*Pixels+(Pixels/2),RGB(127, 128, 129),couleurfond)  ; efface les couleurs de la grille
    StopDrawing()
    StartDrawing(CanvasOutput(#Canvas2))                  ; efface icone pixel
     Box(xx,yy,1,1,couleurfond)
     pos(uuu)\c = 16777215                                ; sauve la couleur
    StopDrawing()
   EndIf
  EndIf

;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

EndIf

If Event = #PB_Event_Gadget

;- Bouton 01  Efface tout
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                   
   
If EventGadget() = #bouton1                                         ; efface tout
      ClearClipboard()
      ClearList(cases())                                            ; efface list en cours
      couleurfond = 16777215                           ; mettre le fond blanc   
      uuu = 1                                                       ; remise en place sur la grille des objets
      For u = 0 To Carre                                           ; du fichier à leurs positions d'origines
       For uu = 0 To Carre
        gril_xy_col(uuu)\x = u                                      ; coordonnées standard x y tableau base
        gril_xy_col(uuu)\y = uu
        gril_xy_col(uuu)\c = couleurfond
        pos(uuu)\c = couleurfond
        masque(uuu)\c = couleurfond
        GrillePlot$(uuu) = ""
        GrilleData$(uuu) = ""
        uuu + 1
       Next uu
       Next u
;       t=Pixels-1                                                    ; pour mode Step variable
;       StartDrawing(CanvasOutput(#Canvas1))
;       For iii=0 To Aire
;         For ii=0 To Aire
;           For i=ii To Aire
;             FillArea(i+1,iii+1,RGB(127, 128, 129),16777215) ;i+1,iii+1 = partie interne de la box pour fillarea
;             i+t                                                     ; Step
;           Next i
;           ii+t                                                      ; Step
;         Next ii
;         iii+t                                                       ; Step
;       Next iii
;      StopDrawing()
     
      StartDrawing(CanvasOutput(#Canvas1))                          ; efface la grille
       DrawImage(ImageID(#Image0), 0, 0 )
      StopDrawing()
     
      StartDrawing(CanvasOutput(#Canvas2))
       DrawImage(ImageID(#Image1), 0, 0 )
       Box(0,0,Carre+1,Carre+1,16777215)                ; efface tous les Pixels
      StopDrawing()
     
      StartDrawing(CanvasOutput(#Canvas3))
      Box(0,0,Carre+1,Carre+1,16777215)                ; efface tous  les Pixels
      StopDrawing()
     
      bouton_couleur(0,0,1,0,couleurfond)
     
      ; Dessin2Codelist(Carre,CarXcar,Pixels)
     
     

     
    EndIf
   
    ;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
;- Bouton 02  Datas
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
   
If EventGadget() = #bouton2                                     ;Lecture de la grille miniature pour obtenir un icône
     
   ;Dessin2Code(Carre,CarXcar,Pixels)
        Dessin2Codelist(Carre,CarXcar,Pixels)
    Formatage_Datas(CarXcar,1)
   ; Formatage_plot(CarXcar,0)
   
   reference(pixels)
   
  EndIf
   
  ;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
;- Bouton 03  Datas
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
   
If EventGadget() = #bouton3                                     ;Lecture de la grille miniature pour obtenir un icône
     
   ;Dessin2Code(Carre,CarXcar,Pixels)
        Dessin2Codelist(Carre,CarXcar,Pixels)
   ; Formatage_Datas(CarXcar,1)
    Formatage_plot(CarXcar,0)
   
   reference(pixels)
   
  EndIf
   
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
;- Bouton 04  Break
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If EventGadget() = #bouton4                            ; Quit
  Break
EndIf

;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;- Bouton 05  ColorRequester
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
   
If EventGadget() = #bouton5

  capture = 0
  Color = ColorRequester()
  If Color = RGB(127, 128, 129)
    Color = RGB(128, 128, 128)
  EndIf
  If Color > -1                      ; test si la couleur a change
    couleur = Color
    couleurcapture1 = couleur
    bouton_couleur(0,0,0,1,couleur)
  EndIf

EndIf
   
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
;- Bouton 06  Lecture fichier depuis clipboard
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   
    If EventGadget() = #bouton6  ;Lecture fichier clipboard

     ; Lecture_clip(Axegrille_X,Axegrille_Y,Pixels,Carre,CarXcar)
Dessin2Codelist2(Carre,CarXcar,Pixels)
    EndIf
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;- Bouton 07  Rotation
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   

If EventGadget() = #bouton7

  Rotation(Pixels,Carre,CarXcar,1)

  Dessin2Codelist(Carre,CarXcar,Pixels)

EndIf

;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;- Bouton 08  fleche gauche
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
If EventGadget() = #bouton8

  fleche(-1,0,Pixels,Carre,CarXcar)

EndIf
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;- Bouton 09  fleche droite
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
If EventGadget() = #bouton9

  fleche(1,0,Pixels,Carre,CarXcar)

EndIf
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;- Bouton 10 fleche haut
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
If EventGadget() = #bouton10

  fleche(0,-1,Pixels,Carre,CarXcar)

EndIf
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;- Bouton 11 fleche bas
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
If EventGadget() = #bouton11

  fleche(0,1,Pixels,Carre,CarXcar)

EndIf
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;- Bouton 12 couleur de fond
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
If EventGadget() = #bouton12
   
   Color = ColorRequester()
   If Color = RGB(127, 128, 129)
    Color = RGB(128, 128, 128)
   EndIf
   If Color > -1                            ; test si la couleur a change
     couleurfond = Color
     bouton_couleur(0,0,1,0,couleurfond)
     Lecture_list(Axegrille_X,Axegrille_Y,Pixels,Carre,CarXcar)
;   Formatage_Datas(CarXcar,0)
     reference(pixels)
   EndIf
   
EndIf
;
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
;- Bouton 13 clic gauche capture Couleur
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   
  If EventGadget() = #bouton13
    capturecolor = 1
    capture = 1
   
  EndIf
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
;- Bouton 14 clic gauche capture Couleur a changer
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   
  If EventGadget() = #bouton14
    capturecolor = 2
    capture = 1
   
  EndIf
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
;- Bouton 15 mirror horizontal
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   

If EventGadget() = #bouton15

  Rotation(Pixels,Carre,CarXcar,2)

  Dessin2Codelist(Carre,CarXcar,Pixels)

EndIf

;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;- Bouton 16 mirror vertical
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   

If EventGadget() = #bouton16

  Rotation(Pixels,Carre,CarXcar,3)

  Dessin2Codelist(Carre,CarXcar,Pixels)

EndIf

;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;- bouton 17 permute la couleur selectionnèe
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If EventGadget() = #bouton17
   couleur = couleurcapture1
   changecolor(couleur,couleurcapture2,carre,Pixels)     ; permute la couleur selectionnée sur la grille
   bouton_couleur(1,1,0,0,couleurcapture1)               ; change couleur du bouton
   bouton_couleur(0,1,0,0,couleurcapture2)               ; change couleur du bouton
   couleur = couleurcapture2                             ; nouvelle couleur active
   Swap couleurcapture1,couleurcapture2                 ; retabli les couleurs d'appel procedure                         

EndIf
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
;- Bouton 18 Fichier.txt externe
;{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   
    If EventGadget() = #bouton18  ;fichier$
     
      If ReadFile(0, chemin$ +"symboledata.txt")           ; Si le fichier peut être lu , on continue...
        u=0
        While Eof(0) = 0               ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
          texte$ = ReadString(0)                           ; Affiche ligne par ligne le contenu du fichier
          nb = CountString(texte$,",")                     ; compteureur d'objet par ligne
          texte$ = Right(texte$,Len(texte$)-7)             ; supprime de la ligne le mot "data.l "
          texte$ = ReplaceString(texte$, "x", "")          ; supprime la variable x pour addition avec Axegrille_X
          texte$ = ReplaceString(texte$, "y", "")          ; supprime la variable y pour addition avec Axegrille_Y
         
          If u < CarXcar+1 : Else :  Break : EndIf        ; tableau du fichier plus grand que le tableau declarer
         
          For i=0 To nb Step 3                           
            gril_xy_col(u)\x = Axegrille_X + (Pixels * Val(StringField(texte$, 1+i, ","))) ; transfert en pixel de x
            gril_xy_col(u)\y = Axegrille_Y + (Pixels * Val(StringField(texte$, 2+i, ","))) ; transfert en pixel de y
            gril_xy_col(u)\c = Val(StringField(texte$, 3+i, ","))                 ; transfert de la couleur
            u+1                                                                   ; incrementation du nombre d'objet
          Next i
           
         Wend
        CloseFile(0)                                       ; Ferme le fichier précédemment ouvert
      Else
        MessageRequester("Information","Impossible d'ouvrir le fichier!")
      EndIf

      For w = 1 To u - 1
        StartDrawing(CanvasOutput(#Canvas1))                ; affiche le dessin sur la grille canvas
        FillArea(gril_xy_col(w)\x,gril_xy_col(w)\y,RGB(127, 128, 129),gril_xy_col(w)\c)
        StopDrawing()
       
        StartDrawing(CanvasOutput(#Canvas2))                ; dessine icone en pixel
        Box(gril_xy_col(w)\x/Pixels,gril_xy_col(w)\y/Pixels,1,1,gril_xy_col(w)\c)
        StopDrawing()
      Next w
    EndIf
   
;}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

EndIf
Until Event = #PB_Event_CloseWindow

End

test code

Code : Tout sélectionner

If OpenWindow(0, 300, 300, 200, 200, "Test PixelSymbolCreator", #PB_Window_SystemMenu )

  x = WindowWidth(0)  / 2
  y = WindowHeight(0) / 2
  
  If StartDrawing(WindowOutput(0))
    
    Box(0, 0,200,200,RGB(0,0,0))

 ;inserer à la suite le code du presse papier pour test:
 ;plot(x,y,color)......  




    StopDrawing()
    
  EndIf
    
  Repeat
    
    EventID = WaitWindowEvent()
    
  Until EventID = #PB_Event_CloseWindow
  
EndIf

End 
Dernière modification par kernadec le mer. 29/avr./2020 13:23, modifié 17 fois.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PixelSymbol

Message par falsam »

Thanks kernadec :wink:

Bug visuel avec le bouton Change
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: PixelSymbol

Message par Kwai chang caine »

Merci du partage mon bon KERNADEC 8)
Moi comme dab, j'ai pas tout compris :oops:

Code : Tout sélectionner

Global chemin$  =                          "C:\Purebasic\"
Global fichier$ =                          "symboledata.txt"
faut les modifier ??
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: PixelSymbol

Message par kernadec »

je suis très heureux de te souhaiter le bonjour kcc :mrgreen:

désolé ce programme, je ne l'avais pas terminé.
ces variables: sont pour une procédure du "bouton 18" qui n'est pas activée
mais qui pourrai l'être pour effectuer une sauvegarde du résultat "datas" en un fichier.txt
cependant le programme envoie à partir du bouton data ou plot
un code pb dans le "presse papier clipboard"

bonne journée mon ami
cordialement
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: PixelSymbol

Message par kernadec »

bjr falsam
merci pour le retour

code corrigé :oops:

toujours pareil quand on retrouve un vieux code on crois qu'on va pouvoir le modifié
en deux coup de cuillère à pot, eh ben on se fou le doigt dans l' œil :roll: :mrgreen:

cordialement
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: PixelSymbolCréator

Message par Kwai chang caine »

Je te remercie beaucoup KERNADEC 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: PixelSymbolCréator

Message par kernadec »

bjr kcc
merci d 'excuser mon code non complet un peu casse tête,
mais l'ai transmis pour le fun, car il faut aussi laisser s'amuser les amis :D

code corrigé ce matin :roll:

:oops: hier n ayant pas de pc Windows sous la main j'ai tenté de modifier
le code du forum depuis mon tel--Android et bien je viens de vérifier ce matin
le code transféré sur un pc donne une erreur de parenthèse.. :oops:
c'est une leçon, je ne le ferais plus de modif sur le forum depuis un mobile :mrgreen:

en fait j'avais une erreur de centrage car sur le pc ou j'avais créer ce programme,
je ne l'allumais plus, trop trop vieux!!! comme moi!! :mrgreen:
et en recherchant ce code j'ai retrouvé comment j'avais procédé pour centré le symbole :mrgreen:

bon weekend à tous
cordialement
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: PixelSymbolCréator

Message par Kwai chang caine »

je ne l'allumais plus, trop trop vieux!!! comme moi!!
Vieux vieux.....tout est relatif
L'important c'est de rester jeune dans la tête, et garder la hargne...
Tout ne vieilli pas à la même vitesse dans le corps :mrgreen:

Image
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: PixelSymbolCréator

Message par Zorro »

pas mal l'editeur :)

je me suis permis de modifier la procedure Formatage_Datas() comme ceci :

ainsi , ça ecrit la datasection , et les lignes qui servent a la ire ... :)
j'ai changé aussi le nombre pour l'arret des data , "-8888" est plus utile que 3 valeurs "0,0,0" pour arreter dans une boucle

Code : Tout sélectionner

Procedure Formatage_Datas(CarXcar,clip)

  ClearClipboard()
  compteur = 0 : tampon$ = ""
 
	code.s="Restore Kernadec:"+Chr(13)+Chr(10)
	code.s+ "while dat<>-8888 "+Chr(13)+Chr(10)
	code.s+chr(9)+"Read.i dat"+Chr(13)+Chr(10)
	code.s+chr(9)+"debug dat"+Chr(13)+Chr(10)
	code.s+"Wend"
	 SetClipboardText(GetClipboardText()+code.s+Chr(13)+Chr(10))
  SetClipboardText(GetClipboardText()+"DataSection"+Chr(13)+Chr(10))
    SetClipboardText(GetClipboardText()+"Kernadec:"+Chr(13)+Chr(10))
  For i = 0 To CarXcar                               ; tri pour affichage  de plusieurs Carre par lignes de data
    If GrilleData$(i) <> ""
      compteur + 1
      tampon$ = tampon$ + "," + GrilleData$(i)           ; assemblage des datas
      If compteur > 5                                   ; choix du nombre de d'objets (5=6),7 etc.. par ligne data
;       Debug "Data.l "+Right(tampon$, Len(tampon$)-1) ; avec suppression des 2 premiers caractères la virgule + l'espace
        ;fonction clipboard mise en paragraphe avec l'addition des lignes
        SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+Chr(13)+Chr(10))
        ;Debug  GetClipboardText()
        ;SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+Chr(13)+Chr(10))           
        compteur = 0 : tampon$=""
      EndIf
    EndIf
    If i = CarXcar And compteur  = 0                       ; si la dernière etait ligne complete ajoute une fin data
      SetClipboardText(GetClipboardText()+"Data.l -8888"+Chr(13)+Chr(10))
		SetClipboardText(GetClipboardText()+"EndDataSection"+Chr(13)+Chr(10))
    EndIf
    If i = CarXcar And compteur <> 0                       ; test pour la dernière ligne de data incomplete et ajoute une fin data
     
      ; Debug "Data.l "+Right(tampon$, Len(tampon$)-1) ; avec suppression des 2 premiers caractères la virgule + l'espace
      ;fonction clipboard mise en paragraphe avec l'addition des lignes
      SetClipboardText(GetClipboardText()+"Data.l "+Right(tampon$, Len(tampon$)-1)+",-8888"+Chr(13)+Chr(10))
     SetClipboardText(GetClipboardText()+"EndDataSection"+Chr(13)+Chr(10))
    EndIf
  Next i
  If clip = 1
    If CreateFile(0,chemin$ +fichier$)
      WriteStringN(0,GetClipboardText())               ; creation d'un fichier symboldata.txt avec contenu du clipboard
     CloseFile(0)
    EndIf
   EndIf

EndProcedure
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: PixelSymbolCréator

Message par kernadec »

bjr Zorro
eh ben merci, :D donc j' ai ajouté ta procédure au code.
mais si quelqu'un d'autre souhaite apporter son obole pas de soucis ce code est libre
toutes nouvelles options seront bienvenue.. :wink:

au départ, je pensais mettre un dialogue pour choisir le nombre de cases et leurs taillent
cela reste toujours possible :wink:
mais comme je me servais de ce code pour composer des symboles cabalistiques liés
à l'alchimie car sur ce sujet eh ben y en a de toutes les sortent. :mrgreen:
je m'en servais en l'état...

Bon weekend a tous
Cordialement
Répondre