@DATABASE 2D Drawing V1.00
$VER: Pure Basic - 2D Drawing library V1.00 (01.09.1999) © Fantaisie Software
@NODE MAIN "2D Drawing library"

  @{b}Pure Basic - 2D Drawing library V1.00@{ub}

    Das 2D Zeichnen beinhaltet alle 2D Zeichenfunktionen, die Sie
    in einem sichtbaren Bereich ausführen können. Das Zeichnen einer
    Linie, einer Box, eines Kreies oder einfach eines Textes gehört
    zu den 2D Zeichenoperationen. Sie müssen einfach das Ausgabeziel
    (Bildschirm, Fenster, Bitmap..) angeben und können anfangen zu
    zeichnen...

  @{b}Befehlübersicht:@{ub}

    @{" BackColour      " LINK BackColour}
    @{" BoxFill         " LINK BoxFill}
    @{" Circle          " LINK Circle}
    @{" Cls             " LINK Cls}
    @{" CopyBitmap      " LINK CopyBitmap}
    @{" CursX           " LINK CursX}
    @{" CursY           " LINK CursY}
    @{" DPrint          " LINK DPrint}
    @{" DrawingFont     " LINK DrawingFont}
    @{" DrawingMode     " LINK DrawingMode}
    @{" DrawingOutput   " LINK DrawingOutput}
    @{" DrawingRastPort " LINK DrawingRastPort}
    @{" Ellipse         " LINK Ellipse}
    @{" FrontColour     " LINK FrontColour}
    @{" Line            " LINK Line}
    @{" Locate          " LINK Locate}
    @{" ObtainBestPen   " LINK ObtainBestPen}
    @{" Plot            " LINK Plot}
    @{" Point           " LINK Point}
    @{" ReleasePen      " LINK ReleasePen}
    @{" TextLength      " LINK TextLength}
    @{" TextStyle       " LINK TextStyle}

  @{b}Beispiel@{ub}

    @{" 2D Drawing demo " LINK "PureBasic:Examples/Sources/Bitmap&Drawing.pb/Main"}

@ENDNODE


@NODE BackColour

    @{b}SYNTAX@{ub}
  BackColour(Colour)

    @{b}STATEMENT@{ub}
  Definiert die standardmäßige Hintergrundfarbe für alle Grafikfunktionen
  und die Textanzeige.

@ENDNODE


@NODE BoxFill

    @{b}SYNTAX@{ub}
  BoxFill(x1, y1, x2, y2)

    @{b}STATEMENT@{ub}
  Zeichnet einen ausgefüllten Kasten in der aktiven Farbe (festgelegt
  mittels FrontColour()) in das aktuelle Fenster.

@ENDNODE


@NODE Circle

    @{b}SYNTAX@{ub}
  Circle(x, y, Radius)

    @{b}STATEMENT@{ub}
  Zeichnet den Umriß eines Kreises an der Position x,y mit der Größe
  des angegebenen Radius.

@ENDNODE


@NODE Cls

    @{b}SYNTAX@{ub}
  Cls(Colour)

    @{b}STATEMENT@{ub}
  Löscht das gesamte Ausgabeziel in angegebenen Farbe.

@ENDNODE


@NODE CopyBitmap

    @{b}SYNTAX@{ub}
  CopyBitMap(BitMapID, SourceX, SourceY, DestX, DestY, Width, Height)

    @{b}STATEMENT@{ub}
  Kopiert den angegebenen Bereich - SourceX, SourceY beschreiben die
  linke obere Ecke; Width, Height die Breite und Höhe des Bereichs -
  aus der BitMapID auf das Auagabeziel (Output). Mit DestX und DestY
  können Sie die x und y Position, an der der kopierte Bereich
  eingefügt werden soll, angeben.

  Diese Funktion ist 100% OS-freundlich und beinhaltet automatisches
  Clipping (Abschneiden der über den Fensterrand hinausstehenden
  BitMap-Teile).

