@DATABASE "Backprefs"

@NODE main "Background Voreinstellungseditor"
@PREV main
@NEXT main
                                  Backprefs v2.0

Backprefs und dieser Text sind Copyright ©1996 Roland Haas


Inhalt:

        @{"Rechtliches" LINK Rechtliches}
        @{"Benötigte libraries" LINK Libs}
        @{"Bekannte Fehler" LINK Fehler}
        @{"Geschichte" LINK Geschichte}
        @{"Zukünftiges" LINK Zukunft}
        @{"Autor" LINK Autor}

        @{"Die Bilder" LINK Bilder}
        @{"Die Gadgets" LINK Gadgets}
        @{"Die Menüs" LINK Menus}

@ENDNODE

@NODE Rechtliches "Copyright, Vertrieb ..."
@PREV main
@NEXT Libs

Vertrieb

Backprefs darf frei vertrieben werden, solange der Inhalt des Archivs
komplett weitergegeben wird. Außerdem darf nur eine Gebühr für den
Arbeits- und Materialaufwand verlangt werden.

Backprefs darf mit frei kopierbarer Software vertrieben werden, solange die
oben genannten Bedingungen erfüllt sind. Der Vertrieb zusammen mit einem
kommerziellen Programm ist nur mit ausdrücklicher, schriftlicher
Genehmigung des Autors erlaubt.

Gewährleistung

Es wird keine Haftung für Schäden übernommen, die dieses Programm
verursacht. Es wird keine Gewähr dafür übernommen, daß das Programm im
Sinne dieses Textes anwendbar ist.
                 SIE BENUTZEN DIESES PROGRAMM AUF EIGENES RISIKO


       INSTALLER SOFTWARE IS PROVIDED "AS-IS" AND SUBJECT TO CHANGE;
       NO WARRANTIES ARE MADE. ALL USE IS AT YOUR OWN RISK. NO LIABILITY
       OR RESPONSIBILITY IS ASSUMED.

Installer and Installer project icon
(c) Copyright 1995-96 Escom AG. All Rights Reserved.
Reproduced and distributed under license from escom AG.

@ENDNODE

@NODE Libs "Benötigte libraries"
@PREV Rechtliches
@NEXT Fehler

Das Voreinstellungsprogramm benötigt die 'gadutil.library', die sich im
Verzeichnis LIBS: befinden muß. Das Install-Script sollte das erledigen.

@ENDNODE

@NODE Fehler
@PREV Libs
@NEXT Geschichte

Momentan sind mir keine Fehler bekannt.

@ENDNODE

@NODE Geschichte "Programmversionen bis heute"
@PREV Fehler
@NEXT Zukunft

Achtung: Die Versionsnummer beginnt bei Version 2.0. Das Programm erhält
         immer dieselbe Versionsnummer wie das Hauptprogramm. Nur Programme
         gleicher Version funktionieren miteinander!

        03.08.1996: V2.0  erste Version
        08.04.1997: V2.1  Farbanpassung
        18.05.1997: V2.11 Einige Fehler entfernt

@ENDNODE

@NODE Zukunft "Geplante Verbesserungen"
@PREV Geschichte
@NEXT Autor

        · Aufruf mit Parametern

Vorschläge, Kritik, Fehler bitte an den @{"Autor" LINK Autor}
@ENDNODE

@NODE Autor "Ich selbst"
@PREV Zukunft
@NEXT Autor

Backprefs wurde in harter Nachtarbeit geschrieben von:

        Roland Haas
        Mühlweg 16
        77948 Friesenheim

        Telefon: 07821/68084

Die Benutzeroberfläche wurde erstellt GadUtilLib v37.

Anregungen, Spenden, Postkarten sind immer willkommen!
Besonders willkommen wäre eine bessere Version dieses Textes, sowie
Übersetzungen der Anleitung...

@ENDNODE

@NODE Bilder "Welche Bilder kann ich verwenden?"
@PREV main
@NEXT Bilder

