changeset 26:0aa0e0bd742c

succeed drawFirstImage()!!
author e085711
date Tue, 26 Apr 2011 09:08:49 +0900
parents cded9fd297ab
children 13d4d3118cb8
files src/myVncProxy/MyRfbProto.java src/myVncProxy/ProxyVncCanvas.java src/myVncProxy/VncCanvas.java src/myVncProxy/VncProxyService.java src/myVncProxy/VncViewer.java
diffstat 5 files changed, 51 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/src/myVncProxy/MyRfbProto.java	Tue Apr 26 06:21:37 2011 +0900
+++ b/src/myVncProxy/MyRfbProto.java	Tue Apr 26 09:08:49 2011 +0900
@@ -198,7 +198,6 @@
 	}
 	BufferedImage createBufferedImage(Image img){
 		BufferedImage bimg = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB  );
-		System.out.println("img.getWidth="+img.getWidth(null));
 		
 		Graphics g = bimg.getGraphics();
 		g.drawImage(img, 0, 0, null);
@@ -225,11 +224,25 @@
 	}
 
 	void sendPngData(Socket sock)throws IOException{
+		System.out.println("pngBytes.length="+pngBytes.length);
+
 //		ByteBuffer length = ByteBuffer.allocate(4);
 //		length.putInt(pngBytes.length);
-//		sock.getOutputStream().write(length.getInt());
+
+//		byte b = 1;
+//		sock.getOutputStream().write(b);
+		byte[] dataLength = castIntByte(pngBytes.length);
+		sock.getOutputStream().write(dataLength);
 		sock.getOutputStream().write(pngBytes);
 	}
+	byte[] castIntByte(int len){
+		byte[] b = new byte[4];
+		b[0] = (byte)((len >>> 24 ) & 0xFF);
+		b[1] = (byte)((len >>> 16 ) & 0xFF);
+		b[2] = (byte)((len >>> 8  ) & 0xFF);
+		b[3] = (byte)((len >>> 0  ) & 0xFF);
+		return b;
+	}
 	
 	BufferedImage createBimg()throws IOException{
 		BufferedImage bimg = ImageIO.read(new ByteArrayInputStream(pngBytes));
@@ -239,9 +252,6 @@
 		pngBytes = new byte[is.available()];
 		readFully(pngBytes);
 	}
-	
-	
-				
 	void printFramebufferUpdate(){
 	
 		System.out.println("messageType=" + messageType);
--- a/src/myVncProxy/ProxyVncCanvas.java	Tue Apr 26 06:21:37 2011 +0900
+++ b/src/myVncProxy/ProxyVncCanvas.java	Tue Apr 26 09:08:49 2011 +0900
@@ -28,11 +28,14 @@
 	int scalingFactor;
 	int scaledWidth, scaledHeight;
 
-	Image memImage;
+//	Image memImage;
+	BufferedImage memImage;
 	Graphics memGraphics;
 
-//	Image rawPixelsImage;
-	BufferedImage rawPixelsImage;
+	Image rawPixelsImage;
+//	BufferedImage rawPixelsImage;
+	BufferedImage bimg;
+
 	MemoryImageSource pixelsSource;
 	byte[] pixels8;
 	int[] pixels24;
@@ -210,6 +213,7 @@
 	}
 
 	public void setPixelFormat() throws IOException {
+/*
 		if (viewer.options.eightBitColors) {
 			rfb.writeSetPixelFormat(8, 8, false, true, 7, 7, 3, 0, 3, 6);
 			bytesPixel = 1;
@@ -218,7 +222,7 @@
 					0);
 			bytesPixel = 4;
 		}
-
+*/
 		updateFramebufferSize();
 	}
 
@@ -245,6 +249,7 @@
 		// Create new off-screen image either if it does not exist, or if
 		// its geometry should be changed. It's not necessary to replace
 		// existing image if only pixel format should be changed.
