| 122 | } |
| 123 | |
| 124 | static void Render(Canvas& canvas, const FieldCell<Scal>& fcu, const M& m) { |
| 125 | const auto msize = m.GetGlobalSize(); |
| 126 | for (auto c : m.CellsM()) { |
| 127 | const MIdx w(c); |
| 128 | const MIdx start = w * canvas.size / msize; |
| 129 | const MIdx end = (w + MIdx(1)) * canvas.size / msize; |
| 130 | unsigned char qr = 255 * Clamp(fcu[c]); |
| 131 | unsigned char qg = 0; |
| 132 | unsigned char qb = 0; |
| 133 | uint32_t q = 0xff000000 | (qr << 0) | (qg << 8) | (qb << 16); |
| 134 | for (int y = start[1]; y < end[1]; y++) { |
| 135 | for (int x = start[0]; x < end[0]; x++) { |
| 136 | canvas.buf[canvas.size[0] * (canvas.size[1] - y - 1) + x] = q; |
| 137 | } |
| 138 | } |
| 139 | } |
| 140 | } |
| 141 | |
| 142 | void Solver::Run() { |
| 143 | auto sem = m.GetSem(); |
no test coverage detected