Es können nur Bilder im IFF-ILBM-Format geladen werden. Die Bilder sollten
dasselbe Seitenverhältnis haben wie Ihre Workbench. Wenn Ihre Workbench im
Modus HIRES/INTERLACED läuft, sollte das Bild auch diesen Bildschirmmodus
verwenden oder LORES/NONLACED. Bedenken Sie bei der Auswahl Ihrer Bilder
immer, daß die Bilder ungepackt im Speicher vorliegen, ein 640x320 Punkte
großes Bild mit acht Farben braucht also 640*320*3/8 = 76800 Byte Chip-Ram.
Außerdem müssen die Bilder zum Programmstart geladen werden; bei vielen großen
Bildern kann das schon mal ein paar Sekunden dauern. Verwenden Sie daher
lieber wenige kleine Bilder und setzen das @{"TILE-Flag" LINK Tile} als viele
große Bilder. Ab Version 2.1 können zwar auch Bilder während der Laufzeit
@{"nachgeladen" LINK NoLoad} werden, das benötigt jedoch mehr oder weniger viel Zeit.

@ENDNODE

@NODE Gadgets "Background preferences"
@PREV main
@NEXT Gadgets

                                                    @{"Loaded Pictures:" LINK PicList}
          +---------------------------------+ +-+ +-----------------+-+
 @{"   Name " LINK Path} | Work:Pictures/Diskette          | |@{"?" LINK GetPath}| | Back1           |#|
          +---------------------------------+ +-+ | Romantique      |#|
          +---------------------------------+     | Diskette        |#|
 @{"Pattern " LINK Pattern} | "(#? voll, #? frei              |     | Wüste           |#|
          +---------------------------------+     |                 |^|
          +---------------------------------+     |                 |V|
 @{"   Task " LINK Task} | WORKBENCH                       |     +-----------------+-+
          +---------------------------------+     | Diskette          |
          +------------+                          +----+----+----+----+
          |@{"    View    " LINK View}|                          |@{"Add " LINK Add}|@{"Del " LINK Delete}|@{" Up " LINK Delete}|@{"Down" LINK Delete}|
          +------------+                          +----+----+----+----+
          +------------ @{"Information" LINK Info} ------------+                   +-+
          |             Picture  Workbench      |     @{"Tile picture:" LINK Tile} |V|
          |                                     |                   +-+
          |     Size:   96 x 96  640 x 256      |                   +-+
          |                                     |  @{"Screen picture:" LINK Screen}  | |
          |     Planes:   3         3           |                   +-+
          |                                     |                   +-+
          |     Aspect: 10 : 22  22 : 44        |    @{"Delay loading:" LINK NoLoad} | |
          +-------------------------------------+                   +-+

  +------------+              +------------+                 +------------+
  |@{"    Save    " LINK SAVE}|              |@{"     Use    " LINK Use}|                 |@{"   Cancel   " LINK Cancel}|
  +------------+              +------------+                 +------------+

@ENDNODE

@NODE Path "Das Symbol 'Name'"
@PREV Gadgets
@NEXT Pattern

Hier wird der Name des Bildes eingegeben. Das Symbol @{"daneben" LINK GetPath} öffnet einen
Dateiauswahlfenster für den gleichen Zweck. Der hintere Teil des Namens
erscheint in der @{"Bilderliste" LINK PicList}.

@ENDNODE

@NODE Pattern "Das Symbol 'Pattern'"
@PREV Path
@NEXT Task

Hier wird das Fenstermuster angegeben, das für dieses Bild gilt. Fenster,
deren Titel auf dieses Muster paßt verwenden dieses Bild als Hintergrund-
muster.
Beispiele:

        "#? voll, #? frei, #? belegt" - paßt für alle Disketten
        (3D|DPAINT|XiPaint)           - für die Schubladen 3D, DPAINT und
                                        XiPaint

Mögliche Musterzeichen:

        ?       Ein einzelnes Zeichen
        #       Das nächste Symbol beliebig oft (auch 0 mal)
        (ab|cd) Eins der durch '|' getrennten Symbole
        ~       Negiert den folgenden Ausdruck. D. h. ~(System) paßt
                auf alles außer 'System'
        [abc]   Buchstabenmenge, paßt auf jeden Buchstaben der Menge
        [~bc]   Buchstabenmenge, paßt auf alle Buchstaben, die nicht in
                der Menge enthalten sind
        a-z     Buchstabenraum (nur in Buchstabenmengen)
        %       Nichts, nützlich in 'foo(bar|%)'

