Vuo  2.4.1
VuoImage.h
Go to the documentation of this file.
1
10#pragma once
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16#ifndef DISPATCH_RETURNS_RETAINED_BLOCK
19 #define DISPATCH_RETURNS_RETAINED_BLOCK
20#endif
22#include <dispatch/dispatch.h>
23
24#include "VuoBoolean.h"
25#include "VuoColor.h"
26#include "VuoGlContext.h"
27#include "VuoHeap.h"
28#include "VuoImageColorDepth.h"
29#include "VuoImageWrapMode.h"
30#include "VuoPoint2d.h"
31#include "VuoRectangle.h"
32
47typedef struct _VuoImage *VuoImage;
48
55typedef void (*VuoImage_freeCallback)(VuoImage imageToFree);
56
61struct _VuoImage
62{
63 // GPU image
64 unsigned int glTextureName;
65 unsigned int glInternalFormat;
66 unsigned long int glTextureTarget;
67
68 // Common
69 unsigned long int pixelsWide;
70 unsigned long int pixelsHigh;
71 float scaleFactor;
72
73 void *freeCallbackContext;
74
75 // CPU image
76 dispatch_once_t cpuQueueInitialized;
77 dispatch_queue_t cpuQueue;
78 struct json_object *cpuData;
79};
80
81VuoImage VuoImage_make(unsigned int glTextureName, unsigned int glInternalFormat, unsigned long int pixelsWide, unsigned long int pixelsHigh);
82VuoImage VuoImage_makeClientOwned(unsigned int glTextureName, unsigned int glInternalFormat, unsigned long int pixelsWide, unsigned long int pixelsHigh, VuoImage_freeCallback freeCallback, void *freeCallbackContext) __attribute__((nonnull(5)));
83VuoImage VuoImage_makeClientOwnedGlTextureRectangle(unsigned int glTextureName, unsigned int glInternalFormat, unsigned long int pixelsWide, unsigned long int pixelsHigh, VuoImage_freeCallback freeCallback, void *freeCallbackContext) __attribute__((nonnull(5)));
84VuoImage VuoImage_makeFromBuffer(const void *pixels, unsigned int format, unsigned int pixelsWide, unsigned int pixelsHigh, VuoImageColorDepth colorDepth, void (^freeCallback)(void *pixels)) __attribute__((nonnull(1)));
85VuoImage VuoImage_makeFromBufferWithStride(const void *pixels, unsigned int format, unsigned int pixelsWide, unsigned int pixelsHigh, unsigned int bytesPerRow, VuoImageColorDepth colorDepth, void (^freeCallback)(void *pixels)) __attribute__((nonnull(1))) __attribute__((nonnull(7)));
86VuoImage VuoImage_makeColorImage(VuoColor color, unsigned int pixelsWide, unsigned int pixelsHigh);
87VuoImage VuoImage_makeCopy(VuoImage image, bool flip, unsigned int forcePixelsWide, unsigned int forcePixelsHigh, bool forceAlpha);
89const unsigned char *VuoImage_getBuffer(VuoImage image, unsigned int requestedFormat);
90
93
94VuoImage VuoImage_mapColors(VuoImage image, VuoList_VuoColor colors, VuoReal filterOpacity);
95
97#define VuoImage_SUPPORTS_COMPARISON
98bool VuoImage_areEqual(const VuoImage a, const VuoImage b);
99bool VuoImage_isLessThan(const VuoImage a, const VuoImage b);
100
101bool VuoImage_areEqualWithinTolerance(const VuoImage a, const VuoImage b, const unsigned char tolerance);
102bool VuoImage_isEmpty(const VuoImage image);
103bool VuoImage_isBlackOrTransparent(const VuoImage image, const unsigned char tolerance);
104bool VuoImage_isPopulated(const VuoImage image);
105
108
110VuoImage VuoImage_makeFromJsonWithDimensions(struct json_object *js, unsigned int requestedPixelsWide, unsigned int requestedPixelsHigh) VuoWarnUnusedResult;
111GLuint VuoImage_resolveInterprocessJsonUsingTextureProvider(struct json_object *js, GLuint (^provider)(unsigned int pixelsWide, unsigned int pixelsHigh), unsigned int *outputPixelsWide, unsigned int *outputPixelsHigh, void *outputIOSurface) VuoWarnUnusedResult;
112bool VuoImage_resolveInterprocessJsonUsingClientTexture(struct json_object *js, GLuint textureName, unsigned int pixelsWide, unsigned int pixelsHigh, void *outputIOSurface) VuoWarnUnusedResult;
114struct json_object * VuoImage_getJson(const VuoImage value);
115
117#define VuoImage_REQUIRES_INTERPROCESS_JSON
119
120char * VuoImage_getSummary(const VuoImage value);
121
123
126char * VuoImage_getString(const VuoImage value);
131
136#ifdef __cplusplus
137}
138#endif