Autore Topic: [Risolto] Funzione da libreria esterna  (Letto 1587 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Funzione da libreria esterna
« Risposta #15 il: 28 Ottobre 2017, 23:54:28 »
ma con l'ultima modifica (tuo post successivo) mi da lo stesso errore.

...cioè...... è incredibile !    :rolleyes:
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
Re:[Risolto] Funzione da libreria esterna
« Risposta #16 il: 29 Ottobre 2017, 00:04:28 »
Presumo che la versione/revisione di gambas che ho io sia più vecchia della tua.
D'altronde devo aggiornare il mio debian alla versione 9.1, pare che gambas3 installabile sia più recente.
Mah staremo a vedere ???
Prossima sfida, usare un'icona come pulsante, tipo le finestre di sistema "doppio Click" ed esegue ...
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:[Risolto] Funzione da libreria esterna
« Risposta #17 il: 29 Ottobre 2017, 00:07:45 »
Ma ora di quel Puntatore (3° parametro formale della funzione esterna) cosa ne devi fare ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
Re:[Risolto] Funzione da libreria esterna
« Risposta #18 il: 29 Ottobre 2017, 19:49:41 »
Questo è uno ...
Codice: [Seleziona]
Public Sub scrivi_intestazioni(cairo As Pointer)
 Dim my_text_extent As New Cairo_text_extents_t
 Dim ptn As Pointer
 Dim my_width As Float
 
  ptn = Alloc(Object.SizeOf(my_text_extent), 1)
 
  cairo_set_source_rgb(cairo, 0.0, 0.0, 0.0)
  cairo_select_font_face(cairo, "Liberation Serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL)
  cairo_set_font_size(cairo, 16)
  cairo_move_to(cairo, 250, 108)
  cairo_show_text(cairo, "FATTURA N°")
  cairo_set_font_size(cairo, 9.0)
  cairo_text_extents(cairo, "Tipo prestazione", ptn)
  my_text_extent = ptn
  my_width = my_text_extent.width
  cairo_move_to(cairo, (169 - (my_width / 2)), 295)
  cairo_show_text(cairo, "Tipo prestazione")
  cairo_text_extents(cairo, "Ore / Prestaz.", ptn)
  my_text_extent = ptn
  my_width = my_text_extent.width
  cairo_move_to(cairo, (368 - (my_width / 2)), 295)
  cairo_show_text(cairo, "Ore / Prestaz.")
  cairo_text_extents(cairo, "Onorario €", ptn)
  my_text_extent = ptn
  my_width = my_text_extent.width
  cairo_move_to(cairo, (448 - (my_width / 2)), 295)
  cairo_show_text(cairo, "Onorario €")
  cairo_text_extents(cairo, "Importo €", ptn)
  my_text_extent = ptn
  my_width = my_text_extent.width
  cairo_move_to(cairo, (536 - (my_width / 2)), 295)
  cairo_show_text(cairo, "Importo €")
  Free(ptn)
End
e già che c'ero...  ;)
Codice: [Seleziona]
Public Sub test_pdf()
  Dim surface, pattern, pagina_1, pagina_2 As Pointer
  Dim x, y As Byte
 
  surface = cairo_pdf_surface_create("/home/franco/Scrivania/test.6_Cairo.pdf", 595.3, 841.9)
  'cairo = cairo_create(surface)
  pagina_1 = cairo_create(surface)
  pagina_2 = cairo_create(surface)
  prima_pagina = True
  '' Disegna la prima pagina (Originale)
  disegna_modello(pagina_1)
  scrive_logo(pagina_1)
  scrivi_data(pagina_1)
  scrivi_intestazioni(pagina_1)
  scrivi_ultime(pagina_1)
  cairo_show_page(pagina_1)
  prima_pagina = False
  '' Disegna la seconda pagina (Copia)
  disegna_modello(pagina_2)
  scrive_logo(pagina_2)
  scrivi_data(pagina_2)
  scrivi_intestazioni(pagina_2)
  scrivi_ultime(pagina_2)
  cairo_show_page(pagina_2)
  ''Finito !
  cairo_destroy(pagina_1)
  cairo_destroy(pagina_2)
  cairo_surface_destroy(surface)
  Message.Info("Creazione completata")
 
End
Tra le altre cose quel puntatore servirà anche per disegnare sulla Drawing Area.   ;)
Vorrei chiederti (se posso) una volta che ho finito, vorresti testarlo ?  :-[
Una cosa è certa, senza il tuo aiuto credo che avrei rinunciato.  :ok:
Grazie ancora
 :ciao: :ciao:
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:[Risolto] Funzione da libreria esterna
« Risposta #19 il: 29 Ottobre 2017, 21:52:04 »
Codice: [Seleziona]
   my_width = my_text_extent.width
Non capisco perché non utilizzi direttamente il membro della Struttura.   :-\


Codice: [Seleziona]
   my_width = my_text_extent.width
A proposito, "my_text_extent.width" contiene un valore superiore a zero ?



Vorrei chiederti (se posso) una volta che ho finito, vorresti testarlo ?
Dovrai allegare il sorgente in questa discussione.



Una cosa è certa, senza il tuo aiuto credo che avrei rinunciato.
Comunque sia, utilizzando le funzioni esterne hai compiuto il primo passo in un mondo più ampio.
« Ultima modifica: 29 Ottobre 2017, 22:03:34 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
Re:[Risolto] Funzione da libreria esterna
« Risposta #20 il: 30 Ottobre 2017, 01:06:22 »
cairo_move_to(cairo, (448 - (my_width / 2)), 295)
si, si può scrivere anche:
cairo_move_to(cairo,(448-(my_text_extents.width/2)),295)
ottieni lo stesso risultato, ma usando una variabile in meno ... 8)
che tu sappia si può caricare un'immagine da file (es. xpm) ?
negli esempi che ho visto, il "load" avviene con un file immagine su disco.
Cioè se io scrivo nell'editor un file tipo:
Codice: [Seleziona]
/* XPM */
static const char * arrow_left_xpm[] = {
"16 16 3 1",
" c None",
". c #000000",
"+ c #FFFFFF",
"                ",
"                ",
"           ..   ",
"         ....   ",
"       ......   ",
"     ........   ",
"   ..........   ",
"  ...........   ",
"  +..........   ",
"   ++........   ",
"     ++......   ",
"       ++....   ",
"         ++..   ",
"           ++   ",
"                ",
"                "};
e volessi visualizzarlo come immagine esiste una cosa come questa ?
Codice: [Seleziona]
GdkPixbuf *image_2;
image_2 = gdk_pixbuf_new_from_xpm_data((const char **)arrow_left_xpm);
gdk_cairo_set_source_pixbuf(cr1, image_2, 430, 8);
cairo_rectangle(cr1,430, 8, 134, 89);
cairo_fill(cr1);
ecc. ecc.
:-\
Oppure va in conflitto con gb.qt ?
Grazie  :ciao: :ciao:
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:[Risolto] Funzione da libreria esterna
« Risposta #21 il: 30 Ottobre 2017, 21:46:31 »
Cioè se io scrivo nell'editor un file tipo:
Codice: [Seleziona]
/* XPM */
e volessi visualizzarlo come immagine esiste una cosa come questa ?
C'è un semplicissimo esempio pratico nella nostra Wiki:
www.gambas-it.org/wiki/index.php?title=Creare_da_codice_un'immagine_trasparente
che ti conferma comunque la fattibilità della cosa.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
Re:[Risolto] Funzione da libreria esterna
« Risposta #22 il: 31 Ottobre 2017, 23:40:10 »
Vero! E' semplice  ;D ;D
Ma ho posto male il quesito.
Volevo sapere se in qualche modo è possibile visualizzare l'immagine con cairo,
avendo già inserito nel codice i dati dell'immagine in formato xpm.
il brano del codice che ho postato funziona con Gtk+ attraverso Gdk pixbuf.
Qui uso il componente gb.qt4.  8)

Grazie
 :ciao: :ciao:
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:[Risolto] Funzione da libreria esterna
« Risposta #23 il: 31 Ottobre 2017, 23:43:26 »
......perché non fai qualche tentativo, spianando così tu la strada su questo terreno ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »