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
» Une autre façon de terminer une application.
par Francis-mr Aujourd'hui à 12:07

» Compilateur FBPano
par jean_debord Aujourd'hui à 10:09

» Copier / coller du texte à partir de la fenêtre de commandes
par jean_debord Aujourd'hui à 9:46

» COMPILATEUR V 0.9 beta 8 du 18 aout 2017
par papydall Aujourd'hui à 5:01

» Mettre en windows en veille
par papydall Aujourd'hui à 4:15

» Stretch_on ne stretch plus...
par papydall Hier à 15:22

» Pb 18 (en analyse): RESTORE_LABEL avec DATA à la fin
par Jack Hier à 13:21

» Problème de traitement des opérateurs avec le compilateur.
par Pedro Alvarez Sam 19 Aoû 2017 - 20:01

» Pb 17 (résolu): ITEM_SELECT ne fonctionne pas
par Jack Jeu 17 Aoû 2017 - 19:26

» un nouveau editeur panobasic
par Jean Claude Jeu 17 Aoû 2017 - 10:18

» Le compilateur.
par Pedro Alvarez Jeu 17 Aoû 2017 - 8:36

» Pb 16 (résolu): ON_CLOSE plante à l'exécution
par Jack Mer 16 Aoû 2017 - 20:00

» Pb 15 (résolu): TIMER_ON plante à l'exécution
par Jack Mer 16 Aoû 2017 - 19:58

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Sélecteur graphique de caractères Unicode avec export

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

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Sélecteur graphique de caractères Unicode avec export   Jeu 3 Sep 2015 - 19:52

J'ai fait un petit outil qui permet d'afficher tous les codes Unicode (65535 codes !), par pages de 256 caractères (et donc 256 pages). Un clic sur un des caractères l'affiche séparément, agrandi. Et on peut en exporter l'image dans la résolution voulu, de 8 à 256 pixels. Voici ce que ça donne:


Et voici le source, en 108 lignes:
Code:
' affichage_et_selection_de_caracteres_UNICODE.bas

label changesection, identify, export

dim res%, l%, c%, ucar%, car%

dll_on "KGF.dll"

full_space 0
alpha 1 : top 1,10 : left 1,10 : caption 1,"Section Unicode (0..255):"
spin 2 : top 2,10 : left 2,140 : min 2,0 : max 2,255 : position 2,0
  width 2,50
button 5 : top 5,10 : left 5,200 : caption 5,"Charger" : on_click 5,changesection
picture 3 : top 3,40 : left 3,10 : width 3,1024+33 : height 3,512+17
  on_click 3,identify
image 4

picture 6 : top 6,40 : left 6,left(3)+width(3)+30
  width 6,66 : height 6,66
  2d_target_is 6
  2d_rectangle 0,0,65,65
 
alpha 7 : top 7,130 : left 7,left(6) : caption 7,"Résolution:"
spin 8 : top 8,130 : left 8,left(6)+100 : width 8,50
  min 8,8 : max 8,256 : position 8,32
button 9 : top 9,160 : left 9,left(8) : caption 9,"Exporter" : on_click 9,export


2d_target_is 3
print_target_is 3
for l%=0 to 16
  2d_line 0,l%*32+l%,1026+32,l%*32+l%
next l%
for c%=0 to 32
  if bin_and(c%,1)=1
    2d_pen_dot
  else
    2d_pen_solid
  end_if
  2d_line c%*32+c%,0,c%*32+c%,512+16
next c%
font_color 3,0,0,255
for l%=0 to 15
  for c%=0 to 15
    print_locate c%*65+c%+2,l%*32+l%+3
    print str$(l%*16+c%)
    print_locate c%*65+c%+2,l%*32+l%+16
    print "x"+hex$(l%*16+c%)
  next c%
next l%
font_color 3,0,0,0

end

changesection:
  charger_images()
  return
 
identify:
  identifier_caractere()
  return
 
export:
  exporter()
  return
 
