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);
}
Exemple #2
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;
}