125bb1cbbda39d6b0ed3b46cc17b76bc4121501c
3 import java
.util
.Deque
;
4 import java
.util
.Iterator
;
5 import java
.util
.LinkedList
;
7 import lejos
.hardware
.lcd
.Font
;
8 import lejos
.hardware
.lcd
.GraphicsLCD
;
9 import lejos
.utility
.Delay
;
11 public class LCDPrinter
extends Thread
{
12 public static final int PRINTDELAY
= 50;
14 private static Deque
<String
> buffer
= new LinkedList
<String
>();
16 private GraphicsLCD glcd
;
18 private Deque
<String
> lcdbuffer
;
19 private int charwidth
;
21 public LCDPrinter(GraphicsLCD glcd
, Font font
) {
25 lcdbuffer
= new LinkedList
<String
>();
26 charwidth
= glcd
.getWidth()/font
.width
;
27 for(int i
= 0; i
<glcd
.getHeight()/font
.height
; i
++){
32 public static void print(String s
){
39 if (!buffer
.isEmpty()) {
40 String c
= buffer
.remove();
41 lcdbuffer
.removeLast();
42 if(c
.length() > charwidth
){
43 buffer
.addFirst(c
.substring(charwidth
, c
.length()));
44 c
= c
.substring(0, charwidth
);
46 lcdbuffer
.addFirst(c
);
48 it
= lcdbuffer
.descendingIterator();
49 for(int i
= 0; it
.hasNext(); i
++){
50 glcd
.drawString(it
.next(), 0, i
*font
.height
, font
.getBaselinePosition());
53 Delay
.msDelay(PRINTDELAY
);