sub charger_images()
  dim_local uc%, l%, c%
  uc% = position(2)*256
  for l%=0 to 15
    for c%=0 to 15
      res% = dll_call2("GetUnicodeGraphic",uc%,32)
      clipboard_paste 4
      2d_image_paste 4,c%*65+c%+33+1,l%*32+l%+1
      uc% = uc% + 1
    next c%
  next l%
  ucar% = -1 : ' rien n'est sélectionné
  2d_target_is 6
  color 6,255,255,255
  2d_rectangle 0,0,65,65
  2d_target_is 3
end_sub
 
sub identifier_caractere()
  dim_local x%, y%, l%, c%
  x% = mouse_x_left_down(3)
  y% = mouse_y_left_down(3)
  l% = int(y%/33)
  c% = int(x%/66)
  car% = l%*16 + c%
  ucar% = position(2)*256 + car%
      res% = dll_call2("GetUnicodeGraphic",ucar%,64)
      clipboard_paste 4
      2d_target_is 6
      2d_image_paste 4,1,1
      2d_target_is 3
end_sub

sub exporter()
  dim_local f$
  if ucar%<0 then exit_sub
  res% = dll_call2("GetUnicodeGraphic",ucar%,position(8))
  clipboard_paste 4
  f$ = "U+"+str$(ucar%)+"_"+str$(position(8))+"x"+str$(position(8))+".bmp"
  file_save 4,f$
  message "Exporté dans "+f$
end_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5849
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Sélecteur graphique de caractères Unicode avec export   Jeu 3 Sep 2015 - 23:18

Je n'en ai pas l'usage pour le moment, mais ça ne m'empêche pas de reconnaître un très bon programme Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélecteur graphique de caractères Unicode avec export   Jeu 3 Sep 2015 - 23:28

Content que ça te plaise ! Voici un petit ajout: un bouton "Exporter page". Ce bouton crée un seul fichier BMP qui contient la juxtaposition des 256 images de la page sélectionnée, avec la résolution choisie. Donc, si la résolution est de 64 pixels, l'image résultante aura une hauteur de 64 pixels et 256*64 pixels de largeur:
Code:
' affichage_et_selection_de_caracteres_UNICODE.bas

label changesection, identify, export, exportpage

dim res%, l%, c%, ucar%, car%

dll_on "KGF.dll"

full_space 0
alpha 1 : top 1,10 : left 1,10 : caption 1,"Section Unicode (0..255):"
spin 2 : top 2,10 : left 2,140 : min 2,0 : max 2,255 : position 2,0
  width 2,50
button 5 : top 5,10 : left 5,200 : caption 5,"Charger" : on_click 5,changesection
picture 3 : top 3,40 : left 3,10 : width 3,1024+33 : height 3,512+17
  on_click 3,identify
image 4

picture 6 : top 6,40 : left 6,left(3)+width(3)+30
  width 6,66 : height 6,66
  2d_target_is 6
  2d_rectangle 0,0,65,65
 
alpha 7 : top 7,130 : left 7,left(6) : caption 7,"Résolution:"
spin 8 : top 8,130 : left 8,left(6)+100 : width 8,50
  min 8,8 : max 8,256 : position 8,32
button 9 : top 9,160 : left 9,left(8) : caption 9,"Exporter" : on_click 9,export
button 10 : top 10,200 : left 10,left(8) : caption 10,"Exporter page" : on_click 10,exportpage


2d_target_is 3
print_target_is 3
for l%=0 to 16
  2d_line 0,l%*32+l%,1026+32,l%*32+l%
next l%
for c%=0 to 32
  if bin_and(c%,1)=1
    2d_pen_dot
  else
    2d_pen_solid
  end_if
  2d_line c%*32+c%,0,c%*32+c%,512+16
next c%
font_color 3,0,0,255
for l%=0 to 15
  for c%=0 to 15
    print_locate c%*65+c%+2,l%*32+l%+3
    print str$(l%*16+c%)
    print_locate c%*65+c%+2,l%*32+l%+16
    print "x"+hex$(l%*16+c%)
  next c%
next l%
font_color 3,0,0,0

end

changesection:
  charger_images()
  return
 
identify:
  identifier_caractere()
  return
 
export:
  exporter()
  return
 
exportpage:
  exporterpage(position(2))
  return

