Files
Work/bsptree/MAIN.CPP
2024-08-07 09:12:07 -04:00

185 lines
6.3 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <common/pvector.hpp>
#include <common/string.hpp>
//#include <bsptree/treendex.hpp>
//#include <bsptree/btree.hpp>
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR /*lpszCmdLine*/,int /*nCmdShow*/)
{
BTree<String> treeStrings;
String firstString("SEAN");
String secondString("RONI");
treeStrings.insertItem(firstString,TRUE);
treeStrings.insertItem(secondString,TRUE);
treeStrings.insertItem(secondString,TRUE);
return treeStrings.leaves();
}
#if 0
#include <iostream.h>
#include <fstream.h>
#include <dos.h>
#include <dir.h>
#include <common/block.hpp>
#include <common/block.tpp>
#include <common/pvector.hpp>
#include <common/pvector.tpp>
#include <common/string.hpp>
#include <common/bitmap.hpp>
#include <bsptree/rgbtree.hpp>
void testPhaseThree(String srcBitmap,String dstBitmap);
void testPhaseFour(void);
void main()
{
String bitmapOneName("C:\\WORK\\SCENE\\BMP\\COMPTILE.BMP");
String bitmapTwoName("C:\\WORK\\SCENE\\BMP\\RIDEN.BMP");
Bitmap bitmapOne(bitmapOneName);
Bitmap bitmapTwo(bitmapTwoName);
PurePalette paletteTwo((HPALETTE)bitmapTwo);
PurePalette paletteOne((HPALETTE)bitmapOne);
if(!paletteOne.isIdentityPalette())cout << (LPSTR)bitmapOneName << " is not identity" << endl;
else cout << (LPSTR)bitmapOneName << " is identity" << endl;
paletteOne.identityPalette();
if(!paletteOne.isIdentityPalette())cout << (LPSTR)bitmapOneName << " is not identity" << endl;
else cout << (LPSTR)bitmapOneName << " is identity" << endl;
if(!(paletteOne==paletteTwo))cout << "Palettes are not identical" << endl;
else cout << "Palettes are identical" << endl;
bitmapOne.setPalette(paletteOne);
bitmapOne.saveBitmap("C:\\WORK\\SCENE\\BMP\\RIDEN2.BMP");
#if 0
PurePalette::PaletteIndex paletteIndex;
String bitmapOneName("C:\\WORK\\SCENE\\BMP\\RIDEN.BMP");
String bitmapTwoName("C:\\WORK\\SCENE\\BMP\\RIDEN2.BMP");
String bitmapOrgName("C:\\WORK\\SCENE\\BMP\\RSKY1.BMP");
Bitmap bitmapOne(bitmapOneName);
Bitmap bitmapTwo(bitmapTwoName);
Bitmap bitmapOrg(bitmapOrgName);
PurePalette bitmapOnePalette((HPALETTE)bitmapOne);
PurePalette bitmapTwoPalette((HPALETTE)bitmapTwo);
PurePalette bitmapOrgPalette((HPALETTE)bitmapOrg);
RGBColor rgbColorOne;
RGBColor rgbColorTwo;
RGBColor rgbColorOrg;
BYTE bmOneByte;
BYTE bmTwoByte;
BYTE bmOrgByte;
short bmDelta;
short errors(0);
char ch;
if(bitmapOne.width()!=bitmapTwo.width()||bitmapOne.height()!=bitmapTwo.height())
{cout << "Bitmaps have same dimensions" << endl;return;}
for(short rowIndex=0;rowIndex<bitmapOne.height();rowIndex++)
{
for(short colIndex=0;colIndex<bitmapOne.width();colIndex++)
{
bmOneByte=bitmapOne.getBitmapByte(rowIndex,colIndex);
bmTwoByte=bitmapTwo.getBitmapByte(rowIndex,colIndex);
bmOrgByte=bitmapOrg.getBitmapByte(rowIndex,colIndex);
if(bmOneByte!=bmTwoByte)
{
bitmapOnePalette.getPaletteColor(bmOneByte,rgbColorOne);
bitmapTwoPalette.getPaletteColor(bmTwoByte,rgbColorTwo);
bitmapOrgPalette.getPaletteColor(bmOrgByte,rgbColorOrg);
bmDelta=(short)bmTwoByte-(short)bmOneByte;
if(bmDelta<0)bmDelta=-bmDelta;
cout << "Difference found at (" << rowIndex << "," << colIndex << ") DELTA=" << bmDelta << endl;
cout << (LPSTR)bitmapOneName << " data is " << (short)bmOneByte << " color is " <<
"(" << (short)rgbColorOne.red() << "," << (short)rgbColorOne.green() << "," << (short)rgbColorOne.blue() << ")" << endl;
cout << (LPSTR)bitmapTwoName << " data is " << (short)bmTwoByte << " color is " <<
"(" << (short)rgbColorTwo.red() << "," << (short)rgbColorTwo.green() << "," << (short)rgbColorTwo.blue() << ")" << endl;
cout << (LPSTR)bitmapOrgName << " data is " << (short)bmOrgByte << " color is " <<
"(" << (short)rgbColorOrg.red() << "," << (short)rgbColorOrg.green() << "," << (short)rgbColorOrg.blue() << ")" << endl;
paletteIndex=bitmapTwoPalette.paletteIndex(rgbColorOne);
cout << "(" << (short)rgbColorOne.red() << "," << (short)rgbColorOne.green() << "," << (short)rgbColorOne.blue() << ") index is " << (short)paletteIndex << " in " << (LPSTR)bitmapTwoName << endl;
errors++;
if(!(errors%5))cin >> ch;
if('q'==ch)return;
}
}
}
return;
#endif
}
#if 0
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR /*lpszCmdLine*/,int /*nCmdShow*/)
{
testPhaseFour();
return FALSE;
}
#endif
void testPhaseFour()
{
ffblk ffblk;
String firstFile;
String secondFile;
String pathFileSpec;
String pathString("C:\\WORK\\ENGINE\\BMP");
String separator("\\");
String extensionString("*.BMP");
pathFileSpec=pathString;
pathFileSpec+=separator;
pathFileSpec+=extensionString;
if(!::findfirst(pathFileSpec,&ffblk,FA_ARCH))
{
firstFile=pathString;
firstFile+=separator;
firstFile+=String(ffblk.ff_name);
while(!::findnext(&ffblk))
{
secondFile=pathString;
secondFile+=separator;
secondFile+=String(ffblk.ff_name);
testPhaseThree(firstFile,secondFile);
firstFile=secondFile;
}
}
}
void testPhaseThree(String srcBitmap,String dstBitmap)
{
PureVector<RGBColor> rgbColorOne;
PureVector<RGBColor> rgbColorTwo;
PureVector<RGBIndex> rgbIndexColorOne;
PureVector<RGBIndex> rgbIndexColorTwo;
RGBTree bspTree;
RGBIndex searchRGB;
WORD errorCount(0);
cout << "Looking at <" << (LPSTR)srcBitmap << ">" << endl << "<" << (LPSTR)dstBitmap << ">" << endl;
Bitmap imageBitmapOne(srcBitmap);
Bitmap imageBitmapTwo(dstBitmap);
PurePalette purePaletteOne((HPALETTE)imageBitmapOne);
PurePalette purePaletteTwo((HPALETTE)imageBitmapTwo);
purePaletteOne.getPaletteColors(rgbColorOne);
purePaletteTwo.getPaletteColors(rgbColorTwo);
rgbIndexColorOne.size(rgbColorOne.size());
rgbIndexColorTwo.size(rgbColorTwo.size());
for(short index=0;index<rgbColorOne.size();index++)rgbIndexColorOne[index]=rgbColorOne[index];
for(index=0;index<rgbColorTwo.size();index++)rgbIndexColorTwo[index]=rgbColorTwo[index];
if((!rgbIndexColorOne.size())||!(rgbIndexColorTwo.size())){cout << "Palette error." << endl;return;}
bspTree.insertItems(rgbIndexColorTwo);
size_t size((WORD)rgbIndexColorOne.size());
cout << "Performing accuracy test..." << endl;
for(int i=0;i<size;i++)
{
searchRGB=rgbIndexColorOne[i];
if(!bspTree.searchItem(searchRGB,RGBTree::SearchExact))
{
cout << "Error : exact match failed " << i << endl;
errorCount++;
}
}
cout << "Accuracy test complete." << endl;
if(errorCount)cout << "Errors " << errorCount << endl;
}
#endif