@ENDNODE

@NODE Task "Das Symbol 'Task'"
@PREV Pattern
@NEXT Tile

Hier wird das Taskmuster angegeben, das für dieses Bild gilt. Programme,
deren Titel auf dieses Muster paßt verwenden dieses Bild als Hintergrund-
muster für ihre Fenster.
Beispiele:

        WORKBENCH         - paßt nur für die Workbench
        #?DeliTracker#?   - paßt für den Delitracker

Die beiden '#?' Zeichen um das Muster sind nützlich, denn aus 'DeliTracker'
kann 'dh0:Tools/DeliTracker' werden wenn er aus dem CLI heraus aufgerufen
wird.

Mögliche Musterzeichen:

        ?       Ein einzelnes Zeichen
        #       Das nächste Symbol beliebig oft (auch 0 mal)
        (ab|cd) Eins der durch '|' getrennten Symbole
        ~       Negiert den folgenden Ausdruck. D. h. ~(System) paßt
                auf alles außer 'System'
        [abc] Buchstabenmenge, paßt auf jeden Buchstaben der Menge
        [~bc] Buchstabenmenge, paßt auf alle Buchstaben, die nicht in
                der Menge enthalten sind
        a-z      Buchstabenraum (nur in Buchstabenmengen)
        %       Nichts, nützlich in 'foo(bar|%)'

@ENDNODE

@NODE Tile "Das TILE-Flag"
@PREV Typ
@NEXT Screen

Das Symbol 'Tile Picture' setzt oder löscht für das @{"aktive Bild" LINK PicList} das
TILE-Flag. Ist dieses Flag gesetzt, so wird das Bild solange
aneinandergesetzt, bis das Fenster gefüllt ist. Ansonsten wird der
restliche Bereich mit Farbe 0 (grau) gelöscht. Damit das TILE-Flag
funktioniert müssen die @{"Kanten des Bildes aneinanderpassen" LINK Bilder}.

@ENDNODE

@NODE Screen "Das Screen-Flag"
@PREV Tile
@NEXT NoLoad

Das Symbol 'Screen Picture' setzt oder löscht für das @{"aktive Bild" LINK PicList} das
Screen-Flag. Ist dieses Flag gesetzt, dann kann dieses Bild dazu verwendet
werden, um im Hintergrund eines Bildschirms angezeigt zu werden. Das @{"Muster" LINK Pattern}
wird verwendet, um festzustellen, für welchen Screen das Bild passt. Dabei
gilt der Titel, der angezeigt wird, wenn kein Fenster aktiv ist. Um den
Bildschirm der Workbench zu benutzen, müßten die Einträge folgendermaßen
aussehen:

   Pattern: "Workbench Screen"
      Task: "WORKBENCH"
 ScreenPic: gesetzt

@ENDNODE

@NODE NoLoad "Delay loading"
@PREV Screen
@NEXT PicList

Das Symbol 'Delay loading' bestimmt, wann das Bild geladen werden soll.
Wenn es gesetzt ist, dann wird das Bild erst dann geladen, wenn es zum
ersten Mal benötigt wird. Wenn später einmal Speicher gebraucht wird, dann
wird das Bild, sofern es nicht gebraucht wird, wieder freigegeben. Wer
viele Bilder verwenden will, der sollte bei denjenigen, die nicht so oft
gebraucht werden, 'Delay loading' verwenden, sonst braucht Background zu
viel Zeit, um sie alle zu laden.

@ENDNODE

@NODE GetPath "Das Diskettensymbol"
@PREV NoLoad
@NEXT PicList

Dieses Symbol öffnet ein Dateiauswahlfenster, mit dem ein Bild ausgewählt
werden kann. Der Pfad erscheint dann im @{"Texteingabefeld" LINK Path} daneben und in der
@{"Bilderliste" LINK PicList}.

@ENDNODE

@NODE PicList "Die Bilderliste"
@PREV GetPath
@NEXT Add

Im rechten Teil des Fensters werden alle momentan geladenen Bilder in einer
Liste angezeigt. Das jeweils aktive Bild wird unter der Liste angezeigt.
@{"Pfad" LINK Path}, @{"Fenstermuster" LINK Pattern}, {"Taskmuster" LINK Task} und sonstige @{"Attribute" LINK Typ}
des aktiven Bildes können mit Hilfe der anderen Bedienelemente verändert
werden.