sub charger_images()
  dim_local uc%, l%, c%
  uc% = position(2)*256
  for l%=0 to 15
    for c%=0 to 15
      res% = dll_call2("GetUnicodeGraphic",uc%,32)
      clipboard_paste 4
      2d_image_paste 4,c%*65+c%+33+1,l%*32+l%+1
      uc% = uc% + 1
    next c%
  next l%
  ucar% = -1 : ' rien n'est sélectionné
  2d_target_is 6
  color 6,255,255,255
  2d_rectangle 0,0,65,65
  2d_target_is 3
end_sub
 
sub identifier_caractere()
  dim_local x%, y%, l%, c%
  x% = mouse_x_left_down(3)
  y% = mouse_y_left_down(3)
  l% = int(y%/33)
  c% = int(x%/66)
  car% = l%*16 + c%
  ucar% = position(2)*256 + car%
      res% = dll_call2("GetUnicodeGraphic",ucar%,64)
      clipboard_paste 4
      2d_target_is 6
      2d_image_paste 4,1,1
      2d_target_is 3
end_sub

sub exporter()
  dim_local f$
  if ucar%<0 then exit_sub
  res% = dll_call2("GetUnicodeGraphic",ucar%,position(8))
  clipboard_paste 4
  f$ = "U+"+str$(ucar%)+"_"+str$(position(8))+"x"+str$(position(8))+".bmp"
  file_save 4,f$
  message "Exporté dans "+f$
end_sub
 
sub exporterpage(page%)
  dim_local f$, uc%, w%
  w% = position(8)
  picture 1000 : hide 1000 : height 1000,position(8) : width 1000,256*w%
  progress_bar 1001 : top 1001,230 : left 1001,left(10)-40 : width 1001,width(10)+80
    min 1001,0 : max 1001,255 : position 1001,0
  2d_target_is 1000
  for uc%=0 to 255
    res% = dll_call2("GetUnicodeGraphic",uc%+page%*256,w%)
    clipboard_paste 4
    2d_image_paste 4,uc%*w%,0
    position 1001,uc%
    display
  next uc%
  f$ = "Unicode_"+str$(page%*256)+"_"+str$(page%*256+255)+"_"+str$(w%)+"x"+str$(w%)+".bmp"
  file_save 1000,f$
  message "Exporté dans "+f$
  2d_target_is 3
  delete 1000
  delete 1001
end_sub
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélecteur graphique de caractères Unicode avec export   Ven 4 Sep 2015 - 2:46

Et voici l'ajout d'un bouton "Exporter tout". Après une confirmation (car ce sera long !), le programme exporte, une à une, les 256 pages en 256 fichiers BMP, chacun contenant une ligne de 256 caractères Unicode, en utilisant la résolution choisie. Des barres de progression indiquent la progression du travail. Un bouton d'interruption permet d'interrompre l'export à la fin du traitement du caractère en cours.

L'idée, c'est de permettre à un programme 100 % Panoramic, d'utiliser les graphismes Unicode. Pour cela, il suffit de charger le BMP de la bonne page dans un PICTURE caché, de copier la section du caractère souhaitée dans un IMAGE par 2d_image_copy, puis de récupérer l'image de ce caractère par 2d_image_paste. Facile.

Voici le texte:
Code:
' affichage_et_selection_de_caracteres_UNICODE.bas

label changesection, identify, export, exportpage, exportall, abort

dim res%, l%, c%, ucar%, car%, abort%

dll_on "KGF.dll"

full_space 0
alpha 1 : top 1,10 : left 1,10 : caption 1,"Section Unicode (0..255):"
spin 2 : top 2,10 : left 2,140 : min 2,0 : max 2,255 : position 2,0
  width 2,50
button 5 : top 5,10 : left 5,200 : caption 5,"Charger" : on_click 5,changesection
picture 3 : top 3,40 : left 3,10 : width 3,1024+33 : height 3,512+17
  on_click 3,identify
image 4

picture 6 : top 6,40 : left 6,left(3)+width(3)+30
  width 6,66 : height 6,66
  2d_target_is 6
  2d_rectangle 0,0,65,65
  
