1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
/* Automatically generated from Squeak on (28 April 2009 2:40:06 pm) */
#if defined(WIN32) || defined(_WIN32) || defined(Win32)
#ifdef __cplusplus
#define DLLEXPORT extern "C" __declspec(dllexport)
#else
#define DLLEXPORT __declspec(dllexport)
#endif /* C++ */
#else
#define DLLEXPORT
#endif /* WIN32 */
#include "sqVirtualMachine.h"
/* memory access macros */
#define byteAt(i) (*((unsigned char *) (i)))
#define byteAtput(i, val) (*((unsigned char *) (i)) = val)
#define longAt(i) (*((int *) (i)))
#define longAtput(i, val) (*((int *) (i)) = val)
#include "sqCamera.h"
#include <string.h>
/*** Variables ***/
struct VirtualMachine* interpreterProxy;
const char *moduleName = "CameraPlugin 28 April 2009 (e)";
/*** Functions ***/
DLLEXPORT int primCameraName(void);
DLLEXPORT int primCloseCamera(void);
DLLEXPORT int primFrameExtent(void);
DLLEXPORT int primGetFrame(void);
DLLEXPORT int primGetParam(void);
DLLEXPORT int primOpenCamera(void);
DLLEXPORT int setInterpreter(struct VirtualMachine* anInterpreter);
DLLEXPORT int primCameraName(void) {
char* nameStr;
int i;
int count;
int resultOop;
int cameraNum;
char* dst;
cameraNum = interpreterProxy->stackIntegerValue(0);
if (interpreterProxy->failed()) {
return 0;
}
nameStr = CameraName(cameraNum);
if (nameStr == 0) {
interpreterProxy->success(0);
return 0;
}
count = strlen(nameStr);
resultOop = interpreterProxy->instantiateClassindexableSize(interpreterProxy->classString(), count);
dst = ((char *) (interpreterProxy->firstIndexableField(resultOop)));
for (i = 0; i <= (count - 1); i += 1) {
dst[i] = (nameStr[i]);
}
interpreterProxy->popthenPush(2, resultOop);
return 0;
}
DLLEXPORT int primCloseCamera(void) {
int cameraNum;
cameraNum = interpreterProxy->stackIntegerValue(0);
if (interpreterProxy->failed()) {
return 0;
}
CameraClose(cameraNum);
interpreterProxy->pop(1);
return 0;
}
DLLEXPORT int primFrameExtent(void) {
int cameraNum;
int e;
cameraNum = interpreterProxy->stackIntegerValue(0);
if (interpreterProxy->failed()) {
return 0;
}
e = CameraExtent(cameraNum);
interpreterProxy->popthenPush(2, ((e << 1) | 1));
return 0;
}
DLLEXPORT int primGetFrame(void) {
int cameraNum;
int bitmapOop;
unsigned char *bitmap;
int pixCount;
int result;
cameraNum = interpreterProxy->stackIntegerValue(1);
bitmapOop = interpreterProxy->stackValue(0);
if (((bitmapOop & 1)) || (!(interpreterProxy->isWords(bitmapOop)))) {
interpreterProxy->success(0);
return 0;
}
bitmap = ((unsigned char *) (interpreterProxy->firstIndexableField(bitmapOop)));
pixCount = interpreterProxy->stSizeOf(bitmapOop);
result = CameraGetFrame(cameraNum, bitmap, pixCount);
if (result < 0) {
interpreterProxy->success(0);
return 0;
}
interpreterProxy->popthenPush(3, ((result << 1) | 1));
return 0;
}
DLLEXPORT int primGetParam(void) {
int cameraNum;
int result;
int paramNum;
cameraNum = interpreterProxy->stackIntegerValue(1);
paramNum = interpreterProxy->stackIntegerValue(0);
if (interpreterProxy->failed()) {
return 0;
}
result = CameraGetParam(cameraNum, paramNum);
interpreterProxy->popthenPush(3, ((result << 1) | 1));
return 0;
}
DLLEXPORT int primOpenCamera(void) {
int cameraNum;
int desiredFrameWidth;
int ok;
int desiredFrameHeight;
cameraNum = interpreterProxy->stackIntegerValue(2);
desiredFrameWidth = interpreterProxy->stackIntegerValue(1);
desiredFrameHeight = interpreterProxy->stackIntegerValue(0);
if (interpreterProxy->failed()) {
return 0;
}
ok = CameraOpen(cameraNum, desiredFrameWidth, desiredFrameHeight);
if (ok == 0) {
interpreterProxy->success(0);
return 0;
}
interpreterProxy->pop(3);
return 0;
}
DLLEXPORT int setInterpreter(struct VirtualMachine* anInterpreter) {
int ok;
interpreterProxy = anInterpreter;
ok = interpreterProxy->majorVersion() == VM_PROXY_MAJOR;
if (ok == 0) {
return 0;
}
ok = interpreterProxy->minorVersion() >= VM_PROXY_MINOR;
return ok;
}
|