Neutrino Fontrenderer Klasse entfremdet und nun ein Problem.

flasher
Developer
Beiträge: 467
Registriert: Dienstag 15. Juli 2003, 10:58

Neutrino Fontrenderer Klasse entfremdet und nun ein Problem.

Beitrag von flasher »

Hallo

Ich wollte mir eine kleine Anwendung schreiben, bzw ersteinmal testen und habe mir dazu von Neutrino die FrameBuffer und FontRenderer Klasse ausgeliehen.

Nach langem hin und her compiled das ganze jetzt auch.
Zeichnen von Linien/Boxen oder das Laden von Icons funktioniert wunderbar nur bei der Schrift habe ich ein Problem.

Schriften werden immer in blauer Farbe dargestellt. Das einzige was sich bei neuen Farbwerten ändern ist der Hintergrund der Schrift.

z.B:

Code: Alles auswählen

g_Font[0]->RenderString(150, 200, 80, "Hallo", COL_YELLOW);
g_Font[0]->RenderString(150, 250, 80, "Welt", COL_GREEN);
Mit diesen beiden Zeilen habe ich jeweils blaue Schrift einmal mit gelben und einmal mit grünem Hintergrund.
Ich möchte aber gerne, dass die Schrift die Farbe ändert.

Was könnte ich falsch machen? Welche Infos braucht Ihr denn fals jemand eine Idee hat?

Die beiden Klassen habe ich eigentlich nicht verändert. Ok, vieleicht das eine oder andere include rausgenommen.

Initialisiert wird das ganze so: (Auszugsweise)

Code: Alles auswählen



void CMain::initAll()
{
	frameBuffer = CFrameBuffer::getInstance();
	initFrameBuffer();

 // Test ob es geht!!!
	frameBuffer->paintHLineRel(120, 480, 50 , 0x00AA00);
	frameBuffer->paintHLineRel(120, 480, 500, 0x00AA00);
	frameBuffer->paintVLineRel(120, 50 , 450, 0x00AA00);
	frameBuffer->paintVLineRel(600, 50 , 450, 0x00AA00);
	
	frameBuffer->paintIcon("/share/tuxbox/neutrino/icons/rot.raw",    80, 90);
	frameBuffer->paintIcon("/share/tuxbox/neutrino/icons/gruen.raw",  80, 110);
	frameBuffer->paintIcon("/share/tuxbox/neutrino/icons/blau.raw",   80, 130);
	frameBuffer->paintIcon("/share/tuxbox/neutrino/icons/gelb.raw",   80, 150);

	g_Font[0]->RenderString(150, 200, 80, "Hallo", COL_YELLOW);
	g_Font[0]->RenderString(150, 250, 80, "Welt", COL_GREEN);
}

void CMain::initFrameBuffer()
{
	frameBuffer->init();

	if(frameBuffer->setMode(720, 576, 8 * sizeof(fb_pixel_t)))
	{
		printf("Error while setting framebuffer mode\n");
		exit(-1);
	}

	for( int count = 0; count < 8; count++ )
		frameBuffer->paletteSetColor( count, 0x000000, 0xffff );
	frameBuffer->paletteSet();

	SetupFonts();

	frameBuffer->ClearFrameBuffer();
}

const font_descr_struct predefined_font[1] =
{
	{"Micron", {FONTDIR "/micron.ttf", FONTDIR "/micron_bold.ttf", FONTDIR "/micron_italic.ttf"}, 0},
};

const font_sizes_struct main_font[FONT_TYPE_COUNT] =
{
	{"Hauptschrift",  24, FONT_STYLE_REGULAR, 0},
};

void CMain::SetupFonts()
{
	const char * style[3];

	if (g_fontRenderer != NULL)
		delete g_fontRenderer;

	g_fontRenderer = new FBFontRenderClass();

	font.filename[0] = FONTDIR "micron.ttf";
	font.name = "Micron";
	
	style[0] = g_fontRenderer->AddFont(font.filename[0]);
	style[1] = "Regular";

	for (int i = 0; i < FONT_TYPE_COUNT; i++)
	{
		g_Font[i] = g_fontRenderer->getFont(font.name, style[main_font[i].style], 24);
	}
}
Da ich ja nicht Neutrino neu machen wollte habe ich z.B. zur Umgehung der Locale einige Werte direkt eingegeben.
Was ich noch mit drin habe ist die komplette color.h aus Neutrino und:
FB_USE_PALETTE ist nicht definiert.
Einfach um mehr Farben darstellen zu können. (Wenn ich richtig liege)
Und zweitens compiled das Teil damit nicht durch:

Fehler
main.o(.text+0xcc): In function `CMain::initAll()':
: undefined reference to `CFrameBuffer::paintHLineRel(int, int, int, unsigned char)'
main.o(.text+0xe4): In function `CMain::initAll()':
: undefined reference to `CFrameBuffer::paintHLineRel(int, int, int, unsigned char)'
main.o(.text+0xfc): In function `CMain::initAll()':
: undefined reference to `CFrameBuffer::paintHLineRel(int, int, int, unsigned char)'
main.o(.text+0x114): In function `CMain::initAll()':
: undefined reference to `CFrameBuffer::paintVLineRel(int, int, int, unsigned char)'
main.o(.text+0x12c): In function `CMain::initAll()':
: undefined reference to `CFrameBuffer::paintVLineRel(int, int, int, unsigned char)'

Bis auf die Schrift funktioniert ja alles.

3.07h. Ist spät. Ich hoffe dennoch das ich genug Infos geliefert habe.


Gruß und gute Nacht
flasher