alpha 7 : top 7,130 : left 7,left(6) : caption 7,"Résolution:"
spin 8 : top 8,130 : left 8,left(6)+100 : width 8,50
  min 8,8 : max 8,256 : position 8,32
button 9 : top 9,160 : left 9,left(8) : caption 9,"Exporter" : on_click 9,export
button 10 : top 10,200 : left 10,left(8) : caption 10,"Exporter page" : on_click 10,exportpage
button 11 : top 11,230 : left 11,left(8) : caption 11,"Exporter tout" : on_click 11,exportall
button 12 : hide 12 : top 12,310 : left 12,left(8) : caption 12,"Interrompre" : on_click 12,abort

2d_target_is 3
print_target_is 3
for l%=0 to 16
  2d_line 0,l%*32+l%,1026+32,l%*32+l%
next l%
for c%=0 to 32
  if bin_and(c%,1)=1
    2d_pen_dot
  else
    2d_pen_solid
  end_if
  2d_line c%*32+c%,0,c%*32+c%,512+16
next c%
font_color 3,0,0,255
for l%=0 to 15
  for c%=0 to 15
    print_locate c%*65+c%+2,l%*32+l%+3
    print str$(l%*16+c%)
    print_locate c%*65+c%+2,l%*32+l%+16
    print "x"+hex$(l%*16+c%)
  next c%
next l%
font_color 3,0,0,0

end

changesection:
  charger_images()
  return
  
identify:
  identifier_caractere()
  return
  
export:
  exporter()
  return
  
exportpage:
  exporterpage(position(2),1)
  return

exportall:
  exportertout()
  return
  
abort:
  abort% = 1
  return

sub charger_images()
  dim_local uc%, l%, c%
  uc% = position(2)*256
  for l%=0 to 15
    for c%=0 to 15
      res% = dll_call2("GetUnicodeGraphic",uc%,32)
      clipboard_paste 4
      2d_image_paste 4,c%*65+c%+33+1,l%*32+l%+1
      uc% = uc% + 1
    next c%
  next l%
  ucar% = -1 : ' rien n'est sélectionné
  2d_target_is 6
  color 6,255,255,255
  2d_rectangle 0,0,65,65
  2d_target_is 3
end_sub
  
sub identifier_caractere()
  dim_local x%, y%, l%, c%
  x% = mouse_x_left_down(3)
  y% = mouse_y_left_down(3)
  l% = int(y%/33)
  c% = int(x%/66)
  car% = l%*16 + c%
  ucar% = position(2)*256 + car%
      res% = dll_call2("GetUnicodeGraphic",ucar%,64)
      clipboard_paste 4
      2d_target_is 6
      2d_image_paste 4,1,1
      2d_target_is 3
end_sub

sub exporter()
  dim_local f$
  if ucar%<0 then exit_sub
  res% = dll_call2("GetUnicodeGraphic",ucar%,position(8))
  clipboard_paste 4
  f$ = "U+"+str$(ucar%)+"_"+str$(position(8))+"x"+str$(position(8))+".bmp"
  file_save 4,f$
  message "Exporté dans "+f$
end_sub
  
sub exporterpage(page%,tell%)
  dim_local f$, uc%, w%
  w% = position(8)
  picture 1000 : hide 1000 : height 1000,w% : width 1000,256*w%
  alpha 1001 : top 1001,260 : left 1001,left(7) : caption 1001,"Caractère:"
  progress_bar 1002 : top 1002,260 : left 1002,left(10)-40 : width 1002,width(10)+80
    min 1002,0 : max 1002,255 : position 1002,0
  2d_target_is 1000
  for uc%=0 to 255
    if abort%=1 then exit_for
    res% = dll_call2("GetUnicodeGraphic",uc%+page%*256,w%)
    clipboard_paste 4
    2d_image_paste 4,uc%*w%,0
    position 1002,uc%
    display
  next uc%
  f$ = "Unicode_"+str$(page%*256)+"_"+str$(page%*256+255)+"_"+str$(w%)+"x"+str$(w%)+".bmp"
  file_save 1000,f$
  if tell%=1 then message "Exporté dans "+f$
  2d_target_is 3
  delete 1000
  delete 1001
  delete 1002
end_sub
  
