Package jexer.backend
Interface Screen
-
- All Known Implementing Classes:
ECMA48Terminal
,HeadlessBackend
,LogicalScreen
,MultiScreen
,SwingTerminal
public interface Screen
Drawing operations API.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
clear()
Clear the logical screen.void
clearPhysical()
Clear the physical screen.void
copySelection(Clipboard clipboard, int x0, int y0, int x1, int y1, boolean rectangle)
Copy the screen selection area to the clipboard.void
drawBox(int left, int top, int right, int bottom, CellAttributes border, CellAttributes background)
Draw a box with a border and empty background.void
drawBox(int left, int top, int right, int bottom, CellAttributes border, CellAttributes background, int borderType, boolean shadow)
Draw a box with a border and empty background.void
drawBoxShadow(int left, int top, int right, int bottom)
Draw a box shadow.void
flushPhysical()
Classes must provide an implementation to push the logical screen to the physical device.CellAttributes
getAttrXY(int x, int y)
Get the attributes at one location.Cell
getCharXY(int x, int y)
Get the cell at one location.int
getClipBottom()
Get bottom drawing clipping boundary.int
getClipLeft()
Get left drawing clipping boundary.int
getClipRight()
Get right drawing clipping boundary.int
getClipTop()
Get top drawing clipping boundary.int
getCursorX()
Get the cursor X position.int
getCursorY()
Get the cursor Y position.int
getHeight()
Get the height.int
getTextHeight()
Get the height of a character cell in pixels.int
getTextWidth()
Get the width of a character cell in pixels.int
getWidth()
Get the width.void
hideCursor()
Hide the cursor.void
hLineXY(int x, int y, int n, int ch, CellAttributes attr)
Draw a horizontal line from (x, y) to (x + n, y).void
invertCell(int x, int y)
Invert the cell color at a position, including both halves of a double-width cell.void
invertCell(int x, int y, boolean onlyThisCell)
Invert the cell color at a position.boolean
isCursorVisible()
Get the cursor visibility.boolean
isDirty()
Get dirty flag.void
putAll(int ch, CellAttributes attr)
Fill the entire screen with one character with attributes.void
putAttrXY(int x, int y, CellAttributes attr)
Set the attributes at one location.void
putAttrXY(int x, int y, CellAttributes attr, boolean clip)
Set the attributes at one location.void
putCharXY(int x, int y, int ch)
Render one character without changing the underlying attributes.void
putCharXY(int x, int y, int ch, CellAttributes attr)
Render one character with attributes.void
putCharXY(int x, int y, Cell ch)
Render one character with attributes.void
putCursor(boolean visible, int x, int y)
Put the cursor at (x,y).void
putStringXY(int x, int y, java.lang.String str)
Render a string without changing the underlying attribute.void
putStringXY(int x, int y, java.lang.String str, CellAttributes attr)
Render a string.void
reset()
Reset screen to not-bold, white-on-black.void
resetClipping()
Flush the offset and clip variables.void
setClipBottom(int clipBottom)
Set bottom drawing clipping boundary.void
setClipLeft(int clipLeft)
Set left drawing clipping boundary.void
setClipRight(int clipRight)
Set right drawing clipping boundary.void
setClipTop(int clipTop)
Set top drawing clipping boundary.void
setDimensions(int width, int height)
Change the width and height.void
setHeight(int height)
Change the height.void
setOffsetX(int offsetX)
Set drawing offset for x.void
setOffsetY(int offsetY)
Set drawing offset for y.void
setSelection(int x0, int y0, int x1, int y1, boolean rectangle)
Set a selection area on the screen.void
setTitle(java.lang.String title)
Set the window title.void
setWidth(int width)
Change the width.Screen
snapshot()
Obtain a snapshot copy of the screen.void
unsetImageRow(int y)
Unset every image cell on one row of the physical screen, forcing images on that row to be redrawn.void
vLineXY(int x, int y, int n, int ch, CellAttributes attr)
Draw a vertical line from (x, y) to (x, y + n).
-
-
-
Method Detail
-
setOffsetX
void setOffsetX(int offsetX)
Set drawing offset for x.- Parameters:
offsetX
- new drawing offset
-
setOffsetY
void setOffsetY(int offsetY)
Set drawing offset for y.- Parameters:
offsetY
- new drawing offset
-
getClipRight
int getClipRight()
Get right drawing clipping boundary.- Returns:
- drawing boundary
-
setClipRight
void setClipRight(int clipRight)
Set right drawing clipping boundary.- Parameters:
clipRight
- new boundary
-
getClipBottom
int getClipBottom()
Get bottom drawing clipping boundary.- Returns:
- drawing boundary
-
setClipBottom
void setClipBottom(int clipBottom)
Set bottom drawing clipping boundary.- Parameters:
clipBottom
- new boundary
-
getClipLeft
int getClipLeft()
Get left drawing clipping boundary.- Returns:
- drawing boundary
-
setClipLeft
void setClipLeft(int clipLeft)
Set left drawing clipping boundary.- Parameters:
clipLeft
- new boundary
-
getClipTop
int getClipTop()
Get top drawing clipping boundary.- Returns:
- drawing boundary
-
setClipTop
void setClipTop(int clipTop)
Set top drawing clipping boundary.- Parameters:
clipTop
- new boundary
-
isDirty
boolean isDirty()
Get dirty flag.- Returns:
- if true, the logical screen is not in sync with the physical screen
-
getAttrXY
CellAttributes getAttrXY(int x, int y)
Get the attributes at one location.- Parameters:
x
- column coordinate. 0 is the left-most column.y
- row coordinate. 0 is the top-most row.- Returns:
- attributes at (x, y)
-
getCharXY
Cell getCharXY(int x, int y)
Get the cell at one location.- Parameters:
x
- column coordinate. 0 is the left-most column.y
- row coordinate. 0 is the top-most row.- Returns:
- the character + attributes
-
putAttrXY
void putAttrXY(int x, int y, CellAttributes attr)
Set the attributes at one location.- Parameters:
x
- column coordinate. 0 is the left-most column.y
- row coordinate. 0 is the top-most row.attr
- attributes to use (bold, foreColor, backColor)
-
putAttrXY
void putAttrXY(int x, int y, CellAttributes attr, boolean clip)
Set the attributes at one location.- Parameters:
x
- column coordinate. 0 is the left-most column.y
- row coordinate. 0 is the top-most row.attr
- attributes to use (bold, foreColor, backColor)clip
- if true, honor clipping/offset
-
putAll
void putAll(int ch, CellAttributes attr)
Fill the entire screen with one character with attributes.- Parameters:
ch
- character to drawattr
- attributes to use (bold, foreColor, backColor)
-
putCharXY
void putCharXY(int x, int y, Cell ch)
Render one character with attributes.- Parameters:
x
- column coordinate. 0 is the left-most column.y
- row coordinate. 0 is the top-most row.ch
- character + attributes to draw
-
putCharXY
void putCharXY(int x, int y, int ch, CellAttributes attr)
Render one character with attributes.- Parameters:
x
- column coordinate. 0 is the left-most column.y
- row coordinate. 0 is the top-most row.ch
- character to drawattr
- attributes to use (bold, foreColor, backColor)
-
putCharXY
void putCharXY(int x, int y, int ch)
Render one character without changing the underlying attributes.- Parameters:
x
- column coordinate. 0 is the left-most column.y
- row coordinate. 0 is the top-most row.ch
- character to draw
-
putStringXY
void putStringXY(int x, int y, java.lang.String str, CellAttributes attr)
Render a string. Does not wrap if the string exceeds the line.- Parameters:
x
- column coordinate. 0 is the left-most column.y
- row coordinate. 0 is the top-most row.str
- string to drawattr
- attributes to use (bold, foreColor, backColor)
-
putStringXY
void putStringXY(int x, int y, java.lang.String str)
Render a string without changing the underlying attribute. Does not wrap if the string exceeds the line.- Parameters:
x
- column coordinate. 0 is the left-most column.y
- row coordinate. 0 is the top-most row.str
- string to draw
-
vLineXY
void vLineXY(int x, int y, int n, int ch, CellAttributes attr)
Draw a vertical line from (x, y) to (x, y + n).- Parameters:
x
- column coordinate. 0 is the left-most column.y
- row coordinate. 0 is the top-most row.n
- number of characters to drawch
- character to drawattr
- attributes to use (bold, foreColor, backColor)
-
hLineXY
void hLineXY(int x, int y, int n, int ch, CellAttributes attr)
Draw a horizontal line from (x, y) to (x + n, y).- Parameters:
x
- column coordinate. 0 is the left-most column.y
- row coordinate. 0 is the top-most row.n
- number of characters to drawch
- character to drawattr
- attributes to use (bold, foreColor, backColor)
-
setWidth
void setWidth(int width)
Change the width. Everything on-screen will be destroyed and must be redrawn.- Parameters:
width
- new screen width
-
setHeight
void setHeight(int height)
Change the height. Everything on-screen will be destroyed and must be redrawn.- Parameters:
height
- new screen height
-
setDimensions
void setDimensions(int width, int height)
Change the width and height. Everything on-screen will be destroyed and must be redrawn.- Parameters:
width
- new screen widthheight
- new screen height
-
getHeight
int getHeight()
Get the height.- Returns:
- current screen height
-
getWidth
int getWidth()
Get the width.- Returns:
- current screen width
-
reset
void reset()
Reset screen to not-bold, white-on-black. Also flushes the offset and clip variables.
-
resetClipping
void resetClipping()
Flush the offset and clip variables.
-
clear
void clear()
Clear the logical screen.
-
drawBox
void drawBox(int left, int top, int right, int bottom, CellAttributes border, CellAttributes background)
Draw a box with a border and empty background.- Parameters:
left
- left column of box. 0 is the left-most row.top
- top row of the box. 0 is the top-most row.right
- right column of boxbottom
- bottom row of the boxborder
- attributes to use for the borderbackground
- attributes to use for the background
-
drawBox
void drawBox(int left, int top, int right, int bottom, CellAttributes border, CellAttributes background, int borderType, boolean shadow)
Draw a box with a border and empty background.- Parameters:
left
- left column of box. 0 is the left-most row.top
- top row of the box. 0 is the top-most row.right
- right column of boxbottom
- bottom row of the boxborder
- attributes to use for the borderbackground
- attributes to use for the backgroundborderType
- if 1, draw a single-line border; if 2, draw a double-line border; if 3, draw double-line top/bottom edges and single-line left/right edges (like Qmodem)shadow
- if true, draw a "shadow" on the box
-
drawBoxShadow
void drawBoxShadow(int left, int top, int right, int bottom)
Draw a box shadow.- Parameters:
left
- left column of box. 0 is the left-most row.top
- top row of the box. 0 is the top-most row.right
- right column of boxbottom
- bottom row of the box
-
clearPhysical
void clearPhysical()
Clear the physical screen.
-
unsetImageRow
void unsetImageRow(int y)
Unset every image cell on one row of the physical screen, forcing images on that row to be redrawn.- Parameters:
y
- row coordinate. 0 is the top-most row.
-
flushPhysical
void flushPhysical()
Classes must provide an implementation to push the logical screen to the physical device.
-
putCursor
void putCursor(boolean visible, int x, int y)
Put the cursor at (x,y).- Parameters:
visible
- if true, the cursor should be visiblex
- column coordinate to put the cursor ony
- row coordinate to put the cursor on
-
hideCursor
void hideCursor()
Hide the cursor.
-
isCursorVisible
boolean isCursorVisible()
Get the cursor visibility.- Returns:
- true if the cursor is visible
-
getCursorX
int getCursorX()
Get the cursor X position.- Returns:
- the cursor x column position
-
getCursorY
int getCursorY()
Get the cursor Y position.- Returns:
- the cursor y row position
-
setTitle
void setTitle(java.lang.String title)
Set the window title.- Parameters:
title
- the new title
-
getTextWidth
int getTextWidth()
Get the width of a character cell in pixels.- Returns:
- the width in pixels of a character cell
-
getTextHeight
int getTextHeight()
Get the height of a character cell in pixels.- Returns:
- the height in pixels of a character cell
-
invertCell
void invertCell(int x, int y)
Invert the cell color at a position, including both halves of a double-width cell.- Parameters:
x
- column positiony
- row position
-
invertCell
void invertCell(int x, int y, boolean onlyThisCell)
Invert the cell color at a position.- Parameters:
x
- column positiony
- row positiononlyThisCell
- if true, only invert this cell, otherwise invert both halves of a double-width cell if necessary
-
setSelection
void setSelection(int x0, int y0, int x1, int y1, boolean rectangle)
Set a selection area on the screen.- Parameters:
x0
- the starting X position of the selectiony0
- the starting Y position of the selectionx1
- the ending X position of the selectiony1
- the ending Y position of the selectionrectangle
- if true, this is a rectangle select
-
copySelection
void copySelection(Clipboard clipboard, int x0, int y0, int x1, int y1, boolean rectangle)
Copy the screen selection area to the clipboard.- Parameters:
clipboard
- the clipboard to usex0
- the starting X position of the selectiony0
- the starting Y position of the selectionx1
- the ending X position of the selectiony1
- the ending Y position of the selectionrectangle
- if true, this is a rectangle select
-
snapshot
Screen snapshot()
Obtain a snapshot copy of the screen.- Returns:
- a copy of the screen's data
-
-