| 247 | } |
| 248 | |
| 249 | void TileManager::setCoverage(unsigned int level, int tile_x, int tile_y, unsigned char covers) { |
| 250 | _coverage[level][tile_x][tile_y] = covers; |
| 251 | if (_coverageMaps.empty()) { |
| 252 | _coverageMaps.resize(_lastRenderLevel + 1); |
| 253 | } |
| 254 | if (level != _lastRenderLevel) { |
| 255 | if (covers == 2 || covers == 0) { |
| 256 | float rectSize = _tileSize / (_levelDownsamples[_lastRenderLevel] / _levelDownsamples[level]); |
| 257 | QPainterPath rect; |
| 258 | rect.addRect(QRectF(tile_x * rectSize - 1, tile_y * rectSize - 1, rectSize + 1, rectSize + 1)); |
| 259 | if (covers == 2) { |
| 260 | _coverageMaps[level] = _coverageMaps[level].united(rect); |
| 261 | } |
| 262 | else if (covers == 0) { |
| 263 | if (_coverageMapCacheMode) { |
| 264 | _coverageMaps[level] = _coverageMaps[level].subtracted(rect); |
| 265 | } |
| 266 | } |
| 267 | } |
| 268 | } |
| 269 | emit coverageUpdated(); |
| 270 | } |
| 271 | |
| 272 | std::vector<QPainterPath> TileManager::getCoverageMaps() { |
| 273 | return _coverageMaps; |