34 static ossimTrace traceExec (
"ossimRgbGridRemapEngine:exec");
35 static ossimTrace traceDebug (
"ossimRgbGridRemapEngine:debug");
54 static const char MODULE[] =
"ossimRgbGridRemapEngine::remapTile";
55 if (traceExec())
CLOG <<
"entering..." << endl;
87 short pixel_buffer[3];
89 for (
double line=origin.
line; line<origin.
line+height; line+=1.0)
91 for (
double samp=origin.
samp; samp<origin.
samp+width; samp+=1.0)
103 pixel_buffer[0] = red_buf[offset] + (short) gridR(samp,line);
104 pixel_buffer[1] = grn_buf[offset] + (short) gridG(samp,line);
105 pixel_buffer[2] = blu_buf[offset] + (short) gridB(samp,line);
110 if (pixel_buffer[0]<0) red_buf[offset] = 0;
111 else if (pixel_buffer[0]>255) red_buf[offset] = 255;
112 else red_buf[offset] = pixel_buffer[0];
115 if (pixel_buffer[1]<0) grn_buf[offset] = 0;
116 else if (pixel_buffer[1]>255) grn_buf[offset] = 255;
117 else grn_buf[offset] = pixel_buffer[1];
120 if (pixel_buffer[2]<0) blu_buf[offset] = 0;
121 else if (pixel_buffer[2]>255) blu_buf[offset] = 255;
122 else blu_buf[offset] = pixel_buffer[2];
127 if (red_buf[offset] == (
ossim_uint8) null[0]) red_buf[offset]++;
128 if (grn_buf[offset] == (
ossim_uint8) null[1]) grn_buf[offset]++;
129 if (blu_buf[offset] == (
ossim_uint8) null[2]) blu_buf[offset]++;
146 if (traceExec())
CLOG <<
"returning..." << endl;
158 vector<ossimAtbPointSource*>& sources_list)
160 static const char MODULE[] =
"ossimRgbGridRemapEngine::assignRemapValues";
161 if (traceExec())
CLOG <<
"entering..." << endl;
169 int num_contributors = (int)sources_list.size();
170 double** contributor_pixel =
new double* [num_contributors];
171 for (i=0; i<num_contributors; i++)
172 contributor_pixel[i] =
new double[3];
173 double target_pixel[3] = {0.0, 0.0, 0.0};
178 vector<ossimAtbPointSource*>::iterator source;
180 for(source=sources_list.begin();
181 source!=sources_list.end();
184 (*source)->getSourceValue(contributor_pixel[i]);
186 target_pixel[0] += contributor_pixel[i][0]/(double)num_contributors;
187 target_pixel[1] += contributor_pixel[i][1]/(double)num_contributors;
188 target_pixel[2] += contributor_pixel[i][2]/(double)num_contributors;
198 for(source=sources_list.begin();
199 source!=sources_list.end();
209 for (i=0; i<num_contributors; i++)
210 delete [] contributor_pixel[i];
211 delete [] contributor_pixel;
213 if (traceExec())
CLOG <<
"returning..." << endl;
224 static const char MODULE[]=
"ossimRgbGridRemapEngine::computeSourceValue";
225 if (traceExec())
CLOG <<
"entering..." << endl;
235 if (traceExec())
CLOG <<
"returning..." << endl;
250 static const char MODULE[] =
"ossimRgbGridRemapEngine::computeRemapNode";
251 if (traceExec())
CLOG <<
"entering..." << endl;
257 node[0] = ((
double*)target_value)[0] - ((
double*)source_value)[0];
258 node[1] = ((
double*)target_value)[1] - ((
double*)source_value)[1];
259 node[2] = ((
double*)target_value)[2] - ((
double*)source_value)[2];
268 if (traceExec())
CLOG <<
"returning..." << endl;
RTTI_DEF1(ossimRgbGridRemapEngine, "ossimRgbGridRemapEngine", ossimGridRemapEngine)
virtual ossim_uint32 getWidth() const
virtual void computeRemapNode(ossimAtbPointSource *point_source, void *source_value, void *target_value)
virtual ossim_uint32 getHeight() const
ossimRgbGridRemapEngine()
const ossimDpt & getViewPoint() const
virtual void assignRemapValues(std::vector< ossimAtbPointSource *> &sources)
virtual void computeSourceValue(ossimRefPtr< ossimImageData > &source, void *result)
ossimGridRemapSource * getRemapSource()
virtual void remapTile(const ossimDpt &origin_point, ossimGridRemapSource *remapper, ossimRefPtr< ossimImageData > &tile)
virtual const ossim_float64 * getNullPix() const
void setGridNode(const ossimDpt &view_pt, const double *value)
ossimDblGrid * getGrid(unsigned int index)
virtual ossim_float64 computeAverageBandValue(ossim_uint32 bandNumber=0) const
This will compute the average value for the band.
virtual ossimScalarType getScalarType() const
virtual ossimObject * dup() const
virtual const void * getBuf() const
unsigned char ossim_uint8
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)