juliapluginreader.h
//-----------------------------------------------------------------------------
//$Id: juliapluginreader.h 189 2007-04-19 10:53:38Z robin $
//
// Copyright (c) 2006 Zanja Technologies, Inc
//
// TRADE SECRETS: PROPRIETARY AND CONFIDENTIAL
// Unpublished material - all rights reserved under the
// Copyright Laws of the United States.
//
// Distributed under license by ESRI, Inc.
// For additional information, contact:
// Environmental Systems Research Institute, Inc.
// 380 New York Street
// Redlands, California, USA 92373
//
/*! \file juliapluginreader.h
\brief <TODO: insert file description here>
\author Robin Princeley
\date $Date: 2007-04-19 14:53:38 +0400 (Thu, 19 Apr 2007) $
\version $Revision: 189 $
*/
//-----------------------------------------------------------------------------
#if !defined( ESRI_IMAGESERVER_PLUGIN_JULIAREADER_H )
#define ESRI_IMAGESERVER_PLUGIN_JULIAREADER_H
#define JULIAERROR_None 0
#define JULIAERROR_ReadFailed 1
#define JULIAERROR_NoWidth 2
#define JULIAERROR_NoHeight 3
#define JULIAERROR_ReadOverviewOutOfRange 4
typedef struct SimpleROI {
double_t ulx;
double_t uly;
double_t lrx;
double_t lry;
inline SimpleROI()
{
ulx = 0.00;
uly = 0.00;
lrx = 0.00;
lry = 0.00;
}
inline virtual ~SimpleROI()
{
ulx = 0.00;
uly = 0.00;
lrx = 0.00;
lry = 0.00;
}
double_t getWidth() const
{
return ( lrx - ulx );
}
double_t getHeight() const
{
return ( lry - uly );
}
} SimpleROI;
class JuliaPluginReader
{
public:
JuliaPluginReader();
virtual ~JuliaPluginReader();
virtual bool open( const std::string &filename, uint32_t index, uint32_t slice,
const FC_Parameter *parameters, uint32_t parameterCount );
virtual bool close();
virtual bool prepare( const FC_ImageROI *roi,
uint32_t rows, uint32_t cols,
const FC_Parameter *parameters, uint32_t parameterCount );
virtual bool readScanlines( byte_t **buffer, uint32_t startRow,
uint32_t rows, size_t size, uint32_t plane = 0 );
inline FC_ImageInformation* getInformation()
{
return &mInformation;
}
const uint32_t& getIndex() const { return mIndex; }
inline double_t getDX() const
{
return ( mFractalROI.getWidth() / static_cast< double_t >( mInformation.width ) );
}
inline double_t getDY() const
{
return ( mFractalROI.getHeight() / static_cast< double_t >( mInformation.height ) );
}
static uint32_t readDescription( const std::string &filename,
FC_ImageInformation &info,
SimpleROI &roi,
std::complex< float > &c,
uint32_t &iterations,
uint32_t &count );
static bool getOverviewCount( const std::string &filename, uint32_t &count );
protected:
std::string mFilename;
FC_ImageInformation mInformation;
uint32_t mError;
SimpleROI mFractalROI;
FC_ImageROI mImageROI;
uint32_t mIterations;
std::complex< float > mCenter;
uint32_t mIndex;
bool failure( uint32_t errorCode );
bool success();
};
#endif