Difference between revisions of "FURWARE text/Snippets/de"

From Second Life Wiki
Jump to navigation Jump to search
(Initial version)
 
m
Line 86: Line 86:
fwSetBoxText("SomeBox", "This is some box!");
fwSetBoxText("SomeBox", "This is some box!");


// Setzt den Standard-Stil alles Boxen auf color=red, align=center (siehe auch den nächsten Abschnitt wie man das schöner machen kann).
// Setzt den Standard-Stil aller Boxen auf color=red, align=center (der nächste Abschnitt zeigt, wie man dies schöner erledigen kann).
fwSetDefaultStyle("", "c=red;a=center");
fwSetDefaultStyle("", "c=red;a=center");


Line 112: Line 112:
== Noch angenehmere Verwendung ==
== Noch angenehmere Verwendung ==


Die Funktionen im letzten Abschnitt sind lediglich Wrapper um die FURWARE text-Befehle, allerdings muss du weiterhin Dinge wie Stileinstellungen selber schreiben und die die verschiedenen Optionen und deren Werte merken. Die folgenden Konstanten und Funktionen nehmen dir einen Teil dieser Arbeit ab (auch hier gilt, dass du nur die Teile kopieren musst, die du tatsächlich benötigst – auch um Speicher zu sparen!).
Die Funktionen im letzten Abschnitt sind lediglich Wrapper um die FURWARE text-Befehle, allerdings muss du weiterhin Dinge wie Stileinstellungen selber schreiben und dir die verschiedenen Optionen und deren Werte merken. Die folgenden Konstanten und Funktionen nehmen dir einen Teil dieser Arbeit ab (auch hier gilt, dass du nur die Teile kopieren musst, die du tatsächlich benötigst – auch um Speicher zu sparen!).


{{KBtip|Beachte, dass die folgenden Zeile die Funktionen im vorigen Abschnitt ergänzen, d.h. du musst die entsprechenden Funktionen zusätzlich mitkopieren.}}
{{KBtip|Beachte, dass die folgenden Zeilen die Funktionen im vorigen Abschnitt ergänzen, d.h. du musst die entsprechenden Funktionen zusätzlich mitkopieren.}}


<lsl>
<lsl>
// === Colors ===
// === Farben (colors) ===


string COLOR_DEFAULT            = "c=def;";
string COLOR_DEFAULT            = "c=def;";


// Grayscales.
// Graustufen.
string COLOR_WHITE              = "c=white;";
string COLOR_WHITE              = "c=white;";
string COLOR_SILVER            = "c=silver;";
string COLOR_SILVER            = "c=silver;";
Line 127: Line 127:
string COLOR_BLACK              = "c=black;";
string COLOR_BLACK              = "c=black;";


// Standard colors.
// Standardfarben.
string COLOR_RED                = "c=red;";
string COLOR_RED                = "c=red;";
string COLOR_GREEN              = "c=green;";
string COLOR_GREEN              = "c=green;";
Line 135: Line 135:
string COLOR_YELLOW            = "c=yellow;";
string COLOR_YELLOW            = "c=yellow;";


// Dark colors.
// Dunkle Farben.
string COLOR_DARKRED            = "c=darkred;";
string COLOR_DARKRED            = "c=darkred;";
string COLOR_DARKGREEN          = "c=darkgreen;";
string COLOR_DARKGREEN          = "c=darkgreen;";
Line 143: Line 143:
string COLOR_DARKYELLOW        = "c=darkyellow;";
string COLOR_DARKYELLOW        = "c=darkyellow;";


// Arbitrary RGB (red, green, blue) color.
// Beliebige RGB- (Rot, Grün, Blau) Farben.
string fwColorRGB(float red, float green, float blue) {
string fwColorRGB(float red, float green, float blue) {
     return "c=" + (string)red + "," + (string)green + "," + (string)blue + ",1" + ";";
     return "c=" + (string)red + "," + (string)green + "," + (string)blue + ",1" + ";";
}
}


