frei definierte Farbausgabe in cOsdMenu ?

  • Hallo,


    bin dabei, mir ein Theme Editor Plugin zu schreiben.
    Ich möchte beim Verändern einer Farbe diese auch auf dem OSD z.B. als farbiges Rechteck darstellen. Bisher habe ich nichts gefunden, wie man mit den Skins und Themes eine Ausgabe in einer bestimmten Farbe machen kann. Es gibt auch keinen direkten Zugriff auf das OSD von cOsdMenu aus.


    Habe bisher nur zwei Möglichkeiten gefunden um dies zu umgehen:


    [list=1]
    [*]Man erzeugt sich einen WrapperSkin, der beim Editieren der Farben dazwischen geschalten wird und zusätzlich direkten Zugriff auf das OSD bietet.
    [*]Menü zum Editieren der Farben direkt ohne Verwendung von skins auf Basis von cOsdObject schreiben (siehe femon, osddemo)
    [/list=1]
    Bin für jede Idee dankbar, wie ich einfach eine Ausgabe auf das OSD mit einer einstellbaren Farbe in einem Menü machen kann.


    Gruss
    Lord PSI

    HW : Zotac D2550ITXS, 4GB, TeVii S470
    SW : yaVDR 0.6.2 + yaVDR-ansible


    2 Mal editiert, zuletzt von Lord PSI ()

  • Hallo Lord PSI,


    nicht viel los, haben sicherlich noch alle mit der Umstellung auf vdr 1.3.22 zu tun, oder auch nicht.


    Eine Möglichkeit:
    Schau mal in die neue Version des Skin-Plugin von mir. In DiplayMenu.c - dort nehme ich eine bekannte Farbe, suche den Paletteneintrag und schreibe eine andere drüber.


    Kannst auch einen im osd unbenutzen Paletteneintrag benutzen, mit einer Farbe belegen und dann damit eine Fläche füllen und dann immer
    nur diesen Paletteneintrag überschreiben mit der jeweils gewünschten Farbe.


    Tschüß
    Frank

  • Hi Frank,


    danke für Deine Antwort.


    Wenn ich es richtig sehe, dann passiert das ganze bei Dir in cSkinElchiDisplayMenu::SetButtons. In Deinem Plugin, das ein Skin ist, hast Du direkten Zugriff auf das OSD über osd = cOsdProvider::NewOsd.


    Bei mir wird im Plugin das Menü von cOsdMenu abgeleitet und mit 4 cMenuEditStraItem gefüllt. Damit habe ich auch die komplette Bedienung der 4 Menüeinträge. Allerdings kann man von cOsdMenu nur indirekt über den aktuellen eingestellten Skin auf das OSD zugreiffen.
    Eine Farbe in dem aktuell eingestellten Skin zu manipulieren hilft auch nicht, da ich nicht weiss, auf welchen Menüteil diese Farbe angewendet wird. Den direkten Zugriff auf das OSD bekommt man anscheinend nur wenn man sein Menü direkt von cOsdObject ableitet. Dann muss man aber die komplette Bedienung selber schreiben :(.
    Das mit der von mir erwähnten Wrapperklasse für den Skin führt auch dazu, dass man sich eine abgeleitet Klasse von cSkinDisplayMenu und damit die gesamte Menuausgabe neu schreiben muss.


    Mit beiden Möglichkeiten hat man dann ein Menü, da nicht zum aktiven Skin passt :§$%.


    Gruss
    Lord PSI

    HW : Zotac D2550ITXS, 4GB, TeVii S470
    SW : yaVDR 0.6.2 + yaVDR-ansible


  • Hallo Lord PSI,


    ich schau mir das bei Gelegenheit nochmal an, dachte, diesbezüglich
    hatte letztens in der vdr-Mailingliste einer eine Frage und ich glaube, Klaus hat diesbezüglich gemeint, daß es geht.


    Sicher ist, alles Textbasierte kann das Plugin über MenuDisplay des Skins abwickeln, damit nutzt es auch den Skin.


    Gäbe viele Möglichkeiten, denke ich. Vieles könnte vom Skin bereitgestellt werden, aber um keinen eigenen Standard zu schaffen wäre es vielleicht doch günstig, diesbezüglich noch mal eine Diskussion anzustoßen.


    Die Messages muß der Skin eh anzeigen (eine unterdrücke ich ja in meinem Skin, um mir den Neustart/Absturz des vdr zu vermeiden), damit kann der auch auf das Plugin reagieren.


    Ungünstig finde ich auch die Freie Namenswahl bei der Skinerstellung, paar Gemeinsamkeiten für die grundsätzlichen Elemente im Skin wären schon nicht schlecht, damit man nicht wegen allen Sachen dann Strings
    auswerten muß.
    Zur Ausgabe von irgendwas in einem bestimmten Bereich des OSD, der Skin muß im Menü ja nicht alles mit Text zukleistern.


    Tschüß
    Frank

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!