+/*
 		if (memImage == null) {
 			memImage = viewer.vncContainer.createImage(fbWidth, fbHeight);
 			memGraphics = memImage.getGraphics();
@@ -255,7 +260,10 @@
 				memGraphics = memImage.getGraphics();
 			}
 		}
-
+*/
+		memImage = new BufferedImage(rfb.framebufferWidth, rfb.framebufferHeight, BufferedImage.TYPE_INT_RGB );
+		memGraphics = memImage.getGraphics();
+		
 		// Images with raw pixels should be re-allocated on every change
 		// of geometry or pixel format.
 		if (bytesPixel == 1) {
@@ -282,8 +290,9 @@
 
 		}
 		pixelsSource.setAnimated(true);
-		rawPixelsImage = (BufferedImage) Toolkit.getDefaultToolkit().createImage(pixelsSource);
-
+		rawPixelsImage = Toolkit.getDefaultToolkit().createImage(pixelsSource);
+//		rawPixelsImage = (BufferedImage) Toolkit.getDefaultToolkit().createImage(pixelsSource);
+		
 	}
 
 	void resizeDesktopFrame() {
@@ -350,7 +359,6 @@
 		// main dispatch loop
 		//
 
-		long count = 0;
 
 		// single thread
 /*
@@ -364,7 +372,8 @@
 */
 
 		
-
+		
+		long count = 0;
 		while (true) {
 
 //			System.out.println("\ncount=" + count);
@@ -527,13 +536,22 @@
 			default:
 				throw new Exception("Unknown RFB message type " + msgType);
 			}
+
 			bufSize = (int)rfb.getNumBytesRead() - bufSize;
-//			System.out.println("bufSize="+bufSize);
+			System.out.println("bufSize="+bufSize);
 			rfb.bufResetSend(bufSize);
 
-//			byte[] rawBytes = getBytes(rawPixelsImage);/
-//			System.out.println("rawBytes.length="+rawBytes.length);
-			
+			bimg = createBufferedImage(rawPixelsImage);
+			rfb.createPngBytes(bimg);
+/*
+			boolean result = false;
+			try{
+				result = ImageIO.write(bimg, "png", new File("sample.png"));
+			}catch(Exception e){
+				e.printStackTrace();
+				result = false;
+			}
+*/
 		}
 	}
 
@@ -574,10 +592,10 @@
 				
 			}
 		}
-/*
+
 		handleUpdatedPixels(x, y, w, h);
-		if (paint) scheduleRepaint(x, y, w, h);
-*/
+//		if (paint) scheduleRepaint(x, y, w, h);
+
 	}
 
 	//
--- a/src/myVncProxy/VncCanvas.java	Tue Apr 26 06:21:37 2011 +0900
+++ b/src/myVncProxy/VncCanvas.java	Tue Apr 26 09:08:49 2011 +0900
@@ -55,6 +55,7 @@
 	Graphics memGraphics;
 
 	Image rawPixelsImage;
+//	BufferedImage rawPixelsImage;
 	BufferedImage bimg;
 
 	MemoryImageSource pixelsSource;
--- a/src/myVncProxy/VncProxyService.java	Tue Apr 26 06:21:37 2011 +0900
+++ b/src/myVncProxy/VncProxyService.java	Tue Apr 26 09:08:49 2011 +0900
@@ -11,7 +11,6 @@
 		v.mainArgs = argv;
 
 		v.init();
-
 	}
 	
 	String[] mainArgs;
@@ -133,7 +132,7 @@
 			} else {
 				fatalError(e.toString(), e);
 			}
-		} catch (Exception e) {
+		} catch (Exception e) { 
 			String str = e.getMessage();
 			if (str != null && str.length() != 0) {
 				fatalError("Error: " + str, e);
--- a/src/myVncProxy/VncViewer.java	Tue Apr 26 06:21:37 2011 +0900
+++ b/src/myVncProxy/VncViewer.java	Tue Apr 26 09:08:49 2011 +0900
@@ -448,20 +448,6 @@
 		rfb.writeClientInit();
 		rfb.readServerInit();
 
-/*
-		if (rfb.MYVNC) {
-			rfb.initServSock(5550);
-
-			try {
-				Socket newCli = rfb.accept();
-				rfb.sendInitData(newCli);
-				rfb.addSock(newCli);
-			} catch (IOException e) {
-			}
-
-		}
-*/
-
 		System.out.println("Desktop name is " + rfb.desktopName);
 		System.out.println("Desktop size is " + rfb.framebufferWidth + " x "
 				+ rfb.framebufferHeight);