// Arbitrary RGBA (red, green, blue, alpha/opacity) color.
// Beliebige RGBA- (Rot, Grün, Blau, Alpha/Deckkraft) Farben.
string fwColorRGBA(float red, float green, float blue, float alpha) {
string fwColorRGBA(float red, float green, float blue, float alpha) {
     return "c=" + (string)red + "," + (string)green + "," + (string)blue + "," + (string)alpha + ";";
     return "c=" + (string)red + "," + (string)green + "," + (string)blue + "," + (string)alpha + ";";
}
}


// === Alignment ===
// === Ausrichtung (alignment) ===


string ALIGN_DEFAULT            = "a=def;";
string ALIGN_DEFAULT            = "a=def;";
Line 160: Line 160:
string ALIGN_RIGHT              = "a=right;";
string ALIGN_RIGHT              = "a=right;";


// === Wrapping ===
// === Umbruch (wrapping) ===


string WRAP_DEFAULT            = "w=def;";
string WRAP_DEFAULT            = "w=def;";
Line 167: Line 167:
string WRAP_NONE                = "w=none;";
string WRAP_NONE                = "w=none;";


// === Trimming ===
// === Abschneiden von Leerzeichen am Anfang/Ende (trimming) ===


string TRIM_DEFAULT            = "t=def;";
string TRIM_DEFAULT            = "t=def;";
Line 173: Line 173:
string TRIM_OFF                = "t=off;";
string TRIM_OFF                = "t=off;";


// === Fonts ===
// === Schriftarten (fonts) ===


string FONT_DEFAULT            = "f=def;";
string FONT_DEFAULT            = "f=def;";
Line 192: Line 192:
string FONT_PROFONT            = "f=45a8e6f6-90e4-299d-d3bc-0bf4dbf170db;";
string FONT_PROFONT            = "f=45a8e6f6-90e4-299d-d3bc-0bf4dbf170db;";


// === Borders ===
// === Rahmen (borders) ===


string BORDER_DEFAULT          = "border=def;";
string BORDER_DEFAULT          = "border=def;";


// These are just some examples for common border styles.
// Einige Beispiele für oft benutzte Rahmenstile.
string BORDER_ALL_SIDES        = "border=tblr;";
string BORDER_ALL_SIDES        = "border=tblr;";
string BORDER_ALL_SIDES_THICK  = "border=tblr1;";
string BORDER_ALL_SIDES_THICK  = "border=tblr1;";
Line 203: Line 203:
string BORDER_LEFT_RIGHT        = "border=lr;";
string BORDER_LEFT_RIGHT        = "border=lr;";