sub exportertout()
  dim_local page%, n%
  if message_confirmation_yes_no("Voulez-vous vraiment exporter les 256 pages ?")<>1 then exit_sub
  alpha 1003 : top 1003,280 : left 1003,left(7) : caption 1003,"Page:"
  progress_bar 1004 : top 1004,280 : left 1004,left(10)-40 : width 1004,width(10)+80
    min 1004,0 : max 1004,255 : position 1004,0
  show 12
  for page%=0 to 255
    if abort%=1 then exit_for
    exporterpage(page%,0)
    position 1004,page%
    display
  next page%
  if abort%=1
    message "L'export a été interrompu."
    abort% = 0
  else
    message "Les 256 pages sont exportées."
  end_if
  hide 12
  delete 1003
  delete 1004
end_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
dannick

avatar

Nombre de messages : 46
Age : 17
Localisation : yaounde
Date d'inscription : 04/09/2015

MessageSujet: pour klauss   Ven 4 Sep 2015 - 20:10

Salut klaus!silteplait je voudrais savoir si tu pouvais me faire un tuto complet pour la creation et l utilisation des dll...http://illiweb.com/fa/i/smiles/icon_razz.gif
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://apollo.forumperso.com
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélecteur graphique de caractères Unicode avec export   Ven 4 Sep 2015 - 20:30

Un gros morceau, l'écriture d'une DLL ! Déjà en soi, ce n'est pas évident de faire une DLL. Il faut choisir un langage capable de le faire, comme Delphi 6 Personal Edition, FreeBasic ou VisualBasic 6. Et ensuite, il faut respecter les règles d'interfaçage que Panoramic impose. Je copie ici un extrait du fichier d'aide de la DLL que je crée pour Panoramic:
Citation :
Panoramic impose des restrictions sévères à l'utilisation des DLLs. Elles sont les suivantes:

Il faut "ouvrir" une DLL par la commande DLL_ON et la "fermer" par la commande DLL_OFF

Panoramic ne peut gérer qu'une seule DLL ouverte à un moment quelconque. Pour utiliser une fonction d'une autre DLL si une DLL est déjà ouverte, il faut donc d'abord fermer la DLL ouverte, puis ouvrir la nouvelle, avant de pouvoir appeler la fonction choisie.

Les noms des fonctions sont sensibles à la casse, et doivent donc scrupuleusement respecter les minuscules et majuscules des noms définis dans la DLL.

On ne peut appeler que des fonctions, pas de procédures.

Une fonction ne peut retourner que des valeurs entières comme celles contenues par des variables typées par %.

Une fonction dans une DLL peut être appelée avec 0 à 6 paramètres.

Un paramètre doit impérativement être une valeur entière comme celles contenues par des variables typées par %.

Tous les paramètres sont passés "par valeur", pas de passage "par référence". Donc, pour retourner une valeur dans un paramètre, il faut passer l'adresse d'une variable dans ce paramètre.

Comme on ne peut passer que des valeurs entières en paramètre, il faut donc également passer l'adresse des variables flottantes et chaînes de caractères pour les passer à la DLL.

Une fonction est appelée par la fonction Panoramic DLL_CALLx avec x indiquant le nombre de paramètres de 0 à 6 à passer à la fonction de la DLL. Le premier paramètre de DLL_CALLx doit être une chaîne de caractères contenant le nom exact de la fonction DLLà appeler. Les x paramètres suivants contiennent les paramètres à passer à la DLL.

Exemples:

resultat% = dll_call0( "MaFonction" )

resultat% = dll_call3( "MonAutreFonction" , 15 , par%, adr(s$) )

Avant de t'attaquer aux DLLs, fais quelques programmes simples avec Panoramic, pour commencer !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: Sélecteur graphique de caractères Unicode avec export   

Revenir en haut Aller en bas
 
Sélecteur graphique de caractères Unicode avec export
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème d'écran sur lecteur dvd portable ?
» Affichage de caractères Unicode.
» [résolu]Optimisation PC, svp :)
» Lecteur musique avec playlist
» [Résolu] Word : caractères non imprimables

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Vos sources, vos utilitaires à partager-
Sauter vers: