FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Bug sur TEXT_HEIGHT() Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Bug sur TEXT_HEIGHT() Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Bug sur TEXT_HEIGHT() Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Bug sur TEXT_HEIGHT() Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Bug sur TEXT_HEIGHT() Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Bug sur TEXT_HEIGHT() Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Bug sur TEXT_HEIGHT() Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Bug sur TEXT_HEIGHT() Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Bug sur TEXT_HEIGHT() Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Bug sur TEXT_HEIGHT() Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Bug sur TEXT_HEIGHT() Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Bug sur TEXT_HEIGHT() Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Bug sur TEXT_HEIGHT() Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Bug sur TEXT_HEIGHT() Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Bug sur TEXT_HEIGHT() Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -39%
Pack Home Cinéma Magnat Monitor : Ampli DENON ...
Voir le deal
1190 €

 

 Bug sur TEXT_HEIGHT()

Aller en bas 
4 participants
AuteurMessage
Oscaribout




Nombre de messages : 471
Date d'inscription : 29/12/2016

Bug sur TEXT_HEIGHT() Empty
MessageSujet: Bug sur TEXT_HEIGHT()   Bug sur TEXT_HEIGHT() EmptySam 3 Fév 2018 - 10:53

Bonjour,

J'ai constaté que la fonction TEXT_HEIGHT() ne retournait pas les bonnes dimensions.

Mais en dehors du bug, il restera un problème sur le positionement du corps du texte sans les jambages.

Code:
label fonte
dim font$ , h% , tx$ , f$ , a%  

picture 10:full_space 10 : 2d_target_is 10 : print_target_is 10
   font_size 10,20
dlist 1 : font_names_load 1 : font_names_load 1
button 2 : caption 2,"Teste"  : on_click 2,fonte
end
' --------------------------
fonte:  
   off_click 2
   tx$ =  "TpzZiLfjJ"  :   font$ = "Consolas"
   for a% = 1 to count(1)
      2d_clear                
      h% = text_height(tx$,10)          
      ' écrire au dessus de 100, l'écriture se fait depuis le haut de la fonte
      font_name 10,font$   :   print_locate 10,200-h%
      print tx$          
      ' --- 2ème ---  
      font_name 10,font$      
      font$ = item_read$(1,a%)
      h% = text_height(tx$,10)
      print_locate 200,200-h% -1
      print tx$
      
      2d_pen_color 255,0,0
      2d_line 0,200,width(0),200
      2d_line 0,200-h% , width(10),200-h%
  
      2d_pen_color 0,255,0
      2d_line 0,200-5,width(0),200-6
      if scancode = 27 then terminate
      repeat : pause 100 : until scancode = 32 or scancode = 27
   next a%
return
Revenir en haut Aller en bas
Oscaribout




Nombre de messages : 471
Date d'inscription : 29/12/2016

Bug sur TEXT_HEIGHT() Empty
MessageSujet: Re: Bug sur TEXT_HEIGHT()   Bug sur TEXT_HEIGHT() EmptySam 3 Fév 2018 - 13:18

Je remets ici un code plus complet, en faisant une différence entre l'écriture en rapport au haut de caractère, et en bas du caractère. On voit que dans le corps hors jambage, place parfois selon le haut et pour d'autre depuis le bas.

Je me demande si ce sujet n'aurait pas été mieux dans aide ou bavardage, mmais il y a pour moi un bug.

Je vais revoir ceci en faisant une sub, qui recherche les pixels qui trouvent la hauteur des lettres sans jambage.

Code:
dim font$ , h% , tx$ , f$ , a% 

picture 10:full_space 10 : 2d_target_is 10 : print_target_is 10
  font_size 10,20