// A more general helper function for borders. The side parameters are ordered clockwise, starting on top.
// Eine allgemeinere Hilfsfunktion für Rahmen. Die Seiten-Parameter sind von oben beginnend im Uhrzeigersinn angeordnet.
string fwBorder(integer top, integer right, integer bottom, integer left, integer style) {
string fwBorder(integer top, integer right, integer bottom, integer left, integer style) {
     string result = "border=";
     string result = "border=";
Line 224: Line 224:
fwSetDefaultStyle("", COLOR_RED + ALIGN_CENTER);
fwSetDefaultStyle("", COLOR_RED + ALIGN_CENTER);


// Füge eine Box mit eine Stileinstellung hinzu. Wir benutzen hier eine selbstspezifizierte RGB-Farbe.
// Füge eine Box mit einer Stileinstellung hinzu. Wir benutzen hier eine selbstspezifizierte RGB-Farbe.
fwAddBox("SomeBox", "ParentBox", 2, 2, 10, 5, "Some initial text", FONT_LUXI + fwColorRGB(0.5, 0.75, 0.0) + BORDER_ALL_SIDES);
fwAddBox("SomeBox", "ParentBox", 2, 2, 10, 5, "Some initial text", FONT_LUXI + fwColorRGB(0.5, 0.75, 0.0) + BORDER_ALL_SIDES);
</lsl>
</lsl>

Revision as of 15:00, 10 July 2013


Diese Seite beinhaltet verschiedene nützliche Code-Schnipsel (Funktionen, Konstanten), die die Arbeit mit FURWARE text wesentlich angenehmer machen.

Grundlegende Funktionen

Die Funktionen in diesem Abschnitt sind Wrapper um die einzelnen FURWARE text-Befehle. Sie wurden so entworfen, dass sie den folgenden Anforderungen genügen:

  • Die Funktionen sollen in sich abgeschlossen sein. Das heißt, dass du auch nur diejenigen Funktionen kopieren kannst, die du wirklich benötigst und sie werden funktionieren.
  • Die Funktionen (und deren Parameter) sollen selbsterklärend sein. Das heißt, dass sie auch direkt als eine Kurzreferenz für den Befehl dienen sollen, den sie ausführen.

Dass die Funktionen in sich abgeschlossen sind bedeutet auch, dass jede der Funktionen einen llMessageLinked(...)-Aufruf enthält. Das Ziel dieser Aufrufe ist hier auf LINK_SET (also das gesamte Linkset) gesetzt. Falls nötig, ändere dieses Ziel bitte in deinen Skripten.

<lsl> fwSetText(string text) {

   llMessageLinked(LINK_SET, 0, text, "fw_data");

}

fwSetBoxText(string box, string text) {

   llMessageLinked(LINK_SET, 0, text, "fw_data:" + box);

}

fwSetStyle(string style) {

   llMessageLinked(LINK_SET, 0, style, "fw_conf");

}

fwSetBoxStyle(string box, string style) {

   llMessageLinked(LINK_SET, 0, style, "fw_conf:" + box);

}

fwSetDefaultStyle(string target, string style) {

   // "target" darf leer, "root" oder "nonroot" sein.
   llMessageLinked(LINK_SET, 0, style, "fw_defaultconf:" + target);

}

fwSetVariable(string name, string value) {

   llMessageLinked(LINK_SET, 0, value, "fw_var:" + name);

}

fwAddBox(string name, string parent, integer x, integer y, integer w, integer h, string text, string style) {

   llMessageLinked(LINK_SET, 0, text, "fw_addbox: " +name + ":" + parent + ":"+
                   (string)x + "," + (string)y + "," + (string)w + "," + (string)h + ":" + style);

}

fwDelBox(string name) {

   llMessageLinked(LINK_SET, 0, "", "fw_delbox:" + name);

}

fwTouchQuery(integer linkNumber, integer faceNumber, string userData) {

   llMessageLinked(LINK_SET, 0, userData, "fw_touchquery:" + (string)linkNumber + ":" + (string)faceNumber);

}

list fwTouchReply(string replyString) {

   list tokens = llParseStringKeepNulls(replyString, [":"], []);
   return [
       llList2String(tokens, 0), llList2Integer(tokens, 1), llList2Integer(tokens, 2),
       llList2String(tokens, 3), llList2Integer(tokens, 4), llList2Integer(tokens, 5),
       llDumpList2String(llDeleteSubList(tokens, 0, 5), ":")
   ];

}

fwSetNotify(integer enabled) {

   string s = "off"; if (enabled) s = "on";
   llMessageLinked(LINK_SET, 0, s, "fw_notify");

}

fwMemory() {

   llMessageLinked(LINK_SET, 0, "", "fw_memory");

}

fwReset() {

   llMessageLinked(LINK_SET, 0, "", "fw_reset");

} </lsl>

Beispiele

Die oben aufgeführen Funktionen erlauben dir zwar die meisten Befehle einfacher zu verwenden, aber einige Details müssen dennoch von Hand erledigt werden, beispielsweise das Angeben von Textstil-Konfigurationen. Die folgenden Zeilen geben dir ein paar Beispiele für die Verwendung der Funktionen.

<lsl> // Setzt den Text aller Boxen in allen Sets. fwSetText("Hello world!");

// Setzt den Text der Box "SomeBox". fwSetBoxText("SomeBox", "This is some box!");

// Setzt den Standard-Stil aller Boxen auf color=red, align=center (der nächste Abschnitt zeigt, wie man dies schöner erledigen kann). fwSetDefaultStyle("", "c=red;a=center");

// Füge eine Box "NewBox" mit "ExistingBox" als Parent hinzu. fwAddBox("NewBox", "ExistingBox", 2, 2, 10, 5, "Some initial text", "");

// Lösche eine Box. fwDelBox("NewBox");

// Sende eine Touch Query aus dem touch_start(...)-Event heraus. touch_start(integer num) {

   fwTouchQuery(llDetectedLinkNumber(0), llDetectedTouchFace(0), "Arbitrary user data goes here");

}

// Verarbeite eine "Touch Reply"-Antwort im link_message(...)-Event. link_message(integer sender, integer num, string str, key id) {

   if (id == "fw_touchreply") {
       list result = fwTouchReply(str);
       // Die Liste "result" enthält jetzt die Antwort als [boxName, boxRelativeX, boxRelativeY, rootName, absoluteX, absoluteY, userData].
       // "boxName" ist leer, wenn die Touch Query ungültig war.
   }

} </lsl>

