#pragma once #include #include #include #include #include #include using namespace Eigen; typedef Vector WorldVec; enum DrawComponentType : uint8_t { DRAWCOMPONENT_BRUSHSTROKE = 0, DRAWCOMPONENT_RECTANGLE, DRAWCOMPONENT_ELLIPSE, DRAWCOMPONENT_TEXTBOX, DRAWCOMPONENT_IMAGE }; typedef uint64_t ClientPortionID; typedef uint64_t ServerPortionID; typedef std::pair ServerClientID; template <> struct std::hash { size_t operator()(const ServerClientID& v) const { uint64_t h = 0; hash_combine(h, v.first, v.second); return h; } }; template std::ostream& operator<<(std::ostream& os, const std::pair& p) { os << p.first << ", " << p.second; return os; }