contrib/mul/vimt/vimt_image.cxx
Go to the documentation of this file.
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 }