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