SceneBuffer.cpp
#include "main.h"
#include "support.h"
#include "lt_fileSpec.h"
#include "lti_scene.h"
#include "lti_sceneBuffer.h"
#include "MrSIDImageReader.h"
#include "lti_pixel.h"
LT_USE_NAMESPACE(LizardTech);
LT_STATUS SceneBuffer()
{
LT_STATUS sts = LT_STS_Uninit;
const LTFileSpec fileSpec(INPUT_PATH("meg_cr20.sid"));
MrSIDImageReader *reader = MrSIDImageReader::create();
TEST_BOOL(reader != NULL);
TEST_SUCCESS(reader->initialize(fileSpec));
const LTIPixel &pixelProps = reader->getPixelProps();
LTISceneBuffer sceneBuffer(pixelProps, 150, 150, NULL);
TEST_BOOL(sceneBuffer.getNumCols() == 150);
TEST_BOOL(sceneBuffer.getNumRows() == 150);
TEST_BOOL(sceneBuffer.getTotalNumCols() == 150);
LTIPixel pink(reader->getPixelProps());
pink.getSample(0).setValueUint8(255);
pink.getSample(1).setValueUint8(128);
pink.getSample(2).setValueUint8(128);
sceneBuffer.fill(pink);
const LTIScene scene(270, 190, 100, 100, 1.0);
LTISceneBuffer subSceneBuffer(sceneBuffer, 25, 25, 100, 100);
TEST_BOOL(subSceneBuffer.getNumCols() == 100);
TEST_BOOL(subSceneBuffer.getNumRows() == 100);
TEST_BOOL(subSceneBuffer.getTotalNumCols() == 150);
TEST_SUCCESS(reader->read(scene, subSceneBuffer));
{
FILE *file = fopen(OUTPUT_PATH("meg_framed_bsq.raw"), "wb");
for(lt_uint16 band = 0; band < reader->getNumBands(); band++)
{
lt_uint32 bytesPerSample = pixelProps.getSample(band).getNumBytes();
lt_uint32 numPixels = sceneBuffer.getNumCols() *
sceneBuffer.getNumRows();
void *bandBuffer = sceneBuffer.getBandData(band);
if(fwrite(bandBuffer, bytesPerSample, numPixels, file) != numPixels)
return LT_STS_Failure;
}
fclose(file);
}
TEST_BOOL( Compare(OUTPUT_PATH("meg_framed_bsq.raw"), INPUT_PATH("meg_framed_bsq.raw")) );
Remove(OUTPUT_PATH("meg_framed_bsq.raw"));
reader->release();
reader = NULL;
return LT_STS_Success;
}