| 179 | } |
| 180 | |
| 181 | std::uint64_t PackMeta(const CursorShapeInfo &info, bool valid) { |
| 182 | std::uint64_t meta = valid ? 1ull : 0ull; |
| 183 | meta |= (info.visible ? 1ull : 0ull) << 1; |
| 184 | meta |= (static_cast<std::uint64_t>(info.width) & 0xFFFFull) << 2; |
| 185 | meta |= (static_cast<std::uint64_t>(info.height) & 0xFFFFull) << 18; |
| 186 | meta |= (static_cast<std::uint64_t>(info.hot_x) & 0x7FFFull) << 34; |
| 187 | meta |= (static_cast<std::uint64_t>(info.hot_y) & 0x7FFFull) << 49; |
| 188 | return meta; |
| 189 | } |
| 190 | |
| 191 | bool UnpackMeta(std::uint64_t meta, std::uint64_t hash, CursorShapeInfo &info) { |
| 192 | if ((meta & 1ull) == 0) |