blob: bf16f406989a4385c51a29910390326c382fe317 [file] [log] [blame]
/*
* libbrlapi - A library providing access to braille terminals for applications.
*
* Copyright (C) 2006-2023 by
* Samuel Thibault <Samuel.Thibault@ens-lyon.org>
* Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
*
* libbrlapi comes with ABSOLUTELY NO WARRANTY.
*
* This is free software, placed under the terms of the
* GNU Lesser General Public License, as published by the Free Software
* Foundation; either version 2.1 of the License, or (at your option) any
* later version. Please see the file LICENSE-LGPL for details.
*
* Web Page: http://brltty.app/
*
* This software is maintained by Dave Mielke <dave@mielke.cc>.
*/
package org.a11y.brlapi.clients;
import org.a11y.brlapi.*;
public class WriteTextClient extends PauseClient {
private int cursorPosition = Constants.CURSOR_OFF;
private final OperandUsage cursorPositionUsage =
new CursorPositionUsage(cursorPosition);
public WriteTextClient (String... arguments) {
super(arguments);
addRepeatingParameter("text");
addOption("cursor",
(operands) -> {
cursorPosition = Parse.asCursorPosition(operands[0]);
},
"position"
);
}
private String text = null;
@Override
protected final void processParameters (String[] parameters) {
StringBuilder builder = new StringBuilder();
for (String parameter : parameters) {
if (builder.length() > 0) builder.append(' ');
builder.append(parameter);
}
text = builder.toString();
}
@Override
protected final void extendUsageSummary (StringBuilder usage) {
super.extendUsageSummary(usage);
cursorPositionUsage.appendTo(usage);
}
@Override
protected final void runClient (Connection connection)
throws ProgramException
{
Parse.checkMaximum(
cursorPositionUsage.getOperandDescription(),
cursorPosition, connection.getCellCount()
);
ttyMode(
connection, false,
(con) -> {
printf("%s\n", text);
con.write(text, cursorPosition);
byte[] dots = con.getParameters().renderedCells.get();
printf("%s\n", toUnicodeBraille(dots));
pause(con);
}
);
}
}