Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Кварцевая ссылка платформы ссылка на протокол QCPlugInOutputImageProvider

Опции
Развертывание Target:

На этой странице
Язык:

QCPlugInOutputImageProvider

QCPlugInOuputImageProvider протокол избавляет от необходимости использовать явные типы изображения для выходных портов изображения на пользовательском патче. Когда выходное изображение необходимо, методы в этом протоколе вызывает Кварцевый механизм Композитора. Если Ваш пользовательский патч имеет выходной порт изображения, необходимо реализовать надлежащие методы для рендеринга данных изображения и предоставлять информацию о месте назначения рендеринга и границах изображения.

Выходные изображения являются непрозрачными объектами провайдера, соответствующими этому протоколу. Для создания выходного порта изображения как свойства Objective-C 2.0 объявите его следующим образом:

  • @property(dynamic) id<QCPlugInOutputImageProvider> outputImage;

Для создания входного порта изображения динамично используют тип QCPortTypeImage:

  • [self addOutputPortWithType:QCPortTypeImage
  • forKey:@”outputImage
  • withAttributes:nil];

Для записи изображений в тот порт необходимо реализовать методы в этом протоколе и создать внутренний класс, представляющий изображения, произведенные пользовательским патчем. Например, простой интерфейс для провайдера изображения:

  • @interface MyOutputImage : NSObject <QCPlugInOutputImageProvider>
  • {
  • NSUInteger _width;
  • NSUInteger _height;
  • }

Наследование


Не применимый

Соответствует


Не применимый

Оператор импорта


Swift

import Quartz

Objective C

@import Quartz;

Доступность


