runde ecken ??

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: runde ecken ??

Beitrag von ingrid »

Grabber66 hat geschrieben:Kann ich eigentlich auch 2 Werte angeben. Ich wollte ein Fenster Oben ganz und unten links abrunden. Oder geht das gar nicht?
Einfach addieren:

Code: Alles auswählen

#define CORNER_TOP_LEFT      0x1
#define CORNER_TOP_RIGHT   0x2
#define CORNER_TOP         0x3
#define CORNER_BOTTOM_RIGHT   0x4
#define CORNER_RIGHT      0x6
#define CORNER_BOTTOM_LEFT   0x8
#define CORNER_LEFT         0x9
#define CORNER_BOTTOM      0xC
Also in Deinem Fall einfach "..., CORNER_TOP + CORNER_BOTTOM_LEFT);" direkt im Code angeben. Ohne Kopfrechnen. ;)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: runde ecken ??

Beitrag von seife »

ingrid hat geschrieben: Einfach addieren:

Code: Alles auswählen

#define CORNER_TOP_LEFT      0x1
#define CORNER_TOP_RIGHT   0x2
#define CORNER_TOP         0x3
#define CORNER_BOTTOM_RIGHT   0x4
#define CORNER_RIGHT      0x6
#define CORNER_BOTTOM_LEFT   0x8
#define CORNER_LEFT         0x9
#define CORNER_BOTTOM      0xC
Also in Deinem Fall einfach "..., CORNER_TOP + CORNER_BOTTOM_LEFT);" direkt im Code angeben. Ohne Kopfrechnen. ;)
Besser: die Werte ver-odern ("|"), dann passiert auch bei logischen Fehlern wie "CORNER_TOP | CORNER_TOP_LEFT | CORNER_BOTTOM_RIGHT" nichts falsches.
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: runde ecken ??

Beitrag von ingrid »

stümmt :roll:
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: runde ecken ??

Beitrag von mb405 »

so ich hab das mal eingebaut. sieht auch ganz schnuckelig aus :)
ich hab auch festgestellt, das es bei manchen menüs ums verrecken nicht möglich ist, unten rund zu machen ?
videoeinstellengen, audioplayer/bildbetrachter einstellungen, spracheinstellungen, lcd einstellungen. um nur ein paar die ich fix gefunden habe aufzuführen.
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: runde ecken ??

Beitrag von ingrid »

Ich habe mir damit beholfen, dass ich unten ein schmales unten abgerundetes Rechteck "ranzeichne" (leicht überlappend mit dem eigentlichen Menühintergrund. So, dass es nur in der Höhe der abgerundeten Ecken quasi unten "drangeklatscht" wird). Somit ist das in allen Menüs möglich und fällt nicht mal negativ auf, finde ich.

Ich hab's sogar noch weiter getrieben und habe vieles mit dem obligatorischen Schatten versehen. Das werde ich aber wohl wieder rückgängig machen, weil man den Aufbau dann "sieht". Bei dem Infoviewer fällt das nicht auf, da der erst hochgeblendet wird, wenn alles gezeichnet ist. Klar könnte man alles einfaden lassen, aber das wird mir dann zu zäh in der Bedienung.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: runde ecken ??

Beitrag von mb405 »

ich hab mal geschaut. es gibt noch paar interne aufrufe der paintboxrel in der framebuffer.cpp.
die werden das wohl hervorrufen.

Code: Alles auswählen

void CFrameBuffer::paintBackgroundBoxRel(int x, int y, int dx, int dy)
{
	if (!getActive())
		return;

	if(!useBackgroundPaint)
	{
		paintBoxRel(x, y, dx, dy, backgroundColor);
	}
	else
	{
		uint8_t * fbpos = ((uint8_t *)getFrameBufferPointer()) + x * sizeof(fb_pixel_t) + stride * y;
		fb_pixel_t * bkpos = background + x + BACKGROUNDIMAGEWIDTH * y;
		for(int count = 0;count < dy; count++)
		{
			memcpy(fbpos, bkpos, dx * sizeof(fb_pixel_t));
			fbpos += stride;
			bkpos += BACKGROUNDIMAGEWIDTH;
		}
	}
}

Code: Alles auswählen

void CFrameBuffer::paintBackground()
{
	if (!getActive())
		return;

	if (useBackgroundPaint && (background != NULL))
	{
		for (int i = 0; i < 576; i++)
			memcpy(((uint8_t *)getFrameBufferPointer()) + i * stride, (background + i * BACKGROUNDIMAGEWIDTH), BACKGROUNDIMAGEWIDTH * sizeof(fb_pixel_t));
	}
	else
	{
#ifdef FB_USE_PALETTE
		memset(getFrameBufferPointer(), backgroundColor, stride * 576);
#else
		paintBoxRel(0, 0, BACKGROUNDIMAGEWIDTH, 576, backgroundColor);
#endif
	}
}
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: runde ecken ??

Beitrag von dbt »

ich hab auch festgestellt, das es bei manchen menüs ums verrecken nicht möglich ist, unten rund zu machen
Da muss man wohl die paintitems etwas aufbohren, ist aber erst mal nicht so das Drama.

Da anscheinend reger Bedarf an der Funktion besteht, mal ein Vorschlag:
Da das Ganze doch quer über die GUI verteilt Einiges an Änderungen ausmacht und es vorrangig eigentlich mehr Fleißarbeit ist, da einige Zeilen zu ändern, wäre es doch sicher ok, wenn jeder, der da was ändert seine snippets einbringt und man das dann gemeinsam komplettiert. Ich habe z.B. angefangen die GUI dem Alphabet nach anzupassen, also alphasetup, audioplayer... usw. Die ganze Sache habe ich bereits optional gehalten und mit den Themes speicherbar/ladbar gemacht.
Hier mal der Ansatz:
edit: Code entfernt, sie 6 Artikel weiter...
Zuletzt geändert von dbt am Donnerstag 13. März 2008, 10:32, insgesamt 1-mal geändert.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: runde ecken ??

Beitrag von mb405 »

hm sieht schon gut aus.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: runde ecken ??

Beitrag von dbt »

Meine ja nur, nicht dass für ein und die selbe Sache hier 20 Baustellen aufgemacht werden und jeder sein eigenes Ding macht und am Ende alles vegebene Arbeit war, wenns dann doch ganz anders übenommen wird. Zeitlich habe ich auch nicht so viel Platz. Also lieber das was Ihr schon habt einbringen und die ganze Sache nach einem geeignetem Schema durchziehen. Dann sollte das auch passen. :wink:
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: runde ecken ??

Beitrag von ingrid »

Wäre es dafür nicht gut, wenn schon der Teil mit den Settings in der GUI committed wird? Wäre ich dafür. So arbeiten wir dann alle schon mal mit der gleichen Basis. ;)

Mein Zeugs muss ich komplett wegwerfen, weil ich's teilweise anders gemacht und einfach viel probiert habe (Schatten weitergetrieben, etc...). Ist aber nicht so wild. Wenn ich wieder dazu komme, weiterzurunden, würde ich die diffs auch posten, damit habe ich überhaupt kein Problem. Ich finde die Idee mit dem Sammeln nicht schlecht...
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: runde ecken ??

Beitrag von mb405 »

also einchecken find ich auch klasse, oder die ganzen diffs an einen zentralen punkt sammeln.
die sache, das in die themes einzuarbeiten ist auch ne intressante idee.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: runde ecken ??

Beitrag von dbt »

Mein Zeugs muss ich komplett wegwerfen, weil ich's teilweise anders gemacht und einfach viel probiert habe
Genau das wollte ich damit vermeiden :wink: bevor man hier zich Varianten durchspielt.
Wäre es dafür nicht gut, wenn schon der Teil mit den Settings in der GUI committed wird?
:gruebel: Könnte man, nur ich sehe dann schon wieder die Ansagen,
"Warum macht man das rein und dann gehts nicht..
Wenn es der Übersicht wegen besser wäre, ok, kaputt macht man da eigentlich nichts, aber bin eher nicht dafür. Den Abschnitt sollte man eigentlich selbst patchen können.
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: runde ecken ??

Beitrag von ingrid »

Ist auch okay, dann müssen sich nur alle dran halten, diesen Settingspart auch zu benutzen. Ansonsten werden wir ja zueinander inkompatibel.

Das mit dem Wegwerfen meiner Sourcen ist okay, ich wollte eh komplett neu anfangen. So viel ist es auch nicht gewesen, vielleicht 10 Fenster oder so. Wie gesagt, ich hatte den Fokus nicht nur auf den Abrundungen, deshalb wäre es Blödsinn, mein Zeugs zu posten. Hast ja evtl. weiter oben gelesen, ich hab was an die Fenster rangeklatscht, etc... Versuche eben. Aber nichts Wildes. Ich find's jedenfalls nicht schlimm, mein Zeugs zu trashen, is schon ok. ;)
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: runde ecken ??

Beitrag von dbt »

...dann müssen sich nur alle dran halten, diesen Settingspart auch zu benutzen. Ansonsten werden wir ja zueinander inkompatibel.
Der ist zwar nur Vorschlag, aber wenn alle das so annehmen haken wir den erst mal ab und setzen darauf auf. Was Feinheiten etc. angeht, kann man dann immer noch erledigen.

rounded_neutrino-diff-V2008-03-19-21-39-26.patch
icons.tar.gz

ansonsten versorgt Euch ingrid am Schluß des Threads regelmäßig mit Patch-Updates :wink:
Zuletzt geändert von dbt am Mittwoch 19. März 2008, 22:52, insgesamt 4-mal geändert.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: runde ecken ??

Beitrag von seife »

Hier könntest du ja - bis es überall drin ist - noch ein "#if 0" um den Menü-Teil drumrum machen, so dass kein unbedarfter User mit einem Menüpunkt konfrontiert wird, der dann nicht überall hundertprozentig funktioniert, aber wirklich wichtig ist das (zumindest mir) nicht ;)
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: runde ecken ??

Beitrag von dbt »

Wäre eine Möglichkeit, aber ich denke nach wie vor, das jemand der halbwegs mit einem Patch umgehen kann, damit zurecht kommt.
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: runde ecken ??

Beitrag von ingrid »

Ich habe gerade gesehen, dass es eingecheckt wurde. Die Englische Übersetzung ist richtig ("rounded"), aber die Deutsche ist schräg. Könnten wir das Ganze bitte "abgerundet" statt "rund" nennen? Runde Ecken gibt's ja nun irgendwie nicht wirklich... Wäre auch die korrekte Übersetzung, so dass EN==DE. :gruebel:
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: runde ecken ??

Beitrag von ingrid »

OT:

außerdem ist das hier mit reingerutscht:

Code: Alles auswählen

 -	strcpy(g_settings.softupdate_url_file, configfile.getString("softupdate_url_file", "/etc/cramfs.urls").c_str());
 +	strcpy(g_settings.softupdate_url_file, configfile.getString("softupdate_url_file", "/etc/squashfs.urls").c_str());
Seife hatte doch neulich den perfekten Vorschlag für den Dateinamen, unabhängig von cramfs/squashfs...
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: runde ecken ??

Beitrag von dbt »

Kein Problem, darüber hatte ich mir grad den Kopf zerbrochen und erst verrundet genommen und mich dann für rund entschieden, also wenn das "abgerundet" besser ist als "verrundet", wäre das ok, ingrid?

Code: Alles auswählen

squashfs.urls
stimmt, ist reingerutscht, hab ich übersehen, also update.urls ist das auch ok, wenn wir schon mal dabei sind?
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: runde ecken ??

Beitrag von ingrid »

Beides kriegt von mir ein +1. ;-)
Also, wenn sonst keiner Einwände hat... rin damit!
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: runde ecken ??

Beitrag von dbt »

Ist drin auch die update.urls.
Also um das jetzt zusammenzufassen, um den Menüpunkt zu aktivieren einfach in der neutrino_menu.cpp das ändern:

Code: Alles auswählen

bool mn_corner; // for testing

in

Code: Alles auswählen

bool mn_corner = true ; // for testing
Das fliegt dann irgendwann wieder raus. Den Settings_part Patch von oben habe ich entfernt, so dass man sich jetzt nur noch um die GUI-Teile kümmern muss.
Hollo
Einsteiger
Einsteiger
Beiträge: 226
Registriert: Mittwoch 22. August 2001, 00:00

Re: runde ecken ??

Beitrag von Hollo »

hm, habe in der neutrino_menu.cpp folgende Zeile:
bool mn_corner = true ; // for testing
aktiviert und auch das zusätzliche Menu

leider ist nach ändern von standard auf abgerundet und neustart von neutrino nicht wirklich was rund, immer noch alles eckig :(
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: runde ecken ??

Beitrag von ingrid »

Hast Du denn Code zum Abrunden eingebaut? Das müsstest Du natürlich noch...
Im CVS ist nur die Option vorbereitet, die Abrundungen selbst kommen noch, sobald man die Zeit dazu findet. Ist halt ein wenig Fleißarbeit, aber nichts wirklich großes.
Sobald Du was abgerundet hast, bitte posten.

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

Re: runde ecken ??

Beitrag von flasher »

Hier mal ein kleiner Beitrag meinerseits:

hintbox.cpp, hintboxext.cpp, menu.cpp & messagebox.cpp

Code: Alles auswählen

diff -Naur original/hintbox.cpp roundCorner/hintbox.cpp
--- original/hintbox.cpp	2007-11-08 12:29:27.000000000 +0100
+++ roundCorner/hintbox.cpp	2008-03-02 23:58:53.000000000 +0100
@@ -39,7 +39,7 @@
 #include <global.h>
 #include <neutrino.h>
 
-#define borderwidth 4
+#define borderwidth 5
 
 #define HINTBOX_MAX_HEIGHT 420
 
@@ -147,10 +147,8 @@
 		return;
 	}
 
-	window->paintBoxRel(borderwidth, height, width, borderwidth, COL_INFOBAR_SHADOW);
-	window->paintBoxRel(width, borderwidth, borderwidth, height - borderwidth, COL_INFOBAR_SHADOW);
-
-	window->paintBoxRel(0, 0, width, theight, (CFBWindow::color_t)COL_MENUHEAD_PLUS_0);
+	window->paintBoxRel(borderwidth, borderwidth, width, (entries_per_page + 1) * fheight + theight, (CFBWindow::color_t)COL_INFOBAR_SHADOW, 20);
+	window->paintBoxRel(0, 0, width, theight, (CFBWindow::color_t)COL_MENUHEAD_PLUS_0, 20, CORNER_TOP);
 
 	if (!iconfile.empty())
 	{
@@ -160,7 +158,10 @@
 	else
 		window->RenderString(g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE], 10, theight, width - 10, g_Locale->getText(caption), (CFBWindow::color_t)COL_MENUHEAD, 0, true); // UTF-8
 
-	window->paintBoxRel(0, theight, width, (entries_per_page + 1) * fheight, (CFBWindow::color_t)COL_MENUCONTENT_PLUS_0);
+	if ( entries_per_page > 1 )
+		window->paintBoxRel(0, theight, width, (entries_per_page + 1) * fheight, (CFBWindow::color_t)COL_MENUCONTENT_PLUS_0);
+	else
+		window->paintBoxRel(0, theight, width, (entries_per_page + 1) * fheight, (CFBWindow::color_t)COL_MENUCONTENT_PLUS_0, 20, CORNER_BOTTOM);
 
 	int count = entries_per_page;
 	int ypos  = theight + (fheight >> 1);
diff -Naur original/hintboxext.cpp roundCorner/hintboxext.cpp
--- original/hintboxext.cpp	2007-11-08 12:29:27.000000000 +0100
+++ roundCorner/hintboxext.cpp	2008-03-02 23:58:53.000000000 +0100
@@ -42,7 +42,7 @@
 
 #include <iostream>
 
-#define borderwidth 4
+#define borderwidth 5
 
 #define HINTBOXEXT_MAX_HEIGHT 420
 
@@ -216,13 +216,11 @@
 	{
 		return;
 	}
-	// bottom shadow
-	m_window->paintBoxRel(borderwidth, m_height, m_width, borderwidth, COL_INFOBAR_SHADOW);
-	// right shadow
-	m_window->paintBoxRel(m_width, borderwidth, borderwidth, m_height - borderwidth, COL_INFOBAR_SHADOW);
-	
+
+	// shadow
+	m_window->paintBoxRel(borderwidth, borderwidth, m_width, m_height, (CFBWindow::color_t)COL_INFOBAR_SHADOW, 20);
 	// title
-	m_window->paintBoxRel(0, 0, m_width, m_theight, (CFBWindow::color_t)COL_MENUHEAD_PLUS_0);
+	m_window->paintBoxRel(0, 0, m_width, m_theight, (CFBWindow::color_t)COL_MENUHEAD_PLUS_0, 20, CORNER_TOP);
 
 	if (!m_iconfile.empty())
 	{
diff -Naur original/menue.cpp roundCorner/menue.cpp
--- original/menue.cpp	2008-02-15 23:31:14.000000000 +0100
+++ roundCorner/menue.cpp	2008-03-16 00:32:24.000000000 +0100
@@ -58,8 +58,6 @@
 CMenuSeparator * const GenericMenuSeparatorLine = &CGenericMenuSeparatorLine;
 CMenuForwarder * const GenericMenuBack = &CGenericMenuBack;
 
-
-
 void CMenuItem::init(const int X, const int Y, const int DX, const int OFFX)
 {
 	x    = X;
@@ -122,6 +120,7 @@
 		    (item != GenericMenuBack))
 			delete item;
 	}
+
 	items.clear();
 	page_start.clear();
 }
@@ -305,7 +304,7 @@
 
 void CMenuWidget::hide()
 {
-	frameBuffer->paintBackgroundBoxRel(x, y, width+15,height );
+	frameBuffer->paintBackgroundBoxRel(x, y, width+15,height);
 }
 
 void CMenuWidget::paint()
@@ -368,7 +367,7 @@
 	else
 		sb_width=0;
 
-	frameBuffer->paintBoxRel(x,y, width+sb_width,hheight, COL_MENUHEAD_PLUS_0);
+	frameBuffer->paintBoxRel(x,y, width+sb_width,hheight, COL_MENUHEAD_PLUS_0, 1, CORNER_TOP);
 	g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->RenderString(x+38,y+hheight+1, width-40, l_name, COL_MENUHEAD, 0, true); // UTF-8
 	frameBuffer->paintIcon(iconfile, x + 8, y + 5);
 
@@ -396,6 +395,7 @@
 		frameBuffer->paintBoxRel(x+ width +2, item_start_y+ 2+ current_page*(item_height-4)/total_pages, 11, (item_height-4)/total_pages, COL_MENUCONTENT_PLUS_3);
 	}
 	frameBuffer->paintBoxRel(x,item_start_y, width,item_height, COL_MENUCONTENT_PLUS_0);
+
 	int ypos=item_start_y;
 	for (unsigned int count = 0; count < items.size(); count++)
 	{
@@ -460,18 +460,20 @@
 
 	unsigned char color   = COL_MENUCONTENT;
 	fb_pixel_t    bgcolor = COL_MENUCONTENT_PLUS_0;
+	int round = 0;
+
 	if (selected)
 	{
 		color   = COL_MENUCONTENTSELECTED;
 		bgcolor = COL_MENUCONTENTSELECTED_PLUS_0;
-	}
-	if (!active)
+		round = 1;
+	} else if (!active)
 	{
 		color   = COL_MENUCONTENTINACTIVE;
 		bgcolor = COL_MENUCONTENTINACTIVE_PLUS_0;
 	}
 
-	frameBuffer->paintBoxRel(x, y, dx, height, bgcolor);
+	frameBuffer->paintBoxRel(x, y, dx, height, bgcolor, round);
 
 	const char * l_option;
 	char option_value[11];
@@ -502,9 +504,6 @@
 	return y+height;
 }
 
-
-
-
 CMenuOptionChooser::CMenuOptionChooser(const neutrino_locale_t OptionName, int * const OptionValue, const struct keyval * const Options, const unsigned Number_Of_Options, const bool Active, CChangeObserver * const Observ, const neutrino_msg_t DirectKey, const std::string & IconName)
 {
 	height            = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight();
@@ -579,18 +578,20 @@
 
 	unsigned char color   = COL_MENUCONTENT;
 	fb_pixel_t    bgcolor = COL_MENUCONTENT_PLUS_0;
+	int round = 0;
+
 	if (selected)
 	{
 		color   = COL_MENUCONTENTSELECTED;
 		bgcolor = COL_MENUCONTENTSELECTED_PLUS_0;
-	}
-	if (!active)
+		round = 1;
+	} else if (!active)
 	{
 		color   = COL_MENUCONTENTINACTIVE;
 		bgcolor = COL_MENUCONTENTINACTIVE_PLUS_0;
 	}
 
-	frameBuffer->paintBoxRel(x, y, dx, height, bgcolor);
+	frameBuffer->paintBoxRel(x, y, dx, height, bgcolor, round);
 
 	neutrino_locale_t option = NONEXISTANT_LOCALE;
 
@@ -687,20 +688,24 @@
 
 int CMenuOptionStringChooser::paint( bool selected )
 {
+	CFrameBuffer * frameBuffer = CFrameBuffer::getInstance();
+
 	unsigned char color   = COL_MENUCONTENT;
 	fb_pixel_t    bgcolor = COL_MENUCONTENT_PLUS_0;
+	int round = 0;
+
 	if (selected)
 	{
 		color   = COL_MENUCONTENTSELECTED;
 		bgcolor = COL_MENUCONTENTSELECTED_PLUS_0;
-	}
-	if (!active)
+		round = 1;
+	} else if (!active)
 	{
 		color   = COL_MENUCONTENTINACTIVE;
 		bgcolor = COL_MENUCONTENTINACTIVE_PLUS_0;
 	}
 
-	CFrameBuffer::getInstance()->paintBoxRel(x, y, dx, height, bgcolor);
+	frameBuffer->paintBoxRel(x, y, dx, height, bgcolor, round);
 
 	int stringwidth = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(optionValue);
 	int stringstartposName = x + offx + 10;
@@ -770,15 +775,20 @@
 
 int CMenuOptionLanguageChooser::paint( bool selected )
 {
+	CFrameBuffer * frameBuffer = CFrameBuffer::getInstance();
+
 	unsigned char color   = COL_MENUCONTENT;
 	fb_pixel_t    bgcolor = COL_MENUCONTENT_PLUS_0;
+	int round = 0;
+
 	if (selected)
 	{
 		color   = COL_MENUCONTENTSELECTED;
 		bgcolor = COL_MENUCONTENTSELECTED_PLUS_0;
+		round   = 1;
 	}
 
-	CFrameBuffer::getInstance()->paintBoxRel(x, y, dx, height, bgcolor);
+	frameBuffer->paintBoxRel(x, y, dx, height, bgcolor, round);
 
 	// 	int stringwidth = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(optionValue);//unused variable
 	int stringstartposOption = x + offx + 10;
@@ -875,18 +885,21 @@
 
 	unsigned char color   = COL_MENUCONTENT;
 	fb_pixel_t    bgcolor = COL_MENUCONTENT_PLUS_0;
+	int round = 0;
+
 	if (selected)
 	{
 		color   = COL_MENUCONTENTSELECTED;
 		bgcolor = COL_MENUCONTENTSELECTED_PLUS_0;
-	}
-	if (!active)
+		round   = 1;
+	} else if (!active)
 	{
 		color   = COL_MENUCONTENTINACTIVE;
 		bgcolor = COL_MENUCONTENTINACTIVE_PLUS_0;
 	}
 
-	frameBuffer->paintBoxRel(x, y, dx, height, bgcolor);
+	frameBuffer->paintBoxRel(x, y, dx, height, bgcolor, round);
+
 	g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(stringstartposX, y+ height, dx- (stringstartposX - x), l_text, color, 0, true); // UTF-8
 
 	if (!iconName.empty())
@@ -988,6 +1001,7 @@
 			}
 		}
 	}
+
 	return y+ height;
 }
 
diff -Naur original/messagebox.cpp roundCorner/messagebox.cpp
--- original/messagebox.cpp	2005-03-28 16:17:53.000000000 +0200
+++ roundCorner/messagebox.cpp	2008-03-02 23:58:53.000000000 +0100
@@ -73,9 +73,9 @@
 	uint8_t    color;
 	fb_pixel_t bgcolor;
 
-	m_window->paintBoxRel(0, m_height - (m_fheight << 1), m_width, (m_fheight << 1), (CFBWindow::color_t)COL_MENUCONTENT_PLUS_0);
+	m_window->paintBoxRel(0, m_height - (m_fheight << 1), m_width, (m_fheight << 1), (CFBWindow::color_t)COL_MENUCONTENT_PLUS_0, 20, CORNER_BOTTOM);
 
-	//irgendwann alle vergleichen - aber cancel ist sicher der längste
+	//irgendwann alle vergleichen - aber cancel ist sicher der lï¿œngste
 	int MaxButtonTextWidth = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->getRenderWidth(g_Locale->getText(LOCALE_MESSAGEBOX_CANCEL), true); // UTF-8
 
 	int ButtonWidth = 20 + 33 + MaxButtonTextWidth;
@@ -99,7 +99,7 @@
 			color   = COL_INFOBAR_SHADOW;
 			bgcolor = COL_INFOBAR_SHADOW_PLUS_0;
 		}
-		m_window->paintBoxRel(xpos, m_height - m_fheight - 20, ButtonWidth, m_fheight, (CFBWindow::color_t)bgcolor);
+		m_window->paintBoxRel(xpos, m_height - m_fheight - 20, ButtonWidth, m_fheight, (CFBWindow::color_t)bgcolor, 1);
 		m_window->paintIcon(NEUTRINO_ICON_BUTTON_RED, xpos + 14, m_height - m_fheight - 15);
 		m_window->RenderString(g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL], xpos + 43, m_height-m_fheight+4, ButtonWidth- 53, g_Locale->getText(LOCALE_MESSAGEBOX_YES), (CFBWindow::color_t)color, 0, true); // UTF-8
 	}
@@ -119,7 +119,7 @@
 			bgcolor = COL_INFOBAR_SHADOW_PLUS_0;
 		}
 
-		m_window->paintBoxRel(xpos, m_height-m_fheight-20, ButtonWidth, m_fheight, (CFBWindow::color_t)bgcolor);
+		m_window->paintBoxRel(xpos, m_height-m_fheight-20, ButtonWidth, m_fheight, (CFBWindow::color_t)bgcolor, 1);
 		m_window->paintIcon(NEUTRINO_ICON_BUTTON_GREEN, xpos+14, m_height-m_fheight-15);
 		m_window->RenderString(g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL], xpos + 43, m_height-m_fheight+4, ButtonWidth- 53, g_Locale->getText(LOCALE_MESSAGEBOX_NO), (CFBWindow::color_t)color, 0, true); // UTF-8
 	}
@@ -139,7 +139,7 @@
 			bgcolor = COL_INFOBAR_SHADOW_PLUS_0;
 		}
 
-		m_window->paintBoxRel(xpos, m_height-m_fheight-20, ButtonWidth, m_fheight, (CFBWindow::color_t)bgcolor);
+		m_window->paintBoxRel(xpos, m_height-m_fheight-20, ButtonWidth, m_fheight, (CFBWindow::color_t)bgcolor, 1);
 		m_window->paintIcon(NEUTRINO_ICON_BUTTON_HOME, xpos+10, m_height-m_fheight-19);
 		m_window->RenderString(g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL], xpos + 43, m_height-m_fheight+4, ButtonWidth- 53, g_Locale->getText((showbuttons & mbCancel) ? LOCALE_MESSAGEBOX_CANCEL : LOCALE_MESSAGEBOX_BACK), (CFBWindow::color_t)color, 0, true); // UTF-8
 	}
Gruß
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: runde ecken ??

Beitrag von ingrid »

@flasher, dbt hat ein paar Konstanten für die Abrundungen eingeführt. Wäre es nicht besser, wenn wir es alle "gleich" machen würden, also die Konstanten durchgängig benutzen? So können wir bei Bedarf zentral Änderungen vornehmen und müssen dann nicht wieder alle files neu bearbeiten... Du hast die Abrundungen momentan hardgecoded (20).

Beispiel dbt:

Code: Alles auswählen

+	int head_rad = g_settings.rounded_corners ? CORNER_RADIUS_LARGE : 0;
 	std::string strCaption = g_Locale->getText(LOCALE_AUDIOPLAYER_HEAD);
-	m_frameBuffer->paintBoxRel(m_x, m_y + m_title_height, m_width, m_theight, COL_MENUHEAD_PLUS_0);
+	m_frameBuffer->paintBoxRel(m_x, m_y + m_title_height, m_width, m_theight, COL_MENUHEAD_PLUS_0, head_rad, CORNER_TOP);
Beispiel flasher:

Code: Alles auswählen

-   window->paintBoxRel(borderwidth, height, width, borderwidth, COL_INFOBAR_SHADOW);
-   window->paintBoxRel(width, borderwidth, borderwidth, height - borderwidth, COL_INFOBAR_SHADOW);
-
-   window->paintBoxRel(0, 0, width, theight, (CFBWindow::color_t)COL_MENUHEAD_PLUS_0);
+   window->paintBoxRel(borderwidth, borderwidth, width, (entries_per_page + 1) * fheight + theight, (CFBWindow::color_t)COL_INFOBAR_SHADOW, 20);
+   window->paintBoxRel(0, 0, width, theight, (CFBWindow::color_t)COL_MENUHEAD_PLUS_0, 20, CORNER_TOP);