dlist 1 : font_names_load 1 : font_names_load 1
fonte()
' --------------------------
sub fonte() 
 
  tx$ =  "TpzZiLfjJ"  :  font$ = "Consolas"
  for a% = 1 to count(1)
      2d_clear                                     
      ' écrire au dessus de 100, l'écriture se fait depuis le haut de la fonte
      font_name 10,"Consolas"
      print_locate 20,80 : font_size 10,12 : print font$+string$(200," ")             
      ' là on est encore en mémoire
      font_name 10,font$ : font_size 10,20
      h% = text_height(tx$,10) 
     
      ' haut à gauche -----
      print_locate 10,200-h%    : print tx$
      ' bas  à gauche -----copie mais en listant depuis le bas de la fonte 
      print_locate 10,300        : print tx$ 
      ' --- 2ème ---                 
     
      font_size 10,12 :font_name 10,"Consolas" 
      font$ = item_read$(1,a%)  :  print_locate 300,80 : print font$+string$(200," ") 
           
      font_name 10,font$ : font_size 10,20    :  h% = text_height(tx$,10)
      print_locate 300,200-h%  :  print tx$
      print_locate 300,300    :  print tx$     
                                         
      2d_pen_color 255,0,0       
      2d_line 0,200,width(0),200
      2d_line 0,200-h% , width(10),200-h%
     
      2d_line 0,300,width(0),300
      2d_line 0,300+h%,width(0),300+h%
 
      2d_pen_color 0,255,0
      2d_line 0,200-5,width(0),200-6
      2d_line 0,300+h%-5,width(0),300+h%-5
      if scancode = 27 then terminate
      repeat : pause 100 : until scancode = 32 or scancode = 27
  next a%
end_sub
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Bug sur TEXT_HEIGHT() Empty
MessageSujet: Re: Bug sur TEXT_HEIGHT()   Bug sur TEXT_HEIGHT() EmptySam 3 Fév 2018 - 13:35

Oscaribout a écrit:
J'ai constaté que la fonction TEXT_HEIGHT() ne retournait pas les bonnes dimensions.

J'ai essayé tes 2 codes, mais c'est trop compliqué.
Vu ce que tu dis (dans la citation), je pense qu'un code plus simple pourrait dire si oui ou non il y a un problème.


Citation :
Mais en dehors du bug, il restera un problème sur le positionement du corps du texte sans les jambages.

Je pense qu'il faut d'abord voir s'il y a réellement un Bug avec TEXT_HEIGHT()

A+
Revenir en haut Aller en bas
Oscaribout




Nombre de messages : 471
Date d'inscription : 29/12/2016

Bug sur TEXT_HEIGHT() Empty
MessageSujet: Re: Bug sur TEXT_HEIGHT()   Bug sur TEXT_HEIGHT() EmptySam 3 Fév 2018 - 14:30

Le code ne fait que comparer dans la liste des polices la police précédente par rapport à la fonte actuellement lue, et selon deux méthodes.

Il est difficile de faire plus simple, et comme toi, j'ai pas trop le temps. voici une simple image pour voir qu'il y a des problèmes de correspondance.

Bug sur TEXT_HEIGHT() Fonte10


Cela dit, je vois que text_height pour un picture ne peux pas être une référence. En faisant le parallèle par rapport au html, je ne sait pas comment ils procèdent. On peut aligner les lettres de corps différents, de styles différents et de "size" différent sur la même ligne. Mais il me semble que Html a une liste limitée de polices, et qu'en dehors de cette liste, ils adaptent la police la plus proche.

Après avoir publié le code au dessus, je me suis rendu compte que c'est pas la hauteur qu'il faut tenir compte. Avec des fontes différentes des grosseurs différentes, on est obligé de faire ses propres calculs. On a pas de commande directe pour cela. Avec print_locate x,y et 'y' constant, rien n'est aligné. Donc la résolution de text_height() n'apportera rien. Il y a des polices qui s'écrivent (en testant le programme) bien en dehors du cadre du positionnement et de la hauteur.
Revenir en haut Aller en bas
Jack
Admin
Jack


Nombre de messages : 2386
Date d'inscription : 28/05/2007