@ENDNODE


@NODE CursX

    @{b}SYNTAX@{ub}
  Result.w = CursX

    @{b}FUNCTION@{ub}
  Gibt die X-Position des Text Cursors im aktuellen Ausgabeziel
  zurück.

@ENDNODE


@NODE CursY

    @{b}SYNTAX@{ub}
  Result.w = CursY

    @{b}FUNCTION@{ub}
  Gibt die Y-Position des Text Cursors im aktuellen Ausgabeziel
  zurück.

@ENDNODE


@NODE DPrint

    @{b}SYNTAX@{ub}
  DPrint(String$)

    @{b}STATEMENT@{ub}
  Zeigt den angegebenen String auf dem eingestellten Ausgabeziel an der
  mit Locate() festgelegten Position und in der mit FrontColour()
  definierten Farbe an. Sie können TextStyle() benutzen, um den Ausgabe-
  Modus (fett, kursiv, unterstrichen) zu wechseln und DrawingMode(),
  um die Zeichenart des Textes zu ändern.

@ENDNODE


@NODE DrawingFont

    @{b}SYNTAX@{ub}
  DrawingFont(FontID)

    @{b}STATEMENT@{ub}
  Ändert den aktuellen Zeichensatz auf die angegebene FontID. Alle
  neuen Texte werden mit dem neu eingestellten Zeichensatz dargestellt.

  FontID MUSS ein gültiger IntuiFont Zeiger sein. Sie können die
  NFont Library benutzen, um irgendeinen Font zu laden und den FontID()
  Zeiger an diese Funktion zu übergeben.

@ENDNODE


@NODE DrawingMode

    @{b}SYNTAX@{ub}
  DrawingMode(Mode)

    @{b}STATEMENT@{ub}
  Ändert den Zeichenmodus für Grafikausgaben:

    Hier folgt eine kurze Liste gültiger Modi:

      #JAM1       = 0 : für Textausgabe, läßt den Hintergrund transparent
      #JAM2       = 1 : für Textausgabe, gibt Text in der Hintergrundfarbe
                        aus
      #COMPLEMENT = 2 : Grafikausgabe im XOR Modus
      #INVERSVID  = 4 : Benutzung in Verbindung mit JAM2, es invertiert
                        Hintergrund- und Vordergrundfarben bei der
                        Textausgabe

  Hinweis: Diese Konstanten sind in der AmigaOS Resident Datei enthalten.

@ENDNODE


@NODE DrawingOutput

    @{b}SYNTAX@{ub}
  DrawingOutput(RastPort)

    @{b}STATEMENT@{ub}
  Stellt die Zeichenausgabe (Output - Ausgabeziel) auf den angegebenen
  RastPort ein. Nach dieser Einstellung werden alle Zeichenfunktionen
  auf diesem RastPort ausgeführt. Sie müssen einen gültigen RastPort
  Zeiger angeben.

  Sie können folgende Funktionen benutzen, um einfach RastPorts von
  Objekten zu erhalten:

      + WindowRastPort()
      + ScreenRastPort()
      + BitmapRastPort()

  Beispiel:

    DrawingRastPort WindowRastPort()  ; alle Zeichenausgaben finden im
                                      ; Fenster statt

@ENDNODE


@NODE DrawingRastPort

    @{b}SYNTAX@{ub}
  *RastPort = DrawingRastPort()

    @{b}STATEMENT@{ub}
  Gibt den Wert des aktuell benutzten Ausgabe-RastPorts zurück
  (für fortgeschrittene Programmierer).

@ENDNODE


@NODE Ellipse

    @{b}SYNTAX@{ub}
  Ellipse(x, y, RadiusX, RadiusY)

    @{b}STATEMENT@{ub}
  Zeichnet den Umriß einer Ellipse an der Position x,y mit den beiden
  Radien RadiusX und RadiusY.

@ENDNODE


