/*
* =====================================================================================
*
* Filename: build-table.cpp
*
* Description:
*
* Version: 1.0
* Created: 03/04/2011 22:11:22
* Revision: none
* Compiler: gcc
*
* Author: John Ryland (jryland), jryland@xiaofrog.com
* Company: InvertedLogic
*
* =====================================================================================
*/
#include <QApplication>
#include <QPixmap>
#include <QImage>
#include <stdio.h>
void output(FILE *f, unsigned char *image)
{
for (int j = 0; j < 32; j++) {
for (int i = 0; i < 32; i++) {
unsigned int val = 0;
for (int x = 0; x < 16; x++)
for (int y = 0; y < 16; y++)
val += image[512*(j*16+y)+i*16+x];
unsigned int b = val / 256;
fwrite(&b, 4, 1, f);
}
}
for (int i = 0; i < 512; i++) {
unsigned int val = 0;
for (int j = 0; j < 512; j++) {
val += image[512*j+i];
}
unsigned int b = val / 512;
fwrite(&b, 4, 1, f);
}
for (int i = 0; i < 512; i++) {
unsigned int val = 0;
for (int j = 0; j < 512; j++) {
val += image[512*i+j];
}
unsigned int b = val / 512;
fwrite(&b, 4, 1, f);
}
for (int j = 0; j < 1024; j++) {
unsigned int val = 0;
unsigned int count = 0;
for (int i = 0; i < 512; i++) {
int x = i;
int y = j - i;
if (x >=0 && x < 512 && y >=0 && y < 512) {
val += image[512*y+x];
count++;
}
}
unsigned int b = val;
if (count)
b /= count;
fwrite(&b, 4, 1, f);
}
for (int j = -512; j < 512; j++) {
unsigned int val = 0;
unsigned int count = 0;
for (int i = 0; i < 512; i++) {
int x = i;
int y = j + i;
if (x >=0 && x < 512 && y >=0 && y < 512) {
val += image[512*y+x];
count++;
}
}
unsigned int b = val;
if (count)
b /= count;
fwrite(&b, 4, 1, f);
}
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
printf("starting\n");
const int size = 512*512;
unsigned char *image = (unsigned char *)malloc(size);
printf("alloced mem\n");
memset(image, 0, size);
printf("zeroed mem\n");
QImage pix( QString("test01.png") );
int w = pix.width();
int h = pix.height();
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
image[y*w+x] = pix.pixel(x,y);
}
}
FILE *f = fopen("blah.out", "w");
printf("opened output\n");
output(f, image);
printf("written output\n");
fclose(f);
printf("closed output\n");
QImage outputImage(512, 512, QImage::Format_RGB888);
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
unsigned char p = image[y*w+x];
unsigned int p2 = p;
p2 = (p2 << 16) | (p2 << 8) | p2;
outputImage.setPixel(x, y, p2);
}
}
outputImage.save("output.png");
return 0;//app.exec();
}