Bug sur TEXT_HEIGHT() Empty
MessageSujet: Re: Bug sur TEXT_HEIGHT()   Bug sur TEXT_HEIGHT() EmptySam 3 Fév 2018 - 14:40

Il y a déjà un bug qui a été signalé pour TEXT_HEIGHT s'appliquant à un LIST:
https://panoramic.1fr1.net/t5495-2-en-analyse-text_height-et-text_width-sur-un-list
je vais regarder s'il y a aussi un problème sur PICTURE.

_________________
Bug sur TEXT_HEIGHT() Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
JL35




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

Bug sur TEXT_HEIGHT() Empty
MessageSujet: Re: Bug sur TEXT_HEIGHT()   Bug sur TEXT_HEIGHT() EmptySam 3 Fév 2018 - 15:34

@Oscaribout,
Sauf erreur, il me semble que ton problème serait d'aligner des polices de tailles différentes ou de types différents (la base des caractères) sur une même ligne.
Or TEXT_HEIGHT donne la hauteur totale des caractères, ce qui est normal, mais rien ne permet de savoir où se trouve la ligne de base des caractères (base des majuscules et des caractères sans jambage), qui est quelque part à l'intérieur de cette valeur.
Pour ça il faudrait une autre fonction, mais ça me parait bien compliqué à obtenir...

Sur le PICTURE il n'y a a priori aucun problème de TEXT_HEIGHT (pour la hauteur totale des caractères).

Un petit exemple (adapter f$, le fichier exemple quelconque à afficher):
Code:
LABEL Police,Pol1,Affiche
DIM x%,y%,f$,a$,nl%
f$ = "C:\TEXTES\Fetes.txt": ' <====== à adapter ===========
HEIGHT 0,SCREEN_Y-30: WIDTH 0,360: BORDER_SMALL 0: FONT_BOLD 0: COLOR 0,180,255,255
EDIT 1: TOP 1,1: WIDTH 1,150: TEXT 1,"Arial": ON_CLICK 1,Police
SPIN 2: LEFT 2,WIDTH(1): WIDTH 2,50: MIN 2,6: MAX 2,255: POSITION 2,12
BUTTON 3: LEFT 3,LEFT(2)+WIDTH(2)+5: WIDTH 3,40: CAPTION 3,"OK": ON_CLICK 3,Affiche
ALPHA 5: TOP 5,0: LEFT 5,LEFT(3)+45: FONT_SIZE 5,14
  COLOR 5,255,255,0: FONT_COLOR 5,164,0,0
PICTURE 15: TOP 15,25: WIDTH 15,25: HEIGHT 15,HEIGHT(0)-60: COLOR 15,255,255,128
PICTURE 16: TOP 16,TOP(15): LEFT 16,WIDTH(15): HEIGHT 16,HEIGHT(15): WIDTH 16,WIDTH(0)-50
2D_TARGET_IS 15
FOR y% = 0 TO HEIGHT(15) STEP 10
    2D_LINE 15,y%,25,y%
NEXT y%
FOR y% = 0 TO HEIGHT(15) STEP 100
    2D_LINE 5,y%,25,y%
NEXT y%
LIST 20: HIDE 20: TOP 20,TOP(1)+25: WIDTH 20,200: HEIGHT 20,HEIGHT(15)
FONT_NAMES_LOAD 20: ON_CLICK 20,Pol1
GOSUB Affiche
END
' ----------------------
Police:
  SHOW 20
RETURN
Pol1:
  TEXT 1,ITEM_INDEX$(20)
  HIDE 20
  GOSUB Affiche
