Badboy12 (28.06.2012)
Thema: KCode Painting (?)
-
26.06.2012, 00:32 #1
- Registriert seit
- 21.02.2012
- Beiträge
- 44
Thanked 10 Times in 10 PostsKCode Painting (?)
Huhu
Hat jemand schon den KCode-Mist in Java oder .NET rekonstruiert?
Dabei meine ich kein HTML gedönsel sondern ein richtiges painten.
Hab jetzt mal eine Stunde dran gesessen, haba aber noch etwas Verständnissprobleme beim "Parsen".
Rein Theoretisch gehe ich doch jedes Char des Textes durch und prüfe dort die Chars auf anwesenheit beispielsweise von °, _, ", wie auch immer..
Bei den Textkügelchen hab ich irgendwie meine probleme.
Wie kann ich die jeweiligen Sachen so ersetzen, dass man davon nix mehr sieht?
Ich benutze derzeit über Java -AttributedString- um den String zu formatieren. Nun leider aber hab ich auf anhieb keine Lösung für das Replacen der "Formatierungs-Zeichen". Ich replace den jeweiligen char mit einer 1x1 px transparente Grafik was aber gewisse abstände zwischen den Formatierungsmöglichkeiten macht.
Kommentare wie "Nehm HTMl, ist einfacher.." kann ich nicht gebrauchen, da ich aus dem zeugs schlau werden will, wie Knuddels des Zeugs behandelt.
hab auch einige ältere Applets gefunden, ist aber schwer die ganzen Klassen und Methoden nachzuvollziehen...
-
28.06.2012, 19:21 #2
AW: KCode Painting (?)
Ich hatte es auch mal versucht und bin dann auf HTML umgestiegen da es einfacher ist
PHP-Code:import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.font.GraphicAttribute;
import java.awt.font.ImageGraphicAttribute;
import java.awt.font.TextAttribute;
import java.awt.image.BufferedImage;
import java.text.AttributedString;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class KPanel extends JPanel {
public final String msg = "\"Hallo\" _Welt_ # \\\"Hallo\\\" \\_Welt\\_";
public static void main(String[] args) {
JFrame f = new JFrame("Paint KCode");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(new Dimension(200,200));
KPanel p =new KPanel();
f.getContentPane().add(p);
f.setVisible(true);
}
public KPanel(){
parse(msg);
}
public void paint(Graphics g) {
((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
if(styledString != null) {
g.drawString(styledString.getIterator(), 5, 15);
}
}
private static AttributedString styledString = null;
private static ImageGraphicAttribute img;
public static void parse(String data) {
boolean italic = false;
boolean bold = false;
boolean escape = false;
int start = -1;
int end = -1;
styledString = new AttributedString(data);
for (int i = 0; i < data.length(); i++) {
char ch = data.charAt(i);
switch (ch) {
case '\\':
styledString.addAttribute(TextAttribute.CHAR_REPLACEMENT, img, i, i + 1);
escape = !escape;
break;
case '"':
start = i;
end = data.indexOf('"', i + 1);
if ((start != -1) && (end != -1) && (!italic) && (!escape)){
img = new ImageGraphicAttribute(new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB), GraphicAttribute.HANGING_BASELINE);
styledString.addAttribute(TextAttribute.FONT, new Font("Arial", Font.ITALIC, 12), start, end);
styledString.addAttribute(TextAttribute.CHAR_REPLACEMENT, img, start, start + 1);
styledString.addAttribute(TextAttribute.CHAR_REPLACEMENT, img, end, end + 1);
italic = !italic;
}
break;
case '_':
start = i;
end = data.indexOf('_', i + 1);
if ((start != -1) && (end != -1) && (!bold) && (!escape)){
img = new ImageGraphicAttribute(new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB), GraphicAttribute.HANGING_BASELINE);
styledString.addAttribute(TextAttribute.FONT, new Font("Arial", Font.BOLD, 12), start, end);
styledString.addAttribute(TextAttribute.CHAR_REPLACEMENT, img, start, start + 1);
styledString.addAttribute(TextAttribute.CHAR_REPLACEMENT, img, end, end + 1);
bold = !bold;
}
break;
case '§':
escape = false;
bold = false;
italic = false;
break;
}
}
}
}
-
The Following User Says Thank You to uncopyable For This Useful Post:
-
28.06.2012, 19:34 #3
- Registriert seit
- 21.02.2012
- Beiträge
- 44
Thanked 10 Times in 10 PostsAW: KCode Painting (?)
Ist Blizzard auf Bc nicht Bizzi?
Wenn ja, dann müsste er des ja eig. so hinkriegen dass ich es verstehe xD
Gnome hatte glaube ich auch was publiziert gehabt, des schaut mir aber sehr unsauber aus...
Ähnliche Themen
-
KCodeParser (KCode to HTML)
Von uncopyable im Forum SourcecodeAntworten: 1Letzter Beitrag: 29.05.2012, 01:43 -
[Event] Pixel Painting!
Von Flavour im Forum Der Witz-Komm-Raus BereichAntworten: 31Letzter Beitrag: 24.04.2011, 02:05
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.