Ссылка пространства пользователя IOFramebufferShared.h
Заголовок IOFramebufferShared.h содержит определения объектов и вводит совместно использованный службой IOFrameBuffer уровня ядра и сервером окна неядра. В OS X эта структура используется сервером CoreGraphics и семьей IOGraphics, и не доступна другим клиентам. Подклассы IOFramebuffer и клиенты IOFramebuffer в ядре не должны также полагаться на это определение структуры и константы. Это общедоступно только для использования на базируемых серверах окна Дарвина. Данными состояния сервера курсора и окна обмениваются ядро и задачи неядра через часть общей памяти, содержащей структуру StdFBShmem_t.
Для задачи неядра получить доступ к этой части общей памяти, должно быть сделано соединение со службой IOFramebuffer. Соединение сделано с IOServiceOpen () функцией, описанной в IOKitLib.h. Тип соединения kIOFBServerConnectType или kIOFBSharedConnectType (для доступа только для чтения) должен быть указан. Дескриптор io_connect_t возвращается IOServiceOpen (). Этот дескриптор должен быть передан IOFBCreateSharedCursor () для создания части общей памяти. Тогда IOConnectMapMemory () можно вызвать с типом памяти kIOFBCursorMemory для отображения общей памяти в задачу неядра.
Включенные заголовки
<IOKit/hidsystem/IOHIDTypes.h><IOKit/graphics/IOGraphicsTypes.h><libkern/OSAtomic.h>
См. Обзор для документации уровня заголовка.
-
Изображение курсора для 1-разрядного курсора.
Объявление
Objective C
struct bm12Cursor { unsigned int image[4][16]; unsigned int mask[4][16]; unsigned int save[16]; };Поля
imageЭтот массив содержит изображения курсора.
maskЭтот массив содержит маску курсора.
saveЭтот массив хранит пиксельные значения области под курсором в его последней нарисованной позиции.
Обсуждение
Эта структура хранит курсоры на 16 пикселей x 16 пикселей, которые будут использоваться с 1-разрядной глубиной цвета. Если IOFB_ARBITRARY_SIZE_CURSOR не определяется, эта структура только определяется.
Доступность
Доступный в OS X v10.6 и позже.
-
Изображение курсора для 8-разрядного курсора.
Объявление
Objective C
struct bm18Cursor { unsigned char image[4][256]; unsigned char mask[4][256]; unsigned char save[256]; };Поля
imageЭтот массив содержит значения цвета курсора, преобразовывающиеся в выведенные на экран цвета через таблицу цветов. Массив является двумерным, и его первый индекс является кадром курсора, и второй индекс является пикселем курсора.
maskЭтот массив содержит альфа-маску курсора. Массив является двумерным с той же индексацией как изображение. Если альфа-пиксель маски будет 0, и соответствующий пиксель изображения установлен в белый для дисплея, то этот пиксель курсора инвертирует пиксели на дисплее.
saveЭтот массив хранит значения цвета области под курсором в его последней нарисованной позиции.
Обсуждение
Эта структура хранит курсоры на 16 пикселей x 16 пикселей, которые будут использоваться с 8-разрядной глубиной цвета. Если IOFB_ARBITRARY_SIZE_CURSOR не определяется, эта структура только определяется.
Доступность
Доступный в OS X v10.6 и позже.
-
Изображение курсора для 15-разрядного курсора.
Объявление
Objective C
struct bm34Cursor { unsigned short image[4][256]; unsigned short save[256]; };Поля
imageЭтот массив определяет значения цвета курсора и прозрачность. Массив является двумерным, и его первый индекс является кадром курсора, и второй индекс является пикселем курсора. Значение 0 средних значений пиксель прозрачно. Ненулевые значения сохранены красным, зеленым, синим цветом, и альфа-значения, закодированные со следующими масками:
красная маска = 0xF000
синяя маска 0x0F00
зеленая маска 0x00F0
альфа-маска = 0x000F
Примечание, только 4 бита выделяются для каждого компонента цвета.
saveЭтот массив хранит значения цвета области под курсором в его последней нарисованной позиции.
Обсуждение
Эта структура хранит курсоры на 16 пикселей x 16 пикселей, которые будут использоваться с 15-разрядной глубиной цвета. Если IOFB_ARBITRARY_SIZE_CURSOR не определяется, эта структура только определяется.
Доступность
Доступный в OS X v10.6 и позже.
-
Изображение курсора для 24-разрядного курсора.
Объявление
Objective C
struct bm38Cursor { unsigned int image[4][256]; unsigned int save[256]; };Поля
imageЭтот массив определяет значения цвета курсора и прозрачность. Массив является двумерным, и его первый индекс является кадром курсора, и второй индекс является пикселем курсора. В то время как верхние 8 битов содержат альфа-значение, более низкие 24 бита значения пикселя содержат цвет RGB.
saveЭтот массив хранит значения цвета области под курсором в его последней нарисованной позиции.
Обсуждение
Эта структура хранит курсоры на 16 пикселей x 16 пикселей, которые будут использоваться с 24-разрядной глубиной цвета. Если IOFB_ARBITRARY_SIZE_CURSOR не определяется, эта структура только определяется.
Доступность
Доступный в OS X v10.6 и позже.
-
Объявление
Objective C
struct StdFBShmem_t { OSSpinLock cursorSema; int frame; char cursorShow; char cursorObscured; char shieldFlag; char shielded; IOGBounds saveRect; IOGBounds shieldRect; IOGPoint cursorLoc; IOGBounds cursorRect; IOGBounds oldCursorRect; IOGBounds screenBounds; int version; int structSize; AbsoluteTime vblTime; AbsoluteTime vblDelta; unsigned long long int vblCount; #if IOFB_ARBITRARY_FRAMES_CURSOR unsigned long long int vblDrift; unsigned long long int vblDeltaMeasured; unsigned int reservedC[24]; #else unsigned int reservedC[27]; unsigned char hardwareCursorFlags[kIOFBNumCursorFrames]; #endif unsigned char hardwareCursorCapable; unsigned char hardwareCursorActive; unsigned char hardwareCursorShields; unsigned char reservedB[1]; #if IOFB_ARBITRARY_FRAMES_CURSOR IOGSize cursorSize[kIOFBNumCursorIndex]; IOGPoint hotSpot[kIOFBNumCursorIndex]; #else IOGSize cursorSize[kIOFBNumCursorFrames]; IOGPoint hotSpot[kIOFBNumCursorFrames]; #endif #ifndef IOFB_ARBITRARY_SIZE_CURSOR union { struct bm12Cursor bw; struct bm18Cursor bw8; struct bm34Cursor rgb; struct bm38Cursor rgb24; } cursor; #else /* IOFB_ARBITRARY_SIZE_CURSOR */ unsigned char cursor[0]; # endif /* IOFB_ARBITRARY_SIZE_CURSOR */ };Поля
cursorSemaСемафорная блокировка для доступа для записи к совместно используемым данным в этой структуре.
frameТекущий курсор структурирует индекс.
cursorShowКогда cursorShow 0, курсор выведен на экран.
cursorObscuredЕсли это - истина, курсор был затенен, и cursorShow не должен быть 0. Курсор будет показан снова в следующий раз, когда он перемещен.
shieldFlagКогда это будет установлено в истину, курсор не будет выведен на экран в области, указанной shieldRect.
shieldedИстина, если курсор был скрыт, потому что это ввело экранированную область.
saveRectОбласть, сохраняющаяся под курсором в режиме курсора программного обеспечения.
shieldRectОбласть, что курсор не будет выведен на экран в том, если shieldFlag будет истиной.
cursorLocРасположение горячей точки курсора.
cursorRectОбласть, которую изображение курсора в настоящее время занимает в режиме курсора программного обеспечения.
oldCursorRectОбласть, что изображение курсора заняло в прошлый раз курсор, была нарисована в режиме курсора программного обеспечения.
screenBoundsОбласть, которую занимает текущий экран.
versionСодержит kIOFBCurrentShmemVersion так, чтобы пользовательский клиент мог гарантировать, что он использует ту же версию этой структуры как ядро.
structSizeСодержит размер этой структуры.
vblTimeВремя нового вертикального очищения.
vblDeltaИнтервал между двумя новыми вертикальными blankings.
vblCountРабочее количество вертикальных пустых прерываний.
reservedCЗарезервированный для будущего использования.
hardwareCursorCapableИстина, если аппаратные средства способны к использованию аппаратного режима курсора.
hardwareCursorActiveИстина, в настоящее время с помощью аппаратного режима курсора.
reservedBЗарезервированный для будущего использования.
cursorSizeЭтот массив содержит размеры курсора, индексированные кадром.
hotSpotЭтот массив содержит расположение горячих точек курсора, индексированных кадром. Координаты горячих точек даны относительно верхнего левого угла изображения курсора.
cursorОбъединение структур, определяющих изображения курсора. Используемая структура зависит от битовой глубины кадрового буфера. Эти структуры определяются выше.
Обсуждение
Эта структура содержит курсор и данные состояния сервера окна и занимает часть общей памяти между сервером окна и ядром. Несколько элементов этой структуры только используются в режиме курсора программного обеспечения. Если иначе не обозначено, координаты в этой структуре даны в выставочном пространстве. Выставочное пространство является координатным пространством, охватывающим все экраны. Позиции экранов в выставочном пространстве указывают свое расположение друг относительно друга, когда курсор перемещается между ними. Если будет только один экран, то координаты экрана и координаты выставочного пространства будут тем же.
Доступность
Доступный в OS X v10.6 и позже.
См. Обзор для документации уровня заголовка.
-
Объявление
Objective C
#define CURSORHEIGHT 16 /* height in pixels */ #define CURSORWIDTH 16 /* width in pixels */ #define IOFB_ARBITRARY_SIZE_CURSOR #define IOFRAMEBUFFER_CONFORMSTO "IOFramebuffer"Константы
-
CURSORHEIGHTCURSORHEIGHTМаксимальная высота изображения курсора в пикселях. Если IOFB_ARBITRARY_SIZE_CURSOR не определяется, это только определяется.
Доступный в OS X v10.0 и позже.
-
CURSORWIDTHCURSORWIDTHМаксимальная ширина изображения курсора в пикселях. Если IOFB_ARBITRARY_SIZE_CURSOR не определяется, это только определяется.
Доступный в OS X v10.0 и позже.
-
IOFB_ARBITRARY_SIZE_CURSORIOFB_ARBITRARY_SIZE_CURSORКогда IOFB_ARBITRARY_SIZE_CURSOR не определяется, максимальный размер курсора, как предполагается, является CURSORWIDTH x CURSORHEIGHT, и этот заголовочный файл определит много структур для хранения изображений курсора соответственно. Когда IOFBCreateSharedCursor () вызвали, задача неядра может определить IOFB_ARBITRARY_SIZE_CURSOR и использовать курсоры до размера, указанного. В этом случае надлежащие структуры для хранения изображений курсора должны быть определены в другом месте. В ядре всегда определяется IOFB_ARBITRARY_SIZE_CURSOR.
Доступный в OS X v10.6 и позже.
-
IOFRAMEBUFFER_CONFORMSTOIOFRAMEBUFFER_CONFORMSTOИмя класса службы кадрового буфера.
Доступный в OS X v10.0 и позже.
-
-
Объявление
Objective C
enum { #if IOFB_ARBITRARY_FRAMES_CURSOR kIOFBMainCursorIndex = 0, kIOFBWaitCursorIndex = 1, kIOFBNumCursorIndex = 4, #else kIOFBNumCursorFrames = 4, kIOFBNumCursorFramesShift = 2, #endif kIOFBMaxCursorDepth = 32 };Константы
-
kIOFBNumCursorFrameskIOFBNumCursorFramesЧисло изображений курсора сохранено в структуре StdFBShmem_t.
Доступный в OS X v10.0 и позже.
-
kIOFBNumCursorFramesShiftkIOFBNumCursorFramesShiftИспользуемый с курсорами ожидания.
Доступный в OS X v10.0 и позже.
-
kIOFBMaxCursorDepthkIOFBMaxCursorDepthМаксимальная пиксельная глубина курсора.
Доступный в OS X v10.0 и позже.
-
-
Объявление
Objective C
enum { // version for IOFBCreateSharedCursor kIOFBShmemVersionMask = 0x000000ff, kIOFBTenPtOneShmemVersion = 2, kIOFBTenPtTwoShmemVersion = 3, kIOFBCurrentShmemVersion = 2, // number of frames in animating cursor (if > kIOFBTenPtTwoShmemVersion ) kIOFBShmemCursorNumFramesMask = 0x00ff0000, kIOFBShmemCursorNumFramesShift = 16, // memory types for IOConnectMapMemory. kIOFBCursorMemory = 100 };Константы
-
kIOFBCurrentShmemVersionkIOFBCurrentShmemVersionТекущая версия части общей памяти, содержащей курсор и данные состояния сервера окна в структуре StdFBShmem_t.
Доступный в OS X v10.0 и позже.
-
kIOFBCursorMemorykIOFBCursorMemoryТип памяти для IOConnectMapMemory () для получения части общей памяти, содержащей структуру StdFBShmem_t.
Доступный в OS X v10.0 и позже.
-
