summaryrefslogtreecommitdiff
path: root/src/mipmap.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mipmap.cc')
-rw-r--r--src/mipmap.cc152
1 files changed, 102 insertions, 50 deletions
diff --git a/src/mipmap.cc b/src/mipmap.cc
index 09b15b6..a9683df 100644
--- a/src/mipmap.cc
+++ b/src/mipmap.cc
@@ -26,74 +26,126 @@
*/
#include "mipmap.h"
-MipMap::MipMap(float *data, size_t size)
+MipMap::MipMap(float* data, size_t size)
{
- this->data = data;
- this->size = size;
- this->zoom = 1;
+ this->data = data;
+ this->size = size;
+ this->zoom = 1;
}
MipMapValue MipMap::data_lookup(size_t begin, size_t end)
{
- MipMapValue val;
+ MipMapValue val;
- size_t numlavg = 0;
- size_t numuavg = 0;
- for(size_t i = begin; i <= end; i++) {
- if(i > size || i < 0) break;
- if(data[i] > val.max) val.max = data[i];
- if(data[i] < val.min) val.min = data[i];
-
- if(data[i] > 0) { val.uavg += data[i]; numuavg++; }
- if(data[i] < 0) { val.lavg += data[i]; numlavg++; }
- }
-
- if(numlavg) val.lavg /= (float) numlavg;
- if(numuavg) val.uavg /= (float) numuavg;
+ size_t numlavg = 0;
+ size_t numuavg = 0;
+ for(size_t i = begin; i <= end; i++)
+ {
+ if(i > size || i < 0)
+ {
+ break;
+ }
+ if(data[i] > val.max)
+ {
+ val.max = data[i];
+ }
+ if(data[i] < val.min)
+ {
+ val.min = data[i];
+ }
- return val;
+ if(data[i] > 0)
+ {
+ val.uavg += data[i];
+ numuavg++;
+ }
+ if(data[i] < 0)
+ {
+ val.lavg += data[i];
+ numlavg++;
+ }
+ }
+
+ if(numlavg)
+ {
+ val.lavg /= (float) numlavg;
+ }
+ if(numuavg)
+ {
+ val.uavg /= (float) numuavg;
+ }
+
+ return val;
}
MipMapValue MipMap::mipmap_lookup(size_t begin, size_t end)
{
- MipMapValue val;
+ MipMapValue val;
+
+ size_t numlavg = 0;
+ size_t numuavg = 0;
+ for(size_t i = begin; i <= end; i++)
+ {
+ if(i > size || i < 0)
+ {
+ break;
+ }
+ if(data[i] > val.max)
+ {
+ val.max = data[i];
+ }
+ if(data[i] < val.min)
+ {
+ val.min = data[i];
+ }
+
+ if(data[i] > 0)
+ {
+ val.uavg += data[i];
+ numuavg++;
+ }
+ if(data[i] < 0)
+ {
+ val.lavg += data[i];
+ numlavg++;
+ }
+ }
- size_t numlavg = 0;
- size_t numuavg = 0;
- for(size_t i = begin; i <= end; i++) {
- if(i > size || i < 0) break;
- if(data[i] > val.max) val.max = data[i];
- if(data[i] < val.min) val.min = data[i];
-
- if(data[i] > 0) { val.uavg += data[i]; numuavg++; }
- if(data[i] < 0) { val.lavg += data[i]; numlavg++; }
- }
-
- if(numlavg) val.lavg /= (float) numlavg;
- if(numuavg) val.uavg /= (float) numuavg;
+ if(numlavg)
+ {
+ val.lavg /= (float) numlavg;
+ }
+ if(numuavg)
+ {
+ val.uavg /= (float) numuavg;
+ }
- return val;
+ return val;
}
#define ABS(x) (x>0?x:-x)
MipMapValue MipMap::lookup(size_t begin, size_t end)
{
- return data_lookup(begin, end);
- /*
-
- size_t zoom_factor = ABS(end - begin);
-
- if(zoom_factor < zoom / 2) {
- if(zoom == 1) { // Lookup in original data.
- return data_lookup(begin, end);
- }
-
- return mipmap_lookup(begin, end);
- }
-
- if(lowerlevel) return lowerlevel->lookup(begin,end);
+ return data_lookup(begin, end);
- return MipMapValue();
- */
+ //size_t zoom_factor = ABS(end - begin);
+ //
+ //if(zoom_factor < zoom / 2)
+ //{
+ // if(zoom == 1)
+ // {
+ // // Lookup in original data.
+ // return data_lookup(begin, end);
+ // }
+ //
+ // return mipmap_lookup(begin, end);
+ //}
+ //
+ //if(lowerlevel)
+ //{
+ // return lowerlevel->lookup(begin,end);
+ //}
+ //
+ //return MipMapValue();
}