2016-08-27 1 views
2

Ich schrieb einen X "Bildschirmtreiber" für ein Grafik-Toolkit-Projekt, an dem ich arbeite. Mein Toolkit ruft als letzten Schritt Xlib-Funktionen auf, die relevante Daten auf den Bildschirm ziehen.Zeichnen mit benutzerdefinierten Farben ohne Zuordnung mit Xlib

Das Problem ist, dass in meinem Toolkit Farben dargestellt und als 32bit lange ganze Zahlen weitergegeben werden. Die gesamte Dokumentation, die ich über Xlib gelesen habe, verwendet XAllocColor, um jede Farbe in einer Colormap zu definieren.

Das Problem ist, XAllocColor ist ziemlich langsam im Vergleich zu meiner Grafik Routine und ich möchte vermeiden, alloing jede einzelne Farbe verwendet (auch weil ich keine Liste im Voraus haben).

Wie kann ich etwas in beliebigen Farben in Xlib zeichnen, ohne jeden von ihnen zuzuweisen?

+0

Kann mich nicht genau erinnern, aber Sie können den DirectColor-Modus verwenden? –

+0

Von was ich gesehen habe, aber ich kann falsch liegen, DirectColor ist eine Darstellung einer Farbe, die Sie sowieso zuweisen müssen. –

+0

Sie haben Recht (meine Erinnerung ist hier fehlgeschlagen - keine Xlib-Programmierung seit 20 Jahren), aber ist es nicht ein 24 Bitmaps-Modus mit TrueColor? (oder etwas ähnliches). Ich kann mich erinnern, dass Sie den Framebuffer verwalten können, um 24 Bit zu injizieren (sofern das Display dazu in der Lage ist). –

Antwort

1

Ändern XColor.pixel Eigenschaft, es ist ein langer Typ, der normalerweise die Farbe in 0xAARRGGBB (32-Bit-RGB-Modus) enthält, aber das hängt davon ab, welchen Farbmodus Sie auf Ihrem X-Server verwenden.

Verwandte Themen