KWStyle - itkImageAdaptor.txx
 
Matrix View
Description

1 /*=========================================================================
2
3   Program:   Insight Segmentation & Registration Toolkit
4   Module:    $RCSfile: itkImageAdaptor.txx.html,v $
5   Language:  C++
6   Date:      $Date: 2006/01/17 19:15:36 $
7   Version:   $Revision: 1.4 $
8
9   Copyright (c) Insight Software Consortium. All rights reserved.
10   See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11
12      This software is distributed WITHOUT ANY WARRANTY; without even 
13      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14      PURPOSE.  See the above copyright notices for more information.
15
16 =========================================================================*/
17 DEF #ifndef _itkImageAdaptor_txx
18 DEF #define _itkImageAdaptor_txx
19 #include "itkImageAdaptor.h"
20 #include "itkProcessObject.h"
21
22 namespace itk
23 {
24
25 /**
26  * Constructor
27  */
28 template <class TImage, class TAccessor >
29 ImageAdaptor<TImage , TAccessor>
30 ::ImageAdaptor()
31 {
32   // Allocate an internal image.  A process object might try to allocate an
33   // temporary image that is the same type as its input or output.  If that
34   // image type is an adaptor, we need to make sure that an internal image is
35   // available because the process object will not know to call SetImage on
36   // the adaptor.
37   m_Image = TImage::New();
38 }
39
40
41 /**
42  * Destructor
43  */
44 template <class TImage, class TAccessor >
45 ImageAdaptor<TImage , TAccessor>
46 ::~ImageAdaptor()
47 {
48 }
49
50
51 EML
52 EML
53 //----------------------------------------------------------------------------
54 template <class TImage, class TAccessor >
55 void 
56 ImageAdaptor<TImage , TAccessor>
57 ::Allocate()
58 {
59   m_Image->Allocate();
60 }
61
62
63 //----------------------------------------------------------------------------
64 template <class TImage, class TAccessor >
65 void 
66 ImageAdaptor<TImage , TAccessor>
67 ::Initialize()
68 {
69   // call the superclass' method first; then delegate
70   Superclass::Initialize();
71
72   // delegation to internal image
73   m_Image->Initialize();
74 }
75
76
77 template <class TImage, class TAccessor >
78 void 
79 ImageAdaptor<TImage , TAccessor>
80 ::SetPixelContainer(PixelContainer *container)
81 {
82   if (this->GetPixelContainer() != container)
83     {
84     m_Image->SetPixelContainer( container );
85     this->Modified();
86     }
87 }
88
89
90 //----------------------------------------------------------------------------
91 template<class TImage, class TAccessor>
92 void 
93 ImageAdaptor<TImage, TAccessor>
94 ::Graft(const DataObject *data)
95 {
96   // call the superclass' implementation
97   Superclass::Graft( data );
98
99   if ( data )
100     {
101     // Attempt to cast data to an ImageAdaptor
102     const Self *imgData;
103
104     try
105       {
106       imgData = dynamic_cast<const Self *>(data);
107       }
108     catch( ... )
109       {
110       return;
111       }
112
113
114     if( imgData )
115       {
116       // Now copy anything remaining that is needed
117       this->SetPixelContainer(
118         const_cast<Self *>(imgData)->GetPixelContainer() );
119       }
120     else
121       {
122       // pointer could not be cast back down
123       itkExceptionMacro( << "itk::ImageAdaptor::Graft() cannot cast "
124                          << typeid(data).name() << " to "
125                          << typeid(const Self *).name() );
126       }
127     }
128 }
129
130
131 /**
132  *
133  */
134 template <class TImage, class TAccessor >
135 void 
136 ImageAdaptor<TImage , TAccessor>
137 ::PrintSelf(std::ostream& os, Indent indent) const
138 {
139   Superclass::PrintSelf(os,indent);
140 }
141
142
143 //----------------------------------------------------------------------------
144 template <class TImage, class TAccessor >
145 const typename ImageAdaptor<TImage, TAccessor>::OffsetValueType * 
146 ImageAdaptor<TImage , TAccessor>
147 ::GetOffsetTable( void ) const
148 {
149   return m_Image->GetOffsetTable();
150 }
151
152
153 //----------------------------------------------------------------------------
154 template <class TImage, class TAccessor >
155 typename ImageAdaptor<TImage, TAccessor>::IndexType
156 ImageAdaptor<TImage , TAccessor>
157 ::ComputeIndex( OffsetValueType offset ) const
158 {
159   return m_Image->ComputeIndex( offset );
160 }
161
162
163 EML
164 EML
165 EML
166 //----------------------------------------------------------------------------
167 template <class TImage, class TAccessor >
168 void 
169 ImageAdaptor<TImage , TAccessor>
170 ::Update()
171 {
172   Superclass::Update();
173
174   m_Image->Update();
175 }
176
177
178 EML
179 //----------------------------------------------------------------------------
180 template <class TImage, class TAccessor >
181 void 
182 ImageAdaptor<TImage , TAccessor>
183 ::UpdateOutputInformation()
184 {
185   // call the superclass' method first, then delegate
186   Superclass::UpdateOutputInformation();
187
188   // delegation to internal image
189   m_Image->UpdateOutputInformation();
190 }
191
192
193 EML
194 //----------------------------------------------------------------------------
195 template <class TImage, class TAccessor >
196 void 
197 ImageAdaptor<TImage , TAccessor>
198 ::UpdateOutputData()
199 {
200   // call the superclass' method first, then delegate
201   Superclass::UpdateOutputData();
202
203   // delegation to internal image
204   m_Image->UpdateOutputData();
205   SetBufferedRegion( m_Image->GetBufferedRegion() ); 
206 }
207
208
209 EML
210 EML
211 //----------------------------------------------------------------------------
212 template <class TImage, class TAccessor >
213 void 
214 ImageAdaptor<TImage , TAccessor>
215 ::PropagateRequestedRegion() throw (InvalidRequestedRegionError)
216 {
217   // call the superclass' method first, then delegate
218   Superclass::PropagateRequestedRegion();
219
220   // delegation to internal image
221   m_Image->PropagateRequestedRegion();
222 }
223
224
225 EML
226 EML
227 EML
228 EML
229 //----------------------------------------------------------------------------
230 template <class TImage, class TAccessor >
231 void 
232 ImageAdaptor<TImage , TAccessor>
233 ::SetRequestedRegionToLargestPossibleRegion()
234 {
235   // call the superclass' method first, then delegate
236   Superclass::SetRequestedRegionToLargestPossibleRegion();
237
238   // delegation to internal image
239   m_Image->SetRequestedRegionToLargestPossibleRegion();
240 }
241
242
243 EML
244 EML
245 //----------------------------------------------------------------------------
246 template <class TImage, class TAccessor >
247 void 
248 ImageAdaptor<TImage , TAccessor>
249 ::CopyInformation(const DataObject *data)
250 {
251   // call the superclass' method first, then delegate
252   Superclass::CopyInformation( data );
253
254   // delegation to internal image
255   m_Image->CopyInformation( data );
256 }
257
258
259 //----------------------------------------------------------------------------
260 template <class TImage, class TAccessor >
261 const typename ImageAdaptor<TImage, TAccessor>::SpacingType&
262 ImageAdaptor<TImage , TAccessor>
263 ::GetSpacing( void ) const
264 {
265   return m_Image->GetSpacing();
266 }
267
268
269 //----------------------------------------------------------------------------
270 template <class TImage, class TAccessor >
271 void 
272 ImageAdaptor<TImage , TAccessor>
273 ::SetSpacing(const SpacingType spacing )
274 {
275   // delegation to internal image
276   m_Image->SetSpacing( spacing );
277 }
278
279 //----------------------------------------------------------------------------
280 template <class TImage, class TAccessor >
281 void 
282 ImageAdaptor<TImage , TAccessor>
283 ::SetSpacing(const double* spacing /*[Self::ImageDimension]*/ )
284 {
285   // delegation to internal image
286   m_Image->SetSpacing( spacing );
287 }
288
289 //----------------------------------------------------------------------------
290 template <class TImage, class TAccessor >
291 void 
292 ImageAdaptor<TImage , TAccessor>
293 ::SetSpacing(const float* spacing /*[Self::ImageDimension]*/ )
294 {
295   // delegation to internal image
296   m_Image->SetSpacing( spacing );
297 }
298
299
300 //----------------------------------------------------------------------------
301 template <class TImage, class TAccessor >
302 void 
303 ImageAdaptor<TImage , TAccessor>
304 ::SetOrigin(const PointType origin )
305 {
306   // delegation to internal image
307   m_Image->SetOrigin( origin );
308 }
309
310
311 //----------------------------------------------------------------------------
312 template <class TImage, class TAccessor >
313 void 
314 ImageAdaptor<TImage , TAccessor>
315 ::SetOrigin(const double* origin /*[Self::ImageDimension]*/ )
316 {
317   // delegation to internal image
318   m_Image->SetOrigin( origin );
319 }
320
321
322 //----------------------------------------------------------------------------
323 template <class TImage, class TAccessor >
324 void 
325 ImageAdaptor<TImage , TAccessor>
326 ::SetOrigin(const float* origin /*[Self::ImageDimension]*/ )
327 {
328   // delegation to internal image
329   m_Image->SetOrigin( origin );
330 }
331
332
333 //----------------------------------------------------------------------------
334 template <class TImage, class TAccessor >
335 const typename ImageAdaptor<TImage, TAccessor>::PointType& 
336 ImageAdaptor<TImage , TAccessor>
337 ::GetOrigin( void ) const
338 {
339   return m_Image->GetOrigin();
340 }
341
342
343 //----------------------------------------------------------------------------
344 template <class TImage, class TAccessor >
345 void 
346 ImageAdaptor<TImage , TAccessor>
347 ::SetImage( TImage * image )
348 {
349   m_Image = image;
350   Superclass::SetLargestPossibleRegion( m_Image->GetLargestPossibleRegion() );
351   Superclass::SetBufferedRegion( m_Image->GetBufferedRegion() );
352   Superclass::SetRequestedRegion( m_Image->GetRequestedRegion() );
353 }
354
355
356 EML
357 EML
358 //----------------------------------------------------------------------------
359 template <class TImage, class TAccessor >
360 const typename ImageAdaptor<TImage , TAccessor>::InternalPixelType  * 
361 ImageAdaptor<TImage , TAccessor>
362 ::GetBufferPointer() const
363 {
364   return m_Image->GetBufferPointer();
365 }
366
367
368 EML
369 EML
370 //----------------------------------------------------------------------------
371 template <class TImage, class TAccessor >
372 typename ImageAdaptor<TImage , TAccessor>::InternalPixelType  * 
373 ImageAdaptor<TImage , TAccessor>
374 ::GetBufferPointer()
375 {
376   return m_Image->GetBufferPointer();
377 }
378
379
380 EML
381 //----------------------------------------------------------------------------
382 template <class TImage, class TAccessor >
383 void
384 ImageAdaptor<TImage , TAccessor>
385 ::Modified() const
386 {
387   Superclass::Modified();
388   
389   m_Image->Modified();
390 }
391
392
393 EML
394 //----------------------------------------------------------------------------
395 template <class TImage, class TAccessor >
396 unsigned long
397 ImageAdaptor<TImage , TAccessor>
398 ::GetMTime() const
399 {
400   unsigned long mtime1, mtime2;
401
402   mtime1 = Superclass::GetMTime();
403   mtime2 = m_Image->GetMTime();
404   
405   return (mtime1 >= mtime2 ? mtime1 : mtime2);
406 }
407
408
409 EML
410 EML
411 //----------------------------------------------------------------------------
412 template <class TImage, class TAccessor >
413 void
414 ImageAdaptor<TImage , TAccessor>
415 ::SetBufferedRegion(const RegionType ®ion)
416 {
417   // call the superclass' method first, then delegate
418   Superclass::SetBufferedRegion( region );
419
420   // delegation to internal image
421   m_Image->SetBufferedRegion( region );
422 }
423
424
425 //----------------------------------------------------------------------------
426 template <class TImage, class TAccessor >
427 const typename ImageAdaptor<TImage, TAccessor>::RegionType &
428 ImageAdaptor<TImage , TAccessor>
429 ::GetBufferedRegion( void ) const
430 {
431   // delegation to internal image
432   return m_Image->GetBufferedRegion();
433 }
434
435
436 EML
437 EML
438 //----------------------------------------------------------------------------
439 template <class TImage, class TAccessor >
440 void
441 ImageAdaptor<TImage , TAccessor>
442 ::SetLargestPossibleRegion(const RegionType ®ion)
443 {
444   // call the superclass' method first, then delegate
445   Superclass::SetLargestPossibleRegion( region );
446
447   // delegation to internal image
448   m_Image->SetLargestPossibleRegion( region );
449 }
450
451
452 //----------------------------------------------------------------------------
453 template <class TImage, class TAccessor >
454 const typename ImageAdaptor<TImage, TAccessor>::RegionType &
455 ImageAdaptor<TImage , TAccessor>
456 ::GetLargestPossibleRegion( void ) const
457 {
458   // delegation to internal image
459   return m_Image->GetLargestPossibleRegion();
460 }
461
462
463 EML
464 //----------------------------------------------------------------------------
465 template <class TImage, class TAccessor >
466 void
467 ImageAdaptor<TImage , TAccessor>
468 ::SetRequestedRegion(const RegionType ®ion)
469 {
470   // call the superclass' method first, then delegate
471   Superclass::SetRequestedRegion( region );
472
473   // delegation to internal image
474   m_Image->SetRequestedRegion( region );
475 }
476
477
478 //----------------------------------------------------------------------------
479 template<class TImage, class TAccessor>
480 void 
481 ImageAdaptor<TImage, TAccessor>
482 ::SetRequestedRegion(DataObject *data)
483 {
484   // call the superclass' method first, then delegate
485   Superclass::SetRequestedRegion( data );
486
487   // delegation to internal image
488   m_Image->SetRequestedRegion( data );
489 }
490
491 //----------------------------------------------------------------------------
492 template<class TImage, class TAccessor>
493 bool 
494 ImageAdaptor<TImage, TAccessor>
495 ::VerifyRequestedRegion()
496 {
497   // call the superclass' method first, then delegate
498   Superclass::VerifyRequestedRegion();
499
500   // delegation to internal image
501   return m_Image->VerifyRequestedRegion();
502 }
503
504 //----------------------------------------------------------------------------
505 template <class TImage, class TAccessor >
506 const typename ImageAdaptor<TImage, TAccessor>::RegionType &
507 ImageAdaptor<TImage , TAccessor>
508 ::GetRequestedRegion( void ) const
509 {
510   // delegation to internal image
511   return m_Image->GetRequestedRegion();
512 }
513
514
515 EML
516 EML
517 // end namespace itk
518
519
520 EML
521 #endif
522

Generated by KWStyle 1.0b on Tuesday January,17 at 02:14:13PM
© Kitware Inc.