Moin,
da der Skindesigner jetzt ja die mächtige Cairo Lib an Bord hat, habe ich mich mal ein bisschen in Cairo eingelesen...als erstes Ergebnis habe ich die DrawEllipse Funktion vom VDR ersetzt, sodass die Ellipsen nun mit Cairo gezeichnet werden. Der Vorteil davon ist, dass die Ellipsen bzw. Teilellipsen jetzt "antialiased" gezeichnet werden, wodurch die leichten Verpixelungen, die mit der VDR eigenen DrawEllipse Funktion entstanden sind, die eben kein antialiasing kann, weg sind. Im Git befindet sich ein Update...bitte mal testen
Die Template Funktion <drawellipse> erwartet genau die gleichen Parameter wie bisher und verhält sich auch genau so, bis auf einen wesentlichen Unterschied: Die VDR eigene DrawEllipse Funktion zeichnet wirklich nur die Pixel der Ellipse bzw. der Teilellipse, nicht aber den Rest des mit x, y, width, height definierten Rechtecks. Dadurch kann man z.b. eine abgerundete Ecke quasi "ausstanzen", indem man eine invertierte Ellipse mit der Farbe #00000000, also voll transparent, zeichnet. Das funktioniert nun nicht mehr, da jetzt alle Pixel des definierten Rechtecks gezeichnet werden. Beim Antialiasing gibt es eben nicht nur "zeichnen" und "nicht zeichnen", sondern auch einen semitransparenten Übergang.
Im Holo Skin habe ich das z.B. gesehen...das ist aber leicht zu fixen, einfach z.B. in displaychannel in Zeile 13 das
<drawellipse x="0" y="0" width="{areaheight}*0.05" height="{areaheight}*0.05" color="{clrTransparent}" quadrant="-2"/>
zu
<drawellipse x="0" y="0" width="{areaheight}*0.05" height="{areaheight}*0.05" color="{clrBack}" quadrant="2"/>
ändern. Das muss natürlich für alle drawellipse gemacht werden, die auf diese Art und Weise eingesetzt werden.
Mit den Möglichkeiten von Cairo kann man so allerhand anstellen...insbesondere kann man dem Skindesigner weitere native Zeichenfunktionen verpassen Was mir so sinnvollerweise einfällt, wären die folgenden neuen Funktionen:
- drawarc: Kreisbogen innerhalb eines Rechtecks (quasi die drawellipse Funktion, die nur den Rand der Ellipse zeichnet)
- drawline: Linie von Punkt x nach Punkt y
- drawtriangle: gefülltes Dreieck definiert durch drei Punkte x, y, z
- drawobject: beliebiges Objekt innerhalb eines Rechtecks definiert durch ein Array von Punkten, die miteinander verbunden werden (z.B. ein Stern oder sonstwas), gefüllt oder nur der Rahmen
- drawstyledrectangle: "gepimptes" Rechteck mit abgerundeten Ecken eines definierbaren Radiuses, mit optionaler Rahmenfarbe, mit Farbverläufen (das kann man mit Cairo ziemlich granular definieren)
Fällt euch noch mehr sinnvolles ein? Oder ist das schon zu übertrieben?
Ciao Louis