@@ -21,6 +21,8 @@
#ifndef LOVE_MATH_H
#define LOVE_MATH_H
+#include <climits> // for CHAR_BIT
+
/* Definitions of useful mathematical constants
* M_E - e
* M_LOG2E - log2(e)
@@ -64,6 +66,14 @@ struct vertex
float x, y;
float s, t;
};
+inline int next_p2(int x)
+{
+ x += (x == 0);
+ x--;
+ for (unsigned int i = 1; i < sizeof(int)*CHAR_BIT; i <<= 1) x |= x >> i;
+ return ++x;
+}
} // love
@@ -21,24 +21,14 @@
#include "ImageData.h"
// STD
+#include <cstring>
#include <iostream>
// LOVE
#include <common/Exception.h>
+#include <common/math.h>
#include <filesystem/File.h>
-int toPo2(int n)
-{
- n -= 1;
- n |= n >> 1;
- n |= n >> 2;
- n |= n >> 4;
- n |= n >> 8;
- n |= n >> 16;
- n |= n >> 32;
- return n+1;
-}
-
namespace love
{
namespace image
@@ -54,8 +44,8 @@ namespace devil
ilBindImage(image);
//scale to nearest bigger po2
- width = toPo2(width);
- height = toPo2(height);
+ width = next_p2(width);
+ height = next_p2(height);
//create and populate the image
bool success = (ilTexImage(width, height, 1, bpp, IL_RGBA, IL_UNSIGNED_BYTE, data) == IL_TRUE);
@@ -23,18 +23,11 @@
-#include <image/Image.h>
#include <image/ImageData.h>
// DevIL
#include <IL/il.h>
-// String
-#include <string.h>
-// Math
-#include <math.h>