I have problem with BrowerBox and color, i use this nice class for a guichan tutorial for my forum (and with only guichan not possibly have different color in a box) and in my simply example (with opengl) i not have different text color... look here ->

And the code :
Code: Select all
#include <SDL>
#include <GL>
#include <GL>
#include <guichan>
#include <guichan>
#include <guichan>
#include <guichan>
#include "browserbox.h"
BrowserBox* mBrowserBox;
gcn::ScrollArea *ScrollArea;
gcn::Container* screen;
gcn::Container* cWin;
gcn::ImageFont* font;
gcn::Color* color;
gcn::SDLInput* input;
gcn::OpenGLGraphics* graphics;
gcn::OpenGLSDLImageLoader* img;
gcn::Gui* gui;
gcn::Window *windowUp;
void setup_gui(int w, int h)
{
img = new gcn::OpenGLSDLImageLoader();
gcn::Image::setImageLoader(img);
graphics = new gcn::OpenGLGraphics();
graphics->setTargetPlane(w, h);
input = new gcn::SDLInput();
color = new gcn::Color::Color();
screen = new gcn::Container();
screen->setDimension(gcn::Rectangle(0, 0, w, h));
screen->setBaseColor(gcn::Color::Color(0,0,0,0));
gui = new gcn::Gui();
gui->setGraphics(graphics);
gui->setInput(input);
gui->setTop(screen);
font = new gcn::ImageFont("font.png", " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?-+/():;%&`'*#=[]\"");
gcn::Widget::setGlobalFont(font);
cWin = new gcn::Container();
cWin->setBaseColor(gcn::Color::Color(0,75,60,180));
cWin->setOpaque(false);
windowUp = new gcn::Window("Tutoriel");
windowUp->setBaseColor(gcn::Color::Color(0,75,60,180));
windowUp->setPadding(10);
windowUp->setTitleBarHeight(20);
windowUp->setAlignment(gcn::Graphics::CENTER);
windowUp->add(cWin);
cWin->setSize(400, 300);
windowUp->resizeToContent();
windowUp->setVisible(true);
mBrowserBox = new BrowserBox();
mBrowserBox->setOpaque(false);
ScrollArea = new gcn::ScrollArea(mBrowserBox);
ScrollArea->setDimension(gcn::Rectangle(5, 5, 388,288));
cWin->add(ScrollArea);
screen->add(windowUp, (w/2)-400/2, (h/2)-300/2);
mBrowserBox->addRow("##3 Un test, rien de plus. :P");
mBrowserBox->addRow("##5 ReTest");
}
void quit(int code)
{
delete mBrowserBox;
delete ScrollArea;
delete screen;
delete cWin;
delete font;
delete color;
delete graphics;
delete input;
delete img;
delete windowUp;
delete gui;
SDL_Quit();
exit(code);
}
void handle_key_down(SDL_keysym* keysym)
{
switch(keysym->sym)
{
case SDLK_ESCAPE: quit(0); break;
}
}
void process_events(void)
{
SDL_Event event;
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_KEYDOWN:
handle_key_down(&event.key.keysym); break;
case SDL_QUIT:
quit(0); break;
}
input->pushInput(event);
}
}
void draw_screen(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gui->logic();
gui->draw();
SDL_GL_SwapBuffers();
}
void setup_opengl( int width, int height )
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,width,height,0,-1,1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char *argv[])
{
const SDL_VideoInfo* info = NULL;
int width = 640;
int height = 480;
int bpp = 32;
int flags = 0;
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("Video initialization failed: %s\n", SDL_GetError()); // initialisation echoue
quit(1);
}
info = SDL_GetVideoInfo();
if(!info)
{
printf("Video query failed: %s\n", SDL_GetError());
quit(1);
}
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
flags = SDL_OPENGL;
if(SDL_SetVideoMode(width, height, bpp, flags) == 0 )
{
printf("Video mode set failed: %s\n", SDL_GetError());
quit(1);
}
setup_opengl(width, height);
setup_gui(width, height);
while(1)
{
process_events();
draw_screen();
}
return 0;
}

@++