//--------------------------------------------------------------------------- DeltaElement::DeltaElement (MemoryPtr _shape, long _x, long _y, long frame, bool rev, MemoryPtr fTable, bool noScale, bool upScale) : Element(-_y) { shapeTable = _shape; x = _x; y = _y; frameNum = frame; reverse = rev; fadeTable = fTable; noScaleDraw = noScale; scaleUp = upScale; //------------------------------------- // Integrity Check here. #ifdef _DEBUG long result = VFX_shape_count(shapeTable); if (result <= frameNum) { frameNum = result-1; } result = VFX_shape_bounds(shapeTable,frameNum); long xMax = result>>16; long yMax = result & 0x0000ffff; #define MAX_X 360 #define MAX_Y 360 if ((yMax * xMax) >= (MAX_Y * MAX_X)) { return; } #endif }
//--------------------------------------------------------------------------- DeltaElement::DeltaElement(puint8_t _shape, int32_t _x, int32_t _y, int32_t frame, bool rev, puint8_t fTable, bool noScale, bool upScale) : Element(-_y) { shapeTable = _shape; x = _x; y = _y; frameNum = frame; reverse = rev; fadeTable = fTable; noScaleDraw = noScale; scaleUp = upScale; //------------------------------------- // Integrity Check here. #ifdef _DEBUG int32_t result = VFX_shape_count(shapeTable); if(result <= frameNum) { frameNum = result - 1; } result = VFX_shape_bounds(shapeTable, frameNum); int32_t xMax = result >> 16; int32_t yMax = result & 0x0000ffff; #define MAX_X 360 #define MAX_Y 360 if((yMax * xMax) >= (MAX_Y * MAX_X)) { return; } #endif }
//--------------------------------------------------------------------------- long VFXShapeElement::getTextureHandle (long height) { DWORD textureResult = 0; if (height == -1) { //----------------------------------------------- // We need to take the shape bounds and find the // smallest texture buffer that will hold it. // Create an empty Keyed buffer for now. long textureSize = VFX_shape_bounds(shapeTable[0],frameNum[0]); long xRes = textureSize >> 16; long yRes = textureSize & 0x0000ffff; if ((xRes < 16) && (yRes < 16)) { textureResult = gos_NewEmptyTexture(gos_Texture_Keyed,"ShapeTable",16,gosHint_DisableMipmap); } else if ((xRes < 32) && (yRes < 32)) { textureResult = gos_NewEmptyTexture(gos_Texture_Keyed,"ShapeTable",32,gosHint_DisableMipmap); } else if ((xRes < 64) && (yRes < 64)) { textureResult = gos_NewEmptyTexture(gos_Texture_Keyed,"ShapeTable",64,gosHint_DisableMipmap); } else if ((xRes < 128) && (yRes < 128)) { textureResult = gos_NewEmptyTexture(gos_Texture_Keyed,"ShapeTable",128,gosHint_DisableMipmap); } else if ((xRes < 256) && (yRes < 256)) { textureResult = gos_NewEmptyTexture(gos_Texture_Keyed,"ShapeTable",256,gosHint_DisableMipmap); } }