RETURN
' -----------------------
Affiche:
2D_TARGET_IS 16: CLS
PRINT_TARGET_IS 16: FONT_NAME 16,TEXT$(1): FONT_SIZE 16,POSITION(2)
CAPTION 5," HL = "+STR$(TEXT_HEIGHT("Abc_ïxyz",16))+" "
y% = 0: nl% = 0
FILE_OPEN_READ 1,f$
    WHILE FILE_EOF(1) = 0
       FILE_READLN 1,a$
       IF TRIM$(a$) <> ""
           nl% = nl%+1
           PRINT_LOCATE 5,y%: PRINT STR$(nl%)+"_ "+a$
           y% = y%+TEXT_HEIGHT(a$,16)
       END_IF
    END_WHILE
FILE_CLOSE 1
RETURN
' ------------------------
Si on multiplie le numéro de ligne par la hauteur de ligne on obtient bien la bonne valeur dans tous les cas.
Revenir en haut Aller en bas
Oscaribout




Nombre de messages : 471
Date d'inscription : 29/12/2016

Bug sur TEXT_HEIGHT() Empty
MessageSujet: Re: Bug sur TEXT_HEIGHT()   Bug sur TEXT_HEIGHT() EmptySam 3 Fév 2018 - 16:52

Effectivement, j'avais aussi constaté un bug sur LIST.

@JL35
Tu as tout à fait raison. Je me suis rappelé après coup que dans un vieux programme il y a quelques années qu'il avait fallu que je fasse une liste des réglages pour adapter l'alignement des fontes.
Je ne me souviens plus où est ce programme, mais j'avais procédé ce cette façon: (pas le temps de refaire l'essai)
j'avais testé sur la lettre "E" pour testé pixel par pixel le début de la lettre (E étant plus haut que j par exemple). Pour le Haut j'avais pris "T, etc...

Je me sauve!
Revenir en haut Aller en bas
JL35




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

Bug sur TEXT_HEIGHT() Empty
MessageSujet: Re: Bug sur TEXT_HEIGHT()   Bug sur TEXT_HEIGHT() EmptySam 3 Fév 2018 - 17:37

Malheureusement, expérience faite, il n'y a pas un rapport constant entre la hauteur totale d'une police (Text_Height) et la position de la base par rapport à cette hauteur, ça varie en fonction des polices utilisées...
Il me semble difficile d'aligner des textes avec des polices différentes et/ou des tailles différentes sur une même ligne...
On peut le faire au pif pour un cas précis, mais ça paraît compliqué, voire impossible, d'automatiser la chose par programme.

Pour une police donnée il doit y avoir un rapport constant entre sa hauteur totale et la position de la base des caractères, quelle que soit sa taille, mais il faut le mesurer au coup par coup.

Tiens Oscaribout, je te mets un petit programme dans 'Vos sources...' qui calcule la hauteur de la ligne de base pour une police donnée d'une taille donnée, d'où le facteur à appliquer au Text_Height
Revenir en haut Aller en bas
Oscaribout




Nombre de messages : 471
Date d'inscription : 29/12/2016

Bug sur TEXT_HEIGHT() Empty
MessageSujet: Re: Bug sur TEXT_HEIGHT()   Bug sur TEXT_HEIGHT() EmptySam 3 Fév 2018 - 20:06

JL35 a écrit:
Pour une police donnée il doit y avoir un rapport constant entre sa hauteur totale et la position de la base des caractères, quelle que soit sa taille, mais il faut le mesurer au coup par coup.