Noch angenehmere Verwendung

Die Funktionen im letzten Abschnitt sind lediglich Wrapper um die FURWARE text-Befehle, allerdings muss du weiterhin Dinge wie Stileinstellungen selber schreiben und dir die verschiedenen Optionen und deren Werte merken. Die folgenden Konstanten und Funktionen nehmen dir einen Teil dieser Arbeit ab (auch hier gilt, dass du nur die Teile kopieren musst, die du tatsächlich benötigst – auch um Speicher zu sparen!).

KBtip2.png Tipp: Beachte, dass die folgenden Zeilen die Funktionen im vorigen Abschnitt ergänzen, d.h. du musst die entsprechenden Funktionen zusätzlich mitkopieren.

<lsl> // === Farben (colors) ===

string COLOR_DEFAULT = "c=def;";

// Graustufen. string COLOR_WHITE = "c=white;"; string COLOR_SILVER = "c=silver;"; string COLOR_GRAY = "c=gray;"; string COLOR_BLACK = "c=black;";

// Standardfarben. string COLOR_RED = "c=red;"; string COLOR_GREEN = "c=green;"; string COLOR_BLUE = "c=blue;"; string COLOR_CYAN = "c=cyan;"; string COLOR_MAGENTA = "c=magenta;"; string COLOR_YELLOW = "c=yellow;";

// Dunkle Farben. string COLOR_DARKRED = "c=darkred;"; string COLOR_DARKGREEN = "c=darkgreen;"; string COLOR_DARKBLUE = "c=darkblue;"; string COLOR_DARKCYAN = "c=darkcyan;"; string COLOR_DARKMAGENTA = "c=darkmagenta;"; string COLOR_DARKYELLOW = "c=darkyellow;";

// Beliebige RGB- (Rot, Grün, Blau) Farben. string fwColorRGB(float red, float green, float blue) {

   return "c=" + (string)red + "," + (string)green + "," + (string)blue + ",1" + ";";

}

// Beliebige RGBA- (Rot, Grün, Blau, Alpha/Deckkraft) Farben. string fwColorRGBA(float red, float green, float blue, float alpha) {

   return "c=" + (string)red + "," + (string)green + "," + (string)blue + "," + (string)alpha + ";";

}

// === Ausrichtung (alignment) ===

string ALIGN_DEFAULT = "a=def;"; string ALIGN_LEFT = "a=left;"; string ALIGN_CENTER = "a=center;"; string ALIGN_RIGHT = "a=right;";

// === Umbruch (wrapping) ===

string WRAP_DEFAULT = "w=def;"; string WRAP_WORD = "w=word;"; string WRAP_CHAR = "w=char;"; string WRAP_NONE = "w=none;";

