#ifndef YAZE_GUI_WIDGETS_H #define YAZE_GUI_WIDGETS_H #include #include #include #include #include #include "absl/status/status.h" #include "app/core/constants.h" #include "app/gfx/bitmap.h" namespace yaze { namespace app { namespace gui { class DynamicLayout {}; TextEditor::LanguageDefinition GetAssemblyLanguageDef(); void RenderTabItem(const std::string& title, const std::function& render_func); class BitmapViewer { public: BitmapViewer() : current_bitmap_index_(0) {} void Display(const std::vector& bitmaps, float scale = 1.0f) { if (bitmaps.empty()) { ImGui::Text("No bitmaps available."); return; } // Display the current bitmap index and total count. ImGui::Text("Viewing Bitmap %d / %zu", current_bitmap_index_ + 1, bitmaps.size()); // Buttons to navigate through bitmaps. if (ImGui::Button("<- Prev")) { if (current_bitmap_index_ > 0) { --current_bitmap_index_; } } ImGui::SameLine(); if (ImGui::Button("Next ->")) { if (current_bitmap_index_ < bitmaps.size() - 1) { ++current_bitmap_index_; } } // Display the current bitmap. const gfx::Bitmap& current_bitmap = bitmaps[current_bitmap_index_]; // Assuming Bitmap has a function to get its texture ID, and width and // height. ImTextureID tex_id = current_bitmap.texture(); ImVec2 size(current_bitmap.width() * scale, current_bitmap.height() * scale); // ImGui::Image(tex_id, size); // Scroll if the image is larger than the display area. if (ImGui::BeginChild("BitmapScrollArea", ImVec2(0, 0), false, ImGuiWindowFlags_HorizontalScrollbar)) { ImGui::Image(tex_id, size); ImGui::EndChild(); } } private: int current_bitmap_index_; }; } // namespace gui } // namespace app } // namespace yaze #endif