GDK et Image PB

Codes specifiques à Linux
Scrat
Messages : 86
Inscription : sam. 15/mars/2008 16:00

GDK et Image PB

Message par Scrat »

Bonjour,

Je souhaite utiliser les fonctions du GDK avec de images crees avec pB.

J'arrive a creer un pixmap GDK, tracer des primitives et l'afficher dans un image gadget

Code : Tout sélectionner

Dim poly.gdkpoint(5)
poly(0)\x=100
poly(0)\y=100
poly(1)\x=150
poly(1)\y=130
poly(2)\x=120
poly(2)\y=150
poly(3)\x=80
poly(3)\y=150
poly(4)\x=60
poly(4)\y=100


pixmap=gdk_pixmap_new_(0,200,200,24)
gc=gdk_gc_new_(pixmap)

fg.GdkColor
bg.GdkColor

fg\pixel=$FF0000
gdk_gc_set_foreground_(gc,fg)
gdk_draw_rectangle_(pixmap,gc,#True,0,0,200,200)

fg\pixel=$0000FF
gdk_gc_set_foreground_(gc,fg)
gdk_draw_rectangle_(pixmap,gc,#False,10,10,100,100)

fg\pixel=$00FF00
gdk_gc_set_foreground_(gc,fg)
bg\pixel=$888888
gdk_gc_set_background_(gc,bg)
gdk_gc_set_line_attributes_(gc,3,#GDK_LINE_DOUBLE_DASH,0,0)
gdk_draw_polygon_(pixmap,gc,#False,poly(),5)


OpenWindow(1,20,20,300,300,"")
ImageGadget(0,0,0,200,200,0)

gtk_image_set_from_pixmap_(GadgetID(0), pixmap,0)

Repeat

E=WaitWindowEvent(10)

Until E=#PB_Event_CloseWindow
Ce que je cherche c'est de recuperer un pixmap depuis une image crée dans pb avec CreateImage()

J'avais cru comprendre qu'une image PB etait un pixmap

j'ai donc essayé ceci

Code : Tout sélectionner


Enumeration
#img
EndEnumeration

CreateImage(#Img,200,200,24)
StartDrawing(ImageOutput(img))
Box(0,0,200,200,RGB(255,255,255))
StopDrawing()

Dim poly.gdkpoint(5)
poly(0)\x=100
poly(0)\y=100
poly(1)\x=150
poly(1)\y=130
poly(2)\x=120
poly(2)\y=150
poly(3)\x=80
poly(3)\y=150
poly(4)\x=60
poly(4)\y=100


pixmap=ImageId(#img)
gc=gdk_gc_new_(pixmap)

fg.GdkColor
bg.GdkColor

fg\pixel=$FF0000
gdk_gc_set_foreground_(gc,fg)
gdk_draw_rectangle_(pixmap,gc,#True,0,0,200,200)

fg\pixel=$0000FF
gdk_gc_set_foreground_(gc,fg)
gdk_draw_rectangle_(pixmap,gc,#False,10,10,100,100)

fg\pixel=$00FF00
gdk_gc_set_foreground_(gc,fg)
bg\pixel=$888888
gdk_gc_set_background_(gc,bg)
gdk_gc_set_line_attributes_(gc,3,#GDK_LINE_DOUBLE_DASH,0,0)
gdk_draw_polygon_(pixmap,gc,#False,poly(),5)


OpenWindow(1,20,20,300,300,"")
ImageGadget(0,0,0,200,200,0)

gtk_image_set_from_pixmap_(GadgetID(0), pixmap,0)

Repeat

E=WaitWindowEvent(10)

Until E=#PB_Event_CloseWindow
Evidement cela ne fonctionne pas

Quelqu'un connait il la façon de recuperer le pixmap d'une image PB

Merci
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Re: GDK et Image PB

Message par Fred »

Depuis 4.40 c'est un RGB buffer. Mais je sais pas si le pointeur retourné est celui là.
Scrat
Messages : 86
Inscription : sam. 15/mars/2008 16:00

Re: GDK et Image PB

Message par Scrat »

Merci Fred

Je vais voir avec les pixbuf alors

A+
Scrat
Messages : 86
Inscription : sam. 15/mars/2008 16:00

Re: GDK et Image PB

Message par Scrat »

effectivement le pointeur de l'image ne semble pas etre le pointeur du pixbuf.

Je suis obligé de creer un pixbuf
de transferer le pixmap dans le pixbuf avec

Code : Tout sélectionner

Pixbuf=gdk_pixbuf_get_from_drawable_(Pixbuf,Pixmap,0,0,0,0,0,Taille,Taille)
puis de sauvegarder le pixbuf sur un ramdisk avec

Code : Tout sélectionner

gdk_pixbuf_savev(Pixbuf,RamDisk+"tmp","bmp",#NUL,#NUL,@e)
(cette api n'est pas reconnu par PB je l'importe depuis "/usr/lib/libgdk_pixbuf-2.0.so)
je sauvegarde en bmp parce qu'en png c'est 8x plus long

et enfin je load l' image avec

Code : Tout sélectionner

loadimage(#img,RamDisk+"tmp")
c'est peu galère et pas trés speed
Si on pouvait avoir le pointeur du pixbuf ce serait cool.

A+
Répondre