MCPcopy Create free account
hub / github.com/HumbleUI/JWM / paintImpl

Method paintImpl

examples/dashboard/java/PanelTextInput.java:114–191  ·  view source on GitHub ↗
(Canvas canvas, int width, int height, float scale)

Source from the content-addressed store, hash-verified

112 }
113
114 @Override
115 public void paintImpl(Canvas canvas, int width, int height, float scale) {
116 var capHeight = Example.FONT12.getMetrics().getCapHeight();
117 var padding = (int) 8 * scale;
118 lastInputHeight = (int) (height - capHeight - 3 * padding);
119
120 // keys
121 try (var bg = new Paint().setColor(0x40000000);
122 var fg = new Paint().setColor(0xFFFFFFFF); )
123 {
124 var x = 0;
125 var y = lastInputHeight + padding;
126 for (var key: keys) {
127 try (var line = TextLine.make(key, Example.FONT12); ) {
128 canvas.drawRRect(RRect.makeXYWH(x, y, line.getWidth() + 2 * padding, capHeight + 2 * padding, 4 * scale), bg);
129 canvas.drawTextLine(line, x + padding, y + capHeight + padding, fg);
130 x += line.getWidth() + 3 * padding;
131 }
132 }
133 }
134
135 // text input
136 try (var paint = new Paint(); ) {
137 canvas.save();
138 paint.setColor(0xFFFFFFFF);
139 canvas.drawRRect(RRect.makeXYWH(0, 0, width, lastInputHeight, 4 * scale), paint);
140
141 Font font = Example.FONT24;
142 FontMetrics metrics = font.getMetrics();
143
144 var y = lastInputHeight - Example.PADDING - metrics.getDescent();
145 var lines = text.split("\n", -1);
146 var i = lines.length - 1;
147
148 // Last line
149 try (var line = TextLine.make(lines[i], font)) {
150 canvas.save();
151 canvas.translate(Example.PADDING, y);
152 paint.setColor(0xFF000000);
153 canvas.drawTextLine(line, 0, 0, paint);
154 canvas.translate(line.getWidth(), 0);
155
156 // marked text
157 paint.setColor(0xFF0087D8);
158 if (lastMarked != null) {
159
160 try (var marked = TextLine.make(lastMarked.getText(), font)) {
161 canvas.drawTextLine(marked, 0, 0, paint);
162 var start = marked.getCoordAtOffset(lastMarked.getSelectionStart());
163 var end = marked.getCoordAtOffset(lastMarked.getSelectionEnd());
164 if (0 < start - 1 * scale)
165 canvas.drawRect(Rect.makeLTRB(0, 2 * scale, start - 1 * scale, 4 * scale), paint);
166 if (start + 1 * scale < end - 1 * scale)
167 canvas.drawRect(Rect.makeLTRB(start + 1 * scale, 2 * scale, end - 1 * scale, 6 * scale), paint);
168 if (end + 1 * scale < marked.getWidth())
169 canvas.drawRect(Rect.makeLTRB(end + 1 * scale, 2 * scale, marked.getWidth(), 4 * scale), paint);
170
171 canvas.translate(marked.getWidth(), 0);

Callers

nothing calls this directly

Calls 6

makeMethod · 0.80
makeXYWHMethod · 0.80
drawRectMethod · 0.80
getWidthMethod · 0.65
getHeightMethod · 0.65
restoreMethod · 0.45

Tested by

no test coverage detected