Verwendbare Breite im OSD

  • Hallo Zusammen,


    wie bekomme ich beim VDR (innerhalb eines Plugins -> MainMenuAction) die verwendbare Breite im OSD um z.B. ein Zeichen am rechten Rand darzustellen? Die gesamte Breite selbst steht ja in Setup.OSDWidth - aber bei einem Skin mit Rahmen wie z.B. STTNG ist diese Breite ja kleiner als Setup.OSDWidth. Wie komme ich an diese Breite?


    Gruß


    Joe_D

  • Wenn du direkt auf das OSD zugreifst, kannst du deine OSD-Größe selbst festlegen - OSDWidth bietet sich natürlich an. Wenn du ein OSD mit Skin verwendest, bleibt dir ja sowieso nur die Möglichkeit, über Menüs oder ähnliches Text einzufügen, und dazu ist die Pixelbreite wieder irrelevant. Menüs wissen leider nicht viel darüber, wie viel vom Text wirklich sichtbar ist.


    Eine mögliche Lösung ist, mittels Menü-Columns etwas zu positionieren, vergleichbar etwa mit den Spalten im Timer-Menü. Eine exakte Maximal-Breite erhält man hier aber auch nicht.


    Ganz hartgesottene können sich auch am cOsdMenu vorbei hangeln, und direkt auf das dahinter liegende cSkinDisplayMenu zugreifen, das bietet mehr Informationen darüber, wie das Menü im OSD liegt - vorausgesetzt, das das Skin überhaupt sowas wie ein OSD benutzt (->skincurses).


    Gruß,


    Udo

  • Zitat

    Original von Urig
    bleibt dir ja sowieso nur die Möglichkeit, über Menüs oder ähnliches Text einzufügen, und dazu ist die Pixelbreite wieder irrelevant.


    Eigentlich nicht, denn man sollte (also unter Windows geht das zumindest einfach und es würde mich nicht wundern wenn Linux das nicht kann) einfach rausbekommen können wie breit ein String in Pixeln ist.
    Und das wäre auch durchaus sinnvoll, dann müsste man nicht ständig in den Quellen rumpatchen damits halbwegs brauchbar aussieht ;) Ferner könnte man dann Texte auch sinnvoll kürzen.


    Hilft zwar nichts, wollte ich aber mal ergänzend loswerden.


    cu

  • Zitat

    Originally posted by Keine_Ahnung


    Eigentlich nicht, denn man sollte (also unter Windows geht das zumindest einfach und es würde mich nicht wundern wenn Linux das nicht kann) einfach rausbekommen können wie breit ein String in Pixeln ist.
    Und das wäre auch durchaus sinnvoll, dann müsste man nicht ständig in den Quellen rumpatchen damits halbwegs brauchbar aussieht ;) Ferner könnte man dann Texte auch sinnvoll kürzen.


    Auf Skin-Ebene gibt es entsprechende Funktionen sogar: cSkinDisplayMenu::GetTextAreaWidth liefert die Breite in Pixeln, cFont::Width liefert Stringlängen. Auf cMenu-Ebene ist alles aber sehr viel abstrakter, da weiß man nicht viel darüber, wie das Menü letztlich angezeigt wird - es muss nicht mal grafisch sein.


    Gruß,


    Udo

Jetzt mitmachen!

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