Mercurial > 510Connectbot
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 |