#include "fiko/ui/galeri.hpp" #include #include #include #include "fiko/ui/agac_gorunum.hpp" #include "fiko/ui/animasyon.hpp" #include "fiko/ui/arac_cubugu.hpp" #include "fiko/ui/arac_halkasi.hpp" #include "fiko/ui/bilesen.hpp" #include "fiko/ui/bilesen_cad.hpp" #include "fiko/ui/bilesen_cadcam.hpp" #include "fiko/ui/bilesen_ek.hpp" #include "fiko/ui/efekt.hpp" #include "fiko/ui/hover_bilgi.hpp" #include "fiko/ui/isaret_menu.hpp" #include "fiko/ui/kesit_tarayici.hpp" #include "fiko/ui/pencere_util.hpp" #include "fiko/ui/radyal_menu.hpp" #include "fiko/ui/simge.hpp" #include "fiko/ui/tema.hpp" #include "fiko/ui/zaman_tarayici.hpp" #include "imgui.h" namespace fiko::ui { bool& galeriAcik() { static bool acik = false; return acik; } void galeriCiz() { bool& acik = galeriAcik(); if (!acik) return; const Tema& t = tema(); static bool auroraAcik = true; static bool anahtarA = true, anahtarB = false; static bool hedefAktif = false; static float vec3Demo[3] = {12.5f, 0.0f, -3.2f}; static float olcuDemo = 25.4f; static int aktifTip = 0; ImGui::SetNextWindowSize({560, 720}, ImGuiCond_FirstUseEver); static bool ustte = false; ustteTutSinif(ustte); if (!ImGui::Begin("✨ FikoUi Galerisi", &acik)) { ImGui::End(); return; } ustteTutDugmesi("fikoui_galeri", ustte); // Aurora zemin (pencere içi, içerik altına) if (auroraAcik) { const ImVec2 wMin = ImGui::GetWindowPos(); const ImVec2 wMax = {wMin.x + ImGui::GetWindowSize().x, wMin.y + ImGui::GetWindowSize().y}; Efektler::aurora(ImGui::GetWindowDrawList(), wMin, wMax, t.koyu ? 0.22f : 0.10f); } // ---- Üst şerit: marka + tema seçici ---- marka(1.25f); ImGui::SameLine(0, 16); ImGui::AlignTextToFramePadding(); ImGui::TextDisabled("Tema:"); for (int i = 0; i < temaSayisi(); ++i) { ImGui::SameLine(); const Tema& ti = temaAl(i); const bool secili = std::strcmp(ti.ad, t.ad) == 0; if (buton(ti.ad, {0, 0}, secili ? ButonTip::Birincil : ButonTip::Hayalet)) temaUygula(ti); } ImGui::SameLine(); anahtar("Aurora", &auroraAcik); ImGui::Spacing(); // ---- Butonlar ---- baslikSeridi("◈", "Butonlar"); if (buton("Birincil")) {} ImGui::SameLine(); if (buton("İkincil", {0, 0}, ButonTip::Ikincil)) {} ImGui::SameLine(); if (buton("Hayalet", {0, 0}, ButonTip::Hayalet)) {} ImGui::SameLine(); if (buton("Tehlike", {0, 0}, ButonTip::Tehlike)) {} const char* ikonlar[] = {"⚙", "✎", "⟳", "◉", "▣"}; for (int i = 0; i < 5; ++i) { if (i) ImGui::SameLine(); if (ikonButon(ikonlar[i], "İkon buton", i == aktifTip)) aktifTip = i; } ImGui::SameLine(0, 14); if (hedefButon("Sahneden Seç", hedefAktif)) hedefAktif = !hedefAktif; // ---- Durum bileşenleri ---- baslikSeridi("●", "Durum"); anahtar("Otomatik hesap", &anahtarA); ImGui::SameLine(0, 20); anahtar("Simülasyon", &anahtarB); durumLed(1); ImGui::SameLine(); ImGui::TextUnformatted("Çalışıyor"); ImGui::SameLine(0, 18); durumLed(2); ImGui::SameLine(); ImGui::TextUnformatted("Uyarı"); ImGui::SameLine(0, 18); durumLed(3); ImGui::SameLine(); ImGui::TextUnformatted("Hata"); ImGui::SameLine(0, 18); durumLed(0); ImGui::SameLine(); ImGui::TextUnformatted("Pasif"); rozet("BREP", t.vurgu); ImGui::SameLine(); rozet("CAM", t.vurgu2); ImGui::SameLine(); rozet("Hazır", t.basari); ImGui::SameLine(); rozet("Kirli", t.uyari); ImGui::SameLine(); rozet("Hatalı", t.hata); const float demoOran = 0.5f + 0.5f * std::sin(zaman() * 0.5f); char oranMetin[32]; std::snprintf(oranMetin, sizeof(oranMetin), "%%%d", (int)(demoOran * 100)); ilerleme(demoOran, oranMetin); // ---- CAD girdileri ---- baslikSeridi("⌖", "CAD Girdileri"); vektorGirdi3("Konum", vec3Demo); olcuGirdi("Çap", &olcuDemo, "mm", 0.05f, 180.0f); ImGui::SameLine(); olcuGirdi("Açı", &olcuDemo, "°", 0.5f, 160.0f); // ---- Kart ---- baslikSeridi("▦", "Kart"); kartBasla("galeri_kart"); ImGui::TextUnformatted("Operasyon: Cep Frezeleme"); ImGui::TextDisabled("Takım: D10 parmak freze · 12000 dev/dk"); ilerleme(0.72f, "%72", 260.0f); ImGui::SameLine(); rozet("2.5D", t.vurgu); kartBitir(); // ---- HUD + shader glow ---- baslikSeridi("⛶", "HUD & Shader Glow"); { const ImVec2 p = ImGui::GetCursorScreenPos(); const ImVec2 kMin{p.x + 4, p.y + 4}; const ImVec2 kMax{p.x + ImGui::GetContentRegionAvail().x - 8, p.y + 96}; ImGui::Dummy({kMax.x - p.x, 104}); ImDrawList* dl = ImGui::GetWindowDrawList(); dl->AddRectFilled(kMin, kMax, u32(t.panel, 0.6f), t.yuvarlak); Efektler::glow(dl, kMin, kMax, t.vurgu, t.vurgu2, t.yuvarlak, 16.0f, 1.0f, 0.5f); hudKoseleri(dl, {kMin.x + 8, kMin.y + 8}, {kMax.x - 8, kMax.y - 8}); const char* m = Efektler::hazir() ? "GPU shader glow (nabızlı) + HUD köşeleri" : "DrawList fallback glow + HUD köşeleri"; const ImVec2 mb = ImGui::CalcTextSize(m); dl->AddText({(kMin.x + kMax.x - mb.x) * 0.5f, (kMin.y + kMax.y - mb.y) * 0.5f}, u32(t.metin), m); } // ---- Radyal menü ---- baslikSeridi("◎", "Radyal Menü"); static const char* sonSecim = "-"; if (buton("Radyal Menüyü Aç", {0, 0}, ButonTip::Ikincil)) radyalAc("galeri_radyal", ImGui::GetMousePos()); ImGui::SameLine(); ImGui::AlignTextToFramePadding(); ImGui::TextDisabled("Son seçim: %s", sonSecim); { static const RadyalOge olcumAlt[] = {{"Kumpas", {"⊟"}}, {"Cetvel", {"↔"}}, {"Açı", {"∠"}}}; static const RadyalOge kesimAlt[] = {{"Profil", {"▭"}}, {"Cep", {"▣"}}, {"Delik", {"◉"}}}; static const RadyalOge ogeler[] = { {"Seç", {"➤"}}, {"Ölçüm", {"📏"}, true, olcumAlt, 3}, {"Kes", {"✂"}, true, kesimAlt, 3}, {"Gizle", {"👁"}}, {"Sil", {"🗑"}}, {"Özellik", {"⚙"}}, }; const RadyalSecim s = radyalCiz("galeri_radyal", ogeler, 6); if (s.seciliMi()) sonSecim = s.cocuk >= 0 ? ogeler[s.ana].cocuklar[s.cocuk].etiket : ogeler[s.ana].etiket; } // ---- Kadran + Yön gülü ---- baslikSeridi("◔", "Kadran & Yön Gülü"); static float demoAci = 45.0f; aciKadran("Dönüş", &demoAci); ImGui::SameLine(0, 24); { ImGui::BeginGroup(); const int yon = yonGulu(); static const char* yonAd[] = {"İzo", "Üst", "Sağ", "Ön", "Sol"}; static int sonYon = -1; if (yon >= 0) sonYon = yon; ImGui::TextDisabled("Bakış: %s", sonYon >= 0 ? yonAd[sonYon] : "-"); ImGui::EndGroup(); } // ---- Aralık + Spark + Koordinat ---- baslikSeridi("∿", "Aralık · Spark · Koordinat"); static float aralikMin = 2.0f, aralikMaks = 8.5f; aralikSlider("Z Aralığı", &aralikMin, &aralikMaks, 0.0f, 12.0f, "%.1f mm"); { static float veriler[48]; for (int i = 0; i < 48; ++i) veriler[i] = std::sin((float)i * 0.35f + zaman() * 1.2f) * 0.6f + std::sin((float)i * 0.11f) * 0.4f; sparkGrafik("galeri_spark", veriler, 48, 0, 46.0f); } { const float k[3] = {125.400f + 8.0f * std::sin(zaman() * 0.7f), -42.750f + 5.0f * std::cos(zaman() * 0.9f), 18.062f}; koordinatCip(k, "Konum"); } // ---- Zaman şeridi ---- baslikSeridi("⛓", "Feature Şeridi"); { static const char* adimlar[] = {"Sketch", "Pad", "Cep", "Pah", "Delik", "Ayna"}; static int aktifAdim = 2; const int tik = zamanSeridi("galeri_serit", adimlar, 6, aktifAdim); if (tik >= 0) aktifAdim = tik; } // ---- Takım kartları (glif + SVG simge) ---- baslikSeridi("🃏", "Takım Kartları"); { // SVG demo simgesi: bellekten rasterize (dosya gerekmez) — bir kez yüklenir. static bool svgYuklendi = false; if (!svgYuklendi) { svgYuklendi = true; kitaplik::yukleSvgMetin("galeri_freze", "" "" "" "" "" "" "", 64); } static int seciliKart = 0; if (takimKarti("D10 Freze", "4 ağız · karbür", kitaplik::simge("galeri_freze"), seciliKart == 0)) seciliKart = 0; ImGui::SameLine(); if (takimKarti("D6 Matkap", "HSS · 118°", Simge{"🔩"}, seciliKart == 1)) seciliKart = 1; ImGui::SameLine(); if (takimKarti("Küresel D8", "finiş · 2 ağız", Simge{"⚪"}, seciliKart == 2)) seciliKart = 2; } // ================= DALGA 3: CAD/CAE fütüristik bileşenler ================= // ---- İşaret Menüsü (Maya/CATIA marking menu — kas hafızası) ---- baslikSeridi("➤", "İşaret Menüsü"); { static const char* sonIsaret = "-"; ImGui::TextWrapped( "Aç, sonra sağ-tık BASILI + bir yöne hızlı sürükle → komut anında çalışır. " "Basılı tutup beklersen halka belirir."); if (buton("İşaret Menüsünü Aç", {0, 0}, ButonTip::Ikincil)) isaretAc("galeri_isaret", ImGui::GetMousePos()); ImGui::SameLine(); ImGui::AlignTextToFramePadding(); ImGui::TextDisabled("Son: %s", sonIsaret); static const IsaretOge isaretOgeler[] = { {"Ölçüm", {"📏"}, (int)Yon::K}, {"Kes", {"✂"}, (int)Yon::D}, {"Gizle", {"👁"}, (int)Yon::G}, {"Sil", {"🗑"}, (int)Yon::B}, {"Kopyala", {"⧉"}, (int)Yon::KD}, {"Özellik", {"⚙"}, (int)Yon::GB}, }; const IsaretSecim s = isaretCiz("galeri_isaret", isaretOgeler, 6); if (s.seciliMi()) sonIsaret = isaretOgeler[s.secili].etiket; } // ---- Zaman Tarayıcı (feature timeline scrubber + rollback) ---- baslikSeridi("⏱", "Zaman Tarayıcı (Rollback)"); { static ZamanDugum dugumler[] = { {"Sketch", Simge("✏"), false, false}, {"Pad", Simge("⬆"), false, false}, {"Cep", Simge("⬇"), false, false}, {"Pah", Simge("◣"), false, false}, {"Delik", Simge("⊙"), true, false}, {"Ayna", Simge("🪞"), false, false}, {"Kalıp", Simge("▣"), false, true}, }; static int aktif = 4; ZamanOlay o = zamanTarayici("galeri_ztarayici", dugumler, IM_ARRAYSIZE(dugumler), &aktif); if (o.siraKaynak >= 0) { // reorder: diziyi yerinde taşı (demo) ZamanDugum tasi = dugumler[o.siraKaynak]; if (o.siraKaynak < o.siraHedef) for (int i = o.siraKaynak; i < o.siraHedef; ++i) dugumler[i] = dugumler[i + 1]; else for (int i = o.siraKaynak; i > o.siraHedef; --i) dugumler[i] = dugumler[i - 1]; dugumler[o.siraHedef] = tasi; } if (o.bastirToggle >= 0) dugumler[o.bastirToggle].bastirili = !dugumler[o.bastirToggle].bastirili; } // ---- Bağlamsal Araç Halkası ---- baslikSeridi("◈", "Bağlamsal Araç Halkası"); { static int demoTip = 0; // 0=yüz 1=kenar 2=nokta const char* tipAd[] = {"Yüz", "Kenar", "Nokta"}; for (int i = 0; i < 3; ++i) { if (i) ImGui::SameLine(); if (buton(tipAd[i], {0, 0}, demoTip == i ? ButonTip::Birincil : ButonTip::Hayalet)) demoTip = i; } static bool radyalDizilim = false; ImGui::SameLine(0, 16); anahtar("Radyal", &radyalDizilim); static bool halkaGorunur = false; static ImVec2 halkaKonum{}; const bool onceki = halkaGorunur; ImGui::SameLine(0, 16); if (buton(halkaGorunur ? "Gizle" : "Göster", {0, 0}, ButonTip::Ikincil)) halkaGorunur = !halkaGorunur; if (halkaGorunur && !onceki) halkaKonum = ImGui::GetMousePos(); // aç anında sabitle ImGui::TextDisabled("(Göster'e bas → halka o noktada SABİT belirir, öğelere tıkla)"); int sayi = 0; const AracOge* set = demoTip == 0 ? aracSetYuz(sayi) : demoTip == 1 ? aracSetKenar(sayi) : aracSetNokta(sayi); int e = aracHalkasi("galeri_arac", halkaKonum, halkaGorunur, set, sayi, radyalDizilim ? AracDizilim::Radyal : AracDizilim::Yatay); static int sonEylem = -1; if (e == ARAC_KAPAT) halkaGorunur = false; // merkez/köşe ✕ → gizle else if (e >= 0) { sonEylem = e; halkaGorunur = false; } // seçince kapan (işaret menüsü gibi) if (sonEylem >= 0 && sonEylem < sayi) { ImGui::SameLine(); rozet(set[sonEylem].etiket, t.vurgu); } } // ---- Kesit / Sonuç Tarayıcı ---- baslikSeridi("⧉", "Kesit & Sonuç Tarayıcı"); { static float kesitOfset = 12.0f; kesitTarayici("galeri_kesit", &kesitOfset, -50.0f, 50.0f, "mm"); ImGui::Spacing(); static int caeKare = 0; static SonucTarayiciDurum caeDurum; sonucTarayici("galeri_cae", &caeKare, 24, &caeDurum, "Gerilme"); ImGui::Spacing(); renkBarLegend("galeri_legend", 0.0f, 245.7f, "MPa", 1); // Turbo rampa } // ---- Ürün Ağacı (CATIA tarzı treeview) ---- baslikSeridi("🌲", "Ürün Ağacı (Treeview)"); { static AgacGorunum agac; static bool kuruldu = false; if (!kuruldu) { // sahte ürün ağacı — bir kez kurulur (immediate-mode yeniden kullanılır) kuruldu = true; auto dg = [](std::uint64_t id, const char* et, Simge s, ImVec4 renk, std::vector coc = {}) { AgacDugum d; d.id = id; d.etiket = et; d.simge = s; d.renk = renk; d.cocuklar = std::move(coc); return d; }; const ImVec4 govdeR{0.30f, 0.65f, 1.0f, 1}, sketchR{1.0f, 0.75f, 0.20f, 1}, camR{0.85f, 0.35f, 1.0f, 1}, yok{0, 0, 0, 0}; agac.kokler = { dg(1, "Ürün1", Simge{"📦"}, yok, { dg(10, "Gövde", Simge{"⬡"}, govdeR, { dg(100, "Sketch.1", Simge{"✏"}, sketchR), dg(101, "Pad.1", Simge{"⬆"}, govdeR), dg(102, "Cep.1", Simge{"⬇"}, govdeR), dg(103, "Pah.1", Simge{"◣"}, govdeR), }), dg(11, "Kaplin", Simge{"⚙"}, govdeR, { dg(110, "Sketch.2", Simge{"✏"}, sketchR), dg(111, "Shaft.1", Simge{"⬤"}, govdeR), }), }), dg(2, "Üretim Programı", Simge{"🛠"}, yok, { dg(20, "Kaba Frezeleme", Simge{"▣"}, camR), dg(21, "Finiş", Simge{"◈"}, camR), dg(22, "Delik Delme", Simge{"◉"}, camR), }), }; } ImGui::BeginChild("agac_demo", {0, 240}, ImGuiChildFlags_Borders); const AgacOlaylari o = agac.ciz("galeri_agac"); ImGui::EndChild(); static char son[128] = "-"; if (o.gorunurlukDegisti) { // 👁 → düğümü bul, gorunur alanını değiştir (demo) std::function&)> gez = [&](std::vector& v) { for (auto& d : v) { if (d.id == o.gorunurlukId) { d.gorunur = o.yeniGorunur; return true; } if (gez(d.cocuklar)) return true; } return false; }; gez(agac.kokler); } if (o.yenidenAdlandi) { std::function&)> gez = [&](std::vector& v) { for (auto& d : v) { if (d.id == o.adId) { d.etiket = o.yeniAd; return true; } if (gez(d.cocuklar)) return true; } return false; }; gez(agac.kokler); } if (o.secimDegisti) std::snprintf(son, sizeof(son), "%zu seçili", o.secili.size()); if (o.baglamIstendi) std::snprintf(son, sizeof(son), "sağ-tık #%llu", (unsigned long long)o.baglamId); if (o.ciftTiklandi) std::snprintf(son, sizeof(son), "çift-tık #%llu", (unsigned long long)o.ciftTikId); if (buton("Tümünü Aç", {0, 0}, ButonTip::Hayalet)) agac.hepsiniAc(true); ImGui::SameLine(); if (buton("Tümünü Kapat", {0, 0}, ButonTip::Hayalet)) agac.hepsiniAc(false); ImGui::SameLine(); ImGui::AlignTextToFramePadding(); ImGui::TextDisabled("Ctrl+tık çoklu · çift-tık rename · sağ-tık bağlam · %s", son); } // ================= DALGA 4: Ek bileşenler + dinamik araç çubuğu + hover ===== // ---- Ek bileşenler (bilesen_ek) ---- baslikSeridi("✦", "Ek Bileşenler"); { // Toast tetikleyiciler (çizim üst döngüde toastlariCiz ile yapılır) if (buton("Bilgi", {0, 0}, ButonTip::Ikincil)) toastGoster("Bilgilendirme mesajı", ToastTip::Bilgi); ImGui::SameLine(); if (buton("Başarı", {0, 0}, ButonTip::Ikincil)) toastGoster("İşlem tamamlandı", ToastTip::Basari); ImGui::SameLine(); if (buton("Uyarı", {0, 0}, ButonTip::Ikincil)) toastGoster("Dikkat: seçim yok", ToastTip::Uyari); ImGui::SameLine(); if (buton("Hata", {0, 0}, ButonTip::Tehlike)) toastGoster("Hesaplama başarısız", ToastTip::Hata); // Onay diyaloğu static bool onayAcik = false; if (buton("Onay Diyaloğu", {0, 0}, ButonTip::Ikincil)) onayAcik = true; onayDiyalogu("Silme Onayı", "Seçili gövdeyi silmek istediğine emin misin?", &onayAcik); // Sekme çubuğu + segmentli static const char* sekmeler[] = {"Geometri", "Ölçüm", "CAM", "Analiz"}; static int sekmeSecili = 0; sekmeCubugu("galeri_sekme", sekmeler, 4, &sekmeSecili); static const char* segler[] = {"Kablo", "Gölge", "Katı"}; static int segSecili = 2; segmentli("galeri_seg", segler, 3, &segSecili); // Arama + stepper + renk static char aramaBuf[64] = ""; aramaKutusu("galeri_arama", aramaBuf, sizeof(aramaBuf), "Nesne ara…", 220.0f); static int stepDeger = 12; sayiStepper("Bölüntü", &stepDeger, 1, 1, 256, 160.0f); ImGui::SameLine(); static ImVec4 renkDemo{0.13f, 0.75f, 1.0f, 1.0f}; renkSecici("Renk", &renkDemo); // Gauge + breadcrumb gaugeHalka("Yük", 50.0f + 40.0f * std::sin(zaman() * 0.6f), 0.0f, 100.0f, "%"); ImGui::SameLine(0, 24); { ImGui::BeginGroup(); static const char* yol[] = {"Ürün1", "Gövde", "Pad.1"}; ekmekKirintisi(yol, 3); ImGui::EndGroup(); } // Accordion + splitter + spinner + boş durum static bool katliAcik = true; if (katlanirBasla("Gelişmiş Ayarlar", &katliAcik)) { ImGui::TextDisabled("Tolerans, sapma, örnekleme yoğunluğu…"); katlanirBitir(); } static float ayracBoyut = 140.0f; ayracKaydir("galeri_ayrac", false, &ayracBoyut, 60.0f, 260.0f, 120.0f); spinner("galeri_spinner"); ImGui::SameLine(0, 20); ImGui::BeginGroup(); bosDurum("📭", "Sonuç Yok", "Aramanı değiştirmeyi dene.", "Temizle"); ImGui::EndGroup(); } // ---- Hover Bilgi Kartı ---- baslikSeridi("ⓘ", "Hover Bilgi Kartı"); { static bool hoverAcik = true; anahtar("Kart açık", &hoverAcik); ImGui::TextDisabled("İmleç aşağıdaki alanda gezerken B-Rep bilgi kartı belirir."); const ImVec2 p = ImGui::GetCursorScreenPos(); const ImVec2 alanMax{p.x + ImGui::GetContentRegionAvail().x - 8, p.y + 80}; ImGui::Dummy({alanMax.x - p.x, 84}); ImDrawList* dl = ImGui::GetWindowDrawList(); dl->AddRect(p, alanMax, u32(t.vurgu, 0.5f), t.yuvarlak, 0, 1.5f); if (ImGui::IsMouseHoveringRect(p, alanMax)) { HoverIcerik ic; ic.tur = HoverTur::Yuz; ic.baslik = "Yüz #3"; ic.satirEkle("Tip", "Silindir"); ic.satirEkle("Alan", "125.400 mm²"); ic.satirEkle("Yarıçap", "8.500 mm"); hoverBilgiCiz("galeri_hover", ImGui::GetMousePos(), hoverAcik, ic); } } // ---- Dinamik Araç Çubuğu ---- baslikSeridi("🧰", "Dinamik Araç Çubuğu"); { static AracCubuguSistemi araclar; static bool kuruldu = false; if (!kuruldu) { kuruldu = true; AracCubugu c; c.kimlik = "galeri_cubuk"; c.baslik = "Geometri"; c.kenar = DockKenar::Serbest; c.serbestKonum = {160, 160}; auto btn = [](const char* glif, const char* etiket) { AracButon b; b.simgeMetin = glif; b.etiket = etiket; return b; }; c.butonlar = {btn("📦", "Kutu"), btn("⬡", "Silindir"), btn("⬆", "Pad"), btn("⬇", "Cep"), btn("◣", "Pah"), btn("◉", "Delik")}; araclar.ekle(std::move(c)); } ImGui::TextDisabled("Serbest araç çubuğu: başlıktan sürükle, kenara SNAP olur, " "sağ-tık özelleştir/kapat."); araclar.ciz(); } // ---- CAD/CAM Kolaylık bileşenleri ---- baslikSeridi("🛠", "CAD/CAM Kolaylık"); { static float nom = 12.5f, us = 0.02f, alt = 0.01f; toleransGirisi("Tolerans", &nom, &us, &alt, "mm"); gdtCipi("⌖", 0.05f, "A|B|C"); ImGui::SameLine(); gdtCipi("⏥", 0.02f); static int csys = 0; csysSecici("CSYS", &csys); static int seciliMat = 0; if (malzemeKarti("Al 7075", 2.81f, {0.72f, 0.74f, 0.78f, 1}, seciliMat == 0)) seciliMat = 0; ImGui::SameLine(); if (malzemeKarti("Çelik 1040", 7.85f, {0.55f, 0.57f, 0.62f, 1}, seciliMat == 1)) seciliMat = 1; static int seciliTk = 0; if (takimKartiCadCam("Freze", 10.0f, 4, 45.0f, seciliTk == 0)) seciliTk = 0; ImGui::SameLine(); if (takimKartiCadCam("Matkap", 6.0f, 2, 60.0f, seciliTk == 1)) seciliTk = 1; static float dev = 8000, ilr = 1200, vc = 251, fz = 0.037f; feedsSpeedsPaneli("fs", 10.0f, 4, &dev, &ilr, &vc, &fz); static float dv = 25.4f; static int kb = 2, hb = 0; birimDonusturucu("Dönüştür", &dv, &kb, &hb); static char ifd[64] = "kalinlik * 2 + 5"; ifadeGirisi("İfade", ifd, sizeof(ifd), true, nullptr); static unsigned snap = 1 | 16; static float grid = 1.0f; snapGridCubugu("snap", &snap, &grid); static int kEksen = 2; static float kOfset = 0; static bool kTers = false, kAktif = true; kesitDuzlemKontrol("Kesit", &kEksen, &kOfset, &kTers, &kAktif); const float ic[3] = {125.4f, -42.75f, 18.06f}; durumCubugu(ic, "mm", 3, "Sağ tık: menü · ESC: iptal"); } neonAyrac(); ImGui::TextDisabled( "FikoUi Dalga 1-5 · tema+animasyon+bileşen+shader+radyal+simge+treeview + " "işaret/zaman/araç halkası/kesit + ek bileşenler/hover kartı/dinamik toolbar + " "CAD-CAM kolaylık · makro: fiko.ui.*"); ImGui::End(); } } // namespace fiko::ui