Remove auto mask loading docs and clean up code comments

Deleted documentation files related to automatic mask loading. Cleaned up and streamlined comments across Canvas.js, CanvasInteractions.js, CanvasLayers.js, CanvasView.js, MaskTool.js, mask_utils.js, and example scripts for improved clarity and maintainability. No functional changes to core logic.
This commit is contained in:
Dariusz L
2025-07-01 06:42:20 +02:00
parent 30fb89451f
commit a0ceb3b97c
9 changed files with 126 additions and 642 deletions

View File

@@ -1,186 +0,0 @@
# Automatyczne Nakładanie Masek w Mask Editorze
## Przegląd
Ta funkcjonalność pozwala na automatyczne nakładanie predefiniowanych masek po otwarciu mask editora ComfyUI. Główną zaletą jest możliwość wysłania czystego obrazu (bez maski) do editora, a następnie automatyczne nałożenie maski w edytorze, co pozwala na prawidłowe działanie narzędzi takich jak gumka.
## Kluczowe Funkcje
### 1. Wysyłanie Czystego Obrazu
- Możliwość wysłania obrazu bez istniejącej maski do mask editora
- Editor "pamięta" oryginalny obraz pod maską
- Prawidłowe działanie gumki i innych narzędzi edycji
### 2. Automatyczne Nakładanie Maski
- Maska jest nakładana automatycznie po otwarciu editora
- Obsługa zarówno nowego jak i starego mask editora ComfyUI
- Natychmiastowe nakładanie bez opóźnień
### 3. Elastyczne Formaty Masek
- Obsługa obiektów Image
- Obsługa elementów HTMLCanvasElement
- Automatyczna konwersja formatów
## API
### Canvas.startMaskEditor(predefinedMask, sendCleanImage)
Główna metoda do uruchamiania mask editora z predefiniowaną maską.
**Parametry:**
- `predefinedMask` (Image|HTMLCanvasElement|null) - Opcjonalna maska do nałożenia
- `sendCleanImage` (boolean) - Czy wysłać czysty obraz (domyślnie false)
**Przykład:**
```javascript
// Wyślij czysty obraz i nałóż maskę w edytorze
await canvas.startMaskEditor(maskImage, true);
// Wyślij obraz z istniejącą maską i dodaj nową maskę
await canvas.startMaskEditor(maskImage, false);
```
### Funkcje Pomocnicze (mask_utils.js)
#### start_mask_editor_with_predefined_mask(canvasInstance, maskImage, sendCleanImage)
Pomocnicza funkcja dla łatwiejszego użycia.
**Parametry:**
- `canvasInstance` - Instancja Canvas
- `maskImage` - Obraz maski
- `sendCleanImage` - Czy wysłać czysty obraz (domyślnie true)
#### create_mask_from_image_src(imageSrc)
Tworzy obiekt Image z URL lub data URL.
**Parametry:**
- `imageSrc` (string) - URL obrazu
**Zwraca:** Promise<Image>
#### canvas_to_mask_image(canvas)
Konwertuje HTMLCanvasElement do obiektu Image.
**Parametry:**
- `canvas` (HTMLCanvasElement) - Canvas do konwersji
**Zwraca:** Promise<Image>
## Jak to Działa
### 1. Przygotowanie Obrazu
```javascript
// Wybór metody w zależności od parametru sendCleanImage
if (sendCleanImage) {
blob = await this.canvasLayers.getFlattenedCanvasAsBlob();
} else {
blob = await this.canvasLayers.getFlattenedCanvasForMaskEditor();
}
```
### 2. Otwieranie Editora
```javascript
// Standardowy proces otwierania mask editora
ComfyApp.copyToClipspace(this.node);
ComfyApp.clipspace_return_node = this.node;
ComfyApp.open_maskeditor();
```
### 3. Oczekiwanie na Otwarcie
```javascript
waitForMaskEditorAndApplyMask() {
const checkEditor = () => {
if (mask_editor_showing(app)) {
// Editor się otworzył - nałóż maskę
setTimeout(() => {
this.applyMaskToEditor(this.pendingMask);
}, 200);
} else {
setTimeout(checkEditor, 100);
}
};
checkEditor();
}
```
### 4. Nakładanie Maski
```javascript
// Automatyczne wykrywanie typu editora
const useNewEditor = app.ui.settings.getSettingValue('Comfy.MaskEditor.UseNewEditor');
if (useNewEditor) {
await this.applyMaskToNewEditor(maskData);
} else {
await this.applyMaskToOldEditor(maskData);
}
```
## Obsługa Różnych Editorów
### Nowy Editor (MessageBroker)
```javascript
const editor = MaskEditorDialog.instance;
const messageBroker = editor.getMessageBroker();
const maskCanvas = await messageBroker.pull('maskCanvas');
const maskCtx = await messageBroker.pull('maskCtx');
```
### Stary Editor (Bezpośredni Dostęp)
```javascript
const maskCanvas = document.getElementById('maskCanvas');
const maskCtx = maskCanvas.getContext('2d');
```
## Przetwarzanie Masek
Maski są automatycznie przetwarzane do odpowiedniego formatu:
```javascript
// Konwersja do formatu editora
for (let i = 0; i < data.length; i += 4) {
const alpha = data[i + 3];
data[i] = maskColor.r; // R
data[i + 1] = maskColor.g; // G
data[i + 2] = maskColor.b; // B
data[i + 3] = alpha; // Zachowaj alpha
}
```
## Obsługa Błędów
System zawiera kompleksową obsługę błędów:
```javascript
try {
await this.applyMaskToEditor(maskData);
log.info("Predefined mask applied successfully");
} catch (error) {
log.error("Failed to apply predefined mask:", error);
}
```
## Kompatybilność
- ✅ Nowy mask editor ComfyUI (MessageBroker)
- ✅ Stary mask editor ComfyUI (bezpośredni dostęp)
- ✅ Wszystkie formaty masek (Image, Canvas)
- ✅ Automatyczne wykrywanie typu editora
## Zalety
1. **Zachowanie Oryginalnego Obrazu**: Editor "pamięta" co jest pod maską
2. **Prawidłowe Działanie Gumki**: Możliwość usuwania części maski
3. **Elastyczność**: Obsługa różnych formatów i editorów
4. **Automatyzacja**: Brak potrzeby ręcznego nakładania masek
5. **Kompatybilność**: Działa z istniejącym kodem
## Przypadki Użycia
- Automatyczne nakładanie masek z AI/ML modeli
- Predefiniowane szablony masek
- Integracja z zewnętrznymi narzędziami
- Workflow automatyzacja
- Batch processing masek