Automated code formatting by NetBeans IDE.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2529 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
index 8b062e8..95a7eb6 100644
--- a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
+++ b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
@@ -52,8 +52,7 @@
timeScaleText.addActionListener(this);
}
- public void setPaused(boolean paused)
- {
+ public void setPaused(boolean paused) {
if (paused) {
playButton.setLabel("Play");
} else {
@@ -69,7 +68,7 @@
char[] zeroes = {'0', '0', '0', '0'};
String text = String.valueOf(seconds);
if (text.length() < 4) {
- text = new String(zeroes, 0, 4 - text.length()) + text;
+ text = new String(zeroes, 0, 4 - text.length()) + text;
}
posText.setText(text);
posText.setCaretPosition(text.length());
@@ -79,7 +78,6 @@
//
// Event processing.
//
-
public void actionPerformed(ActionEvent evt) {
if (evt.getSource() == playButton) {
player.setPaused(playButton.getLabel().equals("Pause"));
@@ -88,10 +86,11 @@
} else if (evt.getSource() == timeScaleText) {
double speed = Double.valueOf(timeScaleText.getText()).doubleValue();
if (speed <= 0.0)
- speed = 1.0;
+ speed = 1.0;
timeScaleText.setText(String.valueOf(speed));
player.setSpeed(speed);
}
}
+
}
diff --git a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
index d2cf593..1dcdd09 100644
--- a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
+++ b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
@@ -43,7 +43,6 @@
//
// Constructors.
//
-
FbsInputStream() throws IOException {
throw new IOException("FbsInputStream: no such constructor");
}
@@ -51,9 +50,7 @@
//
// Construct FbsInputStream object, begin playback.
//
-
- FbsInputStream(InputStream in) throws IOException
- {
+ FbsInputStream(InputStream in) throws IOException {
this.in = in;
startTime = System.currentTimeMillis();
timeOffset = 0;
@@ -66,9 +63,9 @@
readFully(b);
if (b[0] != 'F' || b[1] != 'B' || b[2] != 'S' || b[3] != ' ' ||
- b[4] != '0' || b[5] != '0' || b[6] != '1' || b[7] != '.' ||
- b[8] < '0' || b[8] > '9' || b[9] < '0' || b[9] > '9' ||
- b[10] < '0' || b[10] > '9' || b[11] != '\n') {
+ b[4] != '0' || b[5] != '0' || b[6] != '1' || b[7] != '.' ||
+ b[8] < '0' || b[8] > '9' || b[9] < '0' || b[9] > '9' ||
+ b[10] < '0' || b[10] > '9' || b[11] != '\n') {
throw new IOException("Incorrect protocol version");
}
@@ -80,19 +77,16 @@
//
// Basic methods overriding InputStream's methods.
//
-
- public int read() throws IOException
- {
+ public int read() throws IOException {
while (bufferSize == 0) {
if (!fillBuffer())
- return -1;
+ return -1;
}
bufferSize--;
return buffer[bufferPos++] & 0xFF;
}
- public int available() throws IOException
- {
+ public int available() throws IOException {
// FIXME: This will work incorrectly if our caller will wait until
// some amount of data is available when the buffer contains less
// data than then that. Current implementation never reads more
@@ -100,8 +94,7 @@
return bufferSize;
}
- public synchronized void close() throws IOException
- {
+ public synchronized void close() throws IOException {
in.close();
in = null;
startTime = -1;
@@ -121,15 +114,12 @@
//
// Methods providing additional functionality.
//
-
- public synchronized long getTimeOffset()
- {
+ public synchronized long getTimeOffset() {
long off = Math.max(seekOffset, timeOffset);
return (long)(off * playbackSpeed);
}
- public synchronized void setTimeOffset(long pos)
- {
+ public synchronized void setTimeOffset(long pos) {
seekOffset = (long)(pos / playbackSpeed);
if (seekOffset < timeOffset) {
seekBackwards = true;
@@ -137,8 +127,7 @@
notify();
}
- public synchronized void setSpeed(double newSpeed)
- {
+ public synchronized void setSpeed(double newSpeed) {
long newOffset = (long)(timeOffset * playbackSpeed / newSpeed);
startTime += timeOffset - newOffset;
timeOffset = newOffset;
@@ -148,45 +137,37 @@
playbackSpeed = newSpeed;
}
- public boolean isSeeking()
- {
+ public boolean isSeeking() {
return (seekOffset >= 0);
}
- public long getSeekOffset()
- {
+ public long getSeekOffset() {
return (long)(seekOffset * playbackSpeed);
}
- public boolean isPaused()
- {
+ public boolean isPaused() {
return paused;
}
- public synchronized void pausePlayback()
- {
+ public synchronized void pausePlayback() {
paused = true;
notify();
}
- public synchronized void resumePlayback()
- {
+ public synchronized void resumePlayback() {
paused = false;
startTime = System.currentTimeMillis() - timeOffset;
notify();
}
- public void addObserver(Observer target)
- {
+ public void addObserver(Observer target) {
obs = target;
}
//
// Methods for internal use.
//
-
- private synchronized boolean fillBuffer() throws IOException
- {
+ private synchronized boolean fillBuffer() throws IOException {
// The reading thread should be interrupted on backward seeking.
if (seekBackwards)
throw new EOFException("[REWIND]");
@@ -212,20 +193,20 @@
if (seekOffset >= 0) {
if (timeOffset >= seekOffset) {
- startTime = System.currentTimeMillis() - seekOffset;
- seekOffset = -1;
+ startTime = System.currentTimeMillis() - seekOffset;
+ seekOffset = -1;
} else {
- return true;
+ return true;
}
}
while (true) {
long timeDiff = startTime + timeOffset - System.currentTimeMillis();
if (timeDiff <= 0) {
- break;
+ break;
}
try {
- wait(timeDiff);
+ wait(timeDiff);
} catch (InterruptedException e) {
}
waitWhilePaused();
@@ -237,48 +218,45 @@
//
// In paused mode, wait for external notification on this object.
//
-
- private void waitWhilePaused()
- {
+ private void waitWhilePaused() {
while (paused && !isSeeking()) {
synchronized(this) {
- try {
- // Note: we call Observer.update(Observable,Object) method
- // directly instead of maintaining an Observable object.
- obs.update(null, null);
- wait();
- } catch (InterruptedException e) {
- }
+ try {
+ // Note: we call Observer.update(Observable,Object) method
+ // directly instead of maintaining an Observable object.
+ obs.update(null, null);
+ wait();
+ } catch (InterruptedException e) {
+ }
}
}
}
- private long readUnsigned32() throws IOException
- {
+ private long readUnsigned32() throws IOException {
byte[] buf = new byte[4];
if (!readFully(buf))
return -1;
return ((long)(buf[0] & 0xFF) << 24 |
- (buf[1] & 0xFF) << 16 |
- (buf[2] & 0xFF) << 8 |
- (buf[3] & 0xFF));
+ (buf[1] & 0xFF) << 16 |
+ (buf[2] & 0xFF) << 8 |
+ (buf[3] & 0xFF));
}
- private boolean readFully(byte[] b) throws IOException
- {
+ private boolean readFully(byte[] b) throws IOException {
int off = 0;
int len = b.length;
while (off != len) {
int count = in.read(b, off, len - off);
if (count < 0) {
- return false;
+ return false;
}
off += count;
}
return true;
}
+
}
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index 1cf16ab..0918bef 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -24,7 +24,7 @@
import java.net.*;
public class RfbPlayer extends java.applet.Applet
- implements java.lang.Runnable, WindowListener {
+ implements java.lang.Runnable, WindowListener {
boolean inAnApplet = true;
boolean inSeparateFrame = false;
@@ -33,7 +33,6 @@
// main() is called when run as a java program from the command line.
// It simply runs the applet inside a newly-created frame.
//
-
public static void main(String[] argv) {
RfbPlayer p = new RfbPlayer();
p.mainArgs = argv;
@@ -67,7 +66,6 @@
//
// init()
//
-
public void init() {
readParameters();
@@ -75,7 +73,7 @@
if (inSeparateFrame) {
vncFrame = new Frame("RFB Session Player");
if (!inAnApplet) {
- vncFrame.add("Center", this);
+ vncFrame.add("Center", this);
}
vncContainer = vncFrame;
} else {
@@ -95,7 +93,6 @@
//
// run() - executed by the rfbThread to read RFB data.
//
-
public void run() {
gridbag = new GridBagLayout();
@@ -121,9 +118,9 @@
try {
if (inAnApplet) {
- url = new URL(getCodeBase(), sessionURL);
+ url = new URL(getCodeBase(), sessionURL);
} else {
- url = new URL(sessionURL);
+ url = new URL(sessionURL);
}
rfb = new RfbProto(url);
@@ -133,54 +130,54 @@
if (inSeparateFrame) {
- // Create a panel which itself is resizeable and can hold
- // non-resizeable VncCanvas component at the top left corner.
- Panel canvasPanel = new Panel();
- canvasPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
- canvasPanel.add(vc);
+ // Create a panel which itself is resizeable and can hold
+ // non-resizeable VncCanvas component at the top left corner.
+ Panel canvasPanel = new Panel();
+ canvasPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
+ canvasPanel.add(vc);
- // Create a ScrollPane which will hold a panel with VncCanvas
- // inside.
- desktopScrollPane = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
- gbc.fill = GridBagConstraints.BOTH;
- gridbag.setConstraints(desktopScrollPane, gbc);
- desktopScrollPane.add(canvasPanel);
+ // Create a ScrollPane which will hold a panel with VncCanvas
+ // inside.
+ desktopScrollPane = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
+ gbc.fill = GridBagConstraints.BOTH;
+ gridbag.setConstraints(desktopScrollPane, gbc);
+ desktopScrollPane.add(canvasPanel);
- // Finally, add our ScrollPane to the Frame window.
- vncFrame.add(desktopScrollPane);
- vncFrame.setTitle(rfb.desktopName);
- vncFrame.pack();
- vc.resizeDesktopFrame();
+ // Finally, add our ScrollPane to the Frame window.
+ vncFrame.add(desktopScrollPane);
+ vncFrame.setTitle(rfb.desktopName);
+ vncFrame.pack();
+ vc.resizeDesktopFrame();
} else {
- // Just add the VncCanvas component to the Applet.
- gridbag.setConstraints(vc, gbc);
- add(vc);
- validate();
+ // Just add the VncCanvas component to the Applet.
+ gridbag.setConstraints(vc, gbc);
+ add(vc);
+ validate();
}
while (true) {
- try {
- setPaused(!autoPlay);
- rfb.fbs.setSpeed(playbackSpeed);
- if (initialTimeOffset > rfb.fbs.getTimeOffset())
- setPos(initialTimeOffset); // don't seek backwards here
- vc.processNormalProtocol();
- } catch (EOFException e) {
- if (e.getMessage() != null && e.getMessage().equals("[REWIND]")) {
- // A special type of EOFException allowing us to seek backwards.
- initialTimeOffset = rfb.fbs.getSeekOffset();
- autoPlay = !rfb.fbs.isPaused();
- } else {
- // Return to the beginning after the playback is finished.
- initialTimeOffset = 0;
- autoPlay = false;
- }
+ try {
+ setPaused(!autoPlay);
+ rfb.fbs.setSpeed(playbackSpeed);
+ if (initialTimeOffset > rfb.fbs.getTimeOffset())
+ setPos(initialTimeOffset); // don't seek backwards here
+ vc.processNormalProtocol();
+ } catch (EOFException e) {
+ if (e.getMessage() != null && e.getMessage().equals("[REWIND]")) {
+ // A special type of EOFException allowing us to seek backwards.
+ initialTimeOffset = rfb.fbs.getSeekOffset();
+ autoPlay = !rfb.fbs.isPaused();
+ } else {
+ // Return to the beginning after the playback is finished.
+ initialTimeOffset = 0;
+ autoPlay = false;
+ }
rfb.newSession(url);
vc.updateFramebufferSize();
- }
+ }
}
} catch (FileNotFoundException e) {
@@ -189,7 +186,7 @@
e.printStackTrace();
fatalError(e.toString());
}
-
+
}
public void setPaused(boolean paused) {
@@ -215,7 +212,6 @@
rfb.fbs.setTimeOffset(pos);
}
-
public void updatePos() {
if (showControls)
buttonPanel.setPos(rfb.fbs.getTimeOffset());
@@ -227,7 +223,6 @@
// param_name/param_value pairs where the names and values correspond to
// those expected in the html applet tag source.
//
-
public void readParameters() {
sessionURL = readParameter("URL", true);
@@ -253,7 +248,7 @@
if (inAnApplet) {
str = readParameter("Open New Window", false);
if (str != null && str.equalsIgnoreCase("Yes"))
- inSeparateFrame = true;
+ inSeparateFrame = true;
}
// Fine tuning options.
@@ -266,21 +261,21 @@
if (inAnApplet) {
String s = getParameter(name);
if ((s == null) && required) {
- fatalError(name + " parameter not specified");
+ fatalError(name + " parameter not specified");
}
return s;
}
for (int i = 0; i < mainArgs.length; i += 2) {
if (mainArgs[i].equalsIgnoreCase(name)) {
- try {
- return mainArgs[i+1];
- } catch (Exception e) {
- if (required) {
- fatalError(name + " parameter not specified");
- }
- return null;
- }
+ try {
+ return mainArgs[i + 1];
+ } catch (Exception e) {
+ if (required) {
+ fatalError(name + " parameter not specified");
+ }
+ return null;
+ }
}
}
if (required) {
@@ -294,8 +289,9 @@
long result = defaultValue;
if (str != null) {
try {
- result = Long.parseLong(str);
- } catch (NumberFormatException e) { }
+ result = Long.parseLong(str);
+ } catch (NumberFormatException e) {
+ }
}
return result;
}
@@ -305,8 +301,9 @@
double result = defaultValue;
if (str != null) {
try {
- result = Double.valueOf(str).doubleValue();
- } catch (NumberFormatException e) { }
+ result = Double.valueOf(str).doubleValue();
+ } catch (NumberFormatException e) {
+ }
}
return result;
}
@@ -314,23 +311,22 @@
//
// fatalError() - print out a fatal error message.
//
-
public void fatalError(String str) {
System.out.println(str);
if (inAnApplet) {
vncContainer.removeAll();
if (rfb != null) {
- rfb = null;
+ rfb = null;
}
Label errLabel = new Label(str);
errLabel.setFont(new Font("Helvetica", Font.PLAIN, 12));
vncContainer.setLayout(new FlowLayout(FlowLayout.LEFT, 30, 30));
vncContainer.add(errLabel);
if (inSeparateFrame) {
- vncFrame.pack();
+ vncFrame.pack();
} else {
- validate();
+ validate();
}
Thread.currentThread().stop();
} else {
@@ -342,7 +338,6 @@
//
// This method is called before the applet is destroyed.
//
-
public void destroy() {
vncContainer.removeAll();
if (rfb != null) {
@@ -357,7 +352,6 @@
//
// Close application properly on window close event.
//
-
public void windowClosing(WindowEvent evt) {
vncContainer.removeAll();
if (rfb != null)
@@ -372,11 +366,22 @@
//
// Ignore window events we're not interested in.
//
+ public void windowActivated(WindowEvent evt) {
+ }
- public void windowActivated (WindowEvent evt) {}
- public void windowDeactivated (WindowEvent evt) {}
- public void windowOpened(WindowEvent evt) {}
- public void windowClosed(WindowEvent evt) {}
- public void windowIconified(WindowEvent evt) {}
- public void windowDeiconified(WindowEvent evt) {}
+ public void windowDeactivated(WindowEvent evt) {
+ }
+
+ public void windowOpened(WindowEvent evt) {
+ }
+
+ public void windowClosed(WindowEvent evt) {
+ }
+
+ public void windowIconified(WindowEvent evt) {
+ }
+
+ public void windowDeiconified(WindowEvent evt) {
+ }
+
}
diff --git a/java/src/com/tightvnc/rfbplayer/RfbProto.java b/java/src/com/tightvnc/rfbplayer/RfbProto.java
index 5814012..e8a5042 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbProto.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbProto.java
@@ -32,46 +32,36 @@
class RfbProto {
final String versionMsg = "RFB 003.003\n";
- final static int ConnFailed = 0, NoAuth = 1, VncAuth = 2;
- final static int VncAuthOK = 0, VncAuthFailed = 1, VncAuthTooMany = 2;
+ final static int ConnFailed = 0, NoAuth = 1, VncAuth = 2;
+ final static int VncAuthOK = 0, VncAuthFailed = 1, VncAuthTooMany = 2;
- final static int FramebufferUpdate = 0, SetColourMapEntries = 1, Bell = 2,
- ServerCutText = 3;
+ final static int FramebufferUpdate = 0, SetColourMapEntries = 1, Bell = 2, ServerCutText =
+ 3;
- final int SetPixelFormat = 0, FixColourMapEntries = 1, SetEncodings = 2,
- FramebufferUpdateRequest = 3, KeyboardEvent = 4, PointerEvent = 5,
- ClientCutText = 6;
+ final int SetPixelFormat = 0, FixColourMapEntries = 1, SetEncodings = 2, FramebufferUpdateRequest =
+ 3, KeyboardEvent = 4, PointerEvent = 5, ClientCutText = 6;
- final static int
- EncodingRaw = 0,
- EncodingCopyRect = 1,
- EncodingRRE = 2,
- EncodingCoRRE = 4,
- EncodingHextile = 5,
- EncodingZlib = 6,
- EncodingTight = 7,
- EncodingCompressLevel0 = 0xFFFFFF00,
- EncodingQualityLevel0 = 0xFFFFFFE0,
- EncodingXCursor = 0xFFFFFF10,
- EncodingRichCursor = 0xFFFFFF11,
- EncodingLastRect = 0xFFFFFF20,
- EncodingNewFBSize = 0xFFFFFF21;
+ final static int EncodingRaw = 0, EncodingCopyRect = 1, EncodingRRE = 2, EncodingCoRRE =
+ 4, EncodingHextile = 5, EncodingZlib = 6, EncodingTight = 7, EncodingCompressLevel0 =
+ 0xFFFFFF00, EncodingQualityLevel0 = 0xFFFFFFE0, EncodingXCursor =
+ 0xFFFFFF10, EncodingRichCursor = 0xFFFFFF11, EncodingLastRect =
+ 0xFFFFFF20, EncodingNewFBSize = 0xFFFFFF21;
- final int HextileRaw = (1 << 0);
- final int HextileBackgroundSpecified = (1 << 1);
- final int HextileForegroundSpecified = (1 << 2);
- final int HextileAnySubrects = (1 << 3);
- final int HextileSubrectsColoured = (1 << 4);
+ final int HextileRaw = (1 << 0);
+ final int HextileBackgroundSpecified = (1 << 1);
+ final int HextileForegroundSpecified = (1 << 2);
+ final int HextileAnySubrects = (1 << 3);
+ final int HextileSubrectsColoured = (1 << 4);
- final static int TightExplicitFilter = 0x04;
- final static int TightFill = 0x08;
- final static int TightJpeg = 0x09;
- final static int TightMaxSubencoding = 0x09;
- final static int TightFilterCopy = 0x00;
- final static int TightFilterPalette = 0x01;
- final static int TightFilterGradient = 0x02;
+ final static int TightExplicitFilter = 0x04;
+ final static int TightFill = 0x08;
+ final static int TightJpeg = 0x09;
+ final static int TightMaxSubencoding = 0x09;
+ final static int TightFilterCopy = 0x00;
+ final static int TightFilterPalette = 0x01;
+ final static int TightFilterGradient = 0x02;
- final static int TightMinToCompress = 12;
+ final static int TightMinToCompress = 12;
FbsInputStream fbs;
DataInputStream is;
@@ -80,7 +70,6 @@
//
// Constructor.
//
-
RfbProto(URL url) throws Exception {
fbs = null;
newSession(url);
@@ -89,7 +78,6 @@
//
// Open new session URL.
//
-
public void newSession(URL url) throws Exception {
if (fbs != null)
fbs.close();
@@ -106,7 +94,6 @@
//
// Read server's protocol version message.
//
-
int serverMajor, serverMinor;
void readVersionMsg() throws IOException {
@@ -115,12 +102,11 @@
is.readFully(b);
- if ((b[0] != 'R') || (b[1] != 'F') || (b[2] != 'B') || (b[3] != ' ')
- || (b[4] < '0') || (b[4] > '9') || (b[5] < '0') || (b[5] > '9')
- || (b[6] < '0') || (b[6] > '9') || (b[7] != '.')
- || (b[8] < '0') || (b[8] > '9') || (b[9] < '0') || (b[9] > '9')
- || (b[10] < '0') || (b[10] > '9') || (b[11] != '\n'))
- {
+ if ((b[0] != 'R') || (b[1] != 'F') || (b[2] != 'B') || (b[3] != ' ') ||
+ (b[4] < '0') || (b[4] > '9') || (b[5] < '0') || (b[5] > '9') || (b[6] <
+ '0') || (b[6] > '9') || (b[7] != '.') || (b[8] < '0') || (b[8] > '9') ||
+ (b[9] < '0') || (b[9] > '9') || (b[10] < '0') || (b[10] > '9') ||
+ (b[11] != '\n')) {
throw new IOException("Incorrect protocol version");
}
@@ -132,7 +118,6 @@
//
// Find out the authentication scheme.
//
-
int readAuthScheme() throws IOException {
int authScheme = is.readInt();
@@ -158,7 +143,6 @@
//
// Read the server initialisation message
//
-
String desktopName;
int framebufferWidth, framebufferHeight;
int bitsPerPixel, depth;
@@ -190,7 +174,6 @@
//
// Set new framebuffer size
//
-
void setFramebufferSize(int width, int height) {
framebufferWidth = width;
framebufferHeight = height;
@@ -200,7 +183,6 @@
//
// Read the server message type
//
-
int readServerMessageType() throws IOException {
return is.readUnsignedByte();
}
@@ -209,7 +191,6 @@
//
// Read a FramebufferUpdate message
//
-
int updateNRects;
void readFramebufferUpdate() throws IOException {
@@ -218,7 +199,6 @@
}
// Read a FramebufferUpdate rectangle header
-
int updateRectX, updateRectY, updateRectW, updateRectH, updateRectEncoding;
void readFramebufferUpdateRectHdr() throws IOException {
@@ -229,19 +209,18 @@
updateRectEncoding = is.readInt();
if ((updateRectEncoding == EncodingLastRect) ||
- (updateRectEncoding == EncodingNewFBSize))
+ (updateRectEncoding == EncodingNewFBSize))
return;
if ((updateRectX + updateRectW > framebufferWidth) ||
- (updateRectY + updateRectH > framebufferHeight)) {
+ (updateRectY + updateRectH > framebufferHeight)) {
throw new IOException("Framebuffer update rectangle too large: " +
- updateRectW + "x" + updateRectH + " at (" +
- updateRectX + "," + updateRectY + ")");
+ updateRectW + "x" + updateRectH + " at (" +
+ updateRectX + "," + updateRectY + ")");
}
}
// Read CopyRect source X and Y.
-
int copyRectSrcX, copyRectSrcY;
void readCopyRect() throws IOException {
@@ -253,7 +232,6 @@
//
// Read a ServerCutText message
//
-
String readServerCutText() throws IOException {
byte[] pad = new byte[3];
is.readFully(pad);
@@ -267,7 +245,6 @@
//
// Read integer in compact representation
//
-
int readCompactLen() throws IOException {
int portion = is.readUnsignedByte();
int len = portion & 0x7F;
@@ -275,8 +252,8 @@
portion = is.readUnsignedByte();
len |= (portion & 0x7F) << 7;
if ((portion & 0x80) != 0) {
- portion = is.readUnsignedByte();
- len |= (portion & 0xFF) << 14;
+ portion = is.readUnsignedByte();
+ len |= (portion & 0xFF) << 14;
}
}
return len;
diff --git a/java/src/com/tightvnc/rfbplayer/VncCanvas.java b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
index 8272016..57bb858 100644
--- a/java/src/com/tightvnc/rfbplayer/VncCanvas.java
+++ b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
@@ -32,7 +32,6 @@
//
// VncCanvas is a subclass of Canvas which draws a VNC desktop on it.
//
-
class VncCanvas extends Canvas implements Observer {
RfbPlayer player;
@@ -69,7 +68,6 @@
//
// The constructor.
//
-
VncCanvas(RfbPlayer player) throws IOException {
this.player = player;
rfb = player.rfb;
@@ -83,7 +81,6 @@
//
// Callback methods to determine geometry of our Component.
//
-
public Dimension getPreferredSize() {
return new Dimension(rfb.framebufferWidth, rfb.framebufferHeight);
}
@@ -99,7 +96,6 @@
//
// All painting is performed here.
//
-
public void update(Graphics g) {
paint(g);
}
@@ -114,22 +110,21 @@
// Override the ImageObserver interface method to handle drawing of
// JPEG-encoded data.
//
-
public boolean imageUpdate(Image img, int infoflags,
- int x, int y, int width, int height) {
+ int x, int y, int width, int height) {
if ((infoflags & (ALLBITS | ABORT)) == 0) {
return true; // We need more image data.
} else {
// If the whole image is available, draw it now.
if ((infoflags & ALLBITS) != 0) {
- if (jpegRect != null) {
- synchronized(jpegRect) {
- memGraphics.drawImage(img, jpegRect.x, jpegRect.y, null);
- scheduleRepaint(jpegRect.x, jpegRect.y,
- jpegRect.width, jpegRect.height);
- jpegRect.notify();
- }
- }
+ if (jpegRect != null) {
+ synchronized(jpegRect) {
+ memGraphics.drawImage(img, jpegRect.x, jpegRect.y, null);
+ scheduleRepaint(jpegRect.x, jpegRect.y,
+ jpegRect.width, jpegRect.height);
+ jpegRect.notify();
+ }
+ }
}
return false; // All image data was processed.
}
@@ -148,10 +143,10 @@
memImage = player.createImage(fbWidth, fbHeight);
memGraphics = memImage.getGraphics();
} else if (memImage.getWidth(null) != fbWidth ||
- memImage.getHeight(null) != fbHeight) {
+ memImage.getHeight(null) != fbHeight) {
synchronized(memImage) {
- memImage = player.createImage(fbWidth, fbHeight);
- memGraphics = memImage.getGraphics();
+ memImage = player.createImage(fbWidth, fbHeight);
+ memGraphics = memImage.getGraphics();
}
}
@@ -159,14 +154,14 @@
// of geometry or pixel format.
pixels24 = new int[fbWidth * fbHeight];
pixelsSource =
- new MemoryImageSource(fbWidth, fbHeight, cm24, pixels24, 0, fbWidth);
+ new MemoryImageSource(fbWidth, fbHeight, cm24, pixels24, 0, fbWidth);
pixelsSource.setAnimated(true);
rawPixelsImage = createImage(pixelsSource);
// Update the size of desktop containers.
if (player.inSeparateFrame) {
if (player.desktopScrollPane != null)
- resizeDesktopFrame();
+ resizeDesktopFrame();
} else {
setSize(fbWidth, fbHeight);
}
@@ -179,9 +174,9 @@
// ScrollPane. -- const
Insets insets = player.desktopScrollPane.getInsets();
player.desktopScrollPane.setSize(rfb.framebufferWidth +
- 2 * Math.min(insets.left, insets.right),
- rfb.framebufferHeight +
- 2 * Math.min(insets.top, insets.bottom));
+ 2 * Math.min(insets.left, insets.right),
+ rfb.framebufferHeight +
+ 2 * Math.min(insets.top, insets.bottom));
player.vncFrame.pack();
@@ -209,7 +204,6 @@
// processNormalProtocol() - executed by the rfbThread to deal with
// the RFB data.
//
-
public void processNormalProtocol() throws Exception {
zlibInflater = new Inflater();
@@ -230,70 +224,70 @@
switch (msgType) {
case RfbProto.FramebufferUpdate:
- rfb.readFramebufferUpdate();
+ rfb.readFramebufferUpdate();
- for (int i = 0; i < rfb.updateNRects; i++) {
- rfb.readFramebufferUpdateRectHdr();
- int rx = rfb.updateRectX, ry = rfb.updateRectY;
- int rw = rfb.updateRectW, rh = rfb.updateRectH;
+ for (int i = 0; i < rfb.updateNRects; i++) {
+ rfb.readFramebufferUpdateRectHdr();
+ int rx = rfb.updateRectX, ry = rfb.updateRectY;
+ int rw = rfb.updateRectW, rh = rfb.updateRectH;
- if (rfb.updateRectEncoding == rfb.EncodingLastRect)
- break;
+ if (rfb.updateRectEncoding == rfb.EncodingLastRect)
+ break;
- if (rfb.updateRectEncoding == rfb.EncodingNewFBSize) {
- rfb.setFramebufferSize(rfb.updateRectW, rfb.updateRectH);
- updateFramebufferSize();
- break;
- }
+ if (rfb.updateRectEncoding == rfb.EncodingNewFBSize) {
+ rfb.setFramebufferSize(rfb.updateRectW, rfb.updateRectH);
+ updateFramebufferSize();
+ break;
+ }
- if (rfb.updateRectEncoding == rfb.EncodingXCursor ||
- rfb.updateRectEncoding == rfb.EncodingRichCursor) {
- throw new Exception("Sorry, no support for" +
- " cursor shape updates yet");
- }
+ if (rfb.updateRectEncoding == rfb.EncodingXCursor ||
+ rfb.updateRectEncoding == rfb.EncodingRichCursor) {
+ throw new Exception("Sorry, no support for" +
+ " cursor shape updates yet");
+ }
- switch (rfb.updateRectEncoding) {
- case RfbProto.EncodingRaw:
- handleRawRect(rx, ry, rw, rh);
- break;
- case RfbProto.EncodingCopyRect:
- handleCopyRect(rx, ry, rw, rh);
- break;
- case RfbProto.EncodingRRE:
- handleRRERect(rx, ry, rw, rh);
- break;
- case RfbProto.EncodingCoRRE:
- handleCoRRERect(rx, ry, rw, rh);
- break;
- case RfbProto.EncodingHextile:
- handleHextileRect(rx, ry, rw, rh);
- break;
- case RfbProto.EncodingZlib:
+ switch (rfb.updateRectEncoding) {
+ case RfbProto.EncodingRaw:
+ handleRawRect(rx, ry, rw, rh);
+ break;
+ case RfbProto.EncodingCopyRect:
+ handleCopyRect(rx, ry, rw, rh);
+ break;
+ case RfbProto.EncodingRRE:
+ handleRRERect(rx, ry, rw, rh);
+ break;
+ case RfbProto.EncodingCoRRE:
+ handleCoRRERect(rx, ry, rw, rh);
+ break;
+ case RfbProto.EncodingHextile:
+ handleHextileRect(rx, ry, rw, rh);
+ break;
+ case RfbProto.EncodingZlib:
handleZlibRect(rx, ry, rw, rh);
- break;
- case RfbProto.EncodingTight:
- handleTightRect(rx, ry, rw, rh);
- break;
- default:
- throw new Exception("Unknown RFB rectangle encoding " +
- rfb.updateRectEncoding);
- }
- }
- break;
+ break;
+ case RfbProto.EncodingTight:
+ handleTightRect(rx, ry, rw, rh);
+ break;
+ default:
+ throw new Exception("Unknown RFB rectangle encoding " +
+ rfb.updateRectEncoding);
+ }
+ }
+ break;
case RfbProto.SetColourMapEntries:
- throw new Exception("Can't handle SetColourMapEntries message");
+ throw new Exception("Can't handle SetColourMapEntries message");
case RfbProto.Bell:
Toolkit.getDefaultToolkit().beep();
- break;
+ break;
case RfbProto.ServerCutText:
- String s = rfb.readServerCutText();
- break;
+ String s = rfb.readServerCutText();
+ break;
default:
- throw new Exception("Unknown RFB message type " + msgType);
+ throw new Exception("Unknown RFB message type " + msgType);
}
player.updatePos();
@@ -304,7 +298,6 @@
//
// Handle a raw rectangle.
//
-
void handleRawRect(int x, int y, int w, int h) throws IOException {
byte[] buf = new byte[w * 4];
@@ -313,10 +306,10 @@
rfb.is.readFully(buf);
offset = dy * rfb.framebufferWidth + x;
for (i = 0; i < w; i++) {
- pixels24[offset + i] =
- (buf[i * 4 + 2] & 0xFF) << 16 |
- (buf[i * 4 + 1] & 0xFF) << 8 |
- (buf[i * 4] & 0xFF);
+ pixels24[offset + i] =
+ (buf[i * 4 + 2] & 0xFF) << 16 |
+ (buf[i * 4 + 1] & 0xFF) << 8 |
+ (buf[i * 4] & 0xFF);
}
}
@@ -328,12 +321,11 @@
//
// Handle a CopyRect rectangle.
//
-
void handleCopyRect(int x, int y, int w, int h) throws IOException {
rfb.readCopyRect();
memGraphics.copyArea(rfb.copyRectSrcX, rfb.copyRectSrcY, w, h,
- x - rfb.copyRectSrcX, y - rfb.copyRectSrcY);
+ x - rfb.copyRectSrcX, y - rfb.copyRectSrcY);
scheduleRepaint(x, y, w, h);
}
@@ -341,7 +333,6 @@
//
// Handle an RRE-encoded rectangle.
//
-
void handleRRERect(int x, int y, int w, int h) throws IOException {
int nSubrects = rfb.is.readInt();
@@ -371,7 +362,6 @@
//
// Handle a CoRRE-encoded rectangle.
//
-
void handleCoRRERect(int x, int y, int w, int h) throws IOException {
int nSubrects = rfb.is.readInt();
@@ -403,7 +393,7 @@
//
// These colors should be kept between handleHextileSubrect() calls.
- private Color hextile_bg, hextile_fg;
+ private Color hextile_bg, hextile_fg;
void handleHextileRect(int x, int y, int w, int h) throws IOException {
@@ -413,14 +403,14 @@
for (int ty = y; ty < y + h; ty += 16) {
int th = 16;
if (y + h - ty < 16)
- th = y + h - ty;
+ th = y + h - ty;
for (int tx = x; tx < x + w; tx += 16) {
- int tw = 16;
- if (x + w - tx < 16)
- tw = x + w - tx;
+ int tw = 16;
+ if (x + w - tx < 16)
+ tw = x + w - tx;
- handleHextileSubrect(tx, ty, tw, th);
+ handleHextileSubrect(tx, ty, tw, th);
}
// Finished with a row of tiles, now let's show it.
@@ -431,9 +421,8 @@
//
// Handle one tile in the Hextile-encoded data.
//
-
void handleHextileSubrect(int tx, int ty, int tw, int th)
- throws IOException {
+ throws IOException {
byte[] buf = new byte[256 * 4];
@@ -443,14 +432,14 @@
if ((subencoding & rfb.HextileRaw) != 0) {
int count, offset;
for (int j = ty; j < ty + th; j++) {
- rfb.is.readFully(buf, 0, tw * 4);
- offset = j * rfb.framebufferWidth + tx;
- for (count = 0; count < tw; count++) {
- pixels24[offset + count] =
- (buf[count * 4 + 2] & 0xFF) << 16 |
- (buf[count * 4 + 1] & 0xFF) << 8 |
- (buf[count * 4] & 0xFF);
- }
+ rfb.is.readFully(buf, 0, tw * 4);
+ offset = j * rfb.framebufferWidth + tx;
+ for (count = 0; count < tw; count++) {
+ pixels24[offset + count] =
+ (buf[count * 4 + 2] & 0xFF) << 16 |
+ (buf[count * 4 + 1] & 0xFF) << 8 |
+ (buf[count * 4] & 0xFF);
+ }
}
handleUpdatedPixels(tx, ty, tw, th);
return;
@@ -479,27 +468,27 @@
int b1, b2, sx, sy, sw, sh;
if ((subencoding & rfb.HextileSubrectsColoured) != 0) {
for (int j = 0; j < nSubrects; j++) {
- rfb.is.readFully(buf, 0, 4);
- hextile_fg = new Color(buf[2] & 0xFF, buf[1] & 0xFF, buf[0] & 0xFF);
- b1 = rfb.is.readUnsignedByte();
- b2 = rfb.is.readUnsignedByte();
- sx = tx + (b1 >> 4);
- sy = ty + (b1 & 0xf);
- sw = (b2 >> 4) + 1;
- sh = (b2 & 0xf) + 1;
- memGraphics.setColor(hextile_fg);
- memGraphics.fillRect(sx, sy, sw, sh);
+ rfb.is.readFully(buf, 0, 4);
+ hextile_fg = new Color(buf[2] & 0xFF, buf[1] & 0xFF, buf[0] & 0xFF);
+ b1 = rfb.is.readUnsignedByte();
+ b2 = rfb.is.readUnsignedByte();
+ sx = tx + (b1 >> 4);
+ sy = ty + (b1 & 0xf);
+ sw = (b2 >> 4) + 1;
+ sh = (b2 & 0xf) + 1;
+ memGraphics.setColor(hextile_fg);
+ memGraphics.fillRect(sx, sy, sw, sh);
}
} else {
memGraphics.setColor(hextile_fg);
for (int j = 0; j < nSubrects; j++) {
- b1 = rfb.is.readUnsignedByte();
- b2 = rfb.is.readUnsignedByte();
- sx = tx + (b1 >> 4);
- sy = ty + (b1 & 0xf);
- sw = (b2 >> 4) + 1;
- sh = (b2 & 0xf) + 1;
- memGraphics.fillRect(sx, sy, sw, sh);
+ b1 = rfb.is.readUnsignedByte();
+ b2 = rfb.is.readUnsignedByte();
+ sx = tx + (b1 >> 4);
+ sy = ty + (b1 & 0xf);
+ sw = (b2 >> 4) + 1;
+ sh = (b2 & 0xf) + 1;
+ memGraphics.fillRect(sx, sy, sw, sh);
}
}
}
@@ -507,7 +496,6 @@
//
// Handle a Zlib-encoded rectangle.
//
-
void handleZlibRect(int x, int y, int w, int h) throws Exception {
int nBytes = rfb.is.readInt();
@@ -524,17 +512,16 @@
byte[] buf = new byte[w * 4];
int i, offset;
for (int dy = y; dy < y + h; dy++) {
- zlibInflater.inflate(buf);
- offset = dy * rfb.framebufferWidth + x;
- for (i = 0; i < w; i++) {
- pixels24[offset + i] =
- (buf[i * 4 + 2] & 0xFF) << 16 |
- (buf[i * 4 + 1] & 0xFF) << 8 |
- (buf[i * 4] & 0xFF);
- }
+ zlibInflater.inflate(buf);
+ offset = dy * rfb.framebufferWidth + x;
+ for (i = 0; i < w; i++) {
+ pixels24[offset + i] =
+ (buf[i * 4 + 2] & 0xFF) << 16 |
+ (buf[i * 4 + 1] & 0xFF) << 8 |
+ (buf[i * 4] & 0xFF);
+ }
}
- }
- catch (DataFormatException dfe) {
+ } catch (DataFormatException dfe) {
throw new Exception(dfe.toString());
}
@@ -545,7 +532,6 @@
//
// Handle a Tight-encoded rectangle.
//
-
void handleTightRect(int x, int y, int w, int h) throws Exception {
int comp_ctl = rfb.is.readUnsignedByte();
@@ -553,7 +539,7 @@
// Flush zlib streams if we are told by the server to do so.
for (int stream_id = 0; stream_id < 4; stream_id++) {
if ((comp_ctl & 1) != 0 && tightInflaters[stream_id] != null) {
- tightInflaters[stream_id] = null;
+ tightInflaters[stream_id] = null;
}
comp_ctl >>= 1;
}
@@ -589,13 +575,13 @@
// Let the imageUpdate() method do the actual drawing, here just
// wait until the image is fully loaded and drawn.
synchronized(jpegRect) {
- Toolkit.getDefaultToolkit().prepareImage(jpegImage, -1, -1, this);
- try {
- // Wait no longer than three seconds.
- jpegRect.wait(3000);
- } catch (InterruptedException e) {
- throw new Exception("Interrupted while decoding JPEG image");
- }
+ Toolkit.getDefaultToolkit().prepareImage(jpegImage, -1, -1, this);
+ try {
+ // Wait no longer than three seconds.
+ jpegRect.wait(3000);
+ } catch (InterruptedException e) {
+ throw new Exception("Interrupted while decoding JPEG image");
+ }
}
// Done, jpegRect is not needed any more.
@@ -612,20 +598,20 @@
if ((comp_ctl & rfb.TightExplicitFilter) != 0) {
int filter_id = rfb.is.readUnsignedByte();
if (filter_id == rfb.TightFilterPalette) {
- numColors = rfb.is.readUnsignedByte() + 1;
- byte[] buf = new byte[numColors * 3];
- rfb.is.readFully(buf);
- for (int i = 0; i < numColors; i++) {
- palette24[i] = ((buf[i * 3] & 0xFF) << 16 |
- (buf[i * 3 + 1] & 0xFF) << 8 |
- (buf[i * 3 + 2] & 0xFF));
- }
- if (numColors == 2)
- rowSize = (w + 7) / 8;
+ numColors = rfb.is.readUnsignedByte() + 1;
+ byte[] buf = new byte[numColors * 3];
+ rfb.is.readFully(buf);
+ for (int i = 0; i < numColors; i++) {
+ palette24[i] = ((buf[i * 3] & 0xFF) << 16 |
+ (buf[i * 3 + 1] & 0xFF) << 8 |
+ (buf[i * 3 + 2] & 0xFF));
+ }
+ if (numColors == 2)
+ rowSize = (w + 7) / 8;
} else if (filter_id == rfb.TightFilterGradient) {
- useGradient = true;
+ useGradient = true;
} else if (filter_id != rfb.TightFilterCopy) {
- throw new Exception("Incorrect tight filter id: " + filter_id);
+ throw new Exception("Incorrect tight filter id: " + filter_id);
}
}
if (numColors == 0)
@@ -636,41 +622,41 @@
if (dataSize < rfb.TightMinToCompress) {
// Data size is small - not compressed with zlib.
if (numColors != 0) {
- // Indexed colors.
- byte[] indexedData = new byte[dataSize];
- rfb.is.readFully(indexedData);
- if (numColors == 2) {
- // Two colors.
- decodeMonoData(x, y, w, h, indexedData, palette24);
- } else {
- // 3..255 colors.
- int i = 0;
- for (int dy = y; dy < y + h; dy++) {
- for (int dx = x; dx < x + w; dx++) {
- pixels24[dy * rfb.framebufferWidth + dx] =
- palette24[indexedData[i++] & 0xFF];
- }
- }
- }
+ // Indexed colors.
+ byte[] indexedData = new byte[dataSize];
+ rfb.is.readFully(indexedData);
+ if (numColors == 2) {
+ // Two colors.
+ decodeMonoData(x, y, w, h, indexedData, palette24);
+ } else {
+ // 3..255 colors.
+ int i = 0;
+ for (int dy = y; dy < y + h; dy++) {
+ for (int dx = x; dx < x + w; dx++) {
+ pixels24[dy * rfb.framebufferWidth + dx] =
+ palette24[indexedData[i++] & 0xFF];
+ }
+ }
+ }
} else if (useGradient) {
- // "Gradient"-processed data
- byte[] buf = new byte[w * h * 3];
- rfb.is.readFully(buf);
- decodeGradientData(x, y, w, h, buf);
+ // "Gradient"-processed data
+ byte[] buf = new byte[w * h * 3];
+ rfb.is.readFully(buf);
+ decodeGradientData(x, y, w, h, buf);
} else {
- // Raw truecolor data.
- byte[] buf = new byte[w * 3];
- int i, offset;
- for (int dy = y; dy < y + h; dy++) {
- rfb.is.readFully(buf);
- offset = dy * rfb.framebufferWidth + x;
- for (i = 0; i < w; i++) {
- pixels24[offset + i] =
- (buf[i * 3] & 0xFF) << 16 |
- (buf[i * 3 + 1] & 0xFF) << 8 |
- (buf[i * 3 + 2] & 0xFF);
- }
- }
+ // Raw truecolor data.
+ byte[] buf = new byte[w * 3];
+ int i, offset;
+ for (int dy = y; dy < y + h; dy++) {
+ rfb.is.readFully(buf);
+ offset = dy * rfb.framebufferWidth + x;
+ for (i = 0; i < w; i++) {
+ pixels24[offset + i] =
+ (buf[i * 3] & 0xFF) << 16 |
+ (buf[i * 3 + 1] & 0xFF) << 8 |
+ (buf[i * 3 + 2] & 0xFF);
+ }
+ }
}
} else {
// Data was compressed with zlib.
@@ -679,51 +665,50 @@
rfb.is.readFully(zlibData);
int stream_id = comp_ctl & 0x03;
if (tightInflaters[stream_id] == null) {
- tightInflaters[stream_id] = new Inflater();
+ tightInflaters[stream_id] = new Inflater();
}
Inflater myInflater = tightInflaters[stream_id];
myInflater.setInput(zlibData);
try {
- if (numColors != 0) {
- // Indexed colors.
- byte[] indexedData = new byte[dataSize];
- myInflater.inflate(indexedData);
- if (numColors == 2) {
- // Two colors.
- decodeMonoData(x, y, w, h, indexedData, palette24);
- } else {
- // More than two colors.
- int i = 0;
- for (int dy = y; dy < y + h; dy++) {
- for (int dx = x; dx < x + w; dx++) {
- pixels24[dy * rfb.framebufferWidth + dx] =
- palette24[indexedData[i++] & 0xFF];
- }
- }
- }
- } else if (useGradient) {
- // Compressed "Gradient"-filtered data.
- byte[] buf = new byte[w * h * 3];
- myInflater.inflate(buf);
- decodeGradientData(x, y, w, h, buf);
- } else {
- // Compressed truecolor data.
- byte[] buf = new byte[w * 3];
- int i, offset;
- for (int dy = y; dy < y + h; dy++) {
- myInflater.inflate(buf);
- offset = dy * rfb.framebufferWidth + x;
- for (i = 0; i < w; i++) {
- pixels24[offset + i] =
- (buf[i * 3] & 0xFF) << 16 |
- (buf[i * 3 + 1] & 0xFF) << 8 |
- (buf[i * 3 + 2] & 0xFF);
- }
- }
- }
- }
- catch(DataFormatException dfe) {
- throw new Exception(dfe.toString());
+ if (numColors != 0) {
+ // Indexed colors.
+ byte[] indexedData = new byte[dataSize];
+ myInflater.inflate(indexedData);
+ if (numColors == 2) {
+ // Two colors.
+ decodeMonoData(x, y, w, h, indexedData, palette24);
+ } else {
+ // More than two colors.
+ int i = 0;
+ for (int dy = y; dy < y + h; dy++) {
+ for (int dx = x; dx < x + w; dx++) {
+ pixels24[dy * rfb.framebufferWidth + dx] =
+ palette24[indexedData[i++] & 0xFF];
+ }
+ }
+ }
+ } else if (useGradient) {
+ // Compressed "Gradient"-filtered data.
+ byte[] buf = new byte[w * h * 3];
+ myInflater.inflate(buf);
+ decodeGradientData(x, y, w, h, buf);
+ } else {
+ // Compressed truecolor data.
+ byte[] buf = new byte[w * 3];
+ int i, offset;
+ for (int dy = y; dy < y + h; dy++) {
+ myInflater.inflate(buf);
+ offset = dy * rfb.framebufferWidth + x;
+ for (i = 0; i < w; i++) {
+ pixels24[offset + i] =
+ (buf[i * 3] & 0xFF) << 16 |
+ (buf[i * 3 + 1] & 0xFF) << 8 |
+ (buf[i * 3 + 2] & 0xFF);
+ }
+ }
+ }
+ } catch (DataFormatException dfe) {
+ throw new Exception(dfe.toString());
}
}
@@ -734,7 +719,6 @@
//
// Decode 1bpp-encoded bi-color rectangle.
//
-
void decodeMonoData(int x, int y, int w, int h, byte[] src, int[] palette) {
int dx, dy, n;
@@ -744,12 +728,12 @@
for (dy = 0; dy < h; dy++) {
for (dx = 0; dx < w / 8; dx++) {
- b = src[dy*rowBytes+dx];
- for (n = 7; n >= 0; n--)
- pixels24[i++] = palette[b >> n & 1];
+ b = src[dy * rowBytes + dx];
+ for (n = 7; n >= 0; n--)
+ pixels24[i++] = palette[b >> n & 1];
}
for (n = 7; n >= 8 - w % 8; n--) {
- pixels24[i++] = palette[src[dy*rowBytes+dx] >> n & 1];
+ pixels24[i++] = palette[src[dy * rowBytes + dx] >> n & 1];
}
i += (rfb.framebufferWidth - w);
}
@@ -758,8 +742,7 @@
//
// Decode data processed with the "Gradient" filter.
//
-
- void decodeGradientData (int x, int y, int w, int h, byte[] buf) {
+ void decodeGradientData(int x, int y, int w, int h, byte[] buf) {
int dx, dy, c;
byte[] prevRow = new byte[w * 3];
@@ -773,27 +756,27 @@
/* First pixel in a row */
for (c = 0; c < 3; c++) {
- pix[c] = (byte)(prevRow[c] + buf[dy * w * 3 + c]);
- thisRow[c] = pix[c];
+ pix[c] = (byte)(prevRow[c] + buf[dy * w * 3 + c]);
+ thisRow[c] = pix[c];
}
pixels24[offset++] =
- (pix[0] & 0xFF) << 16 | (pix[1] & 0xFF) << 8 | (pix[2] & 0xFF);
+ (pix[0] & 0xFF) << 16 | (pix[1] & 0xFF) << 8 | (pix[2] & 0xFF);
/* Remaining pixels of a row */
for (dx = 1; dx < w; dx++) {
- for (c = 0; c < 3; c++) {
- est[c] = ((prevRow[dx * 3 + c] & 0xFF) + (pix[c] & 0xFF) -
- (prevRow[(dx-1) * 3 + c] & 0xFF));
- if (est[c] > 0xFF) {
- est[c] = 0xFF;
- } else if (est[c] < 0x00) {
- est[c] = 0x00;
- }
- pix[c] = (byte)(est[c] + buf[(dy * w + dx) * 3 + c]);
- thisRow[dx * 3 + c] = pix[c];
- }
- pixels24[offset++] =
- (pix[0] & 0xFF) << 16 | (pix[1] & 0xFF) << 8 | (pix[2] & 0xFF);
+ for (c = 0; c < 3; c++) {
+ est[c] = ((prevRow[dx * 3 + c] & 0xFF) + (pix[c] & 0xFF) -
+ (prevRow[(dx - 1) * 3 + c] & 0xFF));
+ if (est[c] > 0xFF) {
+ est[c] = 0xFF;
+ } else if (est[c] < 0x00) {
+ est[c] = 0x00;
+ }
+ pix[c] = (byte)(est[c] + buf[(dy * w + dx) * 3 + c]);
+ thisRow[dx * 3 + c] = pix[c];
+ }
+ pixels24[offset++] =
+ (pix[0] & 0xFF) << 16 | (pix[1] & 0xFF) << 8 | (pix[2] & 0xFF);
}
System.arraycopy(thisRow, 0, prevRow, 0, w * 3);
@@ -805,7 +788,6 @@
//
// Display newly updated area of pixels.
//
-
void handleUpdatedPixels(int x, int y, int w, int h) {
// Draw updated pixels of the off-screen image.
@@ -819,18 +801,17 @@
//
// Tell JVM to repaint specified desktop area.
//
-
void scheduleRepaint(int x, int y, int w, int h) {
if (rfb.fbs.isSeeking()) {
// Do nothing, and remember we are seeking.
seekMode = true;
} else {
if (seekMode) {
- // Immediate repaint of the whole desktop after seeking.
- repaint();
+ // Immediate repaint of the whole desktop after seeking.
+ repaint();
} else {
- // Usual incremental repaint.
- repaint(player.deferScreenUpdates, x, y, w, h);
+ // Usual incremental repaint.
+ repaint(player.deferScreenUpdates, x, y, w, h);
}
seekMode = false;
}
@@ -841,7 +822,6 @@
// switching to the `paused' mode. In such cases we want to repaint
// our desktop if we were seeking.
//
-
public void update(Observable o, Object arg) {
// Immediate repaint of the whole desktop after seeking.
repaint();