void UserPromptView::DrawContent(nux::GraphicsEngine& graphics_engine, bool force_draw) { nux::Geometry const& geo = GetGeometry(); graphics_engine.PushClippingRectangle(geo); if (!IsFullRedraw()) { bg_layer_.reset(CrateBackgroundLayer(geo.width, geo.height)); nux::GetPainter().PushLayer(graphics_engine, geo, bg_layer_.get()); } if (caps_lock_on_) { for (auto const& text_entry : focus_queue_) PaintWarningIcon(graphics_engine, text_entry->GetGeometry()); if (focus_queue_.empty()) PaintWarningIcon(graphics_engine, cached_focused_geo_); } if (GetLayout()) GetLayout()->ProcessDraw(graphics_engine, force_draw); if (!IsFullRedraw()) nux::GetPainter().PopBackground(); graphics_engine.PopClippingRectangle(); }
void UserPromptView::Draw(nux::GraphicsEngine& graphics_engine, bool /* force_draw */) { nux::Geometry const& geo = GetGeometry(); graphics_engine.PushClippingRectangle(geo); nux::GetPainter().PaintBackground(graphics_engine, geo); bg_layer_.reset(CrateBackgroundLayer(geo.width, geo.height)); nux::GetPainter().PushDrawLayer(graphics_engine, geo, bg_layer_.get()); nux::GetPainter().PopBackground(); graphics_engine.PopClippingRectangle(); }
void UserPromptView::EnsureBGLayer() { auto const& geo = GetGeometry(); if (bg_layer_) { auto const& layer_geo = bg_layer_->GetGeometry(); if (layer_geo.width == geo.width && layer_geo.height == geo.height) return; } bg_layer_.reset(CrateBackgroundLayer(geo.width, geo.height, scale)); }