Ссылка IOFramebufferShared.h
Заголовок IOFramebufferShared.h содержит определения объектов и вводит совместно использованный службой IOFrameBuffer уровня ядра и сервером окна неядра. В Mac 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>
Посмотрите раздел Overview выше для документации уровня заголовка.
-
Изображение курсора для 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 и позже.
Посмотрите раздел Overview выше для документации уровня заголовка.
-
Объявление
Objective C
#define CURSORHEIGHT 16 /* height in pixels */ #define CURSORWIDTH 16 /* width in pixels */ #define IOFB_ARBITRARY_SIZE_CURSOR #define IOFRAMEBUFFER_CONFORMSTO "IOFramebuffer"
Константы
-
CURSORHEIGHT
CURSORHEIGHT
Максимальная высота изображения курсора в пикселях. Если IOFB_ARBITRARY_SIZE_CURSOR не определяется, это только определяется.
Доступный в OS X v10.0 и позже.
-
CURSORWIDTH
CURSORWIDTH
Максимальная ширина изображения курсора в пикселях. Если IOFB_ARBITRARY_SIZE_CURSOR не определяется, это только определяется.
Доступный в OS X v10.0 и позже.
-
IOFB_ARBITRARY_SIZE_CURSOR
IOFB_ARBITRARY_SIZE_CURSOR
Когда IOFB_ARBITRARY_SIZE_CURSOR не определяется, максимальный размер курсора, как предполагается, является CURSORWIDTH x CURSORHEIGHT, и этот заголовочный файл определит много структур для хранения изображений курсора соответственно. Когда IOFBCreateSharedCursor () вызвали, задача неядра может определить IOFB_ARBITRARY_SIZE_CURSOR и использовать курсоры до размера, указанного. В этом случае надлежащие структуры для хранения изображений курсора должны быть определены в другом месте. В ядре всегда определяется IOFB_ARBITRARY_SIZE_CURSOR.
Доступный в OS X v10.6 и позже.
-
IOFRAMEBUFFER_CONFORMSTO
IOFRAMEBUFFER_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 };
Константы
-
kIOFBNumCursorFrames
kIOFBNumCursorFrames
Число изображений курсора сохранено в структуре StdFBShmem_t.
Доступный в OS X v10.0 и позже.
-
kIOFBNumCursorFramesShift
kIOFBNumCursorFramesShift
Используемый с курсорами ожидания.
Доступный в OS X v10.0 и позже.
-
kIOFBMaxCursorDepth
kIOFBMaxCursorDepth
Максимальная пиксельная глубина курсора.
Доступный в 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 };
Константы
-
kIOFBCurrentShmemVersion
kIOFBCurrentShmemVersion
Текущая версия части общей памяти, содержащей курсор и данные состояния сервера окна в структуре StdFBShmem_t.
Доступный в OS X v10.0 и позже.
-
kIOFBCursorMemory
kIOFBCursorMemory
Тип памяти для IOConnectMapMemory () для получения части общей памяти, содержащей структуру StdFBShmem_t.
Доступный в OS X v10.0 и позже.
-