Главная » iPhone » Создание поверхности экрана iPhone

0

Поверхность экрана— это объект, содержащий буфер необработанного ви- ieo. Он поддерживает особые разрешение, шаг и формат пикселов. Для соз- [ания новой поверхности экрана с помощью класса динамического словаря MutableDictionary инициализируется буфер. Это необходимо для предоставления информации о желаемом внешнем виде и поведении поверхности. : "MutableDictionary— это класс, используемый как на настольных, так и ia мобильных платформах Mac OS X и являющийся частью платформы Core oundation. Полную документацию для этого класса можно найти на Web- ле Apple Developer Connection.

! эиведенный далее пример создает объект словаря, задавая видеобуфер J>x480. Он использует RGBA, четырехбайтовый формат пикселов, содер- – 1щий по одному байту для красного, зеленого, голубого каналов и канала 1 ьфа-сопряжения (alpha blending). Последний вызываемый в примере метод

выделяет достаточное количество места в словаре для всех четырехбайтовых пикселов в прямоугольнике X* У:

CFMutableDictionaryRef diet;

int х = 320, у = 480, pitch = х*4, size = 4*х*у; char *pixelFormat = "RGBA";

diet = CFDictionaryCreateMutable(kCFAllocatorDefault, 0,

SkCFTypeDictionaryKeyCallBacks, SkCFTypeDictionaryValueCallBacks);

CFDictionarySetValue(diet, kCoreSurfaceBufferGlobal, kCFBooleanTrue);

CFDictionarySetValue(diet, kCoreSurfaceBufferPitch,

CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &pitch));

CFDictionarySetValue(diet, kCoreSurfaceBufferWidth,

CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &x));

CFDictionarySetValue(diet, kCoreSurfaceBufferHeight,

CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &y));

CFDictionarySetValue(diet, kCoreSurfaceBufferPixelFormat, CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, pixelFormat));

CFDictionarySetValue(diet, kCoreSurfaceBufferAllocSize,

CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &size));

После того как будет построен словарь, для определения типа требуемого буфера можно создать поверхность экрана с использованием его свойств:

CoreSurfaceBufferRef screenSurface = CoreSurfaceBufferCreate(diet);

Источник: Здзиарски Дж. iPhone. Разработка приложений с открытым кодом: Пер„с англ. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2009. — 368 е.: ил.

По теме:

  • Комментарии