00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #pragma once
00030
00031 #include <iosfwd>
00032 #include <iostream>
00033
00034 class CL_Rect;
00035 class CL_Rectf;
00036 class CL_Rectd;
00037 class CL_Point;
00038 class CL_Pointf;
00039 class CL_Pointd;
00040 class CL_Size;
00041 class CL_Sizef;
00042 class CL_Sized;
00043
00044 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Rect& rect);
00045 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Rectf& rect);
00046 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Rectd& rect);
00047 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Point& point);
00048 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Pointf& point);
00049 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Pointd& point);
00050 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Size& size);
00051 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Sizef& size);
00052
00053 template<typename T>
00054 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Vec1<T>& vec)
00055 {
00056 s << vec.x;
00057 return s;
00058 }
00059
00060 template<typename T>
00061 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Vec2<T>& vec)
00062 {
00063 s << "["
00064 << vec.x << ", "
00065 << vec.y << "]";
00066 return s;
00067 }
00068
00069 template<typename T>
00070 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Vec3<T>& vec)
00071 {
00072 s << "["
00073 << vec.x << ", "
00074 << vec.y << ", "
00075 << vec.z << "]";
00076 return s;
00077 }
00078
00079 template<typename T>
00080 CL_API_CORE std::ostream& operator<<(std::ostream& s, const CL_Vec4<T>& vec)
00081 {
00082 s << "["
00083 << vec.x << ", "
00084 << vec.y << ", "
00085 << vec.z << ", "
00086 << vec.w << "]";
00087 return s;
00088 }
00089