feat: rotate (Shift+sag tik), StartupWMClass taskbar gruplama, dist guncelle
Some checks failed
Build Windows / build-windows (push) Has been cancelled

This commit is contained in:
Alhan
2026-07-27 20:41:14 +03:00
parent 35d3bc3749
commit 171476d30b
6 changed files with 179 additions and 34 deletions

View File

@@ -2,5 +2,6 @@
| Tarih | Dosya | Konu |
|---|---|---|
| 2026-07-27 | [image-canvas-interactions.md](image-canvas-interactions.md) | Sağ tık etkileşimleri: contrast, saturation, rotate |
| 2026-07-27 | [session-2026-07-27.md](session-2026-07-27.md) | **Session özeti** — rotate aktif, StartupWMClass ile taskbar gruplama |
| 2026-07-27 | [image-canvas-interactions.md](image-canvas-interactions.md) | Detaylı analiz: contrast, saturation, rotate implementasyon planı |
| önceki | [zoom-clamp-mekanizmasi.md](zoom-clamp-mekanizmasi.md) | Zoom clamp mekanizması (letterbox-aware) |

View File

@@ -0,0 +1,79 @@
# 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 | Shift + Sağ tık + dikey sürükleme | ✓ (viewport merkezi, ~100px=90°) |
| 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 | 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
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