1. #1

    Registriert seit
    21.02.2012
    Beiträge
    44
    Thanked 10 Times in 10 Posts

    Standard KCode 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...

  2. #2
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard 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) {
            ((
    Graphics2Dg).setRenderingHint(RenderingHints.KEY_ANTIALIASINGRenderingHints.VALUE_ANTIALIAS_ON);
            
            if(
    styledString != null) {
                
    g.drawString(styledString.getIterator(), 515);
            }
        }

        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 0data.length(); i++) {
                
    char ch data.charAt(i);
                switch (
    ch) {
                case 
    '\\':
                    
    styledString.addAttribute(TextAttribute.CHAR_REPLACEMENTimgi1);
                    
    escape = !escape;
                    break; 
                case 
    '"':
                    
    start i;
                    
    end data.indexOf('"'1);
                    if ((
    start != -1) && (end != -1) && (!italic) && (!escape)){
                        
    img = new ImageGraphicAttribute(new BufferedImage(11BufferedImage.TYPE_INT_ARGB), GraphicAttribute.HANGING_BASELINE);
                        
    styledString.addAttribute(TextAttribute.FONT, new Font("Arial"Font.ITALIC12), startend);    
                        
    styledString.addAttribute(TextAttribute.CHAR_REPLACEMENTimgstartstart 1);
                        
    styledString.addAttribute(TextAttribute.CHAR_REPLACEMENTimgendend 1);
                        
    italic = !italic;
                    }
                    break;
                case 
    '_':
                    
    start i;
                    
    end data.indexOf('_'1);
                    if ((
    start != -1) && (end != -1) && (!bold) && (!escape)){
                        
    img = new ImageGraphicAttribute(new BufferedImage(11BufferedImage.TYPE_INT_ARGB), GraphicAttribute.HANGING_BASELINE);
                        
    styledString.addAttribute(TextAttribute.FONT, new Font("Arial"Font.BOLD12), startend);    
                        
    styledString.addAttribute(TextAttribute.CHAR_REPLACEMENTimgstartstart 1);
                        
    styledString.addAttribute(TextAttribute.CHAR_REPLACEMENTimgendend 1);
                        
    bold = !bold;
                    }
                    break;
                    
                case 
    '§':
                    
    escape false;
                    
    bold false;
                    
    italic false;
                    break;
                }
                
            }

        }



  3. The Following User Says Thank You to uncopyable For This Useful Post:

    Badboy12 (28.06.2012)

  4. #3

    Registriert seit
    21.02.2012
    Beiträge
    44
    Thanked 10 Times in 10 Posts

    Standard AW: 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

  1. KCodeParser (KCode to HTML)
    Von uncopyable im Forum Sourcecode
    Antworten: 1
    Letzter Beitrag: 29.05.2012, 01:43
  2. [Event] Pixel Painting!
    Von Flavour im Forum Der Witz-Komm-Raus Bereich
    Antworten: 31
    Letzter Beitrag: 24.04.2011, 02:05
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.