[Pluto-help] Aiuto su GTK+

Germano Rizzo manomano a ciaoweb.it
Mar 30 Gen 2001 12:42:21 CET


Ciao!
    c'è qualcuno che mi sa rispondere? Sto facendo un programmuccio con le
GTK+ per Gnome, e avrei bisogno di usare dei pixmap trasparenti come
widget... non è questo il problema, sennonché avrei anche bisogno di
cambiare le zone trasparenti di volta in volta; per cui ho pensato di tenere
un unica immagine con l'immagine (sorry), e una bitmap con la maschera della
trasparenza, e poi unirle... ora, sto cercando una funzione che mi permetta
questo, ma non la trovo... :( Gnome-pixmap prevede un membro mask, ma non di
modificarlo,a quanto pare; basterebbe farlo da Imlib, ma neanche là c'è
nulla... gtk_pixmap ha un costruttore che prevede qualcosa di simile,

GtkWidget gtk_pixmap_new(GdkPixmap *a, GdkBitmap *b)

e se ho le due immagini in questione in png, posso caricarle da ImLib... per
cui avevo pensato a qualcosa di simile...

[...]

GtkWidget *pix;
GdkImlibImage *img,*msk;
GdkPixmap *pixmap;
GdkBitmap *bitmap;

img=gdk_imlib_load_image("a.png");
msk=gdk_imlib_load_alpha("b.png"); [oppure load_image, FWIW]

pixmap=gdk_imlib_move_image(img); [o copy_image, ai fini del
bitmap=gdk_imlib_move_mask(msk); ["non-risultato" è lo stesso

 pix=gtk_pixmap_new(pixmap,bitmap);

[...]

con ovviamente tutti gli annessi e connessi... si compila bene, senza
messaggi di errore; ma se lo lancio, mi dà

Gtk-CRITICAL **: file gtkpixmap.c: line 97 (gtk_pixmap_new): assertion `val
!= NULL' failed

Perché?? Premetto che i file png ci sono e i nomi son giusti, e b.png ha 2
colori... ho anche provato con

[...]
pix=gnome_pixmap_new_from_imlib(img);
pix->mask=bitmap;
[...]

Ma mi dice  che non c'è un membro "mask"... mentre invece nel listato
dell'header c'è! Ok, l'ultima cosa qui è un po' ingenua... ma mi pare strano
che sia GTK che Imlib non prevedano di poter caricare l'alpha channel
separatamente, e non da XPM ma da un file esterno...
    Qualcuno ha qualche idea?
        Grazie,
            Mano :)






More information about the pluto-help mailing list