| 151 | } |
| 152 | |
| 153 | void TileManager::onTileLoaded(QPixmap* tile, unsigned int tileX, unsigned int tileY, unsigned int tileSize, unsigned int tileByteSize, unsigned int tileLevel, ImageSource* foregroundTile, QPixmap* foregroundPixmap) { |
| 154 | if (tile) { |
| 155 | WSITileGraphicsItem* item = new WSITileGraphicsItem(tile, tileX, tileY, tileSize, tileByteSize, tileLevel, _lastRenderLevel, _levelDownsamples, this, foregroundPixmap, foregroundTile, _foregroundOpacity, _renderForeground); |
| 156 | std::stringstream ss; |
| 157 | ss << tileX << "_" << tileY << "_" << tileLevel; |
| 158 | std::string key; |
| 159 | ss >> key; |
| 160 | if (_scene) { |
| 161 | setCoverage(tileLevel, tileX, tileY, 2); |
| 162 | float tileDownsample = _levelDownsamples[tileLevel]; |
| 163 | float maxDownsample = _levelDownsamples[_lastRenderLevel]; |
| 164 | float posX = (tileX * tileDownsample * tileSize) / maxDownsample + ((tileSize * tileDownsample) / (2 * maxDownsample)); |
| 165 | float posY = (tileY * tileDownsample * tileSize) / maxDownsample + ((tileSize * tileDownsample) / (2 * maxDownsample)); |
| 166 | _scene->addItem(item); |
| 167 | item->setPos(posX, posY); |
| 168 | item->setZValue(1. / ((float)tileLevel + 1.)); |
| 169 | } |
| 170 | if (_cache) { |
| 171 | _cache->set(key, item, tileByteSize, tileLevel == _lastRenderLevel); |
| 172 | } |
| 173 | } |
| 174 | else { |
| 175 | setCoverage(tileLevel, tileX, tileY, 0); |
| 176 | } |
| 177 | } |
| 178 | |
| 179 | void TileManager::onTileRemoved(WSITileGraphicsItem* tile) { |
| 180 | _scene->removeItem(tile); |