3.0 KiB
3.0 KiB
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:
hasFiltermantığı eklendi._saturation == 1.0 && _contrast == 1.0iseColorFilteredwidget'ı hiç render edilmez. Efekt uygulanınca devreye girer. |- Rotate: AyrıTransformkatmanı, sadece_angle != 0iken 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:
_cachedFilterile değerler değişmediğinde yeniden oluşturulmaz - Lazy render:
hasFilterfalse iseColorFilteredwidget ağacına eklenmez
Klavye Modifier Tracking
HardwareKeyboard.instance.addHandler(_onHardwareKey)ile global seviyedeHardwareKeyboard.instance.isShiftPressed/isControlPressedçalışmıyor (Linux bug'ı)- Kendi
_ctrlPressed/_shiftPressedstate'imizi tuttuk
install.sh
- Önce
build/linux/x64/debug/bundle/, yoksarelease/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/Upile manuel gesture handling
Bilinen Sorunlar
- Zoom throttle kaldırıldı — her scroll event'inde
setState, bu da performansı etkiliyor olabilir - Rotate düzeltildi — viewport merkezi, lazy Transform. Pan/zoom ile uyumlu.
- BlendMode saturation oversaturate yapamıyor — matrix'e geçildi (çalışıyor)
Dosya Yapısı
| Dosya | Açı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
- Single-instance implementasyonu (lock file / Unix socket)
- Rotate'i düzeltip tekrar ekleme (performans ve pan yönü sorunları)
- Zoom performans optimizasyonu (throttle veya GestureDetector.onScaleUpdate)
.debve Windows installer güncellemesi