| 106 | |
| 107 | template <typename ColorSpace> |
| 108 | void Image<ColorSpace>::insertHorizontal(int x, Image<ColorSpace>& source) |
| 109 | { |
| 110 | int copyX = ((x + source.width()) > width()) ? width() - x : source.width(); |
| 111 | int copyY = std::min(source.height(), height()); |
| 112 | uint8_t* dest = rawMem() + sizeof(ColorSpace) * x; |
| 113 | uint8_t* src = source.rawMem(); |
| 114 | auto destRowSize = sizeof(ColorSpace) * width(); |
| 115 | auto srcRowSize = sizeof(ColorSpace) * source.width(); |
| 116 | |
| 117 | for (int y = 0; y < copyY; y++) |
| 118 | { |
| 119 | memcpy(dest, src, copyX * sizeof(ColorSpace)); |
| 120 | dest += destRowSize; |
| 121 | src += srcRowSize; |
| 122 | } |
| 123 | } |
| 124 | |
| 125 | template <typename ColorSpace> |
| 126 | unsigned Image<ColorSpace>::width() const |