🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #7855

GTK: drawingarea

#7855
From: PATAN
Date: Tue, 14 Jan 2003 22:44
74 lines
3318 bytes
Buenas.

Tengo un problemilla cuando intento pintar un rectangulo en un drawingarea, 
el codigo es el siguiente:

typedef struct {
        float r; //color rojo
        float g; //color verde
        float b; //color azul
} fcolor;
.....
.....
//Aqui creo el drawing area
drawingarea1 = gtk_drawing_area_new ();
  gtk_widget_ref (drawingarea1);
  gtk_object_set_data_full (GTK_OBJECT (Creador_de_texturas), 
"drawingarea1", drawingarea1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (drawingarea1);
  gtk_table_attach (GTK_TABLE (table1), drawingarea1, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
        
                                        
        color.r = texturas[textura].ambiente.r;
        color.g = texturas[textura].ambiente.g;
        color.b = texturas[textura].ambiente.b;
        pinta_rectangulo(drawingarea1,color);

......
......

//esta funci�n es la encargada de pintar el rectangulo

void pinta_rectangulo(GtkWidget *area,fcolor texcolor) {
        GdkGC *gc;
        GdkColor *color = NULL;
        GdkDrawable *drawable = NULL;
        
        /*
        Esta rutina la saque de:
        http://www.linuxlots.com/~barreiro/spanish/gtk/faq/x862.html
        */
        
        gc = gdk_gc_new(area->window);   //El error es al llamar al elemento window
        
        color = (GdkColor *)malloc(sizeof(GdkColor));   
        color->red =    texcolor.r * (65535/255);
        color->green =  texcolor.g * (65535/255);
        color->blue =   texcolor.b * (65535/255);
        
        color->pixel = (gulong)(texcolor.r*65536 + texcolor.g*256 + texcolor.b);
        
        gdk_color_alloc(gtk_widget_get_colormap(area), color);
        
        gdk_gc_set_foreground(gc, color);       
        
        drawable = area->window;
        gdk_draw_rectangle(drawable,gc,TRUE,0,0,
                        area->allocation.width,area->allocation.height);        
        return;
}


El error que me d� es el siguiente, y es al crear la ventana:

Gdk-CRITICAL **: file gdkgc.c: line 51 (gdk_gc_new_with_values): assertion 
`window != NULL' failed.

Gdk-CRITICAL **: file gdkgc.c: line 456 (gdk_gc_set_foreground): assertion 
`gc != NULL' failed.

Gdk-CRITICAL **: file gdkdraw.c: line 89 (gdk_draw_rectangle): assertion 
`drawable != NULL' failed.
Technical Details
Message-ID: <9t320b.kji.ln@www.mardot.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!fu-berlin.de!uni-berlin.de!213.60.228.89!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII
X-Google-Thread: f86c8,e48dff7fb42316a9,start
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-01-14 14:44:39 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!fu-berlin.de!uni-berlin.de!213.60.228.89!not-for-mail
From: PATAN <mardot_esSPAM@terra.es>
Newsgroups: es.comp.os.linux.programacion
Subject: GTK: drawingarea
Date: Tue, 14 Jan 2003 23:44:57 +0100
Lines: 75
Message-ID: <9t320b.kji.ln@www.mardot.com>
Reply-To: mardot_esSPAM@terra.es
NNTP-Posting-Host: 213.60.228.89
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7Bit
X-Trace: fu-berlin.de 1042584278 22047690 213.60.228.89 (16 [142849])
X-Orig-Path: www.mardot.com!not-for-mail
User-Agent: KNode/0.7.1