FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Texte en gif animé
par JL35 Hier à 18:49

» BasicEditor
par Yannick Mer 20 Sep 2017 - 17:17

» Simuler l’appui d'une touche ou combinaison de touches.
par pascal10000 Lun 18 Sep 2017 - 19:30

» Utilisation de HVIEWER pour afficher des images
par papydall Lun 18 Sep 2017 - 17:43

» Panoramic et les gifs animés.
par papydall Lun 18 Sep 2017 - 16:32

» recover source
par pascal10000 Dim 17 Sep 2017 - 14:21

» Recent dans vos menu
par Jean Claude Sam 16 Sep 2017 - 11:41

» Comment centrer un texte 3D.
par pascal10000 Ven 15 Sep 2017 - 20:20

» Carte interface 16 entrées et 16 sorties
par Jicehel Ven 15 Sep 2017 - 16:30

» Version instantanée V 0.9.28i9 possédant l'objet SYNEDIT
par pascal10000 Ven 15 Sep 2017 - 16:20

» Compilateur FBPano
par jean_debord Ven 15 Sep 2017 - 9:59

» 1 (en analyse): 3D_TARGET_IS ne fonctionne pas sur 3D_TEXT
par Jack Jeu 14 Sep 2017 - 19:52

» Problème avec la 3D.
par Jack Jeu 14 Sep 2017 - 18:06

» Test de la 3D.
par mindstorm Mer 13 Sep 2017 - 19:45

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Mar 12 Sep 2017 - 21:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 Adressage des pixels d'un picture

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 5947
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Adressage des pixels d'un picture   Dim 8 Mai 2016 - 15:36

Je suis en train de bricoler sur le format bmp (simple) et ico (plus tarabiscoté).
Quelque chose me chiffonne dans l'adressage des pixels dans Panoramic.
Un exemple:
Code:
DIM w,h
w = 20: h = 20
PICTURE 1: WIDTH 1,w: HEIGHT 1,h: COLOR 1,0,0,128
2D_TARGET_IS 1: 2D_PEN_COLOR 255,0,0
2D_LINE 0,0,w-1,h-1
2D_FILL_OFF: 2D_RECTANGLE 0,0,w-1,h-1
Zoom(1,0,0,w,h,30): ' zoom x30, pour voir
Terminate
' ==============================================================================
SUB Zoom(pict%,x%,y%,w%,h%,z%)
' Zoom x z% de la zone du picture p% en x%,y%, dimensions w%,h%
  IF LABEL("Ex") = 0 THEN LABEL Ex
  DIM_LOCAL n2d%,ff%,f%,p%,i%,j%,xp%,yp%,r%,g%,b%
  ff% = 0: f% = 900: p% = f%+1: ' variable ff% définie dans le programme appelant
  n2d% = NUMBER_2D_TARGET
  FORM f%: BORDER_SMALL f%: WIDTH f%,w%*z%+16: HEIGHT f%,h%*z%+35: ON_CLOSE f%,Ex
  PICTURE p%: PARENT p%,f%: FULL_SPACE p%
  2D_TARGET_IS p%
  yp% = 0
  FOR j% = y% TO y%+h%-1
      xp% = 0
      FOR i% = x% TO x%+w%-1
          r% = COLOR_PIXEL_RED(pict%,i%,j%): g% = COLOR_PIXEL_GREEN(pict%,i%,j%)
          b% = COLOR_PIXEL_BLUE(pict%,i%,j%)
          2D_PEN_COLOR r%,g%,b%: 2D_FILL_COLOR r%,g%,b%
          2D_RECTANGLE xp%,yp%,xp%+z%-1,yp%+z%-1
          xp% = xp%+z%
      NEXT i%
      2D_PEN_COLOR 128,128,128: 2D_LINE 0,yp%,WIDTH(p%),yp%
      yp% = yp%+z%
  NEXT j%
  FOR xp% = 0 TO WIDTH(p%) STEP z%: 2D_LINE xp%,0,xp%,HEIGHT(p%): NEXT xp%
  2D_TARGET_IS n2d%
  CAPTION f%," ZOOM x "+STR$(z%)
  WHILE ff% = 0: PAUSE 300: TO_FOREGROUND f%: END_WHILE: DELETE f%: EXIT_SUB
