diff app/src/main/java/com/five_ten_sg/connectbot/TerminalView.java @ 457:105815cce146 stable-1.9.3-3

minimum version android 5, target and compile version api 28
author Carl Byington <carl@five-ten-sg.com>
date Tue, 29 Jan 2019 11:21:57 -0800
parents d29cce60f393
children
line wrap: on
line diff
--- a/app/src/main/java/com/five_ten_sg/connectbot/TerminalView.java	Sat Nov 10 12:18:05 2018 -0800
+++ b/app/src/main/java/com/five_ten_sg/connectbot/TerminalView.java	Tue Jan 29 11:21:57 2019 -0800
@@ -32,15 +32,17 @@
 import android.content.pm.ResolveInfo;
 import android.database.Cursor;
 import android.graphics.Canvas;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
 import android.graphics.Matrix;
 import android.graphics.Paint;
 import android.graphics.Path;
-import android.graphics.PixelXorXfermode;
 import android.graphics.RectF;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.util.Log;
 import android.view.KeyEvent;
+import android.view.ScaleGestureDetector;
 import android.view.View;
 import android.view.ViewGroup.LayoutParams;
 import android.view.accessibility.AccessibilityEvent;
@@ -48,7 +50,6 @@
 import android.view.inputmethod.BaseInputConnection;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputConnection;
-import android.view.ScaleGestureDetector;
 import android.widget.Toast;
 import de.mud.terminal.VDUBuffer;
 
@@ -97,6 +98,15 @@
 
     public ScaleGestureDetector mScaleDetector;
 
+    private ColorMatrix getColorMatrix() {
+        return new ColorMatrix(new float[] {
+            -1,  0,  0,  0, 255,
+            0, -1,  0,  0, 255,
+            0,  0, -1,  0, 255,
+            0,  0,  0,  1,   0
+        });
+    }
+
     public TerminalView(Context context, TerminalBridge bridge) {
         super(context);
         this.context       = context;
@@ -107,7 +117,8 @@
         setFocusableInTouchMode(true);
         cursorPaint = new Paint();
         cursorPaint.setColor(bridge.color[bridge.defaultFg]);
-        cursorPaint.setXfermode(new PixelXorXfermode(bridge.color[bridge.defaultBg]));
+        cursorPaint.setColorFilter(new ColorMatrixColorFilter(getColorMatrix()));
+        //cursorPaint.setXfermode(new PixelXorXfermode(bridge.color[bridge.defaultBg]));
         cursorPaint.setAntiAlias(true);
         cursorStrokePaint = new Paint(cursorPaint);
         cursorStrokePaint.setStrokeWidth(0.1f);
@@ -223,14 +234,13 @@
                 else if ((metaState & TerminalKeyListener.META_CTRL_LOCK) != 0)
                     canvas.drawPath(ctrlCursor, cursorPaint);
 
-                // Restore previous clip region
-                canvas.restore();
+                canvas.restore();   // Restore previous clip region
             }
 
             // draw any highlighted area
             if (bridge.isSelectingForCopy()) {
                 SelectionArea area = bridge.getSelectionArea();
-                canvas.save(Canvas.CLIP_SAVE_FLAG);
+                canvas.save();
                 canvas.clipRect(
                     area.getLeft() * bridge.charWidth,
                     area.getTop() * bridge.charHeight,