Vuo  2.3.2
VuoImage.h
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 #ifndef DISPATCH_RETURNS_RETAINED_BLOCK
19  #define DISPATCH_RETURNS_RETAINED_BLOCK
20 #endif
21 #include "VuoMacOSSDKWorkaround.h"
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 
47 typedef struct _VuoImage *VuoImage;
48 
55 typedef void (*VuoImage_freeCallback)(VuoImage imageToFree);
56 
61 struct _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 
81 VuoImage VuoImage_make(unsigned int glTextureName, unsigned int glInternalFormat, unsigned long int pixelsWide, unsigned long int pixelsHigh);
82 VuoImage VuoImage_makeClientOwned(unsigned int glTextureName, unsigned int glInternalFormat, unsigned long int pixelsWide, unsigned long int pixelsHigh, VuoImage_freeCallback freeCallback, void *freeCallbackContext) __attribute__((nonnull(5)));
83 VuoImage VuoImage_makeClientOwnedGlTextureRectangle(unsigned int glTextureName, unsigned int glInternalFormat, unsigned long int pixelsWide, unsigned long int pixelsHigh, VuoImage_freeCallback freeCallback, void *freeCallbackContext) __attribute__((nonnull(5)));
84 VuoImage VuoImage_makeFromBuffer(const void *pixels, unsigned int format, unsigned int pixelsWide, unsigned int pixelsHigh, VuoImageColorDepth colorDepth, void (^freeCallback)(void *pixels)) __attribute__((nonnull(1)));
85 VuoImage 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)));
86 VuoImage VuoImage_makeColorImage(VuoColor color, unsigned int pixelsWide, unsigned int pixelsHigh);
87 VuoImage VuoImage_makeCopy(VuoImage image, bool flip, unsigned int forcePixelsWide, unsigned int forcePixelsHigh, bool forceAlpha);
89 const unsigned char *VuoImage_getBuffer(VuoImage image, unsigned int requestedFormat);
90 
92 void VuoImage_setWrapMode(VuoImage image, VuoImageWrapMode wrapMode);
93 
94 VuoImage VuoImage_mapColors(VuoImage image, VuoList_VuoColor colors, VuoReal filterOpacity);
95 
97 #define VuoImage_SUPPORTS_COMPARISON
98 bool VuoImage_areEqual(const VuoImage a, const VuoImage b);
99 bool VuoImage_isLessThan(const VuoImage a, const VuoImage b);
100 
101 bool VuoImage_areEqualWithinTolerance(const VuoImage a, const VuoImage b, const unsigned char tolerance);
102 bool VuoImage_isEmpty(const VuoImage image);
103 bool VuoImage_isBlackOrTransparent(const VuoImage image, const unsigned char tolerance);
104 bool VuoImage_isPopulated(const VuoImage image);
105 
108 
110 VuoImage VuoImage_makeFromJsonWithDimensions(struct json_object *js, unsigned int requestedPixelsWide, unsigned int requestedPixelsHigh) VuoWarnUnusedResult;
111 GLuint VuoImage_resolveInterprocessJsonUsingTextureProvider(struct json_object *js, GLuint (^provider)(unsigned int pixelsWide, unsigned int pixelsHigh), unsigned int *outputPixelsWide, unsigned int *outputPixelsHigh, void *outputIOSurface) VuoWarnUnusedResult;
112 bool VuoImage_resolveInterprocessJsonUsingClientTexture(struct json_object *js, GLuint textureName, unsigned int pixelsWide, unsigned int pixelsHigh, void *outputIOSurface) VuoWarnUnusedResult;
113 bool VuoImage_resolveInterprocessJsonOntoFramebuffer(struct json_object *js, VuoGlContext context, bool flip, bool stretch) VuoWarnUnusedResult;
114 struct json_object * VuoImage_getJson(const VuoImage value);
115 
117 #define VuoImage_REQUIRES_INTERPROCESS_JSON
119 
120 char * VuoImage_getSummary(const VuoImage value);
121 
123 
127 char * VuoImage_getString(const VuoImage value);
132 
137 #ifdef __cplusplus
138 }
139 #endif