Plugin gesucht zum einfachen Verstellen der Helligkeit

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Morgen!

      Ich bin am verzeifeln, ich kann kein Bild ohne transparente Teile malen.
      result.png
      Mein "Slider" besteht nur aus einer weissen Linie, darüber ein abgerundetes Quadrat ("knob") und darüber der Text ("value"). Das Quadrat hat einen einige Pixel breite schwarzen Rahmen und ist überall nicht transparent. Dadurch soll auch die Linie unterbrochen werden.

      Links seht ihr die tatsächliche Darstellung. Wie es aussehen soll, habe ich rechts gezeichnet.
      Obwohl die Graphik keine transparenten Bereiche hat (alpha ist überall opaque), sieht es so aus, als würde Schwarz trotzdem als transparent angesehen.
      Wenn ich alphatest oder transparent bei beiden Widgets weglasse, dann werden nicht alle Widgets geeichnet. Mein Versuch mit einer zusätzlichen backgroundColor beim Bild hilft auch nicht.

      Vielleicht hat jemand noch eine Idee, was ich probieren kann.
      Gibt es irgendwo eine Beschreibung der Attribute?

      Spoiler anzeigen

      <screen position="180,160" size="480,130" title="myPresets" >
      <eLabel position="30,33" size="420,2" backgroundColor="#00ffffff" />
      <widget name="knob" pixmap="MyPresets/knob.png" position="220,14" size="40,40" backgroundColor="#00000000" alphatest="on" />
      <widget name="value" position="220,14" size="40,40" font="Regular;16" foregroundColor="#00000000" valign="center" halign="center" transparent="1" />

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von a60608 () aus folgendem Grund: Tippfehler weg

    • Hilft auch nicht!

      Mir ist noch aufgefallen, dass PNGs ohne alpha zu einem Fehler führen ("Bild wird nicht gefunden").

      Ebenso wird das XML-Attribute foregroundColor des Textes nicht übernommen.
      Wie genau die XML-Attribute der Widgets verarbeitet werden, ist mir nicht klar. Es dürfte aber irgendwie über GUI_WIDGET= gelöst sein, zumindest lässt das der Quellcode der GUIComponent vermuten.

      In meinem Fall bleibt im __init__ selbst (nur beide relevante Zielen):
      self["knob"] = Pixmap() self["value"] = Label("+0")
      übrig.

      Vielleicht habe ich da ein Verständisproblem, aber ich finde nur nach und nach Informationen.
    • skin-Dinge sind absolut nicht meine Sache, aber ich bin sicher das die welche sich auskennen anhand des gesamten codes besser helfen bzw. das problem benennen können

      achja, ohne mich komplett hier eingelesen zu haben und ohne es selbst zu benötigen:
      wenn tatsächlich nur zwei Werte regelmäßig umgeschaltet werden müssen, wäre sicher eine Variante sinnvoller welche die beiden Werte vorbelegbar macht mit MQB dies auf einer Farbtaste jeweils umschaltet
      wenn es weniger als 5 genutzte Werte sind, würde ich diese vorbelegbar machen und im Plugin wählbar mit dem zugehörigen Namen (HDR, normal usw.)

      mit einem slider wäre meine Familie nicht wirklich anzufreunden
      ============================================================================================

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von shadowrider ()

    • Darüber habe ich schon darüber nachgedacht, aber es aus zwei Gründen bis jetzt noch nicht gemacht:
      1. Bis jetzt hatte ich den Eindruck, dass es andere nicht sehr interessiert.
      2. Natürlich habe ich auch viel im Netz gefunden. Es ist zwar sehr einfach und kurz, trotzdem möchte ich keine Lizenzproblem bekommen.
    • Das ist das Hauptfile mit der Screen Klasse.

      Über das Plugin können schnell eine von 5 vordefinierte Kontrast, Brightness und Saturation Werten eingestellt werden.

      Spoiler anzeigen

      from Screens.Screen import Screen
      from Components.Sources.CanvasSource import CanvasSource
      from Components.Label import Label
      from Components.Pixmap import Pixmap
      from Components.ActionMap import ActionMap
      from Components.config import config,ConfigSubsection,ConfigInteger
      from os import path

      # etc/enigma2/settings
      config.plugins.mypresets = ConfigSubsection()
      mypresets = config.plugins.mypresets
      mypresets.pos = ConfigInteger(default=0)

      class Step:
      def __init__(self,**kwargs):
      self.__dict__.update(kwargs)

      class MyPresetsScreen(Screen):

      skin = """
      <screen position="180,160" size="480,130" title="myPresets" >
      <eLabel position="30,33" size="420,2" backgroundColor="#00ffffff" />
      <widget name="knob" pixmap="MyPresets/knob.png" position="220,14" size="40,40" backgroundColor="#00000000" alphatest="on" />
      <widget name="value" position="220,14" size="40,40" font="Regular;16" foregroundColor="#00000000" valign="center" halign="center" transparent="1" />
      <widget name="key_red" position="20,74" size="104,30" font="Regular;20" valign="center" transparent="1" />
      <widget name="key_green" position="132,74" size="104,30" font="Regular;20" valign="center" transparent="1" />
      <eLabel position="20,108" size="104,5" backgroundColor="#00b81c46" />
      <eLabel position="132,108" size="104,5" backgroundColor="#00009f3c" />
      <eLabel position="244,108" size="104,5" backgroundColor="#009ca81b" />
      <eLabel position="356,108" size="104,5" backgroundColor="#002673ec" />
      </screen>"""

      STEPS = [
      Step(brightness=0x7500,contrast=0x6F00,saturation=0x6300),
      Step(brightness=0x7A00,contrast=0x7700,saturation=0x6700),
      Step(brightness=0x8000,contrast=0x8000,saturation=0x6A00),
      Step(brightness=0x8600,contrast=0x8900,saturation=0x6E00),
      Step(brightness=0x8C00,contrast=0x9400,saturation=0x7100),
      ]

      def __init__(self,session,args=None):

      self.session = session
      Screen.__init__(self,session)

      self.mid = len(self.STEPS)//2

      self["knob"] = Pixmap()
      self["value"] = Label("+0")

      self["key_red"] = Label("Abbrechen")
      self["key_green"] = Label("OK")

      self["actions"] = ActionMap(["MyPresetsActions"],
      {
      "undo": self.undo,
      "apply": self.apply,
      "decrease": self.decrease,
      "increase": self.increase
      }, -1)

      self.pos = max(-self.mid,min(self.mid,mypresets.pos.value))
      self.onShown.append(self.updateScreen)
      self.setPreset()

      def updateScreen(self):
      x = int(220+105*self.pos) #220=480/2-40/2
      self["knob"].setPosition(x,14)
      self["value"].setPosition(x,14)
      self["value"].setText("{:+d}".format(self.pos))

      def setPreset(self):
      step = self.STEPS[self.mid+self.pos]
      with open("/proc/stb/vmpeg/0/pep_brightness","w") as f:
      f.write("{:08X}".format(step.brightness))
      with open("/proc/stb/vmpeg/0/pep_contrast","w") as f:
      f.write("{:08X}".format(step.contrast))
      with open("/proc/stb/vmpeg/0/pep_saturation","w") as f:
      f.write("{:08X}".format(step.saturation))
      with open("/proc/stb/vmpeg/0/pep_apply","w") as f:
      f.write("1")

      def apply(self):
      mypresets.pos.value = self.pos
      mypresets.pos.save()
      self.close()

      def undo(self):
      self.pos = mypresets.pos.value
      self.setPreset()
      self.close()

      def decrease(self):
      if self.pos<=-self.mid:
      return
      self.pos -= 1
      self.updateScreen()
      self.setPreset()

      def increase(self):
      if self.pos>=self.mid:
      return
      self.pos += 1
      self.updateScreen()
      self.setPreset()
    • zPosition hatte ich ursprünglich drin, das Ergebnis war dasselbe.

      Da ich einen Wertebereich zwischen -2 bis 2 habe, soll der Balken vom Defaultwert 0 in der Mitte beginnen.
      Den ConfigSlider habe ich selbst noch nie verwendet. Ich nehme aber an, das ist ein Slider, der zusätzlich Speichern kann. Letzter zeichnet immer einen Balken von ganz links bis zur Position.
    • Geschafft!!!

      Es war doch die zPosition, die ich auch shon vor längerer Zeit in Verdacht hatte.
      Damals dürfte noch ein anderer Fehler die richtige Darstellung verhindert haben.
      Danke euch allen!!!!!!


      GESCHA~1.jpg


      p.s.
      Mit Balken war die Idee die positive oder negative Abweichung von Normal anzuzeigt.
      Die aktuell Variante zeigt nur eine Zahl.
    • Falls jemand es auch verwenden will...

      Das Plugin ist sehr klein. Es dient einzig und alleine zur schnellen Veränderung der Helligkeit, des Kontrasts und der Farbe. Es gibt 5 Stufen von -2 bis 2, das Mapping ist hart im Plugin selbst hinterlegt.

      Ich benötige es, da sich mein Fernseher nur schlecht an die Umgebung anpasst und die Einstellung weit im Fernsehermenü vergraben ist.
      Dateien