Ex:
  ff% = 1
RETURN
END_SUB
' ==============================================================================
C'est un Picture carré tout bête, de 20x20 pixels. Et une fonction zoom pour voir le résultat plus en détail.
Normalement les adresses des pixels devraient aller du pixel 0 au pixel 19 (20 pixels en tout).

Eh bien je m'aperçois que dans la fonction
2D_LINE x1,y1,x2,y2: ' tracé d'une ligne entre x1,y1 et x2,y2, la ligne s'arrête en x2-1 et y2-1.
Le point d'arrivée n'est pas compris dans le trait.
De même pour la fonction:
2D_RECTANGLE x1,y1,x2,y2, le rectangle est tracé de x1 à x2-1 et y1 à y2-1
Ça perturbe un peu ma logique...

Si je veux tracer ici une ligne ou un rectangle qui couvre le Picture, il faut aller de 0,0 à 20,20 (au lieu de 19,19), ça ne me paraît pas normal.

Idem pour le 2D_IMAGE_COPY x1,y1,x2,y2 qui copie la zone x1 à x2-1 et y1 à y2-1
Code:
DIM w,h
w = 20: h = 20
PICTURE 1: WIDTH 1,w: HEIGHT 1,h: COLOR 1,0,0,128
2D_TARGET_IS 1: 2D_FILL_OFF
IMAGE 2
2D_PEN_COLOR 255,0,0: 2D_RECTANGLE 0,0,5,5
2D_IMAGE_COPY 2,0,0,4,4
2D_IMAGE_PASTE 2,10,10
Zoom(1,0,0,w,h,20): ' zoom x20, pour voir
Terminate
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 465
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Adressage des pixels d'un picture   Dim 8 Mai 2016 - 17:38

J’avais déjà constaté ça et j’en ai conclu que le point d’arrivée des commandes de tracé est EXCLU, et aussi que jack a EXCLU cette information du fichier d’aide Sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5947
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Adressage des pixels d'un picture   Dim 8 Mai 2016 - 17:46

C'est bien dommage, parce que ce n'est pas logique, et pour moi c'est un bug, pas forcément très gênant, mais il faut bien en tenir compte quand on travaille au pixel près ! une droite, c'est du point de départ au point d'arrivée tous deux inclus.

Merci en tout cas silverman de m'avoir rassuré, je me sens moins seul.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5531
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Adressage des pixels d'un picture   Dim 8 Mai 2016 - 18:19

En 1961, j’ai appris le théorème suivant : Un segment de droite est une portion de droite limitée par deux points de cette droite.
Je me rappelle que j’ai fait la remarque à mon professeur de math que cette phrase était trop lourde : répétition de droite trois fois.
Sa réponse était : en mathématiques, il faut définir les choses sans ambiguïté.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

Nombre de messages : 5015
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Adressage des pixels d'un picture   Dim 8 Mai 2016 - 18:55

Salut à tous,

@JL35,

Ton code fait appel à une procédure, sans END Exclamation Question

C'est curieux ça, non ?. Very Happy

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5947
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Adressage des pixels d'un picture   Dim 8 Mai 2016 - 19:04

Il n'y a pas de END mais il y a un TERMINATE qui termine tout !
Tu trouves ça choquant ?

On va dans la procédure pendant la phase de mise en place des objets (donc avant le End théorique), et au retour de la procédure ce End n'est plus nécessaire puisqu'on clôt le programme, on n'attend plus rien de l'utilisateur.

Le End serait nécessaire si on attendait des actions de l'utilisateur, ce qui n'est pas le cas ici, c'est une démo à sens unique.


Dernière édition par JL35 le Dim 8 Mai 2016 - 19:10, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5531
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Adressage des pixels d'un picture   Dim 8 Mai 2016 - 19:09

@Jean Claude
Tu n’as pas vu le TERMINATE qui remplace le END ?
Seulement ce TERMINATE je le déteste  affraid  affraid  affraid
TERMINATE = PLANTAGE
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

