static sqInt stackLightArrayValue(sqInt stackIndex) { // B3DAcceleratorPlugin>>#stackLightArrayValue: sqInt array; sqInt arraySize; sqInt i; sqInt oop; array = stackObjectValue(stackIndex); if (array == null) { return null; } if (array == (nilObject())) { return null; } if (!((fetchClassOf(array)) == (classArray()))) { return primitiveFail(); } arraySize = slotSizeOf(array); for (i = 0; i <= (arraySize - 1); i += 1) { oop = fetchPointerofObject(i, array); if (isIntegerObject(oop)) { return primitiveFail(); } if (!((isWords(oop)) && ((slotSizeOf(oop)) == 32))) { return primitiveFail(); } } return array; }
primitiveTextureGetColorMasks(void) { // B3DAcceleratorPlugin>>#primitiveTextureGetColorMasks sqInt array; sqInt arrayOop; sqInt handle; sqInt i; int masks[4]; sqInt renderer; sqInt result; if (!((methodArgumentCount()) == 3)) { return primitiveFail(); } array = stackObjectValue(0); handle = stackIntegerValue(1); renderer = stackIntegerValue(2); if (failed()) { return null; } if (!((fetchClassOf(array)) == (classArray()))) { return primitiveFail(); } if (!((slotSizeOf(array)) == 4)) { return primitiveFail(); } result = b3dxTextureColorMasks(renderer, handle, masks); if (!result) { return primitiveFail(); } arrayOop = array; for (i = 0; i <= 3; i += 1) { pushRemappableOop(arrayOop); result = positive32BitIntegerFor(masks[i]); arrayOop = popRemappableOop(); storePointerofObjectwithValue(i, arrayOop, result); } return pop(3); }
/* Matrix2x3Plugin>>#loadArgumentPoint: */ static sqInt loadArgumentPoint(sqInt point) { int isInt; sqInt oop; if (failed()) { return null; } if (!((fetchClassOf(point)) == (classPoint()))) { return primitiveFail(); } oop = fetchPointerofObject(0, point); isInt = isIntegerObject(oop); if (!(isInt || (isFloatObject(oop)))) { return primitiveFail(); } if (isInt) { m23ArgX = integerValueOf(oop); } else { m23ArgX = floatValueOf(oop); } oop = fetchPointerofObject(1, point); isInt = isIntegerObject(oop); if (!(isInt || (isFloatObject(oop)))) { return primitiveFail(); } if (isInt) { m23ArgY = integerValueOf(oop); } else { m23ArgY = floatValueOf(oop); } return 0; }
primitiveTransformRectInto(void) { double cornerX; double cornerY; sqInt dstOop; float *matrix; sqInt matrix1; double maxX; double maxY; double minX; double minY; double originX; double originY; sqInt srcOop; dstOop = stackObjectValue(0); srcOop = stackObjectValue(1); /* begin loadArgumentMatrix: */ matrix1 = stackObjectValue(2); if (failed()) { matrix = null; goto l1; } if (!((isWords(matrix1)) && ((slotSizeOf(matrix1)) == 6))) { primitiveFail(); matrix = null; goto l1; } matrix = ((float *) (firstIndexableField(matrix1))); l1: /* end loadArgumentMatrix: */; if (failed()) { return null; } if (!((fetchClassOf(srcOop)) == (fetchClassOf(dstOop)))) { return primitiveFail(); } if (!(isPointers(srcOop))) { return primitiveFail(); } if (!((slotSizeOf(srcOop)) == 2)) { return primitiveFail(); } loadArgumentPoint(fetchPointerofObject(0, srcOop)); if (failed()) { return null; } originX = m23ArgX; originY = m23ArgY; /* begin matrix2x3TransformPoint: */ m23ResultX = ((m23ArgX * (matrix[0])) + (m23ArgY * (matrix[1]))) + (matrix[2]); m23ResultY = ((m23ArgX * (matrix[3])) + (m23ArgY * (matrix[4]))) + (matrix[5]); minX = (maxX = m23ResultX); /* Load bottom-right point */ minY = (maxY = m23ResultY); loadArgumentPoint(fetchPointerofObject(1, srcOop)); if (failed()) { return null; } cornerX = m23ArgX; cornerY = m23ArgY; /* begin matrix2x3TransformPoint: */ m23ResultX = ((m23ArgX * (matrix[0])) + (m23ArgY * (matrix[1]))) + (matrix[2]); m23ResultY = ((m23ArgX * (matrix[3])) + (m23ArgY * (matrix[4]))) + (matrix[5]); minX = ((minX < m23ResultX) ? minX : m23ResultX); maxX = ((maxX < m23ResultX) ? m23ResultX : maxX); minY = ((minY < m23ResultY) ? minY : m23ResultY); /* Load top-right point */ maxY = ((maxY < m23ResultY) ? m23ResultY : maxY); m23ArgX = cornerX; m23ArgY = originY; /* begin matrix2x3TransformPoint: */ m23ResultX = ((m23ArgX * (matrix[0])) + (m23ArgY * (matrix[1]))) + (matrix[2]); m23ResultY = ((m23ArgX * (matrix[3])) + (m23ArgY * (matrix[4]))) + (matrix[5]); minX = ((minX < m23ResultX) ? minX : m23ResultX); maxX = ((maxX < m23ResultX) ? m23ResultX : maxX); minY = ((minY < m23ResultY) ? minY : m23ResultY); /* Load bottom-left point */ maxY = ((maxY < m23ResultY) ? m23ResultY : maxY); m23ArgX = originX; m23ArgY = cornerY; /* begin matrix2x3TransformPoint: */ m23ResultX = ((m23ArgX * (matrix[0])) + (m23ArgY * (matrix[1]))) + (matrix[2]); m23ResultY = ((m23ArgX * (matrix[3])) + (m23ArgY * (matrix[4]))) + (matrix[5]); minX = ((minX < m23ResultX) ? minX : m23ResultX); maxX = ((maxX < m23ResultX) ? m23ResultX : maxX); minY = ((minY < m23ResultY) ? minY : m23ResultY); maxY = ((maxY < m23ResultY) ? m23ResultY : maxY); dstOop = roundAndStoreResultRectx0y0x1y1(dstOop, minX, minY, maxX, maxY); if (!(failed())) { popthenPush(3, dstOop); } return 0; }