Доступный в OS X v10.5 и позже.
  • Представляет подобласть изображения в предоставленный буфер памяти с помощью указанного формата пикселя. (требуемый)

    Объявление

    Swift

    optional func renderToBuffer(_ baseAddress: UnsafeMutablePointer<Void>, withBytesPerRow rowBytes: Int, pixelFormat format: String!, forBounds bounds: NSRect) -> Bool

    Objective C

    - (BOOL)renderToBuffer:(void *)baseAddress withBytesPerRow:(NSUInteger)rowBytes pixelFormat:(NSString *)format forBounds:(NSRect)bounds

    Параметры

    baseAddress

    Базовый адрес буфера памяти. Кварцевый механизм Композитора передает Вас адрес, который является выровненный на 16-байтовой границе.

    rowBytes

    Число байтов на строку данных изображения. Кварцевый механизм Композитора гарантирует, что это значение является кратным числом 16.

    format

    Формат пикселя данных изображения.

    bounds

    Границы подобласти.

    Возвращаемое значение

    YEStrue если изображение представляется успешно в буфер; NOfalse при отказе или если провайдер изображения не поддерживает рендеринг CPU.

    Обсуждение

    Кварцевый механизм Композитора вызывает этот метод, когда этому нужны пиксели. Это дает Вам базовый адрес, число байтов строки и формат. Затем Вы пишете пиксели в буфер.

    Оператор импорта

    Objective C

    @import Quartz;

    Swift

    import Quartz

    Доступность

    Доступный в OS X v10.5 и позже.

  • Возвращает имя текстуры OpenGL типа GL_TEXTURE_RECTANGLE_EXT это содержит подобласть изображения в данном формате пикселя. (требуемый)

    Объявление

    Swift

    optional func copyRenderedTextureForCGLContext(_ cgl_ctx: CGLContextObj, pixelFormat format: String!, bounds bounds: NSRect, isFlipped isFlipped: UnsafeMutablePointer<ObjCBool>) -> GLuint

    Objective C

    - (GLuint)copyRenderedTextureForCGLContext:(CGLContextObj)cgl_ctx pixelFormat:(NSString *)format bounds:(NSRect)bounds isFlipped:(BOOL *)isFlipped

    Параметры

    cgl_ctx

    Контекст CGL для рендеринга к.

    format

    Строка, представляющая формат пикселя текстуры.

    bounds

    Границы подобласти изображения.

    isFlipped

    Набор к YEStrue на выводе, если вертикально зеркально отражается содержание возвращенной текстуры.

    Возвращаемое значение

    Имя текстуры OpenGL типа GL_TEXTURE_RECTANGLE_EXT это содержит подобласть изображения в данном формате пикселя или 0 если не может быть предоставлена текстура.

    Обсуждение

    Реализуйте этот метод, если Вы хотите создать текстуру сами или использовать объекты кадрового буфера (FBO). Использовать <OpenGL/CGLMacro.h> отправить команды в контекст OpenGL. Удостоверьтесь, что сохранили все состояния OpenGL кроме тех определенных GL_CURRENT_BIT.

    Оператор импорта

    Objective C

    @import Quartz;

    Swift

    import Quartz

    Доступность

    Доступный в OS X v10.5 и позже.

  • Представляет подобласть изображения к предоставленному контексту CGL. (требуемый)

    Объявление

    Swift

    optional func renderWithCGLContext(_ cgl_ctx: CGLContextObj, forBounds bounds: NSRect) -> Bool

    Objective C

    - (BOOL)renderWithCGLContext:(CGLContextObj)cgl_ctx forBounds:(NSRect)bounds

    Параметры

    cgl_ctx

    Контекст CGL для рендеринга к.

    bounds

    Границы подобласти.

    Возвращаемое значение

    YEStrue если успешный; NOfalse при отказе или если провайдер изображения не поддерживает рендеринг GPU.

    Обсуждение

    Порт представления установлен для Вас. Матрицы представления и проекции модели установлены в идентификационные данные.

    Ваш код OpenGL должен сохранить и восстановить все состояния за исключением тех, которые являются частью GL_CURRENT_BIT (позиция вершины, цвет, текстура, и т.д.). Также используйте макросы CGL вместо того, чтобы изменить текущий контекст включением этого оператора:

    #import <OpenGL/CGLMacro.h>

    Для получения дополнительной информации посмотрите Кварцевого Композитора Пользовательское Руководство по программированию Патча.

    Оператор импорта

    Objective C

    @import Quartz;

    Swift

    import Quartz

    Доступность

    Доступный в OS X v10.5 и позже.

  • Выпускает ранее скопированную текстуру. (требуемый)

    Объявление

    Swift

    optional func releaseRenderedTexture(_ name: GLuint, forCGLContext cgl_ctx: CGLContextObj)

    Objective C

    - (void)releaseRenderedTexture:(GLuint)name forCGLContext:(CGLContextObj)cgl_ctx

    Параметры

    name

    Имя ранее связанной текстуры.

    cgl_ctx

    Контекст CGL.

    Обсуждение

    Ваш код OpenGL должен сохранить и восстановить все состояния за исключением тех, которые являются частью GL_CURRENT_BIT (позиция вершины, цвет, текстура, и т.д.). Также используйте макросы CGL вместо того, чтобы изменить текущий контекст включением этого оператора:

    #import <OpenGL/CGLMacro.h>

    Для получения дополнительной информации посмотрите Кварцевого Композитора Пользовательское Руководство по программированию Патча.

    Оператор импорта

    Objective C

    @import Quartz;

    Swift

    import Quartz

    Доступность

    Доступный в OS X v10.5 и позже.

  • imageBounds () - imageBounds Требуемый

    Возвращает границы изображения, выраженного в пикселях и выровненного к целочисленным границам. (требуемый)

    Объявление

    Swift

    func imageBounds() -> NSRect

    Objective C

    - (NSRect)imageBounds

    Возвращаемое значение

    Границы изображения. Обратите внимание на то, что QCPlugIn класс не поддерживает изображения, имеющие бесконечные границы.

    Оператор импорта

    Objective C

    @import Quartz;

    Swift

    import Quartz

    Доступность

    Доступный в OS X v10.5 и позже.

  • Возвращает цветовое пространство изображения или NULL если изображение не должно быть соответствующим цветом. (требуемый)

    Объявление

    Swift

    func imageColorSpace() -> Unmanaged<CGColorSpace>!

    Objective C

    - (CGColorSpaceRef)imageColorSpace

    Возвращаемое значение

    Цветовое пространство изображения или NULL.

    Оператор импорта

    Objective C

    @import Quartz;

    Swift

    import Quartz

    Доступность

    Доступный в OS X v10.5 и позже.

  • Возвраты, должно ли изображение быть соответствующим цветом. (требуемый)

    Объявление

    Swift

    optional func shouldColorMatch() -> Bool

    Objective C

    - (BOOL)shouldColorMatch

    Возвращаемое значение

    NOfalse если изображение является маской или градиентом; иначе YEStrue, который является значением по умолчанию.

    Оператор импорта

    Objective C

    @import Quartz;

    Swift

    import Quartz

    Доступность

    Доступный в OS X v10.5 и позже.

  • Возвращает список форматов пикселя, поддерживающихся для рендеринга к буферу памяти. (требуемый)

    Объявление

    Swift

    optional func supportedBufferPixelFormats() -> [AnyObject]!

    Objective C

    - (NSArray *)supportedBufferPixelFormats

    Возвращаемое значение

    Список форматов пикселя, в порядке предпочтения, что изображение может быть представлено к в памяти, или nil если провайдер изображения не поддерживает рендеринг к CPU.

    Оператор импорта

    Objective C

    @import Quartz;

    Swift

    import Quartz

    Доступность

    Доступный в OS X v10.5 и позже.

  • Возвращает список форматов пикселя, поддерживающихся для рендеринга к экранному контексту OpenGL. (требуемый)

    Объявление

    Swift

    optional func supportedRenderedTexturePixelFormats() -> [AnyObject]!

    Objective C

    - (NSArray *)supportedRenderedTexturePixelFormats

    Возвращаемое значение

    Возвращает список форматов пикселя текстуры, поддерживаемых copyRenderedTextureForCGLContext:pixelFormat:bounds:isFlipped: или nil если не поддерживаемый.

    Обсуждение

    Если этот ноль возвратов метода, то Кварцевый Композитор вызывает canRenderWithCGLContext: /renderWithCGLContext:forBounds:.

    Оператор импорта

    Objective C

    @import Quartz;

    Swift

    import Quartz

    Доступность

    Доступный в OS X v10.5 и позже.

  • Возвраты, могут ли данные изображения быть представлены в предоставленном контексте CGL. (требуемый)

    Объявление

    Swift

    optional func canRenderWithCGLContext(_ ctx: CGLContextObj) -> Bool

    Objective C

    - (BOOL)canRenderWithCGLContext:(CGLContextObj)ctx

    Параметры

    ctx

    Контекст CGL, к которому будет представлено Ваше изображение.

    Возвращаемое значение

    YEStrue если изображение может быть представлено в этом контексте CGL; иначе NOfalse, когда renderToBuffer:withBytesPerRow:pixelFormat:forBounds: вызывается.

    Обсуждение

    Если Ваше изображение может представить использование какого-либо контекста OpenGL, просто возвратитесь YEStrue. Если Ваш код потребует специальных расширений, то необходимо будет проверить на них и затем обеспечить надлежащее возвращаемое значение. Для получения дополнительной информации о проверке возможности OpenGL, поддерживаемые аппаратными средствами, см. Руководство по программированию OpenGL для Mac.

    Оператор импорта

    Objective C

    @import Quartz;

    Swift

    import Quartz

    Доступность

    Доступный в OS X v10.5 и позже.