// === Abschneiden von Leerzeichen am Anfang/Ende (trimming) ===

string TRIM_DEFAULT = "t=def;"; string TRIM_ON = "t=on;"; string TRIM_OFF = "t=off;";

// === Schriftarten (fonts) ===

string FONT_DEFAULT = "f=def;"; string FONT_ANDALE = "f=e31ce6e8-4117-7073-6aac-e6503034b4c5;"; string FONT_ANONYMOUS_PRO = "f=24c4ead5-04cd-1831-5fd9-ec48882e00b1;"; string FONT_ANONYMOUS_PRO_BOLD = "f=82c4fcac-3990-223c-286d-5bc92a258fbc;"; string FONT_DEJAVU = "f=f974fdfc-8fbd-2f29-2b38-3c34411c1fcc;"; string FONT_DEJAVU_BOLD = "f=5054fec3-1465-af8f-2fe5-e9507795c82a;"; string FONT_ENVYCODER = "f=a2ec2cf0-b207-db51-d4a1-f3f8d6684c07;"; string FONT_FREEFONT = "f=05f6f69e-8bdf-a824-a2cf-d91c9e371c23;"; string FONT_INCONSOLATA = "f=867288f9-940e-a7cf-ac7d-5596ea7fb2c5;"; string FONT_LIBERATION = "f=c992dfc4-0aca-02c8-bc01-8330e6db6f87;"; string FONT_LIBERATION_BOLD = "f=1494337d-5296-3c43-8f7c-45617448ec9a;"; string FONT_LUXI = "f=2d8f52d7-2220-2d7a-15b5-e685a9449e5c;"; string FONT_LUXI_BOLD = "f=03812794-535b-f546-6171-6bec5bf399be;"; string FONT_MONOFUR = "f=8fc63e35-a18f-e335-3936-e2ca196a944d;"; string FONT_NOVA = "f=2df8e09d-e1bd-d17f-6bec-b8d713790380;"; string FONT_PROFONT = "f=45a8e6f6-90e4-299d-d3bc-0bf4dbf170db;";

// === Rahmen (borders) ===

string BORDER_DEFAULT = "border=def;";

// Einige Beispiele für oft benutzte Rahmenstile. string BORDER_ALL_SIDES = "border=tblr;"; string BORDER_ALL_SIDES_THICK = "border=tblr1;"; string BORDER_ALL_SIDES_DOUBLE = "border=tblr2;"; string BORDER_BOTTOM = "border=b;"; string BORDER_LEFT_RIGHT = "border=lr;";

// Eine allgemeinere Hilfsfunktion für Rahmen. Die Seiten-Parameter sind von oben beginnend im Uhrzeigersinn angeordnet. string fwBorder(integer top, integer right, integer bottom, integer left, integer style) {

   string result = "border=";
   if (top)    result += "t"; if (right)  result += "r";
   if (bottom) result += "b"; if (left)   result += "l";
   if (style)  result += (string)style;
   return result + ";";

} </lsl>

Examples

Jeder Wert der Konstanten endet mit einem ";". Das erlaubt dir, die Konstanten einfach mit "+" zu verbinden und trotzdem gültige Strings für Stileinstellungen zu erhalten. Damit kannst du so etwas schreiben wie:

<lsl> // Setzt die Farbe (color), den Umbruch (wrapping) und die Schriftart (font) für alle Boxen. fwSetStyle(COLOR_YELLOW + WRAP_NONE + FONT_MONOFUR);

// Setzt die Standard-Stileinstellung für alle Boxen. fwSetDefaultStyle("", COLOR_RED + ALIGN_CENTER);

// Füge eine Box mit einer Stileinstellung hinzu. Wir benutzen hier eine selbstspezifizierte RGB-Farbe. fwAddBox("SomeBox", "ParentBox", 2, 2, 10, 5, "Some initial text", FONT_LUXI + fwColorRGB(0.5, 0.75, 0.0) + BORDER_ALL_SIDES); </lsl>