mirror of
https://github.com/Azornes/Comfyui-LayerForge.git
synced 2026-03-21 20:52:12 -03:00
Delegate layer resize and rotate to CanvasLayers
Moved the resizeLayer and rotateLayer logic from Canvas.js to CanvasLayers.js, improving modularity and consistency. Updated REFACTORING_GUIDE.md to reflect these changes and document the current architecture and status.
This commit is contained in:
19
js/Canvas.js
19
js/Canvas.js
@@ -482,21 +482,8 @@ export class Canvas {
|
||||
}
|
||||
moveLayerUp() { return this.canvasLayers.moveLayerUp(); }
|
||||
moveLayerDown() { return this.canvasLayers.moveLayerDown(); }
|
||||
resizeLayer(scale) {
|
||||
this.selectedLayers.forEach(layer => {
|
||||
layer.width *= scale;
|
||||
layer.height *= scale;
|
||||
});
|
||||
this.render();
|
||||
this.saveState();
|
||||
}
|
||||
rotateLayer(angle) {
|
||||
this.selectedLayers.forEach(layer => {
|
||||
layer.rotation += angle;
|
||||
});
|
||||
this.render();
|
||||
this.saveState();
|
||||
}
|
||||
resizeLayer(scale) { return this.canvasLayers.resizeLayer(scale); }
|
||||
rotateLayer(angle) { return this.canvasLayers.rotateLayer(angle); }
|
||||
getLayerAtPosition(worldX, worldY) { return this.canvasLayers.getLayerAtPosition(worldX, worldY); }
|
||||
getHandles(layer) { return this.canvasLayers.getHandles(layer); }
|
||||
getHandleAtPosition(worldX, worldY) { return this.canvasLayers.getHandleAtPosition(worldX, worldY); }
|
||||
@@ -504,9 +491,9 @@ export class Canvas {
|
||||
async mirrorVertical() { return this.canvasLayers.mirrorVertical(); }
|
||||
async getLayerImageData(layer) { return this.canvasLayers.getLayerImageData(layer); }
|
||||
showBlendModeMenu(x, y) { return this.canvasLayers.showBlendModeMenu(x, y); }
|
||||
|
||||
// Delegacje do CanvasInteractions
|
||||
handleMouseMove(e) { this.canvasInteractions.handleMouseMove(e); }
|
||||
|
||||
|
||||
// Delegacje do ImageReferenceManager
|
||||
async runGarbageCollection() {
|
||||
|
||||
@@ -198,6 +198,35 @@ export class CanvasLayers {
|
||||
this.canvasLayers.saveState();
|
||||
}
|
||||
|
||||
/**
|
||||
* Zmienia rozmiar wybranych warstw
|
||||
* @param {number} scale - Skala zmiany rozmiaru
|
||||
*/
|
||||
resizeLayer(scale) {
|
||||
if (this.canvasLayers.selectedLayers.length === 0) return;
|
||||
|
||||
this.canvasLayers.selectedLayers.forEach(layer => {
|
||||
layer.width *= scale;
|
||||
layer.height *= scale;
|
||||
});
|
||||
this.canvasLayers.render();
|
||||
this.canvasLayers.saveState();
|
||||
}
|
||||
|
||||
/**
|
||||
* Obraca wybrane warstwy
|
||||
* @param {number} angle - Kąt obrotu w stopniach
|
||||
*/
|
||||
rotateLayer(angle) {
|
||||
if (this.canvasLayers.selectedLayers.length === 0) return;
|
||||
|
||||
this.canvasLayers.selectedLayers.forEach(layer => {
|
||||
layer.rotation += angle;
|
||||
});
|
||||
this.canvasLayers.render();
|
||||
this.canvasLayers.saveState();
|
||||
}
|
||||
|
||||
getLayerAtPosition(worldX, worldY) {
|
||||
for (let i = this.canvasLayers.layers.length - 1; i >= 0; i--) {
|
||||
const layer = this.canvasLayers.layers[i];
|
||||
|
||||
@@ -145,17 +145,45 @@ canvas.imageReferenceManager.manualGarbageCollection()
|
||||
|
||||
### 🎯 Kolejne kroki
|
||||
|
||||
1. **Monitorowanie działania** - sprawdzenie czy wszystkie funkcje działają poprawnie
|
||||
1. **Monitorowanie działania** - sprawdzenie czy wszystkie funkcje działają poprawnie ✅
|
||||
2. **Usunięcie metod delegujących** - w przyszłych wersjach (po okresie przejściowym)
|
||||
3. **Rozszerzenie dokumentacji** - dla poszczególnych modułów
|
||||
3. **Rozszerzenie dokumentacji** - dla poszczególnych modułów ✅
|
||||
4. **Dodanie testów jednostkowych** - dla modułów
|
||||
|
||||
### 🔧 Ostatnie poprawki (2025-06-29)
|
||||
|
||||
1. **Dodano brakujące metody w CanvasLayers.js** ✅
|
||||
- `resizeLayer(scale)` - zmienia rozmiar wybranych warstw
|
||||
- `rotateLayer(angle)` - obraca wybrane warstwy
|
||||
- Poprawiono delegację z Canvas.js do CanvasLayers.js
|
||||
|
||||
2. **Weryfikacja spójności** ✅
|
||||
- Wszystkie delegacje w Canvas.js wskazują na istniejące metody w modułach
|
||||
- CanvasView.js używa nowego podejścia modułowego
|
||||
- Dokumentacja została zaktualizowana
|
||||
|
||||
## Uwagi dla deweloperów
|
||||
|
||||
- ✅ **Refaktoryzacja zakończona** - wszystkie pliki zostały zaktualizowane
|
||||
- ✅ **Nowy kod** używa modułów bezpośrednio zgodnie z wzorcem fasady
|
||||
- ✅ **Wszystkie delegacje** wskazują na istniejące metody w modułach
|
||||
- ⚠️ **Metody delegujące** są zachowane dla kompatybilności, ale oznaczone jako tymczasowe
|
||||
- 📚 **Dokumentacja** została zaktualizowana w tym przewodniku
|
||||
- 🔄 **Kompatybilność** z istniejącym kodem jest zachowana
|
||||
|
||||
**Refaktoryzacja została zakończona pomyślnie!** System jest gotowy do dalszego rozwoju z lepszą architekturą opartą na wzorcu fasady.
|
||||
|
||||
### 📋 Mapowanie kompletnych funkcjonalności
|
||||
|
||||
| Funkcjonalność | Moduł | Metoda | Status |
|
||||
|----------------|-------|--------|--------|
|
||||
| Dodawanie warstw | `canvasLayers` | `addLayerWithImage()` | ✅ |
|
||||
| Kopiowanie/wklejanie | `canvasLayers` | `copySelectedLayers()`, `handlePaste()` | ✅ |
|
||||
| Przesuwanie warstw | `canvasLayers` | `moveLayerUp()`, `moveLayerDown()` | ✅ |
|
||||
| Transformacje | `canvasLayers` | `resizeLayer()`, `rotateLayer()` | ✅ |
|
||||
| Odbicia lustrzane | `canvasLayers` | `mirrorHorizontal()`, `mirrorVertical()` | ✅ |
|
||||
| Obsługa interakcji | `canvasInteractions` | `handleMouseMove()`, `handleKeyDown()` | ✅ |
|
||||
| Zarządzanie stanem | `canvasState` | `saveState()`, `undo()`, `redo()` | ✅ |
|
||||
| Operacje I/O | `canvasIO` | `importLatestImage()`, `sendDataViaWebSocket()` | ✅ |
|
||||
| Renderowanie | `canvasRenderer` | `render()` | ✅ |
|
||||
| Zarządzanie pamięcią | `imageReferenceManager` | `manualGarbageCollection()` | ✅ |
|
||||
|
||||
Reference in New Issue
Block a user