Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Sélecteur graphique de caractères Unicode avec export | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Sélecteur graphique de caractères Unicode avec export Jeu 3 Sep 2015 - 18: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
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Sélecteur graphique de caractères Unicode avec export Jeu 3 Sep 2015 - 22: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 | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélecteur graphique de caractères Unicode avec export Jeu 3 Sep 2015 - 22: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 | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélecteur graphique de caractères Unicode avec export Ven 4 Sep 2015 - 1: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
| |
| | | dannick
Nombre de messages : 46 Age : 25 Localisation : yaounde Date d'inscription : 04/09/2015
| Sujet: pour klauss Ven 4 Sep 2015 - 19:10 | |
| Salut klaus!silteplait je voudrais savoir si tu pouvais me faire un tuto complet pour la creation et l utilisation des dll...https://2img.net/i/fa/i/smiles/icon_razz.gif | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélecteur graphique de caractères Unicode avec export Ven 4 Sep 2015 - 19: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 ! | |
| | | Contenu sponsorisé
| Sujet: Re: Sélecteur graphique de caractères Unicode avec export | |
| |
| | | | Sélecteur graphique de caractères Unicode avec export | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |