#pragma once // FikoCamPencere — yeniden kullanılabilir "cam pencere" sınıfı: turkuaz neon glow // kromu + aeroglass yarı-saydam ızgara zemin + açık CATIA teması. CAD Fark // panelinin görünümü artık TÜM yeni pencereler için standart (kullanıcı isteği: // "pencereler böyle olacak, sarmalar kullanırız"). RAII: ctor Begin + tema + glow, // dtor End + tema geri. Kullanım: // { fiko::CamPencere p{"Başlık###id", &acik, {.boyut={360,0}}}; // if (p) { ... içerik ... } } // Tema/yazı boyutu/boşluk AyarSistemi'nden (fikoUiOlcek/fikoUiBosluk) global uygulanır. #include "fark_stil.hpp" // FikoUiAyar, uiStiliUygula, tema/glow/grid #include "imgui.h" namespace fiko { struct CamPencereAyar { ImVec2 boyut{360, 0}; // ilk boyut (FirstUseEver) ImVec2 asgari{300, 120}; // minimum boyut kısıtı ImGuiWindowFlags bayrak = ImGuiWindowFlags_NoCollapse; bool glow = true; // turkuaz neon kromu bool grid = true; // aeroglass ızgara zemin }; // RAII cam pencere. `operator bool` = pencere görünür (içeriği çiz). Dtor End() + tema geri. class CamPencere { public: CamPencere(const char* baslik, bool* acik, const CamPencereAyar& ayar = {}) { tema_ = farkstil::acikTemaBasla(); ImGui::SetNextWindowSize(ayar.boyut, ImGuiCond_FirstUseEver); ImGui::SetNextWindowSizeConstraints(ayar.asgari, {8000, 6000}); gorunur_ = ImGui::Begin(baslik, acik, ayar.bayrak); if (gorunur_) { if (ayar.glow) farkstil::turkuazGlowCiz(); if (ayar.grid) farkstil::aeroGridCiz(); } } ~CamPencere() { ImGui::End(); farkstil::acikTemaBitir(tema_); } CamPencere(const CamPencere&) = delete; CamPencere& operator=(const CamPencere&) = delete; explicit operator bool() const { return gorunur_; } private: int tema_ = 0; bool gorunur_ = false; }; } // namespace fiko