Nombre de messages : 5015
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Adressage des pixels d'un picture   Dim 8 Mai 2016 - 19:31

Admettons !

Pourquoi utiliser TERMINATE, qui bug, à la place de END qui lui est irréprochable.
Si tu mets un END à la place de TERMINATE, il n'y a pas de plantage à la sortie.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5531
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Adressage des pixels d'un picture   Dim 8 Mai 2016 - 20:58

C'est bien ce que je dis. tongue
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5947
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Adressage des pixels d'un picture   Dim 8 Mai 2016 - 21:34

Le Terminate ferme le programme, ce que ne fait pas le End.
Et chez moi il ne plante pas, je suis revenu à la version précédente de l'éditeur à cause de ça.

Mais bon, c'est un détail par rapport au sujet, le code est court et à usage unique, chacun peut mettre un end à la place du terminate.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 465
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Adressage des pixels d'un picture   Lun 9 Mai 2016 - 14:04

@JL35
c'est dommage d'être revenu en arrière, la dernière version de travail fonctionne bien hormis le souci du 'terminate', mais ce pb est facile à contourner:

Code:
'
' remplacement de 'terminate' pour eviter le bug:

sub close_form(window)
   dll_on "user32" : dim_local null%
   null%=dll_call1("DestroyWindow",handle(window))   :' libere les resources memoires
   if window=0
      null%=dll_call1("PostQuitMessage",0)           :' indique au systeme que c'est la fin du programme
   end_if
   dll_off
end_sub


' ou a partir de panoramic0927i2 et +, on peut utiliser cette autre sub:

sub close_form(window)
 dim_local n
   n=0
   repeat
      n=n+1
   until library$(n)="_" or lower$(library$(n))="user32"
   if lower$(library$(n))<>"user32" then library n,"user32"
   '
   command "free_resources","DestroyWindow",n,"I","stdcall"   :' libere les resources memoires
   command "quit_form","PostQuitMessage",n,"I","stdcall"      :' indique au systeme que c'est la fin du programme
   '
   free_resources handle(window)
   if window=0 then quit_form 0   :' 0=code de sortie
end_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5947
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Adressage des pixels d'un picture   Lun 9 Mai 2016 - 14:41

Je sais bien silverman qu'il y a des palliatifs au terminate défectueux, mais bon
- pour le moment je n'utilise pas les dernières modifs de l'éditeur, donc je ne suis pas très motivé.
- j'ai depuis longtemps sur le bureau un petit batch qui ferme (fermement) Panoramic.exe pour tous les cas où ça tourne en rond ou autres, j'ai juste à cliquer dessus, et c'est radical.

Le .Bat sert à fermer impérativement une tâche quelconque en cours d'exécution:
Code:
@echo off
Taskkill.exe /F /IM %1 /T
enregistré dans C:\BAT\ sous le nom Kill.bat
Appelé depuis le bureau par:
Code:
C:\BAT\Kill.bat Panoramic.exe

Ça ferme toutes les sessions de panoramic.exe qui restent actives, on ne sait pas toujours pourquoi (j'ai aussi sur le bureau un petit utilitaire qui m'affiche tous les programmes actifs au moment du clic, avec possibilité de supprimer certains).

Il me suffirait, dans mes programmes actuels, de mettre à la place de TERMINATE:
Code:
EXECUTE "cmd.exe /c C:\BAT\Kill.bat Panoramic.exe"
et ça ferme sans discuter.

Mais je garde quand même sous le coude ta sub qui ne nécessite pas de ressource externe.

PS Pour le taskkill de panoramic.exe, je pense que c'est ce que fait d'une façon ou d'une autre l'option 'Stop' dans le menu de Panoramic_editor.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Adressage des pixels d'un picture   

Revenir en haut Aller en bas
 
Adressage des pixels d'un picture
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Taille en pixels d'une police fixe
» Taille des polices pour Print dans un Picture
» résolution des pixels du forum
» Objet PICTURE
» Fullscreen en pixels

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Présentation et bavardage-
Sauter vers: