فهرست منبع

AnsiString - fixed bug: fore, back, font indexes greater than 127 were broken

ranides atterwim 11 سال پیش
والد
کامیت
4a552cf6cb

+ 6 - 6
src/main/java/net/ranides/assira/text/format/AnsiString.java

@@ -97,27 +97,27 @@ public class AnsiString extends AnsiCharSequence {
     
     @Override
     public Color getComputedForeAt(int index) {
-        return scheme.getColor(foreList[index]);
+        return scheme.getColor(getForeAt(index));
     }
 
     @Override
     public Color getComputedBackAt(int index) {
-        return scheme.getColor(backList[index]);
+        return scheme.getColor(getBackAt(index));
     }
     
     @Override
     public Font getComputedFontAt(int index) {
-        return scheme.getFont(fontList[index]);
+        return scheme.getFont(getFontAt(index));
     }
     
     @Override
     public int getForeAt(int index) {
-        return foreList[index];
+        return foreList[index] & 0xFF;
     }
     
     @Override
     public int getBackAt(int index) {
-        return backList[index];
+        return backList[index] & 0xFF;
     }
     
     @Override
@@ -127,7 +127,7 @@ public class AnsiString extends AnsiCharSequence {
 
     @Override
     public int getFontAt(int index) {
-        return fontList[index];
+        return fontList[index] & 0xFF;
     }
 
     @Override

+ 18 - 0
src/test/java/net/ranides/assira/text/format/AnsiStringTest.java

@@ -247,4 +247,22 @@ public class AnsiStringTest {
         assertEquals("rld",  r2.get(5).value().toString());
         assertEquals("!)",   r2.get(6).value().toString());
     }
+    
+    @Test
+    public void testSignConversion() {
+        AnsiCharSequence text =new AnsiString("Text");
+        text.setForeAt(0, 220);
+        text.setForeAt(1, 128);
+        text.setBackAt(0, 220);
+        text.setBackAt(1, 128);
+        text.setFontAt(0, 220);
+        text.setFontAt(1, 128);
+        
+        assertEquals(220, text.getForeAt(0));
+        assertEquals(128, text.getForeAt(1));
+        assertEquals(220, text.getBackAt(0));
+        assertEquals(128, text.getBackAt(1));
+        assertEquals(220, text.getFontAt(0));
+        assertEquals(128, text.getFontAt(1));
+    }
 }