comparison 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
comparison
equal deleted inserted replaced
456:b00031b2d6ac 457:105815cce146
30 import android.content.Context; 30 import android.content.Context;
31 import android.content.Intent; 31 import android.content.Intent;
32 import android.content.pm.ResolveInfo; 32 import android.content.pm.ResolveInfo;
33 import android.database.Cursor; 33 import android.database.Cursor;
34 import android.graphics.Canvas; 34 import android.graphics.Canvas;
35 import android.graphics.ColorMatrix;
36 import android.graphics.ColorMatrixColorFilter;
35 import android.graphics.Matrix; 37 import android.graphics.Matrix;
36 import android.graphics.Paint; 38 import android.graphics.Paint;
37 import android.graphics.Path; 39 import android.graphics.Path;
38 import android.graphics.PixelXorXfermode;
39 import android.graphics.RectF; 40 import android.graphics.RectF;
40 import android.net.Uri; 41 import android.net.Uri;
41 import android.os.AsyncTask; 42 import android.os.AsyncTask;
42 import android.util.Log; 43 import android.util.Log;
43 import android.view.KeyEvent; 44 import android.view.KeyEvent;
45 import android.view.ScaleGestureDetector;
44 import android.view.View; 46 import android.view.View;
45 import android.view.ViewGroup.LayoutParams; 47 import android.view.ViewGroup.LayoutParams;
46 import android.view.accessibility.AccessibilityEvent; 48 import android.view.accessibility.AccessibilityEvent;
47 import android.view.accessibility.AccessibilityManager; 49 import android.view.accessibility.AccessibilityManager;
48 import android.view.inputmethod.BaseInputConnection; 50 import android.view.inputmethod.BaseInputConnection;
49 import android.view.inputmethod.EditorInfo; 51 import android.view.inputmethod.EditorInfo;
50 import android.view.inputmethod.InputConnection; 52 import android.view.inputmethod.InputConnection;
51 import android.view.ScaleGestureDetector;
52 import android.widget.Toast; 53 import android.widget.Toast;
53 import de.mud.terminal.VDUBuffer; 54 import de.mud.terminal.VDUBuffer;
54 55
55 /** 56 /**
56 * User interface {@link View} for showing a TerminalBridge in an 57 * User interface {@link View} for showing a TerminalBridge in an
94 private static final int ACCESSIBILITY_EVENT_THRESHOLD = 1000; 95 private static final int ACCESSIBILITY_EVENT_THRESHOLD = 1000;
95 private static final String SCREENREADER_INTENT_ACTION = "android.accessibilityservice.AccessibilityService"; 96 private static final String SCREENREADER_INTENT_ACTION = "android.accessibilityservice.AccessibilityService";
96 private static final String SCREENREADER_INTENT_CATEGORY = "android.accessibilityservice.category.FEEDBACK_SPOKEN"; 97 private static final String SCREENREADER_INTENT_CATEGORY = "android.accessibilityservice.category.FEEDBACK_SPOKEN";
97 98
98 public ScaleGestureDetector mScaleDetector; 99 public ScaleGestureDetector mScaleDetector;
100
101 private ColorMatrix getColorMatrix() {
102 return new ColorMatrix(new float[] {
103 -1, 0, 0, 0, 255,
104 0, -1, 0, 0, 255,
105 0, 0, -1, 0, 255,
106 0, 0, 0, 1, 0
107 });
108 }
99 109
100 public TerminalView(Context context, TerminalBridge bridge) { 110 public TerminalView(Context context, TerminalBridge bridge) {
101 super(context); 111 super(context);
102 this.context = context; 112 this.context = context;
103 this.bridge = bridge; 113 this.bridge = bridge;
105 setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 115 setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
106 setFocusable(true); 116 setFocusable(true);
107 setFocusableInTouchMode(true); 117 setFocusableInTouchMode(true);
108 cursorPaint = new Paint(); 118 cursorPaint = new Paint();
109 cursorPaint.setColor(bridge.color[bridge.defaultFg]); 119 cursorPaint.setColor(bridge.color[bridge.defaultFg]);
110 cursorPaint.setXfermode(new PixelXorXfermode(bridge.color[bridge.defaultBg])); 120 cursorPaint.setColorFilter(new ColorMatrixColorFilter(getColorMatrix()));
121 //cursorPaint.setXfermode(new PixelXorXfermode(bridge.color[bridge.defaultBg]));
111 cursorPaint.setAntiAlias(true); 122 cursorPaint.setAntiAlias(true);
112 cursorStrokePaint = new Paint(cursorPaint); 123 cursorStrokePaint = new Paint(cursorPaint);
113 cursorStrokePaint.setStrokeWidth(0.1f); 124 cursorStrokePaint.setStrokeWidth(0.1f);
114 cursorStrokePaint.setStyle(Paint.Style.STROKE); 125 cursorStrokePaint.setStyle(Paint.Style.STROKE);
115 /* 126 /*
221 if ((metaState & TerminalKeyListener.META_CTRL_ON) != 0) 232 if ((metaState & TerminalKeyListener.META_CTRL_ON) != 0)
222 canvas.drawPath(ctrlCursor, cursorStrokePaint); 233 canvas.drawPath(ctrlCursor, cursorStrokePaint);
223 else if ((metaState & TerminalKeyListener.META_CTRL_LOCK) != 0) 234 else if ((metaState & TerminalKeyListener.META_CTRL_LOCK) != 0)
224 canvas.drawPath(ctrlCursor, cursorPaint); 235 canvas.drawPath(ctrlCursor, cursorPaint);
225 236
226 // Restore previous clip region 237 canvas.restore(); // Restore previous clip region
227 canvas.restore();
228 } 238 }
229 239
230 // draw any highlighted area 240 // draw any highlighted area
231 if (bridge.isSelectingForCopy()) { 241 if (bridge.isSelectingForCopy()) {
232 SelectionArea area = bridge.getSelectionArea(); 242 SelectionArea area = bridge.getSelectionArea();
233 canvas.save(Canvas.CLIP_SAVE_FLAG); 243 canvas.save();
234 canvas.clipRect( 244 canvas.clipRect(
235 area.getLeft() * bridge.charWidth, 245 area.getLeft() * bridge.charWidth,
236 area.getTop() * bridge.charHeight, 246 area.getTop() * bridge.charHeight,
237 (area.getRight() + 1) * bridge.charWidth, 247 (area.getRight() + 1) * bridge.charWidth,
238 (area.getBottom() + 1) * bridge.charHeight 248 (area.getBottom() + 1) * bridge.charHeight