Vom CFString zum Struct...

  • Vom CFString zum Struct...

    Moin.
    Ich prügel mich gerade mit Core Graphics und den Displayinformationen rum.
    Momentan führt Core Graphics. ^^

    Ich möchte gern die "Bits per Pixel", also die Farbtiefe des aktuellen Displays auslesen.
    Normalerweise kein Problem.
    So weit bin ich schon mal gekommen.

    C-Quellcode

    1. CGDirectDisplayID gCGDisplayID = CGMainDisplayID();
    2. CGDisplayModeRef refDisplayMode = CGDisplayCopyDisplayMode(gCGDisplayID);


    Besagte Referenz sagt mir auch ganz ehrlich, dass sie 32 Bits Per Pixel hat.
    Nun dachte ich mir, ich nutze einfach CGDisplayBitsPerPixel(CGDisplayModeRef), aber das ist mit 10.6 deprecated.
    Es wird auf CGDisplayModeCopyPixelEncoding(CGDisplayModeRef) hingewiesen.
    Dieses liefert mir ein ganz schlichtes:
    "--------RRRRRRRRGGGGGGGGBBBBBBBB"

    Die Dokumentation zu diesem nichtssagenden String erklärt:
    The returned string can be used to determine various aspects of the pixel encoding, such as bits per pixel and bits per sample. For more information, see the header file IOKit/IOGraphicsTypes.h in I/O Kit Framework Reference.


    Joah, das habe ich getan.
    Das Struct der Wahl wäre für mich vermutlich IOPixelInformation.

    Tja, nun lassen mich aber meine Kenntnisse in komplexen C-Aufgabenstellungen im Stich.
    Wie bekomme ich aus dem CFString "--------RRRRRRRRGGGGGGGGBBBBBBBB" jetzt ein IOPixelInformation.bitsPerPixel=32 raus?

    Und was mir fast noch wichtiger ist: woher weiß ich das? ^^

    Ach ja, das Offensichtliche habe ich versucht.

    C-Quellcode

    1. IOPixelInformation test;
    2. test.pixelFormat = CGDisplayModeCopyPixelEncoding(refDisplayMode);

    Liefert den Fehler:
    file://localhost/XcodeProjects/openglspiele/openglspiele/PreferencesWindowController.m: error: Semantic Issue: Array type 'IOPixelEncoding' (aka 'char [64]') is not assignable
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Lucas de Vil ()

  • MCDan schrieb:

    Die bitsPerPixel entsprechen der Anzahl der Zeichen in dem CFString.

    Ah, sehr schön.
    Ich war mir nicht sicher, ob es sich hierbei um einen Zufall handelte oder ob das so soll. :)

    Chris:
    Danke. Struct-Orgien und unzählige C-Funktionen, die ich nicht verstehe, wollte ich eigentlich vermeiden.
    Mal sehen, wie ich mit dieser Weigerung im weiteren Verlauf voran komme. :)
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P