---
name: docking_layout
kind: component
lang: cpp
domain: core
version: "1.0.0"
purity: pure
signature: "ImGuiID docking_layout(DockPreset preset = DockPreset::Default)"
description: "Configura un docking space con presets de layout predefinidos para dashboards"
tags: [imgui, docking, layout, dashboard, pendiente-usar]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: [imgui]
tested: false
tests: []
test_file_path: ""
file_path: "cpp/functions/core/docking_layout.cpp"
framework: imgui
params:
  - name: preset
    desc: "Layout predefinido a aplicar (Default, TwoColumns, ThreeColumns, SidebarLeft, SidebarRight, TopBottom, Dashboard)"
output: "ID del dockspace creado, usable con ImGui::SetNextWindowDockID"
---

# docking_layout

Configura un docking space fullscreen sobre el viewport principal con presets de layout predefinidos.

Usa `DockSpaceOverViewport` para crear el dockspace y, en el primer frame, aplica el preset con `DockBuilderSplitNode`. Llamar una vez al inicio de cada frame, antes de renderizar las ventanas hijas.

## Presets disponibles

| Preset | Layout |
|---|---|
| Default | Dockspace completo sin divisiones |
| TwoColumns | Izquierda 60% / Derecha 40% |
| ThreeColumns | Tres columnas iguales ~33% |
| SidebarLeft | Sidebar 25% / Main 75% |
| SidebarRight | Main 75% / Sidebar 25% |
| TopBottom | Arriba 60% / Abajo 40% |
| Dashboard | Grid 2x2 de cuatro paneles |

## Ejemplo

```cpp
void render_fn() {
    ImGuiID dock = docking_layout(DockPreset::SidebarLeft);

    ImGui::Begin("Filters");
    // controles del sidebar
    ImGui::End();

    ImGui::Begin("Main");
    // contenido principal
    ImGui::End();
}
```

## Notas

Requiere que `ImGuiConfigFlags_DockingEnable` este activo en `ImGui::GetIO().ConfigFlags` (habilitado por `app_base.cpp`). El preset se aplica solo en el primer frame (static bool). `imgui_internal.h` es necesario para `DockBuilder*`.
