[Announce] SkinDesigner 0.0.1

  • Alternativ einfach symlinks erstellen. Denke, so wie es ist, ist man flexibler.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Moin,



    Wie sieht es aus mit Border Funktionen?
    Wie sieht es aus mit abgerundeten Rechtecken?


    Solche "speziellen" Funktionen sind nicht notwendig, das kann man alles mit drawrectangle und drawellipse erschlagen. Einen Rand um eine Area bekommst du beispielsweise so (im Beispiel 1px):


    Code
    <area x=".." y=".." width=".." height=".." layer="..">
        <fill color="{clrBorder}" />
        <drawrectangle x="1" y="1" width="{areawidth} - 2" height="{areaheight} - 2" color="{clrBackground}" />
    </area>


    Abgerundete Ecken so (5% der Areaheight):


    Ungetestet, sollte aber funktionieren ;) clrTransparent ist übrigens 00000000. Die Beschreibung der Funktion der einzelnen Quadranten findest du in den VDR Sourcen.




    Wie sieht es aus mit Farbverläufen?


    Hier muss man zwei Fälle unterscheiden: zum einen die Farbverläufe aus den "nOpacity blended themes" (z.B. darkblue oder darkred), die ich mit der sparsecolor Funktion von imagemagick "hingepfuscht" habe. Das hat eh nie so wirklich funktioniert, da es nur mit bestimmten Farbkombinationen den gewünschten Effekt erzeugt hat. Hier würde ich vorschlagen, einfach mit einem Graphikprogramm (Gimp z.B.) ein entsprechendes PNG zu erzeugen und dann per <drawimage type="skinpart" ... /> darzustellen (Beispiele hierzu findest du im nopacity Skin). Wird ein image als "skinpart" ausgegeben, wird das Bild automatisch auf die passende Größe skaliert und ggf. auch verzerrt, wenn es vom Seitenverhältnis her nicht passt...bei Farbverläufen ist das aber unproblematisch.


    Zum zweiten gibt es horizontale und vertikale Farbverläufe (wie z.B. im "standalone nopacity" die Progressbar im Channel Display)...das kann ich noch einbauen, dass man solche Effekte mit drawrectangle erzeugen kann.



    Warum kann man eigentlich keine Dezimalbrüche bei Prozentangaben nutzen?
    Kann ich Zugriff auf die Display Breite und Höhe bekommen und z.B. die Schriftgröße statt relativ zur Area relativ zur Bildschirmgröße setzen?


    Die Prozentangaben sind ja nur eine "convenient" Schreibweise...innerhalb einer Area stehen dir in den Größenangaben der einzelnen Funktionen immer die Tokens {areawidth} und {areaheight} zur Verfügung. x="40%" ist z.B. analog zu x="{areawidth} * 4 / 10" oder auch x="{areawidth} * 0.4". Hiermit kannst du natürlich auch "krumme" Prozente erzeugen...bei den Schriftgrößen ist das analog, fontsize="50%" bedeutet fontsize="{areaheight} * 0.5". Eine fontsize von 100% ist so ausgelegt, dass die komplette Schrift genau in die umgebende Area passt (inlkusive Oberhöhen und Unterhöhen, das ist hier gut erklärt). Die Schriftgröße relativ zur Bildschirmgröße zu setzen ist aber erstmal nicht möglich...


    Wenn du übrigens in einer <area> Definition mit {areawidth} bzw. {areaheight} arbeitest, bezieht sich das auf den umgebenden Container, also bei displaychannel auf die Größenangaben in <displaychannel x="..." ... >. Das ist im rudimentären Wiki schon erklärt...



    Die Themes dienen ja als Definition für die Skins. Wenn ich jetzt zwei verschiedene Farbversionen möchte müsste ich ein Verzeichnis skin-green und einen Symlink skin-blue auf skin-green zeigen lassen.
    text2skin hat direkt Skins angeboten, die dann ihre eigenen Themes hatten.


    Ja, dass ist ein Punkt, den ich nochmal angehen muss...wie ist das denn in text2skin genau geregelt? Warum ich die Farbdefinitionen in den themes nicht benutze, habe ich ja schon hier erklärt. Ausserdem ist es ja mit den Farben alleine nicht getan...wenn man sich z.B. nOpacity freestyle anschaut und nOpacity darkredNG, würden dort identische xml Files benutzt, jedoch wäre die globals.xml unterschiedlich (dort sind ja die Farben definiert), aber auch die ganzen Graphiken inkl. Hintergrundgraphiken. Eigentlich müsste man also die Möglichkeit schaffen, mit einem Satz XML Files und unterschiedlichen Farben inkl. Graphiken zu arbeiten. Ich werde mir mal überlegen, wie man das am besten implementiert...


    Ciao Louis

  • Hi Boostar,


    Herzlichen Glückwunsch..
    und vielen Dank.. ich befürchte das Plugin hat ein riesiges Potential ;)


    Wäre das so schlimm? ;) Jetzt kannst du dich wie versprochen an der Sache, an der du schon drann warst so richtig austoben :D


    Ciao Louis

  • Hi Pit,


    Aber eine Frage möchte ich mir doch mal erlauben. Ist es wirklich gewünscht für jeden Skin ein eigenes Logopack (Channellogos) bereitzustellen? Ich denke gerade daran, das die Bildateien ja wirklich einen großen Anteil an Festplattenspeicher benötigen. Ist es daher nicht wirklich sinnvoll das analog der anderen Pluginlogiiken einzubinden? Also mit ein Standardablageort bzw. per Startpoarameter "-l <logopath"?


    Wie TheChief schon geschrieben hat, ist es das beste, mit Symlinks zu arbeiten...das ist am flexibelsten, und bei Bedarf kann ein Skin auch ein eigenes Logopack mitbringen...


    Ciao Louis

  • Ich weiß auch nicht... Wer soll denn X Logo-Packs pflegen? Wäre es nicht viel sinnvoller einen Satz mit transparentem Hintergrund abzulegen? Wenn ein Theme da irgendeinen "Effekt" dahinter will müsste man halt erst den Rahmen mit "Effekt" zeichnen und dann das Logo obendrauf. Zumindest sollte es möglich sein an einem zentralen Pfad (ResourceDir) einen zentralen Logo-Satz abzulegen der immer dann angesteuert wird wenn das Theme keine eigenen Logos hat. Ob wirklich ein Theme-Entwickler sich die Mühe machen will einen ganzen Channel-Logo-Satz aktuell zu halten müsste sich nämlich erst noch zeigen.

  • M-Reimer: generell gebe ich dir ja recht, dass es eher unwahrscheinlich ist, dass die Leute mit verschiedenen Logopacks hantieren...da ich die Logos aber eh nicht mit ausliefere und mir nichts verbauen will, habe ich diese Lösung gewählt. Und einen Symlink anzulegen sollte doch eigentlich jeder hinbekommen oder? ;) Vielleicht lassen sich die Distributoren auch was sinnvolles einfallen.


    Ciao Louis

  • Aber letztlich für jedes Theme einen Symlink anlegen. Muss man das den Benutzern wirklich antun? Einen zentral liegenden Fallback-Pfad zu nehmen ist doch programmiertechnisch kaum Aufwand.


    Hmmm...hmmm... :D Hast ja recht...ich denke mal drüber nach ;)


    Ciao Louis

  • Juhu, Klasse Plugin! :tup



    Ich habe es mal überflogen. Sieht recht übersichtlich aus. Ich versuche mich morgen mal an NarrowHD.
    Der ist simpel und als Einstieg ganz gut geeignet. Sollte mir daran nicht schon die Lust vergehen, würde ich auf lange Sicht alle vorhandenen Skins portieren.


    Wenn also jemand bereits angefangen hat, oder in Kürze anfängt einen vorhandenen Skin zu portieren, wäre es praktisch, wenn er sich hier mal meldet.
    Damit keine Arbeit doppelt gemacht wird.


    Hast du am NarrowHD schon angefangen?


    Nachdem ich vergeblich auf den TrueColor Support im Text2Skin gewartet habe,
    würde ich mein Skin NarrowHD auf den SkinDesigner portieren :)

  • Ich verstehe nicht, wieso Ihr Euch so über die Symlinks für das Logo-Pack so aufregt, ich wäre nie auf die Idee gekommen, das Logo-Pack überall reinzuhängen.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Angefangen ja. Sehr weit bin ich allerdings nicht.


    Alles bis auf Display Channel fehlt noch und damit bin ich auch noch nicht 100% zufrieden.
    Ist ja auch mehr als Einstiegsübung gedacht gewesen. Dann wende ich mich SkinElchi zu.


    Das ganze Skinportieren mache ich eigentlich nur, um am VDR überall die nopacity Logos verwenden zu können.
    Ich erstelle nämlich Logo-Packs und wie Mreimer schon angesprochen hat, ist das für jeden Skin ein Anderer.


    Wenn du beim portieren also statt den narrowhd Pack den nopacity-white Pack berücksichtigen würdest, wäre das sehr praktisch.


    Edit: Außerdem kann ich dann bei vdr4arch alle Skins bis auf den skindesigner rausschmeißen.

  • Moin,

    Ich verstehe nicht, wieso Ihr Euch so über die Symlinks für das Logo-Pack so aufregt, ich wäre nie auf die Idee gekommen, das Logo-Pack überall reinzuhängen.


    Naja, aufregen würde ich das jetzt nicht nennen...irgendwie sind die Einwände schon berechtigt ;)


    Ich werde es wohl so machen, dass man per Startparameter einen allgemeinen Logopfad angeben kann. Falls nicht per Startparameter angegeben, wird <Ressourcedir>/logos benutzt. Liegen nun unter <skindir>/logos keine Logos, wird es ein Fallback auf diesen Pfad geben.


    Ciao Louis

  • wie ist das denn in text2skin genau geregelt?


    Naja wie das im Code geregelt ist, kann ich dir nicht sagen.


    text2skin macht sich komplett unsichtbar.
    In den OSD-Einstellungen sind als Skins alle verfügbaren text2skin-Skins angezeigt
    Themes sind text2skin-Skin abhängig möglich und die Farben aus den Theme Dateien überschreiben die Standardfarben im text2skin-Skin.

  • Ich sehe schon, ich muss mit meiner Doku Gas geben...die Leute stehen schon in den Startlöchern :D


    Hat denn schon jemand mal ein bisschen im Wiki gelesen? Ist das einigermaßen verständlich in diesem Stil? Ich verstehe das mehr als Wiki bzw. Doku, eine nackte API Beschreibung wird es dann separat geben...


    Ciao Louis


  • Naja wie das im Code geregelt ist, kann ich dir nicht sagen.


    text2skin macht sich komplett unsichtbar.
    In den OSD-Einstellungen sind als Skins alle verfügbaren text2skin-Skins angezeigt
    Themes sind text2skin-Skin abhängig möglich und die Farben aus den Theme Dateien überschreiben die Standardfarben im text2skin-Skin.


    Hmmm..."komplett unsichtbar" würde ich das auch nicht nennen. Man muss ja - genau wie beim Skindesigner - als Skin im OSD Menü text2skin auswählen und kann dann per Theme im OSD Menü den eigentlichen text2skin-Skin auswählen. Oder täuscht mich da mein altes Hirn? ;)


    Genauso mache ich das ja auch. Ich benutze nur die Farben aus der theme Datei nicht. Aber ich hab da schon ne Idee, wie man das sinnvoll regeln könnte...


    Ciao Louis

  • Hat denn schon jemand mal ein bisschen im Wiki gelesen? Ist das einigermaßen verständlich in diesem Stil? Ich verstehe das mehr als Wiki bzw. Doku, eine nackte API Beschreibung wird es dann separat geben...


    Ja, schon. Ich komme aber immernoch nicht mit den width und height Angaben zurecht.


    Was müsste ich denn angeben, wenn der Text 2% der Bildschirmhöhe haben soll?
    Was müsste ich angeben, wenn ich die im OSD eingestellte Größe haben will?
    Und was müsste ich angeben, wenn ich die OSD-Größe im OSD-Einstellungsmenü einbeziehen möchte?


    Die Infos, die vom VDR kommen (OSD-Größe...) kommen im Wiki noch nicht so richtig raus.

  • Moin,


    Was müsste ich denn angeben, wenn der Text 2% der Bildschirmhöhe haben soll?


    Wie ich schon geschrieben habe geht das nicht, die Schriftgröße bezieht sich immer auf die umgebende Area...und aus meiner Sicht ist das auch gut so ;) Sonst könnte man nie wissen, ob eine Schrift in eine "Box" reinpasst oder nicht, und mann kan die Schrift viel besser in den jeweiligen Areas positionieren, weil man sich auf die Größen verlassen kann.



    Was müsste ich angeben, wenn ich die im OSD eingestellte Größe haben will?
    Und was müsste ich angeben, wenn ich die OSD-Größe im OSD-Einstellungsmenü einbeziehen möchte?


    Die im OSD Menü eingestellten Ränder werden immer berücksichtigt. Wenn du z.B. <displaychannel x="0" y="0" width="100%" height="100%" ...> definierst, bekommst du die volle OSD Größe minus der im OSD Menü eingestellten Ränder. Wenn dem nicht so ist, wäre das ein Bug. Stimmt, das habe ich im Wiki noch vergessen ;)


    Ciao Louis

  • In den OSD-Einstellungen sind als Skins alle verfügbaren text2skin-Skins angezeigt


    Hmmm..."komplett unsichtbar" würde ich das auch nicht nennen. Man muss ja - genau wie beim Skindesigner - als Skin im OSD Menü text2skin auswählen und kann dann per Theme im OSD Menü den eigentlichen text2skin-Skin auswählen.


    Was würde denn passieren, wenn der SkinDesigner für jedes seiner Skins ein eigenes, passendes Skin-Objekt erstellt? Dann müsste der vdr ja mehrere Skins sehen.
    Steht ja nirgendwo geschrieben, dass ein Plugin nur ein Skin-Objekt instantiieren darf. Ich weiß jetzt aber nicht genau, welches es sein sollte, aber das findet sich...


    Lars.

  • Also grob gesprochen:
    cSkinDesginer bekommt im Konstruktor einen Parameter mit dem Skinnamen und cPluginSkinDesigner::Start erstellt für jedes gefundene Skin ein cSkinDesigner-Objekt.


    Lars.

  • Lars: ich befürchte, das geht nicht, weil sich der VDR die im OSD Menü angezeigten Skins darüber holt, indem er alle Plugins dahingehend prüft, ob es ein Skin ist. Analog muss ein Theme auch mit dem Namen des Skins beginnen, damit es als Theme für diesen Skin angezeigt wird...so habe ich es zumindest in Erinnerung. Müsste man nochmal im Code schauen, ob dem wirklich so ist.


    Ciao Louis

Jetzt mitmachen!

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