graphlcd (base, vdr-plugin) touchcol branch (archiv)

  • Jup, läuft jetzt alles.


    Super, jetzt ich mein VDR einheitlich komplett in einer Sprache, das erste mal überhaupt :)


    cu

  • neuigkeiten:

    • support fuer alpha channel

    einschraenkung: bei texten mit einem font-effect (outline, shadow) funktionierts leider nicht brauchbar (aufgrund der art und weise, wie die effekte derzeit erzeugt werden).

  • Die Conf gibt nicht viel her. Da steht ja nicht viel drin, aber ich häng sie mal dran.


    Der Skin ist noch nicht produktiv nutzbar. Ich bin nochnicht dazu gekommen, bin gerade dabei meine VDR Instalallation richtig abzuschliessen. Aber viel fehlt nicht mehr, ich hoffe ich komme die Woche mal dazu den endlich fertig zu machen.
    Aber ich lade mal hoch was da ist, sollte nen ersten Eindruck bringen. Der ist aber nur für 240x128er Displays.


    cu

  • neuigkeiten:

    • alpha channel: texte mit font-effekten werden jetzt auch brauchbar unterstuetzt
    • opacity support fuer images -> zusaetzlicher parameter fuer <image />: opacity="<value>", <value> = [0, 255], default 255
  • bug fix:

    • bug(s) in WrapText() versucht zu beheben (-> mesg <langertext>)

    um test wird gebeten :)


    EDIT: damnit, in manchen situationen wird dzt. immer noch ein teil eines buchstaben abgeschnitten ...
    utf8-tauglich ist das ganze auch nicht. da werde ich wohl diese methode mal neu schreiben muessen ...


    EDIT2 (2011-06-23):
    jetzt aber sollten die div. probleme v. WrapText() behoben sein:

    • UTF8 sollte keine probleme mehr bereiten
    • buchstaben werden korrekt umgebrochen (kein buchstabe sollte mehr zerschnitten sein)
    • weitere trennzeichen, an denen bevorzugt umgebrochen werden kann, hinzugefuegt: "-.,:;!?_"
  • Nen Zufallsfund weil ich vergessen hatte HABE_IMAGEMAGIC zu setzen. Rufe ich ne Sender ohne Senderlogo auf dann schmiert der VDR ab.
    ---
    #0 0xffffe424 in __kernel_vsyscall ()
    #1 0xb7876370 in raise () from /lib/i686/cmov/libpthread.so.0
    #2 0xb694b313 in ?? () from /usr/lib/libdirect-1.2.so.9
    #3 <signal handler called>
    #4 0xffffe424 in __kernel_vsyscall ()
    #5 0xb755b751 in raise () from /lib/i686/cmov/libc.so.6
    #6 0xb755eb82 in abort () from /lib/i686/cmov/libc.so.6
    #7 0xb777a53f in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/libstdc++.so.6
    #8 0xb7778405 in ?? () from /usr/lib/libstdc++.so.6
    #9 0xb7778442 in std::terminate() () from /usr/lib/libstdc++.so.6
    #10 0xb7778581 in __cxa_throw () from /usr/lib/libstdc++.so.6
    #11 0xb7778bff in operator new(unsigned int) () from /usr/lib/libstdc++.so.6
    #12 0xb7778cdd in operator new[](unsigned int) () from /usr/lib/libstdc++.so.6
    #13 0xb6fd6672 in cBitmap (this=0x9ad43a18, width=-4, height=21, initcol=16777215) at bitmap.c:100
    #14 0xb66daf85 in GLCD::cSkinObject::Render (this=0xa9d64fd8, screen=0xb4559808) at object.c:549
    #15 0xb66da4c3 in GLCD::cSkinObject::Render (this=0xa9d63e10, screen=0xb4559808) at object.c:803
    #16 0xb66da4c3 in GLCD::cSkinObject::Render (this=0xa9d4bb80, screen=0xb4559808) at object.c:803
    #17 0xb66d19cd in GLCD::cSkinDisplay::Render (this=0xa9d278b0, screen=0xb4559808) at display.c:27
    #18 0xb673f6dc in cGraphLCDDisplay::Action (this=0x9cbd470) at display.c:323
    #19 0x0812844c in cThread::StartThread (Thread=0x9cbd470) at thread.c:245
    #20 0xb786d955 in start_thread () from /lib/i686/cmov/libpthread.so.0
    #21 0xb75fce7e in clone () from /lib/i686/cmov/libc.so.6
    ---


    Ich kanns hier reproduzieren, der Skin ist immer noch der den ich vor einigen Tagen hier gepostet habe.


    cu

  • neuigkeiten:

    • alle treiber sollten jetzt mit der 32bit colour internen darstellung zusammenarbeiten (jeder treiber hat jetzt eine gueltigte SetPixel()-Methode). ABER: alle bis auf simlcd und serdisp sind ungeprueft!!
    • Set8Pixels() ist nicht laenger 'virtual', sondern ab jetzt eine in der basis-klasse definierte generische methode.

    ACHTUNG: wegen der aenderung bei Set8Pixels() muss auch vdr-plugin-graphlcd neu kompiliert werden (ansonsten segfault!).


    -> dieser branch schreitet langsam aber sicher einem release candidate entgegen ...


    Keine_Ahnung:
    sehe ich mir an. habe zwar auch sender ohne logo (und da kein problem), aber mal schauen, was das wieder fuer ein spezialfall ist ...


    EDIT: damnit, wohl derselbe fehler wie im anderen constructor:
    ersetz mal in zeile 100 (bitmap.c):


    bitmap = new uint32_t[width * height];
    Clear(initcol);


    durch


    if (width > 0 && height > 0) {
    bitmap = new uint32_t[width * height];
    Clear(initcol);
    }

  • -> dieser branch schreitet langsam aber sicher einem release candidate entgegen ...


    Jup, ist auch gut durchgetestet und funktioniert wirklich gut.


    Aber eine Sache vermisse ich noch, nämlich die Möglichkeit bei 1BPP Bildern Vorder- und Hintergrundfarbe zu setzen (und damit die Palette im Image zu überschreiben). Wäre das kompleziert? Zwingend notwendig ist das ja nicht, man kann ja weiterhin pbm/glcd nutzen (Da funktioiert es ja), aber animierte GIFs sind schon schöner zu handhaben als animierte glcd.



    Jup, damit läufts.


    Und wie es der Zufall so will hatte ich gerade wieder (aber war schon länger her seit der aufgetreten war) einen altbekannten


    Gibts bei C++ nicht sowas wie Try/Except? Sowas ist zwar sehr ineffizient, aber das sollte hier wohl kein Problem sein.


    cu

  • neu:

    • bei 1bpp imagemagick bildern wird jetzt das monochrome flag gesetzt (und schwarz und weiss entsprechend aufbereitet) => 'color' und 'bgcolor' werden jetzt beruecksichtigt.

    der bugfix fuer cBitmap constructor wird spaeter committed (ist gerade groessere baustelle (anpassen der div. Save*-methods() an die 32bpp internas)




    try/catch: du kannst es ja ausprobieren (ich kanns nicht testen in ermangelung fuer radio-plugin verwertbarer sender (dvb-t)).
    einfach in service.c:
    ab zeile 269 (nach zeile radioActive = true; )
    das ganze if() {} (zeile 269-286) umschliessen mit:


    try{
    < if() {} zeug >
    } catch (...) {
    isyslog("graphlcd plugin: strcmp() crashed when receiving broken crap from radio plugin \n");
    }



    die drei '...' beim catch sind tatsaechlich ernst gemeint ( die drei punkte bedeuten: jede moegliche exception )


    EDIT:
    vergiss das mit try/catch:
    das kann einen runtime error in strcmp() nicht abfangen wie es scheint (getestet mit einem kleinen beispielprog.):



    -> segfaultet genauso (egal ob strcmp (v. string.h) oder std::strcmp)


    es ist auch in der definition v. strcmp() so festgeschrieben, dass das ergebnis undefiniert ist, wenn ein parameter null ist.

  • Irgendwie ist mit dem 1BPP Code nen Fehler reingekommen. Siehe Screenshot. Aber nicht immer, eher zufällig (Bei DisnyXD gings zufällig).


    Ferner sind Vorder-/Hintergrundfarbe vertauscht.

    Code
    <condblock condition="QueryFeature('iscolour')">
    	<variable id="ColLogo"               default="{BackgroundColor}" value="'white'"/>
    	<variable id="ColLogoBackground"     default="{ForegroundColor}" value="'black'"/>


    Code
    <!-- Logo -->
    <image x="add(#NotifyStartX,#FrameSpace,1)"
     y="add(#NotifyStartY,#FrameSpace,1)" bgcolor="#ColLogo"
     color="#ColLogoBackground" path="#ChannelLogo"/>


    Der Screenshot zeigt wie es sein soll (Logo als Datei normal, die Anzeige in diesem Skin invertiert), deswegen sind die Werte im Skin falschrum drin.



    Das sich das mit dem try/catch nicht abfangen lässt... Höchst seltsam. Ist aber vermutlich einfach nur nen Timingproblem (Das Radio-Plugin liefert in der Startphase blödsinn), als Notlösung könnte man einfach warten bis der Channel valid ist.
    Wobei ich den Skin eh umschreiben werde das der Radio Service nur abgefragt wird wenn ein Radio Channel aktiv ist. Dann tritt das ja auch nicht mehr auf. Nur trozdem unschön das es gleich den ganzen VDR runterreist. Solche Schnittstellen sollten eigentlich robuster sein.


    cu

  • neuigkeiten:

    • graphlcd-base: habe das setzen v. monochrome-flag fuer imagemagick bilder einstweilen wieder deaktiviert (das ist dann doch aufwaendiger als gedacht)
    • vdr-plugin-graphlcd: paranoia mode fuer strcmp. wenn das auch nicht hilft dann muss das wohl jmd. mit rds-faehigen radiosendern debuggen (gdb, mit dem man dann auch die konkreten inhalte der structs sehen kann).
  • neu:

    • crtfont und genfont sollten jetzt wieder funktionieren (div. tests waren erfolgreich, die generierten fonts (.fnt) haben funktioniert)
    • cPBMFile kann jetzt korrekt speichern (Save())
    • aus cBitmap wurden LoadPBM()/SavePBM() entfernt (die wurden ohnedies nur von crtfont und genfont verwendet). fuer das laden und speichern von PBMs ist jetzt ausschliesslich die klasse cPBMFile verantwortlich (auch crtfont und genfont verwenden jetzt diese klasse).

    hoffe, dass ich keine nebeneffekte hineingebracht habe, waren doch einige grundlegende aenderungen. meine tests brachten aber keine auffaelligkeiten zu tage ...

  • recht viel fehlt glaube ich nicht mehr dass alle funktionalitaeten v. 0.1.x jetzt auch im touchcol-branch unterstuetzt werden?


    Ich glaube das grösste Problem ist hier der SPAN Support. Das passt nicht wirklich ins Skin Konzept.


    cu

  • so ein problem sehe ich da nicht. hatte dazu auch schon mal eine idee dazu, das ganze relativ skalier-/anpassbar/flexibel zu machen. bloederweise habe ich damals das music-plugin (oder das plugin, das man dafuer benoetigt - weiss den namen nicht mehr) nie zum laufen gebracht. habe es aber auch schon lange nicht mehr versucht.

  • spiele bereits mit span herum, die abfrage der daten ist bereits fertig implementiert, gezeichnet wird das ganze mit existierenden gfx-objekten (im screenshot: balken: <progress/>-bars, rahmen: <rectangle/>, labels (L/R): <text/>)
    das object <progress/> moechte ich noch um die zusatzfunktion 'peak' erweitern, dann wird auch die anzeige der peaks moeglich sein.


    das ganze ist, da kein eigenes span-anzeigeobjekt notwendig ist, sehr flexibel (im screenshot: volume anzeige: horizontal, spec. analyser: vertikal, die daten kommen von einer gemeinsamen quelle (gibt ja auch nur eine :) )


    produktiv verwendbar ist es derzeit noch nicht (habe noch segfaults).

  • Verdammt, wieder etwas was in den Skin rein muss, da werde ich ja nie fertig ;)


    Könnte man auch schön anstelle des Replay Logos anzeigen. Schöne Sache.


    cu

Jetzt mitmachen!

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