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
» Panoramic et ses curiosités
par Jean Claude Aujourd'hui à 21:48

» Synedit Parameters
par Jean Claude Aujourd'hui à 21:15

» Utilitaire de suppression de fichiers
par Jean Claude Aujourd'hui à 21:11

» Code à vérifier SVP (Oups ! résolu)
par Jean Claude Hier à 21:16

» Compilateur FBPano
par jean_debord Hier à 9:56

» Bienvenue à Virtualalan !
par UltraVox Hier à 9:18

» Concours de Morpions
par jjn4 Hier à 0:04

» ShortName$(F) [Cloturé]
par papydall Mer 21 Juin 2017 - 16:19

» Remplacer espace par tiret dans noms des dossiers / fichiers
par papydall Mer 21 Juin 2017 - 15:27

» Menu personalisé avec icones et menu contextuel
par Laurent (Minibug) Mer 21 Juin 2017 - 12:44

» La liste des choses à faire ...
par Jack Mar 20 Juin 2017 - 22:49

» Quoi de neuf à propos de Goric 3D ? (@Jack)
par UltraVox Mar 20 Juin 2017 - 21:06

» Nom court et anti fenetre dos
par silverman Mar 20 Juin 2017 - 18:31

» Ludothèque Panoramic
par jjn4 Mar 20 Juin 2017 - 18:09

» Proposition à la communauté
par Yannick Mar 20 Juin 2017 - 15:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2017
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  
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 : 9969
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 : 5838
Age : 44
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 : 9969
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 : 9969
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 : 9969
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: