Hi zusammen!
Ich habe mal etwas übers graphlcd Plugin nachgedacht und dabei ist folgendes rausgekommen:
Da ja einige gerne Die Anzeigen Position selber gestalten wollen ist mir folgendes eingefallen:
Ich muss dazu sagen das ich keinerlei Kenntnisse von C habe und deshalb kann es sein das ich mir das zu einfach Vorstelle aber es soll ja nur ein Vorschlag oder eine Anregung sein.
Am Beispiel (Weils mir als nicht Programmierer simpel erscheint):
Auszug der display.c:
void cGraphLCDDisplay::DisplayLogo()
{
int x;
int y;
if (IsLogoActive() && pLCDDevice && pGraLib)
{
if(logo->Cnt() > 1)
{
int t = time_ms();
if(t - logo->LastChange() >= logo->Delay())
{
if(!logo->Next(t))
logo->First(t);
}
}
x = max(pLCDDevice->SizeX() - FRAME_SPACE_X - logo->Width() - 2, 0);
y = FRAME_SPACE_Y;
pGraLib->RoundRectangle(x, y, x + logo->Width() + 1, y + logo->Height() + 1, false, colorBlack, 1);
pGraLib->Bitmap(x + 1, y + 1, logo, colorBlack);
}
}
Alles anzeigen
Wenn ich das Richtig Verstehe wird das Logo immer an der Position:
X Achse max Pixel Anzahl X - der LogoPixel -2
Y Achse Frame_Space_Y (wo auch immer die her kommen?)
angezeigt.
Kann man jetzt da nicht etwas einbauen wie:
Eine position.conf in der Die Position der verschiedenen Ausgaben vermerkt wird z.B.
logo Position:
logo_X= "68"
logo_Y= "45"
symbols Position:
symbols_X= "58"
symbols_Y= "45"
Die Pixel Positionen kann dann dort jeder selber eintragen wenn man es selber gestalten will.
Klar müsste man etwas Probieren um die Richtige Position zu finden aber das wäre ja nur einmalig.
Eingebunden wird diese halt nur bei der Plugin Einstellung von z.B.
Display Layout:
Auto <---------------> Custom
default <------------> mit position.conf
OK ich versuch jetzt mal zu Programmieren *g* nein Scherz bei Seite ich hab keine Ahnung wie mans richtig schreibt aber von der Logik her:
void cGraphLCDDisplay::DisplayLogo()
{
int x;
int y;
if (IsLogoActive() && pLCDDevice && pGraLib)
{
if(logo->Cnt() > 1)
{
int t = time_ms();
if(t - logo->LastChange() >= logo->Delay())
{
if(!logo->Next(t))
logo->First(t);
}
}
if (Layout = custom) set FRAME_SPACE_X = logo_X and set FRAME_SPACE_Y = logo_Y
x = max(pLCDDevice->SizeX() - FRAME_SPACE_X - logo->Width() - 2, 0);
y = FRAME_SPACE_Y;
pGraLib->RoundRectangle(x, y, x + logo->Width() + 1, y + logo->Height() + 1, false, colorBlack, 1);
pGraLib->Bitmap(x + 1, y + 1, logo, colorBlack);
}
}
Alles anzeigen
Wenn jemand das richtig Programmieren kann und vor allem powARman es Ok findet und es nur lästige Arbeit wäre es überall nachzutragen würde ich gerne als Tipse fungieren und meinen bescheidenen Beitrag dazu leisten.
So nun bin ich auf Euren Senf gespannt.
Mfg
Christian