@NODE FrontColour

    @{b}SYNTAX@{ub}
  FrontColour(Colour)

    @{b}STATEMENT@{ub}
  Definiert die standardmäßige Zeichenfarbe für alle Grafikfunktionen
  und die Textanzeige.

@ENDNODE


@NODE Line

    @{b}SYNTAX@{ub}
  Line(x1, y1, x2, y2)

    @{b}STATEMENT@{ub}
  Zeichnet eine Linie in der aktiven Farbe (festgelegt mit FrontColour())
  im aktuellen Ausgabeziel.

@ENDNODE


@NODE Locate

    @{b}SYNTAX@{ub}
  Locate(x,y)

    @{b}FUNCTION@{ub}
  Positioniert den Textcursor an der angegebenen Position
  (für DPrint()).

@ENDNODE


@NODE ObtainBestPen

    @{b}SYNTAX@{ub}
  Result.w = ObtainBestPen(r, g, b, precision)

    @{b}STATEMENT@{ub}
  Ermittelt die Farbnummer, die am besten zu den angegebenen Parametern
  passt. Auf einem öffentlichen Bildschirm (public screen) mit freien
  Farben wird eine neue Farbnummer mit den (r,g,b) Werten reserviert.
  Der 'precision' (Präzision) Parameter gibt an, wie die Funktion ihre
  Suche durchführen soll.

    Gültige Werte von 'precision' (gefolgt von der Systemkonstante):
      Exact = -1 (#PRECISION_EXACT)
      Image =  0 (#PRECISION_IMAGE)
      Icon  = 16 (#PRECISION_ICON)
      Gui   = 32 (#PRECISION_GUI)

  Hinweis: Sie MÜSSEN für alle reservierten Farben die Funktion
  ReleasePen(Result) benutzen, bevor Sie Ihr Programm beenden.
  Andernfalls werden diese Farben nie freigegeben und damit dem
  Verzeichnis der freien Farben des Bildschirms zugeordnet (sehr
  schlecht).

@ENDNODE


@NODE Plot

    @{b}SYNTAX@{ub}
  Plot(x,y)

    @{b}STATEMENT@{ub}
  Zeichnet einen Punkt in der aktiven Farbe (festgelegt mittels
  FrontColour()) in das aktuelle Fenster.

@ENDNODE


@NODE Point

    @{b}SYNTAX@{ub}
  Colour.w = Point(x, y)

    @{b}STATEMENT@{ub}
  Gibt die Farbnummer an den Koordinaten (x,y) des aktuellen
  Ausgabeziels zurück.

@ENDNODE


@NODE ReleasePen

    @{b}SYNTAX@{ub}
  ReleasePen(#Pen)

    @{b}STATEMENT@{ub}
  Teilt dem System mit, dass dieser Stift (Farbe) nicht mehr von
  Ihrem Programm benutzt (locked) wird. Damit können andere Programme
  diese Farbe wieder nutzen. Sie müssen diese Funktion aufrufen, wenn
  Sie mit ObtainBestPen() Farben reserviert haben.

@ENDNODE


@NODE TextLength

    @{b}SYNTAX@{ub}
  Length.w = TextLength(x, y)

    @{b}STATEMENT@{ub}
  Ermittelt die Länge des angegebenen String in Pixeln bezogen auf
  das aktuelle Ausgabeziel. Der Hauptvorteil dieser Funktion liegt
  darin, dass Sie die tatsächliche Länge von beliebigen Strings
  in einem beliebigen Zeichensatz (auch nicht-proportionale)
  ermitteln können.

@ENDNODE


@NODE TextStyle

    @{b}SYNTAX@{ub}
  TextStyle(Style)

    @{b}STATEMENT@{ub}
  Legt den Stil für zukünftige Textausgaben fest.

  Die erlaubten Stil-Werte sind:

    0 = keiner
    1 = unterstrichen
    2 = fett
    4 = kursiv

  Sie können diese Werte bei Bedarf mischen (fett+kursiv ist 2+4 = 6).

@ENDNODE
