primitiveTextureUpload(void) { // B3DAcceleratorPlugin>>#primitiveTextureUpload sqInt bits; void*bitsPtr; sqInt d; sqInt form; sqInt h; sqInt handle; sqInt ppw; sqInt renderer; sqInt result; sqInt w; if (!((methodArgumentCount()) == 3)) { return primitiveFail(); } form = stackValue(0); if (!((isPointers(form)) && ((slotSizeOf(form)) >= 4))) { return primitiveFail(); } bits = fetchPointerofObject(0, form); w = fetchIntegerofObject(1, form); h = fetchIntegerofObject(2, form); d = fetchIntegerofObject(3, form); ppw = 32 / d; if (!(isWords(bits))) { return primitiveFail(); } if (!((slotSizeOf(bits)) == ((((w + ppw) - 1) / ppw) * h))) { return primitiveFail(); } bitsPtr = firstIndexableField(bits); handle = stackIntegerValue(1); renderer = stackIntegerValue(2); if (failed()) { return null; } result = b3dxUploadTexture(renderer, handle, w, h, d, bitsPtr); if (!result) { return primitiveFail(); } return pop(3); }
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; }