void IndexedPickerScene::render(Graphic& dst, Box srcbox, double scale) { if ((nativeBuffer_.w() != srcbox.w()) || (nativeBuffer_.h() != srcbox.h())) { nativeBuffer_ = Graphic(srcbox.w(), srcbox.h()); } renderNative(nativeBuffer_, srcbox); int scaledW = srcbox.w() * sceneScale_; int scaledH = srcbox.h() * sceneScale_; nativeBuffer_.scale(dst, Box(0, 0, scaledW, scaledH)); if (gridLayerEnabled_) { gridLayer_.render(dst, Box(srcbox.x(), srcbox.y(), scaledW, scaledH), sceneScale_); } if ((highlightedSelectableBoxEnabled_)) { dst.drawRectBorder(selectableIndexToDrawX(highlightedSelectableIndex_), selectableIndexToDrawY(highlightedSelectableIndex_), selectableWidth_ * sceneScale_, selectableHeight_ * sceneScale_, Color(0xFF, 0x00, 0x00, Color::fullAlphaOpacity), 2); } if ((pickedSelectableBoxEnabled_)) { dst.drawRectBorder(selectableIndexToDrawX(pickedSelectableIndex_), selectableIndexToDrawY(pickedSelectableIndex_), selectableWidth_ * sceneScale_, selectableHeight_ * sceneScale_, Color(0xFF, 0xFF, 0x00, Color::fullAlphaOpacity), 2); } }
void VisualMetatilePickerScene::renderNative(Graphic& dst, Box srcbox) { dst.clear(Color(255, 255, 255, Color::fullAlphaOpacity)); if ((tiles_ == NULL) || (metatiles_ == NULL)) { return; } for (int i = 0; i < metatiles_->numMetatileMappings(); i++) { MetatileStructure& metatile = metatiles_->metatileMapping(i); int drawX = selectableIndexToDrawX(i); int drawY = selectableIndexToDrawY(i); TileRenderer::renderMetatile(dst, Box(drawX, drawY, MetatileStructure::metatileWidth, MetatileStructure::metatileHeight), metatile, *tiles_, *palette0_, *palette1_, tileOffset_); } }