MCPcopy Create free account
hub / github.com/OpenApoc/OpenApoc / render

Method render

forms/control.cpp:363–403  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

361}
362
363void Control::render()
364{
365 if (!Visible || Size.x == 0 || Size.y == 0)
366 {
367 return;
368 }
369
370 if (controlArea == nullptr || controlArea->size != Vec2<unsigned int>(Size))
371 {
372 this->dirty = true;
373 controlArea.reset(new Surface{Vec2<unsigned int>(Size)});
374 }
375 if (this->dirty)
376 {
377 sp<Palette> previousPalette;
378 if (this->palette)
379 {
380 previousPalette = fw().renderer->getPalette();
381 fw().renderer->setPalette(this->palette);
382 }
383
384 RendererSurfaceBinding b(*fw().renderer, controlArea);
385 onRender();
386 postRender();
387 if (this->palette)
388 {
389 fw().renderer->setPalette(previousPalette);
390 }
391 }
392
393 this->dirty = false;
394
395 if (Enabled)
396 {
397 fw().renderer->draw(controlArea, Location);
398 }
399 else
400 {
401 fw().renderer->drawTinted(controlArea, Location, Colour(255, 255, 255, 128));
402 }
403}
404
405/**
406 * Used if controls require computations before rendering.

Callers 1

postRenderMethod · 0.45

Calls 6

ColourClass · 0.85
resetMethod · 0.45
getPaletteMethod · 0.45
setPaletteMethod · 0.45
drawMethod · 0.45
drawTintedMethod · 0.45

Tested by

no test coverage detected