Merge commit '77d3a60869e7a780c6ae069e51530e1eacece5e2'
[fanfix.git] / src / jexer / backend / Screen.java
index 2d9cd65459d6ed5f9740a5abad4a1825e1ba06c2..a9a2053565b7bf5dc8ba02f25cfce37e9453c714 100644 (file)
@@ -30,6 +30,7 @@ package jexer.backend;
 
 import jexer.bits.Cell;
 import jexer.bits.CellAttributes;
+import jexer.bits.Clipboard;
 
 /**
  * Drawing operations API.
@@ -159,7 +160,7 @@ public interface Screen {
      * @param ch character to draw
      * @param attr attributes to use (bold, foreColor, backColor)
      */
-    public void putAll(final char ch, final CellAttributes attr);
+    public void putAll(final int ch, final CellAttributes attr);
 
     /**
      * Render one character with attributes.
@@ -178,7 +179,7 @@ public interface Screen {
      * @param ch character to draw
      * @param attr attributes to use (bold, foreColor, backColor)
      */
-    public void putCharXY(final int x, final int y, final char ch,
+    public void putCharXY(final int x, final int y, final int ch,
         final CellAttributes attr);
 
     /**
@@ -188,7 +189,7 @@ public interface Screen {
      * @param y row coordinate.  0 is the top-most row.
      * @param ch character to draw
      */
-    public void putCharXY(final int x, final int y, final char ch);
+    public void putCharXY(final int x, final int y, final int ch);
 
     /**
      * Render a string.  Does not wrap if the string exceeds the line.
@@ -221,7 +222,7 @@ public interface Screen {
      * @param attr attributes to use (bold, foreColor, backColor)
      */
     public void vLineXY(final int x, final int y, final int n,
-        final char ch, final CellAttributes attr);
+        final int ch, final CellAttributes attr);
 
     /**
      * Draw a horizontal line from (x, y) to (x + n, y).
@@ -233,7 +234,7 @@ public interface Screen {
      * @param attr attributes to use (bold, foreColor, backColor)
      */
     public void hLineXY(final int x, final int y, final int n,
-        final char ch, final CellAttributes attr);
+        final int ch, final CellAttributes attr);
 
     /**
      * Change the width.  Everything on-screen will be destroyed and must be
@@ -409,4 +410,50 @@ public interface Screen {
      */
     public int getTextHeight();
 
+    /**
+     * Invert the cell color at a position, including both halves of a
+     * double-width cell.
+     *
+     * @param x column position
+     * @param y row position
+     */
+    public void invertCell(final int x, final int y);
+
+    /**
+     * Invert the cell color at a position.
+     *
+     * @param x column position
+     * @param y row position
+     * @param onlyThisCell if true, only invert this cell, otherwise invert
+     * both halves of a double-width cell if necessary
+     */
+    public void invertCell(final int x, final int y,
+        final boolean onlyThisCell);
+
+    /**
+     * Set a selection area on the screen.
+     *
+     * @param x0 the starting X position of the selection
+     * @param y0 the starting Y position of the selection
+     * @param x1 the ending X position of the selection
+     * @param y1 the ending Y position of the selection
+     * @param rectangle if true, this is a rectangle select
+     */
+    public void setSelection(final int x0, final int y0,
+        final int x1, final int y1, final boolean rectangle);
+
+    /**
+     * Copy the screen selection area to the clipboard.
+     *
+     * @param clipboard the clipboard to use
+     * @param x0 the starting X position of the selection
+     * @param y0 the starting Y position of the selection
+     * @param x1 the ending X position of the selection
+     * @param y1 the ending Y position of the selection
+     * @param rectangle if true, this is a rectangle select
+     */
+    public void copySelection(final Clipboard clipboard,
+        final int x0, final int y0, final int x1, final int y1,
+        final boolean rectangle);
+
 }