Files
imajviewer/docs/session-2026-07-27.md
Alhan 171476d30b
Some checks failed
Build Windows / build-windows (push) Has been cancelled
feat: rotate (Shift+sag tik), StartupWMClass taskbar gruplama, dist guncelle
2026-07-27 20:41:14 +03:00

3.0 KiB
Raw Permalink Blame History

Session Özeti — 2026-07-27

Eklenen Özellikler

Çalışan

Özellik Tetikleyici Durum
Pan (sürükleme) Sol tık
Zoom (mouse tekeri) Scroll
Fill/Fit geçişi Sol çift tık
Contrast Sağ tık + dikey sürükleme ✓ (matrix row-major)
Saturation Ctrl + sağ tık + dikey sürükleme ✓ (desaturate + oversaturate)
Reset (tüm efektler) Sağ çift tık

Tamamlanmamış / İptal

Özellik Durum
Rotate
Brightness Kaldırıldı — hiç çalışmadı
Single-instance İptal — kullanıcı istemedi. Bunun yerine StartupWMClass ile taskbar gruplama

Performans Durumu

  • Çıplak mod (pan + zoom): Süper hızlı
  • ColorFiltered (contrast + saturation): Ciddi performans düşüşü ✗
  • Çözüm: hasFilter mantığı eklendi. _saturation == 1.0 && _contrast == 1.0 ise ColorFiltered widget'ı hiç render edilmez. Efekt uygulanınca devreye girer. |- Rotate: Ayrı Transform katmanı, sadece _angle != 0 iken render edilir. Sıfır ek yük.

Teknik Detaylar

Color Matrix

  • Format: Row-major 5x4 (column-major çalışmadı!)
  • Birleşik matrix: M_combined = M_contrast × M_saturation (tek GPU pass)
  • Cache: _cachedFilter ile değerler değişmediğinde yeniden oluşturulmaz
  • Lazy render: hasFilter false ise ColorFiltered widget ağacına eklenmez

Klavye Modifier Tracking

  • HardwareKeyboard.instance.addHandler(_onHardwareKey) ile global seviyede
  • HardwareKeyboard.instance.isShiftPressed / isControlPressed çalışmıyor (Linux bug'ı)
  • Kendi _ctrlPressed / _shiftPressed state'imizi tuttuk

install.sh

  • Önce build/linux/x64/debug/bundle/, yoksa release/bundle/ yolunu dener

Gesture Sistemi

  • Listener (sağ tık event'leri) + GestureDetector (sol tık pan/çift tık) hibrit yapısı
  • Listener.onPointerDown/Move/Up ile manuel gesture handling

Bilinen Sorunlar

  1. Zoom throttle kaldırıldı — her scroll event'inde setState, bu da performansı etkiliyor olabilir
  2. Rotate düzeltildi — viewport merkezi, lazy Transform. Pan/zoom ile uyumlu.
  3. BlendMode saturation oversaturate yapamıyor — matrix'e geçildi (çalışıyor)

Dosya Yapısı

Dosya ıklama
lib/widgets/image_canvas.dart Tüm görüntü işleme, filtreler, gesture'lar
install.sh Kurulum scripti (debug/release otomatik seçim)
docs/image-canvas-interactions.md Detaylı analiz raporu
docs/index.md Dokümantasyon indeksi

Sonraki Session İçin

  1. Single-instance implementasyonu (lock file / Unix socket)
  2. Rotate'i düzeltip tekrar ekleme (performans ve pan yönü sorunları)
  3. Zoom performans optimizasyonu (throttle veya GestureDetector.onScaleUpdate)
  4. .deb ve Windows installer güncellemesi