Mercurial > hg > Applications > TreeVNC
comparison src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java @ 458:4ea47640942a
intoroduce retina scaled frame buffer postion
author | innparusu |
---|---|
date | Thu, 23 Jun 2016 18:57:12 +0900 |
parents | 34277b436cac |
children | c6058c4e2a79 |
comparison
equal
deleted
inserted
replaced
457:effba48b76f3 | 458:4ea47640942a |
---|---|
29 import com.glavsoft.rfb.client.KeyEventMessage; | 29 import com.glavsoft.rfb.client.KeyEventMessage; |
30 import com.glavsoft.rfb.protocol.Protocol; | 30 import com.glavsoft.rfb.protocol.Protocol; |
31 import com.glavsoft.rfb.protocol.ProtocolContext; | 31 import com.glavsoft.rfb.protocol.ProtocolContext; |
32 import com.glavsoft.rfb.protocol.ProtocolSettings; | 32 import com.glavsoft.rfb.protocol.ProtocolSettings; |
33 import com.glavsoft.utils.Keymap; | 33 import com.glavsoft.utils.Keymap; |
34 import com.glavsoft.viewer.ConnectionPresenter; | 34 import com.glavsoft.viewer.*; |
35 import com.glavsoft.viewer.UiSettings; | |
36 import com.glavsoft.viewer.Viewer; | |
37 import com.glavsoft.viewer.ViewerInterface; | |
38 import com.glavsoft.viewer.swing.gui.OptionsDialog; | 35 import com.glavsoft.viewer.swing.gui.OptionsDialog; |
39 import jp.ac.u_ryukyu.treevnc.ScreenChangeRequest; | 36 import jp.ac.u_ryukyu.treevnc.ScreenChangeRequest; |
40 import jp.ac.u_ryukyu.treevnc.ScreenChangeSelectionPanel; | 37 import jp.ac.u_ryukyu.treevnc.ScreenChangeSelectionPanel; |
41 import jp.ac.u_ryukyu.treevnc.TreeRFBProto; | 38 import jp.ac.u_ryukyu.treevnc.TreeRFBProto; |
42 | 39 |
852 | 849 |
853 final SwingViewerWindow viewerWindow = this; | 850 final SwingViewerWindow viewerWindow = this; |
854 JButton screenButton = buttonsBar.createButton("share", "Share my screen", new ActionListener() { | 851 JButton screenButton = buttonsBar.createButton("share", "Share my screen", new ActionListener() { |
855 @Override | 852 @Override |
856 public void actionPerformed(ActionEvent e) { | 853 public void actionPerformed(ActionEvent e) { |
857 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles(); | 854 ArrayList<FbRectangle> rectangles = viewer.getScreenRectangles(); |
858 if (rectangles.size() == 1) { // single display | 855 if (rectangles.size() == 1) { // single display |
859 screenChangeRequest(context, 0); | 856 screenChangeRequest(context, 0); |
860 } else if (rectangles.size() > 1){ // dual display | 857 } else if (rectangles.size() > 1){ // dual display |
861 ScreenChangeSelectionPanel selectionPanel = new ScreenChangeSelectionPanel(viewerWindow, context); | 858 ScreenChangeSelectionPanel selectionPanel = new ScreenChangeSelectionPanel(viewerWindow, context); |
862 for (int i = 0; i < rectangles.size(); i++) { | 859 for (int i = 0; i < rectangles.size(); i++) { |
914 | 911 |
915 setButtonsBarVisible(true, container); | 912 setButtonsBarVisible(true, container); |
916 } | 913 } |
917 | 914 |
918 public void screenChangeRequest(ProtocolContext context, int shareScreenNumber) { | 915 public void screenChangeRequest(ProtocolContext context, int shareScreenNumber) { |
919 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles(); | 916 ArrayList<FbRectangle> rectangles = viewer.getScreenRectangles(); |
920 Point offset = viewer.getScreenOffset(rectangles); | 917 FbRectangle rectangle1 = rectangles.get(shareScreenNumber); |
921 Rectangle rectangle1 = rectangles.get(shareScreenNumber); | |
922 int singleWidth = (int) (rectangle1.getWidth()); | 918 int singleWidth = (int) (rectangle1.getWidth()); |
923 int singleHeight = (int) (rectangle1.getHeight()); | 919 int singleHeight = (int) (rectangle1.getHeight()); |
924 int x = (int) (rectangle1.getX()) + offset.x; // convert double to int | 920 int x = rectangle1.getXfb(); |
925 int y = (int) (rectangle1.getY()) + offset.y; | 921 int y = rectangle1.getYfb(); |
926 int scale = viewer.retinaScale(shareScreenNumber); | 922 int scale = rectangle1.getRetinaScale(); |
927 showScreenInfo("request screen change", 0, x, y, singleWidth, singleHeight, scale); | 923 showScreenInfo("request screen change", 0, x, y, singleWidth, singleHeight, scale); |
928 if (viewer.getRfb().isTreeManager()) { | 924 if (viewer.getRfb().isTreeManager()) { |
929 changeVncServer(viewer, x, y, singleWidth * scale, singleHeight * scale, scale, viewer.getRfb().getId()); | 925 changeVncServer(viewer, x, y, singleWidth * scale, singleHeight * scale, scale, viewer.getRfb().getId()); |
930 } | 926 } |
931 if (viewer.getRfb().hasParent()) { | 927 if (viewer.getRfb().hasParent()) { |
954 | 950 |
955 /** | 951 /** |
956 * change screen viewer scale to fit the selected server screen size in multi screens | 952 * change screen viewer scale to fit the selected server screen size in multi screens |
957 */ | 953 */ |
958 public void fitScreen() { | 954 public void fitScreen() { |
959 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles(); | 955 ArrayList<FbRectangle> rectangles = viewer.getScreenRectangles(); |
960 if (rectangles.size()<=0) return; // no screens, nothing to do | 956 if (rectangles.size()<=0) return; // no screens, nothing to do |
961 int thisScreenNumber = getThisScreenNumber(rectangles); | 957 int thisScreenNumber = getThisScreenNumber(rectangles); |
962 | 958 |
963 | 959 |
964 int thisScreenWidth = (int) rectangles.get(thisScreenNumber).getWidth(); | 960 int thisScreenWidth = (int) rectangles.get(thisScreenNumber).getWidth(); |
988 // scroller.scrollRectToVisible(visible); // this does not work | 984 // scroller.scrollRectToVisible(visible); // this does not work |
989 } | 985 } |
990 }); | 986 }); |
991 } | 987 } |
992 | 988 |
993 private int getThisScreenNumber(ArrayList<Rectangle> rectangles) { | 989 private int getThisScreenNumber(ArrayList<FbRectangle> rectangles) { |
994 // find which screen we are on | 990 // find which screen we are on |
995 Point thisScreenLocation = frame.getLocation(); | 991 Point thisScreenLocation = frame.getLocation(); |
996 Point mouse = frame.getMousePosition(); | 992 Point mouse = frame.getMousePosition(); |
997 int thisScreenNumber = 0; | 993 int thisScreenNumber = 0; |
998 for(Rectangle rect : rectangles) { | 994 for(Rectangle rect : rectangles) { |