@ENDNODE

@NODE Add "Das Symbol 'Add'"
@PREV PicList
@NEXT Delete

Das Add-Symbol erzeugt einen neuen @{"Eintrag" LINK PicList} für ein Bild. @{"Pfad" LINK Path} und @{"Muster" LINK Pattern}
werden aus den entsprechenden Texteingabefeldern übernommen. Der @{"Typ" LINK Typ} des
neuen Bildes wird auf @{"'Normal'" LINK Typ} gesetzt, das @{"TILE-Flag" LINK Tile} gesetzt.
Das neue Bild wird entweder nach dem @{"aktiven Bild" LINK PicList} oder am Ende der @{"Liste" LINK PicList}
eingefügt.

@ENDNODE

@NODE Delete "Das Symbol 'Del'"
@PREV Add
@NEXT Up

Das Symbol Delete löscht das @{"aktive Bild" LINK PicList} aus der @{"Liste" LINK PicList}; die
Texteingabefelder bleiben jedoch unverändert. Wenn Sie also das falsche
Bild gelöscht haben, können Sie es mit Hilfe des @{"Add-Symbols" LINK Add} daneben
wiederherstellen.

@ENDNODE

@NODE Up "Das Symbol 'Up'"
@PREV Delete
@NEXT Down

Das Symbol Up bewegt das @{"aktive Bild" LINK PicList} einen Platz weiter nach oben. Wenn auf
ein Fenster bzw. einen Bildschirm zwei Bilder passen, dann wird dasjenige
verwendet, das sich weiter unten befindet. Das Bild mit dem Muster '#?'
sollte also ganz oben stehen, weil sonst die anderen nicht verwendet werden.

@ENDNODE

@NODE Down "Das Symbol 'Down'"
@PREV Up
@NEXT View

Das Symbol Down bewegt das @{"aktive Bild" LINK PicList} einen Platz weiter nach unten. Wenn
auf ein Fenster bzw. einen Bildschirm zwei Bilder passen, dann wird
dasjenige verwendet, das sich weiter unten befindet. Unten sollten sich
also nur Bilder befinden, die nicht auf mehrere Fenster passen, vor allem
aber keine Bilder mit einem @{"Fenstermuster" LINK Pattern} wie '#?'.

@ENDNODE

@NODE View "Das Symbol 'View'"
@PREV Delete
@NEXT Info

Durch Anklicken des Symbols View öffnet sich ein Fenster, in dem das @{"aktive" LINK PicList}
@{"Bild" LINK PicList} so dargestellt wird, wie es später im Workbenchfenster zu sehen sein
wird. Um Änderungen (z. B. des @{"TILE-Flags" LINK Tile}) sichtbar zu machen müssen Sie
das Symbol erneut anwählen.

@ENDNODE

@NODE Save "Das Symbol 'Save'"
@PREV Info
@NEXT Use

Save beendet das Programm, lädt die neuen Bilder und speichert die Liste
dauerhaft, sodaß sie nach einem Neustart wieder verwendet wird.

@ENDNODE

@NODE Use "Das Symbol 'Use'"
@PREV Save
@NEXT Cancel

Use beendet das Programm, lädt die neuen Bilder und speichert die Liste
sodaß sie bis zum nächsten Neustart zur Verfügung steht.
@ENDNODE

@NODE Cancel "Das Symbol 'Cancel'"
@PREV Use
@NEXT Cancel

Cancel beendet das Programm ohne die Bilderliste zu speichern.

@ENDNODE

@NODE Info "Das Informationfeld"
@PREV View
@NEXT Save

Im Informationsfeld werden Daten über die Geometrie des Bildes und der
Workbench ausgegeben. Size gibt die Größe des Bildes bzw. des Bildschirms
an. Wenn das Bild größer als der Workbenchbildschirm ist, wird ein Teil des
Bildes niemals sichtbar sein. Planes gibt die Anzahl der Bitplanes an, die
verwendet werden. Die Anzahl der Farben berechnet sich folgendermaßen:
        2^Anzahl der Bitplanes
Wenn Sie also 3 Bitplanes verwenden stehen ihnen 8 Farben zur Verfügung.
Hat das Bild mehr Farben als Ihre Workbench, dann wird das Bild
wahrscheinlich nicht so aussehen wie es sollte. Verwenden Sie also nur
Bilder, die gleich viel oder weniger Farben haben als Ihre Workbench. Der
letzte Wert, Aspect, gibt das Verhältnisvon Höhe und Breite wieder. Es
sollte bei Workbench und Bild etwa übereinstimmen, da es sonnst zu
Verzerrungen  kommt. Also z. B. 11:22 und 10:20, oder 11:11 und 10:12 etc.

@{"Welche Bilder kann Ich verwenden?" LINK Bilder}
@ENDNODE

@NODE Menus "Die Menüs"
@PREV Main
@NEXT Menus

Die Menüs entsprechen exakt denen der Systemvoreinsteller, sodaß Sie zu
Ihrer Funktion auch im Systemhandbuch nachschlagen können, falls Sie etwas
nicht verstehen.

   Project        Edit                 Picture             Settings
    @{"Open ..." LINK Open}       @{"Reset To Defaults" LINK Defaults}    @{"Compute Colors" LINK Quantization}       @{"Save Icons?" LINK ICON}
    @{"Save As ..." LINK SaveAs}    @{"Last Saved" LINK LastSaved}           @{"Dither" LINK Dither}               @{"Quantization >>" LINK Quantization}
    @{"About ..." LINK About}      @{"Restore" LINK Restore}              @{"Lock Colors ..." LINK Lock}        @{"Median Cut" LINK Median}
    @{"Quit" LINK Ende}                                @{"Change Colors ..." LINK Change}      @{"Custom" LINK Custom}
                                        @{"Load Colors ..." LINK LoadCols}
                                        @{"Save Selected ..." LINK SavePic}

@ENDNODE

@NODE Open "Project/Open"
@PREV Menus
@NEXT SaveAs

Lädt eine Datei mit einer Bilderliste.

@ENDNODE

@NODE SaveAs "Project/Save As"
@PREV Open
@NEXT About

Läßt Sie die momentane Bilderliste in eine Datei speichern. Es öffnet sich
ein Dateiauswahlfenster, das standartmäßig das Verzeichnis
Sys:Prefs/Presets/ als Ziel vorsieht. Ist @{"'Save Icons?'" LINK Icon} ausgewählt, dann
wird auch ein Piktogramm erzeugt. Im Gegensatz zu den Systemvoreinstellern
wird durch Öffnen dieses Piktogramms nicht die Bilderliste geladen, sondern
nur das Voreinstellungsprogramm gestartet. Verwenden Sie den Menüpunkt
@{"Project/Open" LINK open} um die Bilderliste zu laden.

@ENDNODE

@NODE About "Project/About"
@PREV SaveAs
@NEXT Ende

Dieser Menüpunkt zeigt Daten über das Programm an. (U. a. @{"Version, Adresse" LINK Autor}
@{"des Autors, Hilfsmittel..." LINK Autor})

@ENDNODE

@NODE Ende "Project/Quit"
@PREV About
@NEXT Ende

Verlassen des Editors ohne Speichern der Änderungen. Dieses Option hat die
gleiche Funktion wie @{"'Cancel'" LINK Cancel}.

@ENDNODE

@NODE Defaults "Edit/Reset To Defaults"
@PREV Menus
@NEXT LastSaved

Setzt die Einstellungen des Editors auf die Standarteinstellungen zurück.
Genauer bedeutet das, daß wieder die Muster verwendet werden, die mit
WBPATTERN festgelegt wurden.

@ENDNODE

@NODE LastSaved "Edit/LastSaved"
@PREV Defaults
@NEXT Restore

Lädt die Einstellungen, die zuletzt mit @{"'Save'" LINK Save} gespeichert wurden.

@ENDNODE

@NODE Restore
@PREV LastSaved
@NEXT Menus

Zurücksetzen der Einstellungen auf die Einstellungen beim ersten öffnen des
Editors.

@ENDNODE

@NODE Quantization "Picture/Compute Colors"
@PREV Menus
@NEXT Dither

Versucht eine Farbpalette zu finden, die für alle Bilder der @{"Bilderliste" LINK PicList}
passt. Es stehen zwei verschiedene Methoden der Farbauswahl zur Verfügung.
@{"Median Cut" LINK Median} ist ein Verfahren nach Paul S. Heckbert. @{"Custom" LINK Custom} ist eine
Eigenentwicklung meinerseits. Im Gegensatz zum @{"Median Cut" LINK Median} können dabei
jedoch einzelne Farben @{"gesperrt" LINK Lock} werden, sodaß sie nicht verändert werden.
Allerdings weiß ich nicht, ob mein Verfahren sehr gut oder schnell ist. Wer
ein bißchen Ahnung davon hat, soll sich doch einmal den @{"Algorythmus" LINK Algo}
durchlesen und @{"mir" LINK Autor} seine Meingung dazu schicken.

@ENDNODE

@NODE Algo
@PREV Quantization
@NEXT Autor

   1. Schritt: Alle Farben, die in den Bildern vorkommen, werden gezählt
   2. Schritt: Die Farben werden in die zur Verfügung stehenden Farbtöpfe
               eingeordnet. Ist kein freier Topf mehr vorhanden, werden die
               zwei einander ähnlichsten zusammengefasst. Dabei wird auch
               die neue Farbe mitberücksichtigt.
   3. Schritt: Schließlich wird die Farbe für das Farbregister bestimmt,
               indem für jeden Topf die Farbwerte zusammengezählt werden
               und der Durchschnitt gebildet wird.

Der erste und der dritte Schritt sind auf jeden Fall in Ordnung, hier der
Quellcode für den zweiten:

         /* Colourcount enthält die Anzahl der gefundenen Farben */

      for( i = ColourCount ; i > 0 ; i--)
      {

            /* Einen freien Farbtopf suchen */

         NewPot = NULL;
         for(j = NumColours ; j > 0 ; j--)
         {
                                         /* Der Farbtopf ist noch leer
                                          * (gesperrte Farben haben hier 1)
                                          */
            if (Pot[j] . NumPixels == 0)
            {
               NewPot = &Pot[j];
               break;
            }
         }

         if(NewPot != NULL) /* Wir haben noch einen freien gefunden */
         {
            /* sRed, sGreen, sBlue enthalten die zusammenaddierten
               Farbwerte; Red, Green, Blue die endgültigen
            */

            pix = NewPot -> NumPixels = ColourTable[i-1] . NumPixels;
            NewPot -> sRed   = (NewPot -> Red   = ColourTable[i-1] . Red  )*pix;
            NewPot -> sGreen = (NewPot -> Green = ColourTable[i-1] . Green)*pix;
            NewPot -> sBlue  = (NewPot -> Blue  = ColourTable[i-1] . Blue )*pix;
         }
         else
         {

            /* So, jetzt machen wir einen Topf leer */

            pix = Pot[0] . NumPixels = ColourTable[i] . NumPixels;
            Pot[0] . sRed   = (Pot[0] . Red   = ColourTable[i-1] . Red  )*pix;
            Pot[0] . sGreen = (Pot[0] . Green = ColourTable[i-1] . Green)*pix;
            Pot[0] . sBlue  = (Pot[0] . Blue  = ColourTable[i-1] . Blue )*pix;

            Dist = 0x7fffffff; /* Größtmöglicher Abstand */
            for(j = NumColours ; j > 0 && Dist; j--)
            {
               for(k = j - 1 ; k >= 0 && Dist ; k--)
               {
                  DistRGB = Pot[k] . Red - Pot[j] . Red;
                  NewDist = DistRGB * DistRGB;

                  DistRGB = Pot[k] . Green - Pot[j] . Green;
                  NewDist += DistRGB * DistRGB;

                  DistRGB = Pot[k] . Blue - Pot[j] . Blue;
                  NewDist += DistRGB * DistRGB;

                  /* Wenn die Farbe näher dran ist als die alte, und nicht
                     beide Farben gesperrt sind
                  */

                  if ((NewDist <= Dist) && !(Pot[k] . Locked && Pot[j] . Locked))
                  {
                     NewPot  = &Pot[j];
                     NewPot2 = &Pot[k];
                     Dist = NewDist;
                  }
               }
            }

            /* Die zwei zusammenfassen */

            if (!((NewPot -> Locked) || (NewPot2 -> Locked)))
            {
               pix = (NewPot -> NumPixels  += NewPot2 -> NumPixels);
               NewPot -> Red   = ((NewPot -> sRed   += NewPot2 -> sRed)/pix);
               NewPot -> Green = ((NewPot -> sGreen += NewPot2 -> sGreen)/pix);
               NewPot -> Blue  = ((NewPot -> sBlue  += NewPot2 -> sBlue)/pix);
            }
            else if (NewPot2 -> Locked)
            {
               NewPot -> Red   = NewPot2 -> Red;
               NewPot -> Green = NewPot2 -> Green;
               NewPot -> Blue  = NewPot2 -> Blue;
            }

            /* Die neue Farbe richtig einfügen */

            *NewPot2 = Pot[0];
         } /* else */

      } /* for i */

@ENDNODE

@NODE Dither "Picture/Dither"
@PREV Quantization
@NEXT Lock

Passt das @{"aktive Bild" LINK PicList} an die aktuelle Farbpalette an. Dabei wird der
Floyd-Steinerg-Algorythmus verwendet.

@ENDNODE

@NODE Lock "Picture/Lock Colors"
@PREV Dither
@NEXT Change

Es erscheint ein Fenster, in dem Farben gesperrt werden können. Gesperrte
Farben werden nicht verändert wenn @{"Compute Colors" LINK Quantization} aufgerufen wird. Nur die
@{"Custom" LINK Custom} Methode unterstützt gesperrte Farben, @{"Median Cut" LINK Median} nimmt keine
Rücksicht auf sie.

@ENDNODE

@NODE Change "Picture/Change Colors"
@PREV Lock
@NEXT LoadCols

Es erscheint ein Fenster, in dem die Farben geändert oder umgestellt werden
können. Das Fenster ist zu bedienen wie gebräuchliche Farbrequester.

@ENDNODE

@NODE LoadCols "Picture/Load Colors"
@PREV Change
@NEXT LoadPic

Mit Hilfe dieses Menüpunktes können Sie die Farben einer IFF Datei laden.
Wenn Sie also ihre Bilder an die Farben der Workbench @{"anpassen" LINK Quantization} wollen, dann
laden Sie die Datei 'ENV:Sys/Palette.ilbm' und wählen dann @{"Dither" LINK Dither} für jedes
Bild, das auf der Workbench zu sehen sein wird. Um die Farben von andren
Bildschirmen zu verwenden, müssen Sie einen Screenshot davon machen und
dann diese Datei laden.

@ENDNODE

@NODE SavePic "Picture/Save Selected"
@PREV LoadCols
@NEXT Menus

Mit Hilfe dieses Menüpunktes können Sie das gerade @{"aktive Bild" LINK PicList} speichern.
Es erscheint ein Dateiauswahlfenster, in dem Sie angeben müssen, wohin Sie
das Bild speichern wollen.

@ENDNODE

@NODE Icon "Settings/SaveIcons?"
@PREV Menus
@NEXT Median

Mit Hilfe dieses Menüpunktes können Sie Projektpiktogramme für die
Einstellungen des Editors in denselben Schubladen speichern, in denen sich
auch die zugehörigen Daten befinden. Die Aktivierung der Einstellungen
durch Öffnen des Piktogramms ist jedoch nicht möglich. Stattdessen müssen Sie
@{"Project/Open" LINK Open} benutzen.

@ENDNODE

@NODE Median
@PREV Icon
@NEXT Custom

Ist dieser Menüpunkt angewählt, dann wird für die @{"Farbanpassung" LINK Quantization} der Median
Cut Algorythmus verwendet. Diese Methode erlaubt es nicht, einzelne Farben
zu @{"sperren." LINK Lock}

@ENDNODE

@NODE Custom
@PREV Median
@NEXT Menus

Ist dieser Menüpunkt angewählt, dann wird für die @{"Farbanpassung" LINK Quantization} ein von mir
selbst geschriebener @{"Algorythmus" LINK Algo} verwendet. Diese Methode erlaubt es,
einzelne Farben zu @{"sperren." LINK Lock}

@ENDNODE
