feat: rotate (Shift+sag tik), StartupWMClass taskbar gruplama, dist guncelle
Some checks failed
Build Windows / build-windows (push) Has been cancelled
Some checks failed
Build Windows / build-windows (push) Has been cancelled
This commit is contained in:
@@ -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) |
|
||||
|
||||
79
docs/session-2026-07-27.md
Normal file
79
docs/session-2026-07-27.md
Normal 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
|
||||
Reference in New Issue
Block a user