J'ai retrouvé le programme que j'avais fait à l'époque (2015)
Je ne le mets pas en entier, déjà ce serait hors propos, mais à chaque fois que je le lance, Windows me le ferme sans raison aussitôt! pale  Là Windows devient de plus en plus inquiétant. Mais j'ai extrait une partie du code qui met en tableau les dimensions des fontes demandées. Pour l'alignement selon les données, cela fonctionnait parfaitement. (Sauf des fois en largeur de ce que je m'en souvient), avec certaines fontes, il y avait un petit problème. De la sub j'ai pas tout mis, il aurait fallu que j'en rajoute de trop.

Code:
dim choix_item_liste$(10)
dim fonte%(200,255) , font% , police$(10) : font%=1

police$(1)="Arial|15|g|i|s|b}0,0,0|255,255,255"
picture 2 : full_space 2   : color 2,197,242,237 : 2d_target_is 2:print_target_is 2
image 4
list 10 : left 10,100
mettre_attribut(police$(1))
format_fonte(1)

end
' ============================================================================
sub format_fonte(font%)

   2d_fill_on : 2d_fill_color 255,255,255 : 2d_pen_color 255,255,255
   font_underline_off 2 : ' sinon si souligné, cela remonte le caractère.
   2d_rectangle 0,0,600,100  :  2d_image_copy 4,0,0,100,100 : font_color 2,0,0,0

   dim_local a%,y,d%,c%,larg% , b%
   ' ....... recherche du haut ....... normalement c'est 1
   2d_image_paste 4, 0,0 :2d_fill_color 255,253,255 : 2d_pen_color 255,253,255 :  print_locate 0,0 :print "   "
   ' ...........................................
   for a% = 1 to 80 : c% = color_pixel_green(2,10,a%) : if c% <> 253 then y=a%:exit_for
   next a% : fonte%(font%,3)=y  :' on a le bas du caractère

   ' ...........................................
   ' on recherche la largeur du caractère 151, qui a la largeur maxi
   2d_image_paste 4,0,0     :  print_locate 0,0 : print string$(1,chr$(151))
   for d% = 60 to 1 step -1 :  c% = color_pixel_green(2,d%,10) : if c%=253 then exit_for
   next d%  : larg% = d%    :  fonte%(font%,2)=larg%

   ' ...........................................
   for a% = 32 to 255       :' caractère par caractère
      2d_image_paste 4,0,0  : print_locate 0,0 : print string$(1,chr$(a%)) :' pause 1
      for d% = larg% to 1 step -1 : c% = color_pixel_green(2,d%,10) : if c%=253 then exit_for
      next d%  :   fonte%(font%,a%) = d% +1
   next a%

   ' ...........................................
   2d_image_paste 4,0,0
   print_locate 0,0:print "Lg" :' L c'est sur cette ligne sans jambage qu'on aligne les caractères
   for a% = y to 1 step -1  : c%= color_pixel_green(2,5,a%) : if c%=0 then exit_for    
   next a%   :   fonte%(font%,1)= a%   :   fonte%(font%,1)= a%  
    
   2d_pen_color 0,255,0 : 2d_line 0,y,100,y :' pour voir si c'est correct
   message "hauteur retenu:" + str$(a%)  
  
   rem fonte%(font%,"1")  "1" est le nb retenu pour la hauteur du jambage inférieur.
   rem il y a d'autre relevés mais hors sujet ici
end_sub
' ==========================================================

sub mettre_attribut(a$)
   dim_local v,b$,c% , key$
   c%=1
   repeat
      v = instr(a$,"|")
      if v > 0
         select c%
            case 1 : font_name 2,left$(a$,v-1)
            case 2 : font_size 2,val(left$(a$,v-1))
            case 3 : b$=left$(a$,v-1):if b$="G" then font_bold 2 : else : font_bold_off 2
            case 4 : b$=left$(a$,v-1):if b$="I" then font_italic 2 : else : font_italic_off 2
            case 5 : b$=left$(a$,v-1):if b$="S" then font_underline 2 : else : font_underline_off 2
            case 6 : b$=left$(a$,v-1):if b$="B" then font_strike 2 : else : font_strike_off 2
         end_select
         a$ = right_pos$(a$,v+1)
      end_if
      c%=c%+1
   until c% = 7
end_sub
Revenir en haut Aller en bas
Contenu sponsorisé





Bug sur TEXT_HEIGHT() Empty
MessageSujet: Re: Bug sur TEXT_HEIGHT()   Bug sur TEXT_HEIGHT() Empty

Revenir en haut Aller en bas
 
Bug sur TEXT_HEIGHT()
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Un problème avec PANORAMIC?-
Sauter vers: