00001 // This is mul/vimt/vimt_image.cxx 00002 #ifdef VCL_NEEDS_PRAGMA_INTERFACE 00003 #pragma implementation 00004 #endif 00005 //: 00006 // \file 00007 00008 #include "vimt_image.h" 00009 #if VCL_CXX_HAS_HEADER_TYPEINFO 00010 # include <vcl_typeinfo.h> 00011 #endif 00012 #include <vsl/vsl_indent.h> 00013 #include <vsl/vsl_binary_loader.h> 00014 #include <vcl_iostream.h> 00015 00016 //======================================================================= 00017 00018 short vimt_image::version_no() const 00019 { 00020 return 1; 00021 } 00022 00023 //======================================================================= 00024 //: Shallow equality. 00025 // tests if the two images are the same type, have equal transforms, and point 00026 // to the same image data with equal step sizes, etc. 00027 bool vimt_image::operator==(const vimt_image &im) const 00028 { 00029 #if VCL_HAS_RTTI && VCL_CXX_HAS_HEADER_TYPEINFO 00030 if (typeid(*this) == typeid(im)) 00031 #else 00032 if (this->is_class(im.is_a())) 00033 #endif 00034 return equals(im); 00035 else 00036 return false; 00037 } 00038 00039 //======================================================================= 00040 00041 vcl_string vimt_image::is_a() const 00042 { 00043 static const vcl_string c_ = "vimt_image"; 00044 return c_; 00045 } 00046 00047 //======================================================================= 00048 00049 bool vimt_image::is_class(vcl_string const& s) const 00050 { 00051 return s==vimt_image::is_a(); 00052 } 00053 00054 00055 //======================================================================= 00056 00057 void vsl_b_write(vsl_b_ostream& bfs, const vimt_image& b) 00058 { 00059 b.b_write(bfs); 00060 } 00061 00062 //======================================================================= 00063 00064 void vsl_b_read(vsl_b_istream& bfs, vimt_image& b) 00065 { 00066 b.b_read(bfs); 00067 } 00068 00069 //======================================================================= 00070 00071 vcl_ostream& operator<<(vcl_ostream& os,const vimt_image& b) 00072 { 00073 os << b.is_a() << ":\n"; 00074 vsl_indent_inc(os); 00075 b.print_summary(os); 00076 vsl_indent_dec(os); 00077 return os; 00078 } 00079 00080 //======================================================================= 00081 00082 vcl_ostream& operator<<(vcl_ostream& os,const vimt_image* b) 00083 { 00084 if (b) 00085 return os << *b; 00086 else 00087 return os << "No vimt_image defined."; 00088 } 00089 00090 //: Print class to os 00091 void vsl_print_summary(vcl_ostream& os, const vimt_image& im) 00092 { 00093 im.print_summary(os); 00094 } 00095 00096 //======================================================================= 00097 00098 void vsl_add_to_binary_loader(const vimt_image& b) 00099 { 00100 vsl_binary_loader<vimt_image>::instance().add(b); 00101 }