Пример #1
0
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_);
  }
}