offset.cc
Go to the documentation of this file.
00001 /* offset.cc
00002  */
00003 #include "osl/offset.h"
00004 #include <iostream>
00005 
00006 #define OFFSET_INDEX(dx,dy) ((dx*BOARD_HEIGHT + dy) - OFFSET_MIN)
00007 
00012 int osl::Offset::dx() const
00013 {
00014   switch (index())
00015   {
00016   case OFFSET_INDEX(-1,-2): return -1;
00017   case OFFSET_INDEX(1,-2): return 1;
00018   case OFFSET_INDEX(-1,-1): return -1;
00019   case OFFSET_INDEX(0,-1): return 0;
00020   case OFFSET_INDEX(1,-1): return 1;
00021   case OFFSET_INDEX(-1,0): return -1;
00022   case OFFSET_INDEX(1,0): return 1;
00023   case OFFSET_INDEX(-1,1): return -1;
00024   case OFFSET_INDEX(0,1): return 0;
00025   case OFFSET_INDEX(1,1): return 1;
00026   case OFFSET_INDEX(-1,2): return -1;
00027   case OFFSET_INDEX(1,2): return 1;
00028   default: 
00029     std::cerr << index() << " " << ZERO().index() << "\n";
00030     assert(0);
00031   }
00032   return 0;
00033 }
00034 
00039 int osl::Offset::dy() const
00040 {
00041   switch (index())
00042   {
00043   case OFFSET_INDEX(-1,-2): return -2;
00044   case OFFSET_INDEX(1,-2): return -2;
00045   case OFFSET_INDEX(-1,-1): return -1;
00046   case OFFSET_INDEX(0,-1): return -1;
00047   case OFFSET_INDEX(1,-1): return -1;
00048   case OFFSET_INDEX(-1,0): return 0;
00049   case OFFSET_INDEX(1,0): return 0;
00050   case OFFSET_INDEX(-1,1): return 1;
00051   case OFFSET_INDEX(0,1): return 1;
00052   case OFFSET_INDEX(1,1): return 1;
00053   case OFFSET_INDEX(-1,2): return 2;
00054   case OFFSET_INDEX(1,2): return 2;
00055   default: assert(0);
00056   }
00057   return 0;
00058 }
00059 
00060 #ifndef MINIMAL
00061 std::ostream& osl::operator<<(std::ostream& os, Offset offset)
00062 {
00063   return os << "offset(" << offset.intValue() << ')';
00064 }
00065 #endif
00066 /* ------------------------------------------------------------------------- */
00067 // ;;; Local Variables:
00068 // ;;; mode:c++
00069 // ;;; c-basic-offset:2
00070 // ;;; End:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines