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);
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);
}
}
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