AU2014200940A1 - Systems and methods for remote file transfer - Google Patents
Systems and methods for remote file transfer Download PDFInfo
- Publication number
- AU2014200940A1 AU2014200940A1 AU2014200940A AU2014200940A AU2014200940A1 AU 2014200940 A1 AU2014200940 A1 AU 2014200940A1 AU 2014200940 A AU2014200940 A AU 2014200940A AU 2014200940 A AU2014200940 A AU 2014200940A AU 2014200940 A1 AU2014200940 A1 AU 2014200940A1
- Authority
- AU
- Australia
- Prior art keywords
- accordance
- remote screen
- file
- screen interface
- computing device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000012546 transfer Methods 0.000 title claims description 30
- 230000002452 interceptive effect Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 230000003993 interaction Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005057 finger movement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
A method for transferring files between first and second computing devices, the method comprising the steps of: 5 providing a first user interface associated with the first computing device; displaying a remote screen interface on the first user interface, the remote screen interface arranged to display at least one object associated with a file stored on the second computing device; transferring 10 the file associated with the at least one object to the first computing device, responsive to a user of the first computing device moving the object to a predetermined area of the remote screen interface. C~El El ( CC) C)) 0 Ci0
Description
1 SYSTEMS AND METHODS FOR REMOTE FILE TRANSFER Technical Field 5 The present invention relates to systems and methods for transferring electronic files between two or more computing devices and more particularly, but not exclusively, to systems and methods for transferring 10 multimedia files to/from a computer providing an interactive desktop interface. Background of the Invention 15 It is often necessary to transfer electronic files between two or more computers. There are a wide range of transfer protocols which can be used to effect file transfer. Unlike general communications protocols, file transfer protocols are designed to send a stream of 20 bits, typically over a network, from a source computing system to a destination or target computing system. The file is stored on the target computing system as a single unit in a file system, together with any relevant meta data (e.g. file size, file name, etc). 25 One such transfer protocol is the "File Transfer Protocol" or "FTP" which is commonly used for transferring files over TCP/IP networks. There are two computers involved in an FTP file transfer, namely the server 30 computer and the client computer. In one configuration, the client computer displays a graphic user interface which allows a user of the client computer to perform a number of file manipulation operations such as uploading or downloading files to/from the server computer, edit 35 file names, delete files, etc. A drawback with these types of file transfer techniques is that complicated actions are typically 2 required to initiate file transfer (i.e. upload or download). For example, users need to input lengthy code/instructions in order to locate the file and specify where the file is to be sent. 5 Summary of the Invention In a first aspect, the present invention provides a method for transferring files between first and second 10 computing devices, the method comprising the steps of: providing a first user interface associated with the first computing device; displaying a remote screen interface on the first user interface, the remote screen interface arranged to display at least one object associated with a 15 file stored on the second computing device; and transferring the file associated with the at least one object to the first computing device, responsive to a user of the first computing device moving the object to a predetermined area of the remote screen interface. 20 In the context of the specification, the term "file" is intended to be construed broadly and include within its scope any block of arbitrary data that is utilisable by a computing system. Files may, for example, 25 include multimedia files (e.g. audio files, video files, data files, etc.). Moreover, the files may be encoded or encrypted files. In an embodiment, the predetermined area is 30 located along at least one edge of the remote screen interface. For example, the predetermined area may be a bounding box which internally surrounds the remote screen interface. In an embodiment the bounding box comprises a one pixel-wide region along each edge of the remote screen 35 interface. This advantageously allows a user to simply drag the desired object over the predetermined area to effect the file transfer.
3 In an embodiment the remote screen interface replicates at least a portion of a second user interface associated with the second computing device. The remote screen interface may be generated based on frame buffer 5 data provided by the second computer. In an embodiment, the remote screen interface may advantageously act as an interactive interface for controlling the file transfer by the first computer. 10 In an embodiment, the method comprises the further step of displaying a second object associated with the transferred file on the first user interface. The second object may be the same as the first object. For example, the object may be an icon associated with the 15 file which can be manipulated on the remote screen interface to effect the file transfer. In an embodiment, the method comprises the further step of loading/executing the transferred file, 20 whereby data associated with the loaded/executed file is displayed on the first user interface. In an embodiment, the method comprises the further step of displaying at least one of the object and executed/loaded file on the first user interface in close proximity to region in which 25 the object entered the predetermined area, such that the object appears as though it is being seamlessly passed from the remote screen interface to the first user interface. 30 In an embodiment, the step of moving the object comprises dragging the object to the predetermined area using at least one of a user gesture, stylus and mouse. The user gesture may, for example, be a hand or finger movement carried out by the user. 35 In an embodiment, the first and second computers communicate using a virtual display protocol to provide the remote screen interface. For example, the virtual 4 display protocol may include the virtual network control (VNC) protocol. In an embodiment, the remote screen interface is 5 an interactive frame buffer image provided by the second computing device. In accordance with a second aspect, the present invention provides a system from transferring files 10 between first and second computing devices, the system comprising: a first user interface associated with the first computing device and arranged to display a remote screen interface, the remote screen interface displaying at least one object associated with a file stored on the 15 second computing device; and a transfer module arranged to transfer the file associated with at least one object to the first computing device, responsive to a user of the first computing device moving the object within a pre determined area of the remote screen interface. 20 In an embodiment, the predetermined area is located along at least one edge of the remote screen interface. The predetermined area may be a bounding box which internally surrounds the remote screen interface. 25 In an embodiment the bounding box comprises a one-pixel wide region along each edge of the remote screen interface. In an embodiment the remote screen interface 30 replicates at least a portion of a second user interface associated with the second computing device. The second object associated with the transferred file may be displayed on the first user interface. The second object may be the same as the first object. 35 The system may further comprise a processing module arranged to load/execute the transferred file, whereby data associated with the loaded/executed file is 5 displayed on the first user interface. In accordance with a third aspect, the present invention provides a computer program comprising at least 5 one instruction which, when implemented on a computer readable medium of a computer system, causes the computer system to implement the method in accordance with the first aspect. 10 In accordance with a fourth aspect, the present invention provides a computer readable medium providing a computer program in accordance with the third aspect. Brief Description of the Drawings 15 Features and advantages of the present invention will become apparent from the following description of embodiments thereof, by way of example only, with reference to the accompanying drawings, in which: 20 Fig. 1 is a schematic diagram of a system for transferring files between computing devices, in accordance with an embodiment of the present invention; 25 Fig. 2 is a flow chart showing method steps for transferring files using the system of Fig. 1, in accordance with an embodiment of the present invention; Fig. 3 is a screen shot of a user interface 30 displaying a remote screen interface. Fig. 4 illustrates an event handling process flow for updating the remote screen interface shown in Fig. 3. 35 Fig. 5 is a collaboration diagram of a momentum graph, in accordance with embodiments of the present invention.
6 Figs. 6 to 9, are screen shots illustration example implementations of system and method embodiments. Fig. 10 is a collaboration diagram for layout 5 objects, in accordance with an embodiment of the present invention. Detailed Description 10 In the description which follows an embodiment of the present invention is described in the context of a system and method for transferring multimedia files (such as compressed video and picture files), between two computers remotely connected over a communications network 15 in the form of Local Area Network (LAN). However, it will be understood that the present invention is not limited to the example application described herein and is equally applicable for transferring any form of electronic file between any number and configuration of computing systems. 20 With reference to Figs. 1 and 2, multimedia files are transferred between two computing devices in the form of a personal computer (hereafter "tabletop computer") including a surface-mount touch screen display 109 and 25 laptop computer 102, 104, respectively. In the embodiment described hereafter, the laptop computer 104 serves as the "host" computer, providing the multimedia files for transfer, while the tabletop computer serves as the "client" computer, configured to receive the files. 30 The computers 102, 104 are connected over a communications network in the form of a LAN 106 and communicate using a packet-switched protocol, such as the TCP/IP protocol. The tabletop computer 102 includes a 35 first user interface 111 provided on the surface-mount display 109. The first user interface is a graphical user interface (GUI) arranged to display multimedia files stored by the tabletop computer 102 and receive commands 7 for manipulating the files and objects/icons associated therewith. An interactive remote screen interface 113 (hereafter "remote screen"), in this embodiment a Microsoft WindowsTm File Explorer window generated by the 5 laptop computer 104, is additionally displayed on the first user interface 111 (step 202 of Fig. 2). The File Explorer window includes objects in the form of icons associated with multimedia files stored on the laptop computer 104. An example screen shot of the first user 10 interface 111 displaying the remote screen 113 is shown in Fig. 3. In order to transfer multimedia files from the laptop computer 104 to the tabletop computer 102, a user 15 of the tabletop computer 102 drags or flicks ("flicking" is described in: Margaret R. Minsky. Manipulating simulated objects with real-world gestures using a force and position sensitive screen. SIGGRAPH Computer Graphics, 18 (3): 195-203, 1984. ISSN 0097-8930. doi: 20 http://doi.acm.org/10.1145/964965.808598 which is incorporated herein by reference) the icons associated with files to be transferred (using a stylus, mouse, hand, etc.) to a predetermined area of the remote screen 113 (step 204). In the embodiment described herein, the 25 predetermined area is a bounding box which internally surrounds the remote screen 113 and is indicated generally by arrow "A" in Fig. 3. Upon determining that the icon has entered the bounding box, the laptop computer 104 automatically transfers the multimedia file associated 30 with the icon to the tabletop computer 102 over the local area network 106 (step 206). A detailed description of the system components arranged to implement the aforementioned method is now 35 provided. As discussed above, the first computing device is in the form of a tabletop computer 102 providing a first 8 user interface which functions, among other things, to receive and display multimedia files for viewing and manipulation by users of the tabletop computer 102. 5 To carry out this functionality, the tabletop computer 102 comprises computer hardware including a motherboard 110, central processing unit 112, random access memory 114, hard disk 116 and networking hardware 118. The tabletop computer 102 also includes a display 10 109 in the form of a projector which projects an image (i.e. the first user interface) onto a tabletop surface. One or more users can interact with the first user interface 111 via an input, in order to manipulate objects displayed thereon. Input to the interface 111 is provided 15 by a touch sensitive surface of the tabletop onto which the image is projected. In addition to the hardware, the tabletop computer 102 includes an operating system (such as the Microsoft WindowsTM XP operating system, which is made by Microsoft Corporation) that resides on the hard 20 disk and which co-operates with the hardware to provide an environment in which the software applications can be executed. In this regard, the hard disk 116 of the tabletop 25 computer 102 is loaded with a client communications module in the form of a virtual network computing (VNC) client application operating in accordance with a virtual display protocol. The VNC client application allows the tabletop computer 102 to communicate with any number of host 30 computers loaded with a compliant VNC server application (e.g. RealVNC, TightVNC, X11vnc, etc.). Specifically, the VNC client application is arranged to utilise frame buffer image data received from a host computer (which in the presently described embodiment is a laptop computer 104), 35 for generating and displaying the remote screen 113. Where multiple host computers are connected, each frame buffer image appears in its own remote screen displayed on the user interface 111. The VNC client application also 9 supports a VNC password authentication method, whereby a set password is saved in a configuration file and authenticated by a challenge-response mechanism, such as the 3DES cipher. In an embodiment, the VNC client 5 application supports raw, copy, rectangle, rise and run length encoding (RRE) and CoRRE update mechanisms. The tabletop computer 102 also includes a receiving module including standard software and hardware (such as a TCP/IP socket) for receiving multimedia files sent from the 10 laptop computer 104. The second computing device 104 (i.e. "host computer") is in the form of laptop computer 104. The laptop computer 104 comprises essentially the same 15 hardware as the tabletop computer 102 (i.e. a motherboard, central processing unit, random access memory, a hard disk or other similar storage device, display and user input). The laptop computer 104 also utilises a Microsoft WindowsTM XP operating system. The hard disk of the laptop computer 20 104 is loaded with a host communication module in the form of a VNC server application. The VNC server application functions primarily to allow the laptop computer 104 to share its screen (in the described embodiment, a Microsoft Windows File Explorer window displaying objects associated 25 with files stored by the laptop computer 104) with the tabletop computer 102, by way of the remote screen 113. A determination module in the form of a Windows application programming interface "WinAPI" program is also loaded on the laptop hard disk in order to determine when a file 30 transfer event is required. In the embodiment described herein, the WinAPI program includes code to determine whether an object has been dragged onto an edge of the laptop's screen display. Responsive to a positive indication from the WinAPI program, a multimedia file 35 associated with the object is communicated to the tabletop computer 102 over the LAN 106. A sample code for performing this transfer is provided in "Appendix B".
10 Additional metadata is also sent together with the file to allow a second object associated with the transferred file to be displayed on the first user interface 111. In an embodiment, the second object is the 5 same as the first object. For example, if the file is a JPEG picture file the first and second object may be an icon displaying a thumbnail of the compressed picture. The client and host communication modules as well 10 as the determination module operate to provide the remote screen 113 and to instruct the transfer of multimedia files once an object has entered a prescribed area "A" of the laptop display screen. In an embodiment, the process involves a first step of establishing and authenticating a 15 connection with the laptop computer 104 utilising the VNC application loaded on the tabletop computer 102, and waiting for frame buffer updates responsive to a frame buffer update request. When a frame buffer update arrives, a hidden frame buffer stored in the system memory 20 is updated and the bounding box of all sub-updates collected. When the frame buffer update request is complete, the single, rectangular block of pixel data that was updated is processed into a mipmapped texture by generating progressively smaller versions (by half in each 25 width and height dimension) that allow an accurate representation of the updated region to be displayed regardless of the size of the locally displayed framebuffer 'photograph'. As will be readily understood by persons skilled in the art, mipmaps are optimised 30 collections of bitmap images that accompany the texture used to represent surface textures and also to increase rendering speed and reduce artifacts. Once this processing is complete, a low-priority event is added to the main queue with a reference to the texture and a mipmap update. 35 is carried out so as to locally display the updated frame buffer region on the remote screen. A flow chart illustrating the event handling 11 process for the aforementioned method is shown in Fig. 4. Unlike conventional event handling processes (e.g. for 3-D games, etc.), embodiments of the event handling process of the present invention are not continuously executing. 5 Instead, the event handling process waits for an event, before carrying out the processing steps. This provides an environment where an execution thread which handles the loading of images off the disk and converting them to mipmapped textures is given the maximum CPU time 10 available. In contrast to conventional processes which continuously redraw to reflect dynamic environments, the event handling process shown in Fig. 4 is static while there is no interaction occurring (and at a smaller scale, between events). This advantageously allows the process 15 to load textures in the background with minimal interruption to the interaction. Since the process creates and loads textures both when new drives are detected containing images and when a new image is captured using the frame, the system does not block any 20 time in which textures are pre-processed and loaded into texture memory. By pre-processing textures in a concurrent thread, the system is able to load new images without any significant pauses in interaction. 25 In an alternative embodiment to that which has been described above, the first computing device 102 is configured as the host computing device. In this embodiment, the first computing device (hereafter "host computer") is provided with the host communication and 30 determination module and is arranged to transfer files to one or more second computing devices (i.e. client computers). The client computers each include display units in the form of stereoscopic "data wall" displays which are located on different walls of the room in which 35 the host computer is located. In further contrast to the afore-mentioned method/system, no remote screen is generated on the first 12 user interface. Instead, the prescribed area is a bounding box which surrounds the extremity of the host computer's user interface. Responsive to the determination module determining that an object provided 5 on the user interface has been dragged or flicked onto the bounding box, the determination module causes the file associated with the object to be transferred to the client computer having the data wall which is physically closest to the point at which the object entered the bounding box. 10 The file and/or object associated with the transferred file may subsequently be displayed on the client computer's data wall. A sample code for determining bounds restrictions is provided in "Appendix A", which follows this detailed description. 15 With reference to Fig. 5, the determination module will now be described in more detail. To carry out the task of determining when an object has entered a prescribed area, the determination module maintains, in a 20 momentum graph 500, a pointer to each object, together with the position, velocity and acceleration vectors for each object. Each time the position of an object is updated, the determination module utilises the information stored in the momentum graph 500 to determine whether the 25 object lies in the predetermined area (in the embodiment described herein, the bounding box). If it is determined that the object does lie within the bounding box, a transfer routine is called to transfer the file associated with the object. In an embodiment, an animation program 30 provided by the determination module provides a three dimensional animation showing the transferred file/object moving from the estimated position on the client computer display, enlarging the icon so that the icon fills the display. It is envisaged that the animation program may 35 also support stereoscopic image files and a moving 'carousel' slide show. Example implementations of the above-mentioned 13 methods/systems will now be described with reference to the screen shots of Figs. 6 to 9. Example 1 "Transfer to Remote Display for Presentation" 5 (Fig. 6) In this example embodiment a user of the tabletop computer (in this embodiment operating as the host computer) wishes to present an image currently displayed 10 on the tabletop's user interface 600 to a large audience using a "wall mount" display (not shown). The wall mount display is provided by a projector screen associated with the client computer. In order to display the image on the projector screen, the user drags or flicks the object 602 15 associated with the image to the edge of the user interface 600 which is located in closest physical proximity to the wall mount display. When the object enters the bounding box 604 on that edge, the file associated with the image is sent to the client computer 20 and loaded for display on the projector. Example 2 "Slide Show" (Fig. 7) A user of the tabletop computer (again operating 25 as the host computer) wants to transfer photograph images 702 from the tabletop's user interface 700 to a client computer in the form of a digital picture frame which includes appropriate software for running a picture slide show. Images 702 to be presented in the slide show are 30 passed to the edge of the user interface such that they enter the bounding box 704. Dragging the images 702 onto the bounding box causes the determination module to instruct the digital picture frame to include those images into the slide show. Conversely, dragging the images out 35 of the bounding box causes the determination module to instruct the digital picture frame to remove the images 602 from the slide show.
14 Example 3 "Sending Audio Messages" (Fig. 8) In this scenario, a user of the tabletop computer sends a multimedia message (e.g. audio, video or combined 5 audio-video) to a person associated with an object displayed on the tabletop's user interface 800. The object may, for example, be a photograph image of the person. Gesturing over the photograph image 805 (e.g. by dwelling on the image) causes a recording program loaded 10 on the tabletop computer to begin recording using the attached microphone, accessed using the cross-platform PortAudio API (available from the Internet at URL http://www.portaudio.com). Once the desired message has been recorded by the user, gesturing again causes the 15 message (now saved on disk as a multimedia file, such as a WAV file) to be attached to the object. At the same time, the stored multimedia file is sent to another computer responsible for managing transmission of the multimedia files (e.g. using code similar that provided in "Appendix 20 B", but with a header that includes an identifier for the person). The computer transmits each image file depicting the person, followed by the saved multimedia attachment, 25 to the tabletop computer (again, using methods similar to the sample code in "Appendix B"). On the user interface 800, a representation 806 of the audio item can be seen on the reverse side of the photograph image (displayable by flipping the image). 30 Conversely, the user may receive multi-media messages. In this embodiment, the user interface 800 will automatically attach the received multimedia message to the reverse side of the photograph image 805 associated 35 with the user sending the message. The'received message may be attached to the photograph image in a different colour to indicate a received message. The multimedia message may be played by gesturing or dwelling on the 15 image 805. To achieve this, the tabletop computer listens for messages from the client computer responsible for 5 managing transmissions. After loading the initial "Person" images and media attachments, a TCP "server" socket is set up that receives new media items along with the identifier for the person to whom they should be attached. These then become objects that are laid out on 10 the reverse side of the photograph image 805 and seen by flipping the image. In more detail, objects located on the user interface 800, such as photograph images etc, may have a 15 Layout associated with them (see Figure 10). This layout includes a collection (coll) of child objects. Each time an object is moved on the interface, the communication module checks to see whether it should be attached to an object that has its reverse side visible. If it becomes 20 attached, it is added to the collection of child objects and then sent to a second computing device. Similarly, when it becomes removed, a "remove" message is sent to the second computing device. In addition to the content of the media that was attached, an identifier for the object 25 that it was attached to is also sent to the second computing device. Furthermore, each object may have a different second computing device to which it sends attached multimedia files. 30 Example 4 "Retrieving Media Items off a Client Computer for Display on a Local Interface" (Fig. 9) Two people are meeting at the tabletop computer (in this embodiment, acting as the client computer) to 35 discuss some media items in the form of photograph images 905. The images 905 are initially located on one of the person's laptop computer (i.e. host computer). The laptop computer is loaded with a VNC server application (as 16 discussed above) and determination module. The laptop computer is instructed to display a file window, such as a File Explorer window, open at the folder containing the images for discussion. The tabletop computer is connected 5 to the laptop using a TCP/IP connection. On the user interface 900 of the tabletop computer, a miniature version of the laptop screen (i.e. the "remote screen interface" displaying the frame buffer 10 image) is visible inside a photograph object which can be moved, rotated and resized like any other object displayed on the first user interface. In this embodiment, the remote screen interface 902 has two ways of becoming interactive. The first method involves using an alternate 15 stylus, pen etc to cause the remote screen interface 902 to become interactive (i.e. not simply act as an object of the first user interface). The other method requires the image to be flipped, as discussed above. Once interactive, manipulations of the remote screen 902 that 20 would otherwise move it etc, will now move the mouse cursor on the remote screen 902. The cursor updates are translated into the screen coordinate system of the second user interface (i.e. the laptop display), taking into account the scale, rotation and position of the frame 25 buffer object. In addition, the cursor updates are clipped to the second user interface, if the interaction point leaves the boundary of the displayed object (which in this case is in the form of an icon). The determination module creates four one-pixel 30 wide windows along each of the edges of the second user interface to form the boundary box 904. Dragging an icon from any other application on the laptop computer (e.g. from Windows File Explorer) to the edge of the screen allows the filename of that icon to be retrieved from the 35 operating system using OLE (Object Linking and Embedding). Once an icon is dragged over one of the one-pixel borders (i.e. via the frame buffer image) the file corresponding to the icon being dragged is read from disk and sent over 17 the communication medium (e.g. a TCP networking socket). In one embodiment,.the location on the second user interface at which the image 905 was first dragged onto the boundary box is sent back to the tabletop computer and 5 used to determine the position at which to load the image. In another embodiment, the most recently received interaction position on the tabletop user interface 900 (i.e. now on the edge, or off the frame buffer object) is used as the centre point at which to load the transferred 10 file. Loading in this manner causes the process to appear to the user as if the icon is being converted into a viewable media item and loaded onto the table as a new object when it crosses the boundary box surrounding the frame buffer image. In order for the determination module 15 to know where to send the media items, another step is involved. When a frame buffer object is created and successfully connects to (any) VNC server running on the laptop computer, a message is sent to the determination module. Future icon drags are sent to the most recent 20 computer that sent this "register" message (until an attempted send fails). Embodiments of the present invention advantageously provide that files can simply and 25 effectively be transferred between two or more computers with minimal user instruction or particular knowledge of the two systems. Embodiments are particularly advantageous for tabletop computers (i.e. computers which include a touch screen display provided on a table-like 30 surface), whereby files associated with objects displayed on the tabletop screen can be transferred by simply dragging or flicking the object to a predetermined area of the screen to effect the file transfer. 35 Although not required, the embodiments described with reference to the Figures can be implemented via an application programming interface (API) or as a series of libraries, for use by a developer, and can be included 18 within another software application, such as a terminal or personal computer operating system or a portable computing device operating system. Generally, as program modules include routines, programs, objects, components, and data 5 files that perform or assist in the performance of particular functions, it will be understood that the functionality of the software application may be distributed across a number of routines, objects and components to achieve the same functionality as the 10 embodiment and the broader invention claimed herein. Such variations and modifications are within the purview of those skilled in the art. A reference herein to a prior art document is not 15 an admission that the document forms part of the common general knowledge in the art in Australia.
19 APPENDIX A * Position update procedure for momentum 5 *\return true if the Animation has finished bool Momentum::relupdate(unsigned ms) { // use \f$ s = ut + \frac{1}{2}at^2 \f$ - 10 // classic physics formula for displacement // given initial velocity and acceleration over time float dt = 0.001*(ms - lastss; lastms = ms; 15 if (r->selectedBy() != user) // if someone else touched it, we stop if (r->selectedBy() >= 0) return true; 20 // if we were just deselected, we still want border colour // and access restrictions, and a deselect when we stop killselect = true; } // see if we've been touched again by the same user, if so, stop 25 if (r->clickPos != clickPos) return true; // DEcelleration due to friction/drag is directed against the x/y // components of _velocity_. Magnitude is just decel -- the (constant) 30 // decelleration due to friction/drag float vtheta = xv == 0.0 ? M_PI/2.0 : atanf(fabs(yv / xv)); float accelx = (xv < 0 ? 1.0 : -1.0) * cosf(vtheta) * decel; float accel-y = (yv < 0 ? 1.0 : -1.0) * sinf(vtheta) * decel; 35 // change the accelleration vector if we're near the black hole // by adding a component directed towards the centre of the blackhole // of magnitude BLACKHOLE ACCEL if (r->blackholeDist() < 1.0) { /* note we use screen positions before the blackhole warping */ 40 float dx = r->env->blackhole->getPC().getScreen().x - r->getPC().getScreen().x; float dy = r->env->blackhole->getPC().getScreen().y - r->getPC().getScreen().y; float theta = dx == 0.0 ? M_PI/2.0 : atanf(fabs(dy / dx)); 45 accel x += (dx < 0 ? -1.0 : 1.0) * RConfig::BLACKHOLEACCEL * cosf(theta) * (dx * xv < 0.0 ? 1.5 : 1.0); 50 accely += (dy < 0 ? 1.0 : -1.0) * RConfig::BLACKHOLEACCEL * sinf(theta) * (dy * yv > 0.0 ? 1.5 : 1.0); 55 ) // update velocity and displacement from the acceleration vector float xvdiff = accelx * dt; float yvdiff = accely * dt; float xdiff = xv * dt + 0.5 * accel x * dt * dt; 60 float ydiff = yv * dt + 0.5 * accel y * dt * dt; xv = (fabs(xvdiff) >= fabs(xv) && r->blackholeDist() >= 1.0) ? 0 : xv + xvdiff; 65 yv = (fabs(yvdiff) >= fabs(yv) && r->blackholeDist() >= 1.0) ? 20 0: yv + yvdiff; if (!finite(xv) || !finite(yv)) 5 xv = yv = 0.0f; } // stop when less than 10 pixels / second -- why 10? => -frame redraw // also stop when we're "trapped" by the centre of the Blackhole 10 if (r->blackholeDist() < RConfig::BLACKHOLETRAPDIST || (r->blackholeDist() >= 1.0 && fabs(xv) <= 20 && fabs(yv) <= 20)) if (killselect) r->unSelect(user); if (r->blackholeDist() >= 1.0) 15 r->settle(; return true; // remember our desired position xO = xO + xdiff; 20 yo = yo + ydiff; // then move to the closest screen/pixel location, restricting to bounds r->moveto(staticcast < int >(roundf(xO)), staticcast < int >(roundf(yO))); 25 if (r->getPC().getRealScreen().x + 3 >= r->env->getSurface()->w && RConfig::DATAWALLSEND && !sent) { // trigger send at right side of screen sent = true; 30 datawallsend(r); } else if (r->getPC().getRealScreen().x <= 3 && RConfig::MAGICMIRRORSEND && !sent) // trigger send at left side of screen sent = true; 35 datawallsend(r, true); } return false; } 40 /** Procedures controlling the triggering of a momentum animation */ void Mover::updatePositions() if (positions.size() == RConfig::VELOCITYWINDOW) positions.popback(); positions.pushfront(std::makepair(currenttime, current-xy_position)); 45 MoveTracker* Mover::release() { if (!RConfig::DO MOMENTUM positions.size() < RConfig::VELOCITYWINDOW 50 || r->hasLink() return ResourceGesture::release(; float dx = positions.front().second.x - positions.back().second.x; float dy = positions.front().second.y - positions.back().second.y; 55 float dt = (positions.front().first - positions.back() .first) / 1000.0f; float velsq = (dx * dx + dy * dy) /(dt *dt); if (velsq > RConfig::ESCAPEVELOCITY && r != r->env->blackhole) r->env->addAnimation(new Momentum(r, 60 dx / dt, dy / dt, positions.front().second.x, positions.front().second.y)); return ResourceGesture::release(); 65 } APPENDIX B 21 struct SendfileHeader { char id string[4]; /* = "FXY\0" */ uint16_t x, y, pathsize; 5 uint32_t filesize; / ** * Send a file on disk to the remote computer whose 10 * address resides in the HOST environment variable. * * \param pathstr the path on disk of the file to send * \param xpos the x-value of the cursor position that the * OLE drag event occurred at 15 * \param ypos the y-value of the cursor position bool SendFile(const char* pathstr, int xpos, int ypos) { if (!init) init = GetVars(HOST, PORT); 20 std::string path = pathstr; unsigned which = GetSideo; //top or left, no change needed if (which == WRIGHT) 25 xpos = SCREENWIDTH; if (which == WBOTTOM) ypos = SCREENHEIGHT; SendfileHeader head; 30 strcpy(head.id string, "XFY"); head.x = htons(xpos); head.y = htons(ypos); head.pathsize = htons(path.sizeo); FILE *f = 0; 35 unsigned long filesize = 0; if (!peer) { if (!(peer = tcpopen(HOST.cstro, PORT))) return false; sentpaths.clear(); 40 } head.filesize = 0; if (sentpaths.find(path) == sentpaths.endo)) { f = fopensize(path.cstr(), &filesize, "rb"); 45 head.filesize = htonl(filesize); sentpaths.insert(path); //regardless of failure.. } //send header 50 if (tcpsend(peer, reinterpretcast<const char*>(&head), sizeof(head))) return reseto; 55 //send filename if (tcpsend(peer, path.datao, path.sizeo)) return reseto; if (f) { enum {BUFSZ = 4096); //small buffer 60 char buf[BUFSZ]; 22 size t nread; size t toread = filesize; //send file while (toread > 0 5 && (nread = fread(buf, 1, toread < BUFSZ ? toread : BUFSZ, f))) { if (tcpsend(peer, buf, nread)) 10 return reseto; toread -= nread; } fclose(f); } 15 //tcpclose(peer); try to persist return true; } / ** 20 * Handle the OLE data represented in stgmed BOOL handleole(STGMEDIUM &stgmed, int xpos, int ypos) { TCHAR file name[_MAXPATH + 1]; std::vector<std::string> files; 25 HDROP hdrop = (HDROP)GlobalLock(stgmed.hGlobal); if (hdrop) { UINT numfiles = DragQueryFile(hdrop, (UINT)-l, NULL, 0); for (UINT i = 0; i < numfiles; ++i) { 30 ZeroMemory(file name, _MAXPATH + 1); DragQueryFile(hdrop, i, (LPTSTR)filename, MAXPATH + 1); files.pushback(file name); } 35 GlobalUnlock(hdrop); } ReleaseStgMedium(&stgmed); for (unsigned i = 0; i < files.size(; ++i) { 40 if (!SendFile(szFileName, xpos, ypos)) { /* handle error break; } } 45 return NOERROR;
}
Claims (23)
1. A method for transferring files between first and second computing devices, the method comprising the steps 5 of: providing a first user interface associated with the first computing device; displaying a remote screen interface on the first user interface, the remote screen interface arranged to 10 display at least one object associated with a file stored on the second computing device; transferring the file associated with the at least one object to the first computing device, responsive to a user of the first computing device moving the object 15 to a predetermined area of the remote screen interface.
2. A method in accordance with claim 1, wherein the predetermined area is located along at least one edge of the remote screen interface. 20
3. A method in accordance with claim 2, wherein the predetermined area is bounding box which internally surrounds the remote screen interface. 25
4. A method in accordance with claim 3, wherein the bounding box comprises a one pixel-wide region along each edge of the remote screen interface.
5. A method in accordance with any one of the 30 preceding claims, wherein the remote screen interface replicates at least a portion of a second user interface associated with the second computing device.
6. A method in accordance with any one of the 35 preceding claims, comprising the further step of displaying a second object associated with the transferred file on the first user interface. 24
7. A method in accordance with claim 6, wherein the second object is identical to the first object.
8. A method in accordance with any one of the 5 preceding claims, comprising the further step of loading/executing the transferred file, whereby data associated with the loaded/executed file is displayed on the first user interface. 10
9. A method in accordance with any one of preceding claims 5 to 8, comprising the further step of displaying at least one of the object and executed/loaded file on the first user interface in close proximity to region in which the object entered the predetermined area, such that the 15 object appears as though it is being seamlessly passed from the remote screen interface to the first user interface.
10. A method in accordance with any one of the 20 preceding claims, whereby the object is an icon representing the associated file.
11. A method in accordance with any one of the preceding claims, whereby the step of moving the object 25 comprises dragging the object to the predetermined area using at least one of a user gesture, stylus and mouse.
12. A method in accordance with any one of the preceding claims, whereby the first and second computers 30 communicate using a virtual display protocol to provide the remote screen interface.
13. A method in accordance with any one of the preceding claims, whereby the remote screen interface is 35 an interactive frame buffer image provided by the second computing device.
14. A system from transferring files between first 25 and second computing devices, the system comprising: a first user interface associated with the first computing device and arranged to display a remote screen interface, the remote screen interface displaying at least 5 one object associated with a file stored on the second computing device; and a transfer module arranged to transfer the file associated with at least one object to the first computing device, responsive to a user of the first computing device 10 moving the object within a pre-determined area of the remote screen interface.
15. A system in accordance with claim 14, wherein the predetermined area is located along at least one edge of 15 the remote screen interface.
16. A system in accordance with claim 15, wherein the predetermined area is a bounding box which internally surrounds the remote screen interface. 20
17. A system in accordance with claim 16, wherein the bounding box comprises a one-pixel wide region along each edge of the remote screen interface. 25
18. A system in accordance with any one of claims 14 to 17, wherein the remote screen interface replicates at least a portion of a second user interface associated with the second computing device. 30
19. A system in accordance with any one of claims 14 to 18, whereby a second object associated with the transferred file is displayed on the first user interface.
20. A system in accordance with claim 19, wherein the 35 second object is identical to the first object.
21. A system in accordance with any one of the preceding claims 14 to 20, further comprising a processing 26 module arranged to load/execute the transferred file, whereby data associated with the loaded/executed file is displayed on the first user interface. 5
22. A computer program comprising at least one instruction which, when implemented on a computer readable medium of a computer system, causes the computer system to implement the method in accordance with any one of claims 1 to 13. 10
23. A computer readable medium providing a computer program in accordance with claim 22.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| AU2014200940A AU2014200940A1 (en) | 2007-09-11 | 2014-02-21 | Systems and methods for remote file transfer |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| AU2007904928 | 2007-09-11 | ||
| AU2008299577A AU2008299577A1 (en) | 2007-09-11 | 2008-09-11 | Systems and methods for remote file transfer |
| AU2014200940A AU2014200940A1 (en) | 2007-09-11 | 2014-02-21 | Systems and methods for remote file transfer |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| AU2008299577A Division AU2008299577A1 (en) | 2007-09-11 | 2008-09-11 | Systems and methods for remote file transfer |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| AU2014200940A1 true AU2014200940A1 (en) | 2014-03-13 |
Family
ID=50238769
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| AU2014200940A Abandoned AU2014200940A1 (en) | 2007-09-11 | 2014-02-21 | Systems and methods for remote file transfer |
Country Status (1)
| Country | Link |
|---|---|
| AU (1) | AU2014200940A1 (en) |
-
2014
- 2014-02-21 AU AU2014200940A patent/AU2014200940A1/en not_active Abandoned
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20100281395A1 (en) | Systems and methods for remote file transfer | |
| US11941762B2 (en) | System and method for augmented reality scenes | |
| US9740507B2 (en) | Interacting with remote applications displayed within a virtual desktop of a tablet computing device | |
| EP2715531B1 (en) | Asynchronous handling of a user interface manipulation | |
| US8990737B2 (en) | Image preview | |
| US9542010B2 (en) | System for interacting with objects in a virtual environment | |
| US20060107229A1 (en) | Work area transform in a graphical user interface | |
| CN102804161A (en) | Application sharing | |
| US8432396B2 (en) | Reflections in a multidimensional user interface environment | |
| JP2015501468A (en) | Multidimensional interface | |
| CN103733170A (en) | Drag and drop of objects between applications | |
| CN109905592A (en) | Method and device for providing content controlled or synthesized according to user interaction | |
| TW201545042A (en) | Transient user interface elements | |
| CN112672185A (en) | Augmented reality-based display method, device, equipment and storage medium | |
| EP3437070A1 (en) | Ink in an electronic document | |
| US9508108B1 (en) | Hardware-accelerated graphics for user interface elements in web applications | |
| JP2021522721A (en) | Screen capture method, terminal and storage medium | |
| US9791994B2 (en) | User interface for application interface manipulation | |
| US9292165B2 (en) | Multiple-mode interface for spatial input devices | |
| AU2014200940A1 (en) | Systems and methods for remote file transfer | |
| US20250390197A1 (en) | Rotatable user interface elements | |
| US12278792B2 (en) | Collaborative video messaging component | |
| CN113168286A (en) | Terminal, control method for the terminal, and recording medium recording a program for realizing the method | |
| US20230334018A1 (en) | File selection user interface | |
| Hong et al. | I2-NEXT: Digital Heritage Expo |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MK5 | Application lapsed section 142(2)(e) - patent request and compl. specification not accepted |