1 30 31 package org.syntax.jedit; 32 33 import org.syntax.jedit.tokenmarker.*; 34 import javax.swing.text.*; 35 import java.awt.*; 36 37 44 public class SyntaxUtilities 45 { 46 54 public static boolean regionMatches(boolean ignoreCase, Segment text, 55 int offset, String match) 56 { 57 int length = offset + match.length(); 58 char[] textArray = text.array; 59 if(length > text.offset + text.count) 60 return false; 61 for(int i = offset, j = 0; i < length; i++, j++) 62 { 63 char c1 = textArray[i]; 64 char c2 = match.charAt(j); 65 if(ignoreCase) 66 { 67 c1 = Character.toUpperCase(c1); 68 c2 = Character.toUpperCase(c2); 69 } 70 if(c1 != c2) 71 return false; 72 } 73 return true; 74 } 75 76 84 public static boolean regionMatches(boolean ignoreCase, Segment text, 85 int offset, char[] match) 86 { 87 int length = offset + match.length; 88 char[] textArray = text.array; 89 if(length > text.offset + text.count) 90 return false; 91 for(int i = offset, j = 0; i < length; i++, j++) 92 { 93 char c1 = textArray[i]; 94 char c2 = match[j]; 95 if(ignoreCase) 96 { 97 c1 = Character.toUpperCase(c1); 98 c2 = Character.toUpperCase(c2); 99 } 100 if(c1 != c2) 101 return false; 102 } 103 return true; 104 } 105 106 111 public static SyntaxStyle[] getDefaultSyntaxStyles() 112 { 113 SyntaxStyle[] styles = new SyntaxStyle[Token.ID_COUNT]; 114 115 styles[Token.COMMENT1] = new SyntaxStyle(Color.black,true,false); 116 styles[Token.COMMENT2] = new SyntaxStyle(new Color(0x990033),true,false); 117 styles[Token.KEYWORD1] = new SyntaxStyle(Color.black,false,true); 118 styles[Token.KEYWORD2] = new SyntaxStyle(Color.magenta,false,false); 119 styles[Token.KEYWORD3] = new SyntaxStyle(new Color(0x009600),false,false); 120 styles[Token.LITERAL1] = new SyntaxStyle(new Color(0x650099),false,false); 121 styles[Token.LITERAL2] = new SyntaxStyle(new Color(0x650099),false,true); 122 styles[Token.LABEL] = new SyntaxStyle(new Color(0x990033),false,true); 123 styles[Token.OPERATOR] = new SyntaxStyle(Color.black,false,true); 124 styles[Token.INVALID] = new SyntaxStyle(Color.red,false,true); 125 126 styles[Token.PARAMETER] = new SyntaxStyle(Color.blue,false,true); 127 styles[Token.PARAMETER_OK] = new SyntaxStyle(new Color(0x009b1f),false,true); 128 129 return styles; 130 } 131 132 145 public static int paintSyntaxLine(Segment line, Token tokens, 146 SyntaxStyle[] styles, TabExpander expander, Graphics gfx, 147 int x, int y) 148 { 149 Font defaultFont = gfx.getFont(); 150 Color defaultColor = gfx.getColor(); 151 152 int offset = 0; 153 for(;;) 154 { 155 byte id = tokens.id; 156 if(id == Token.END) 157 break; 158 159 int length = tokens.length; 160 if(id == Token.NULL) 161 { 162 if(!defaultColor.equals(gfx.getColor())) 163 gfx.setColor(defaultColor); 164 if(!defaultFont.equals(gfx.getFont())) 165 gfx.setFont(defaultFont); 166 } 167 else 168 { 169 styles[id].setGraphicsFlags(gfx,defaultFont); 170 } 171 172 line.count = length; 173 x = Utilities.drawTabbedText(line,x,y,gfx,expander,0); 174 line.offset += length; 175 offset += length; 176 177 tokens = tokens.next; 178 } 179 180 return x; 181 } 182 183 private SyntaxUtilities() {} 185 } 186 | Popular Tags |