Vuo 2.4.4
Loading...
Searching...
No Matches
VuoImage.h
Go to the documentation of this file.
1
10#ifndef VuoImage_h
11#define VuoImage_h
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17#ifndef DISPATCH_RETURNS_RETAINED_BLOCK
20 #define DISPATCH_RETURNS_RETAINED_BLOCK
21#endif
23#include <dispatch/dispatch.h>
24
25#include "VuoBoolean.h"
26#include "VuoColor.h"
27#include "VuoGlContext.h"
28#include "VuoImageColorDepth.h"
29#include "VuoImageWrapMode.h"
30#include "VuoPoint2d.h"
31#include "VuoRectangle.h"
32
47typedef struct _VuoImage *VuoImage;
48
49#define VuoImage_SUPPORTS_COMPARISON
50#define VuoImage_OVERRIDES_INTERPROCESS_SERIALIZATION
51
58typedef void (*VuoImage_freeCallback)(VuoImage imageToFree);
59
64struct _VuoImage
65{
66 // GPU image
67 unsigned int glTextureName;
68 unsigned int glInternalFormat;
69 unsigned long int glTextureTarget;
70
71 // Common
72 unsigned long int pixelsWide;
73 unsigned long int pixelsHigh;
74 float scaleFactor;
75
76 void *freeCallbackContext;
77
78 // CPU image
79 dispatch_once_t cpuQueueInitialized;
80 dispatch_queue_t cpuQueue;
81 struct json_object *cpuData;
82};
83
87typedef enum {
88 VuoImageSampling_Nearest,
89 VuoImageSampling_Linear,
91
92VuoImage VuoImage_make(unsigned int glTextureName, unsigned int glInternalFormat, unsigned long int pixelsWide, unsigned long int pixelsHigh);
93VuoImage VuoImage_makeClientOwned(unsigned int glTextureName, unsigned int glInternalFormat, unsigned long int pixelsWide, unsigned long int pixelsHigh, VuoImage_freeCallback freeCallback, void *freeCallbackContext) __attribute__((nonnull(5)));
94VuoImage VuoImage_makeClientOwnedGlTextureRectangle(unsigned int glTextureName, unsigned int glInternalFormat, unsigned long int pixelsWide, unsigned long int pixelsHigh, VuoImage_freeCallback freeCallback, void *freeCallbackContext) __attribute__((nonnull(5)));
95VuoImage VuoImage_makeFromBuffer(const void *pixels, unsigned int format, unsigned int pixelsWide, unsigned int pixelsHigh, VuoImageColorDepth colorDepth, void (^freeCallback)(void *pixels)) __attribute__((nonnull(1)));
96VuoImage 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)));
97VuoImage VuoImage_makeColorImage(VuoColor color, unsigned int pixelsWide, unsigned int pixelsHigh);
98VuoImage VuoImage_makeCopy(VuoImage image, bool flip, unsigned int forcePixelsWide, unsigned int forcePixelsHigh, bool forceAlpha);
100const unsigned char *VuoImage_getBuffer(VuoImage image, unsigned int requestedFormat);
101
104
106
107VuoImage VuoImage_mapColors(VuoImage image, VuoList_VuoColor colors, VuoReal filterOpacity);
108
109bool VuoImage_areEqual(const VuoImage a, const VuoImage b);
110bool VuoImage_areEqualWithinTolerance(const VuoImage a, const VuoImage b, const unsigned char tolerance);
111bool VuoImage_isLessThan(const VuoImage a, const VuoImage b);
112bool VuoImage_isEmpty(const VuoImage image);
113bool VuoImage_isBlackOrTransparent(const VuoImage image, const unsigned char tolerance);
114bool VuoImage_isPopulated(const VuoImage image);
115
118
119VuoImage VuoImage_makeFromJson(struct json_object * js);
120VuoImage VuoImage_makeFromJsonWithDimensions(struct json_object *js, unsigned int requestedPixelsWide, unsigned int requestedPixelsHigh) VuoWarnUnusedResult;
121GLuint VuoImage_resolveInterprocessJsonUsingTextureProvider(struct json_object *js, GLuint (^provider)(unsigned int pixelsWide, unsigned int pixelsHigh), unsigned int *outputPixelsWide, unsigned int *outputPixelsHigh, void *outputIOSurface) VuoWarnUnusedResult;
122bool VuoImage_resolveInterprocessJsonUsingClientTexture(struct json_object *js, GLuint textureName, unsigned int pixelsWide, unsigned int pixelsHigh, void *outputIOSurface) VuoWarnUnusedResult;
123bool VuoImage_resolveInterprocessJsonOntoFramebuffer(struct json_object *js, VuoGlContext context, bool flip, bool stretch) VuoWarnUnusedResult;
124struct json_object * VuoImage_getJson(const VuoImage value);
125
126struct json_object * VuoImage_getInterprocessJson(const VuoImage value);
127
128char * VuoImage_getSummary(const VuoImage value);
129
131
134char * VuoImage_getString(const VuoImage value);
139
144#ifdef __cplusplus
145}
146#endif
147
148#endif