# Patent

## Title
Toolbar dynamics for digital whiteboard

## Abstract

Roughly described, different drawing regions are opened for different users on the same whiteboard. Each drawing region has its own set of line appearance properties, which the user can set with a toolbar. Lines drawn in a drawing region adopt the line appearance properties then in effect for that drawing region, which also apply to replications of the line on other devices in the collaboration session. As the user draws toward a boundary of the user's drawing region, the boundary automatically moves so that the drawing continues to contain the user's drawing activity.

## Background
CROSS-REFERENCE TO OTHER APPLICATIONS
Applicants hereby claim the benefit under 35 U.S.C. 119 of U.S. provisional application No. 61/697,248 filed Sep. 5, 2012.
This application is also a continuation-in-part of U.S. application Ser. No. 13/478,994 filed May 23, 2012, which in turn claims priority under 35 USC §119 to U.S. provisional patent application Ser. No. 61/489,238 filed May 23, 2011.
This application is also a continuation-in-part of PCT International Application No. PCT/US12/39176, filed May 23, 2012, which claims priority from Provisional Application No. 61/489,238, filed May 23, 2011.
All of the above applications are incorporated by reference herein.
The following applications are also incorporated by reference:
PCT International Publication No. WO 2011/029067, published on 10 Mar. 2011; U.S. application Ser. No. 13/759,017 entitled “Collaboration System with Whiteboard Access to Global Collaboration Data”, by inventor Aaron Jensen, filed 4 Feb. 2013; and
U.S. application Ser. No. 13/759,018 entitled “Collaboration System with Whiteboard with Federated Display”, by inventor Adam Pearson, filed 4 Feb. 2013.


STATEMENT CONCERNING JOINT RESEARCH AGREEMENT
Haworth, Inc., a Michigan corporation, Thought Stream LLC, a Delaware corporation, and Obscura Digital Incorporated, a California corporation, are parties to a Joint Research Agreement.
BACKGROUND
The invention relates to apparatuses, methods, and systems for digital collaboration, and more particularly to digital whiteboard systems which facilitate multiple simultaneous users.
Digital whiteboards are often used for interactive presentations and other purposes. Some whiteboards are networked and can be used for collaboration, so that modifications made to the display image on one whiteboard are replicated on another whiteboard or display. Large scale whiteboards offer the opportunity for more than one user to present or annotate simultaneously on the same surface. However, problems can occur in the coordination of the multiple users, and in some circumstances their use of a single whiteboard can restrict their flexibility of expression.
Therefore, it would be desirable to find ways to allow multiple users to share a common whiteboard surface, in such a way that each user has maximum freedom to express his or her ideas. An opportunity therefore arises to create robust solutions to the problem. Better ideas, collaboration and results may be achieved.
SUMMARY
Roughly described, the invention involves opening different drawing regions for different users on the same whiteboard. Each drawing region has its own set of line appearance properties, which the user can set with a toolbar. Lines drawn in a drawing region adopt the line appearance properties then in effect for that drawing region, which also apply to replications of the line on other devices in the collaboration session. As the user draws toward a boundary of the user's drawing region, the boundary automatically moves so that the drawing continues to contain the user's drawing activity.
The above summary of the invention is provided in order to provide a basic understanding of some aspects of the invention. This summary is not intended to identify key or critical elements of the invention or to delineate the scope of the invention. Its sole purpose is to present some concepts of the invention in a simplified form as a prelude to the more detailed description that is presented later. Particular aspects of the invention are described in the claims, specification and drawings.



BRIEF DESCRIPTION OF THE DRAWINGS
The invention will be described with respect to specific embodiments thereof, and reference will be made to the drawings, which are not drawn to scale, and in which:
FIGS. 1A and 1B (collectively FIG. 1) illustrate example aspects of a digital whiteboard collaboration environment incorporating features of the invention.
FIGS. 2, 3, 4, 5, 6, 7, 8A, 8B (collectively FIG. 8) and 9 illustrate aspects of drawing region behavior on the whiteboard of FIG. 1.
FIG. 10 is a simplified block diagram of the computer system 110 (FIG. 1B).
FIG. 11 is a schematic drawing of a database stored accessibly to the computer system 110 (FIG. 1B).
FIG. 12 (consisting of FIGS. 12A, 12B, 12C and 12D) is a flow chart illustrating a typical flow in which two users are working at the whiteboard of FIG. 1.
FIG. 13 is a flow chart illustrating the operation of computer system 110 to effect the region boundary behavior described with respect to FIGS. 2-9.



DETAILED DESCRIPTION
The following description is presented to enable any person skilled in the art to make and use the invention, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present invention. Thus, the present invention is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.
FIG. 1A illustrates example aspects of a digital whiteboard collaboration environment incorporating features of the invention. In the example, a plurality of users 101a-d (collectively 101), may desire to collaborate with each other in the creation of complex images, music, video, documents, and/or other media, all generally designated in FIG. 1A as 103a-d (collectively 103). The users in the illustrated example use a variety of devices in order to collaborate with each other, for example a tablet 102a, a personal computer (PC) 102b, and a large format whiteboard 102c (collectively devices 102). In the illustrated example the large format whiteboard 102c, which is sometimes referred to herein as a “wall”, accommodates more than one of the users, in this case users 101c and 101d. 
FIG. 1B illustrates the same environment as FIG. 1A. As shown in FIG. 1B, the large format whiteboard 102c, sometimes referred to herein as a “wall”, is controlled by a computer system 110, which in turn is in network communication with a central collaboration server 105, which has accessible thereto a database 106. As used herein, the term “database” does not necessarily imply any unity of structure. For example, two or more separate databases, when considered together, still constitute a “database” as that term is used herein. The database 106 stores, for example, a digital representation of a whiteboard canvas. The canvas has unlimited or virtually unlimited dimensions, and each device 102 displays only a portion of the overall canvas. Preferably the canvas is as large as needed, subject only to memory storage and addressing limitations. The server 105 stores session data for a plurality of collaboration sessions, and provides the session data to the whiteboards participating in the session. The session data is then used by the devices to determine images to display, and to assign objects for interaction to locations on the display surface of the whiteboard. In some alternatives, the server 105 can keep track of a “viewport” for each device 102, indicating the portion of the canvas viewable on that device, and can provide to each device 102 data needed to render the viewport.
The user interface data stored in database 106 includes various types of objects, such as image bitmaps, video objects, multi-page documents, scalable vector graphics, and the like. The devices 102 are each in communication with the collaboration server 105 via a network 104. The network 104 can include all forms of networking components, such as LANs, WANs, routers, switches, WiFi components, cellular components, wired and optical components, and the internet. In one scenario two or more of the users 101 are located in the same room, and their devices 102 communicate via WiFi with the collaboration server 105. In another scenario two or more of the users 101 are separated from each other by thousands of miles and their devices 102 communicate with the collaboration server 105 via the internet. Note that whereas a collaborative environment as illustrated in FIG. 1 is most advantageous, many of the drawing region boundary features and moving toolbar features described herein can also be used on a standalone whiteboard 102c. 
The wall 102c is a multi-touch device which not only displays an image, but also can sense user gestures provided by touching the display surface with either a stylus or a part of the body such as one or more fingers. The wall 102c can distinguish between a touch by one or more fingers (or an entire hand, for example), and a touch by the stylus. In an embodiment, the wall senses touch by emitting infrared light and detecting light received; light reflected from a user's finger has a characteristic which the wall distinguishes from ambient received light. The stylus emits its own infrared light in a manner that the wall can distinguish from both ambient light and light reflected from a user's finger. The wall 102c may, for example, be an array of Model No. MT553UTBL MultiTaction Cells, manufactured by MultiTouch Ltd, Helsinki, Finland, tiled both vertically and horizontally. In order to provide a variety of expressive means, the wall 102c is operated in such a way that it maintains “state”. That is, it may react to a given input differently depending on (among other things) the sequence of inputs. For example, using a toolbar, a user can select any of a number of available brush styles and colors. Once selected, the wall is in a state in which subsequent strokes by the stylus will draw a line using the selected brush style and color.
In an illustrative embodiment, the array totals on the order of 6′ in height and 30′ in width, which is wide enough for multiple users to stand at different parts of the wall and manipulate it simultaneously. Flexibility of expression on the wall may be restricted in a multi-user scenario, however, since the wall does not in this embodiment distinguish between fingers of different users, or styli operated by different users. Thus if one user places the wall into one desired state, then a second user would be restricted to use that same state because the wall does not have a way to recognize that the second user's input is to be treated differently.
In order to avoid this restriction, the system defines “drawing regions” on the wall 102c. A drawing region, as used herein, is a region within which at least one aspect of the wall's state can be changed independently of other regions on the wall. In the present embodiment, the aspects of state that can differ among drawing regions are the properties of a line drawn on the wall using a stylus. The response of the system to finger touch behaviors is not affected by drawing regions.
FIG. 2 illustrates a wall 102c. The wall in this example is 6′ tall and 30′ wide. It is initially a default background color or image, and has a default drawing state throughout the wall. The drawing state is defined by the line drawing properties, which in the embodiment of FIG. 2 include line appearance properties such as brush type, brush size and color. When a user 101c touches the wall, using either a stylus or one or more fingers (sometimes referred to collectively herein as a writing implement), a toolbar 210 appears nearby and a drawing region 212 is defined. Touching a touch point is one embodiment of what is sometimes referred to herein as “opening user input”; other embodiments will be apparent to the reader. The initial drawing state of a newly defined drawing region is a predefined default (such as brush type=ink, thickness=5 mm, color=white), which in various embodiments may or may not match the default state of the remainder of the wall. In the embodiment of FIG. 2 the drawing properties established for a drawing region apply throughout the drawing region. Line drawing operates on the wall logically in a layer above any application program that might be running on the computer system 110, regardless of whether the program has ownership of any particular area of the wall 102c. 
In the embodiment of FIG. 2 drawing regions always fill the entire vertical extent of the wall, though in other embodiments regions can be shorter, and/or have non-rectangular shapes. Also in the embodiment of FIG. 2 drawing regions are perceptibly demarcated with left and right hand borders 214 and 216; in another embodiment other means may be used to demarcate the region, such as background shading. In yet another embodiment the region boundaries are not perceptible to the user. Assuming sufficient space to the left and right, the computer system 110 spawns the drawing region in a position that is centered about the user's touch point. Drawing regions have a minimum width Wmin and an ideal width Wideal. The minimum width preferably is chosen to be the smallest width to allow reasonably unfettered expression, and in the embodiment of FIG. 2 is 4′. The ideal width preferably is chosen to be roughly equal to the widest span of an average user's arms stretched out horizontally, and in the embodiment of FIG. 2 is 6′.
If there is plenty of space on either side of the user's touch point, then the computer system 110 will set the initial region width to Wideal. This is the scenario illustrated in FIG. 2. If the user's touch point is too close to a wall edge for a new drawing region to be centered about it, then the computer system 110 will abut the new drawing region against the wall edge. The new drawing region will still have a width Wideal assuming sufficient space is available, so the new drawing region will not be centered about the user's touch point. This can be seen in FIG. 3, where drawing region 312 is spawned adjacent wall edge 314 in response to the user 101c touching point 316 which, in the illustrated example, is within a distance of less than half Wmin from the edge. On the other hand, if the user's touch point is far enough from the wall edge to create a drawing region centered about the touch point, but the new drawing region would be less than Wmin from the wall edge, then the gap space between the wall edge and the new drawing region is considered unusable. In this case the computer system 110 will extend the new drawing region to fill up the unusable space. This scenario is illustrated in FIG. 4, where drawing region 412 is spawned in response to the user 101c touching point 416 on the wall 102c, and the new drawing region is extended to the nearby wall edge 414. The scenario of FIG. 4 occurs where the touch point is located at a distance D from the edge, where D is between (a) half the ideal width Wideal, and (b) half the ideal width plus the minimum width (that is, where Wideal/2<D<(Wideal/2+Wmin)). Gap filling to an edge may occur in other circumstances as well.
FIG. 5 illustrates a scenario in which two users 101c and 101d can use the wall simultaneously. Initially, user 101c touches the wall 102c at touch point 516, and in response thereto the computer system 110 shawns drawing region 512 with toolbar 510. Optionally, user 101c then touches controls on toolbar 510 in order to change the line appearance properties within region 512. Next, a second user 101d touches the wall 102c at touch point 518, which is within the wall 102c background (i.e. outside of all pre-existing drawing regions). A second drawing region 514 is then spawned by the computer system 110, with toolbar 520. If user 101d draws a line at this time within region 514, the computer system 110 will paint it with the default line properties rather than those previously set by user 101c for drawing region 512. User 101d then optionally touches controls on toolbar 520 in order to change the line appearance properties within region 514. Subsequent lines drawn in region 514 will then adopt the new line appearance properties. The line appearance properties of region 512 will remain unchanged.
Because the wall 102c does not distinguish among different users or styli, the line appearance properties in the embodiments described herein are a function of the drawing region rather than of the user or stylus. Thus if user 101d lifts his or her stylus and begins drawing within drawing region 512, the computer system 110 will draw the line with the properties that user 101c had set for region 512. Similarly, if user 101c lifts his or her stylus and begins drawing within drawing region 514, the computer system 110 will draw the line with the properties that user 101d had set for region 514.
FIG. 6 illustrates a gap-filling feature of wall 102c. Initially, user 101c touches the wall 102c at touch point 616, thereby spawning drawing region 612 with toolbar 610. Optionally, user 101c then touches controls on toolbar 610 in order to change the line appearance properties within region 612. Next, second user 101d touches the wall 102c at touch point 618, thereby spawning drawing region 614 with toolbar 620. There is sufficient space in this scenario for the new drawing region 614 to be centered about the touch point 618, but an edge of the new drawing region 614 would be less than Wmin from the near edge of existing drawing region 612. Then the space between the two drawing regions is considered too narrow to be usable. In this case both drawing regions extend toward each other to meet at a horizontal position 622 between them, preferably splitting the difference between them. As in FIG. 5, the drawing properties of the two drawing regions 612 and 614 can be changed independently.
If in FIG. 6 the second user's touch point 618 is too close to region 612 for new region 614 centered at touch point 618 to extend to width Wideal, then preferably one or the other region 612 or 614 or both will narrow to permit both regions to co-exist on the wall 102c, provided each can retain a width that is at least Wmin. In embodiments described herein, existing region 612 will narrow to accommodate the creation of region 614, and preferably the new region 614 will also be narrower than Wideal, so that in effect both regions become narrower. Also, if the boundary of the new region 614 which is adjacent to the existing region 612 has to be placed at a particular distance closer to the touch point 618 than half of Wideal, then the opposite boundary of new region 614 also is placed at the same particular distance closer to the touch point 618, resulting in a narrowing of new region 614 from both boundaries. As both regions narrow, existing region 612 will not be permitted to reach a width less than Wmin. Instead it will narrow as far as width Wmin and any remaining accommodation will be made in the width of the new region 614, thereby allocating more of the narrowing effect to the new region 614. If the touch point 618 is so close to existing region 612 that the new drawing region 614 cannot be centered about it without violating minimum width Wmin, even after existing region 612 narrows to width Wmin, then the new drawing region 614 will be placed adjacent to existing region 612 as narrowed and will extend away from it for the distance Wmin. As in the scenario of FIG. 3, the new drawing region 614 then will not be centered about the user's touch point 618. If there is insufficient space on wall 102c for the new drawing region to extend for the distance Wmin away from existing region 612 as narrowed, then new region 614 will not be created. This limitation on wall space can arise because the touch point 618 is too near the edge of the wall opposite existing drawing region 612. It can also arise because the touch point 618 is too near another pre-existing drawing region opposite existing drawing region 612, which also cannot narrow sufficiently to accommodate the new drawing region 614.
FIG. 7 illustrates a scenario with four users at the wall 102c, each with his or her own drawing region. The maximum number of drawing regions for a given wall is equal to the integer part of Wwall/Wmin, where Wwall is the width of the wall. As regions are introduced, removed and moved around, the region boundaries automatically move in order to fill gaps smaller than Wmin as shown in FIGS. 5 and 6, and open gaps greater than Wmin (not shown) as they arise. Region boundary movement preferably is gradual rather than sudden. Regions can be closed by touching an appropriate icon on the toolbar for the region, and preferably a region will close automatically if there is no interaction within the region within a predetermined timeout period. When a region closes, its toolbar disappears and the boundaries of adjacent regions adjust if they had been narrower than Wideal.
Preferably, drawing regions automatically track the movement of the stylus. Although numerous possible tracking algorithms will be apparent to the reader, one that follows these minimum rules is preferred: (1) the region does not move so long as the stylus remains relatively near the center of the region; and (2) as the stylus approaches a region boundary, the region moves so that the boundary remains ahead of the stylus.
FIGS. 8A and 8B illustrate aspects of a preferred set of tracking algorithms. In FIG. 8A, a user 101c has activated a drawing region 810 on wall 102c. The region 810 currently has a width Wr (6′ in FIG. 8A), which is at least as large as Wmin (4′ in FIG. 8A). In the example of FIG. 8A, the Wr is also equal to Wideal. A so-called “dead zone” is defined within the region 810, which is centered within the region and has a predefined width Wdz. In the embodiment of FIG. 8A, Wdz=4′. So long as the stylus remains within the dead zone, the region 810 remains stationary. If the stylus reaches the edge of the dead zone, or if user lifts the stylus and puts it down again outside the dead zone, then as illustrated in FIG. 8B the region 810 moves in a direction away from the stylus such that the dead zone continues to contain the stylus position. In one embodiment the region movement is softened with an inertial effect, so that the stylus can actually push past the edge of the dead zone for a short time until the region movement catches up. In the embodiment of FIG. 8, in which drawing regions are always rectangular and boundaries are always vertical, the boundary always moves horizontally. More generally it can be said that the boundary moves in a direction away from the stylus, and perpendicular to the boundary being approached.
As to how close the stylus must be to a region boundary before the region boundary moves, different embodiments can implement different rules. The embodiment of FIG. 8 defines a “dead zone” defined by distance from the center of the drawing region, and any activity outside the dead zone triggers movement of the region boundary. In another embodiment, the proximity to the boundary at which boundary movement is triggered can be defined by distance from the boundary, rather than distance from the drawing region center. Many other variations will be apparent. In general, it can be said that boundary movement is triggered if the activity is located within a “predetermined” distance from the boundary. In a simplified embodiment, the predetermined distance can be set as half the width of the drawing region. In such an embodiment the drawing region will move in response to any activity not in the exact center of the drawing region, and assuming inertial effects are not used, will move so as to always maintain the stylus in the center of the drawing region.
In a different embodiment, the predetermined distance is some distance smaller than half the width of the drawing region. This enables the user to draw within some non-zero central part of the drawing region without being distracted by constant movement of the drawing region boundaries. In the embodiment of FIG. 8, the “predetermined distance from the boundary” is half the width of the drawing region less half of the dead zone width, the dead zone width remaining fixed even if the width of the drawing region varies.
Additionally, it can be seen that in the embodiment of FIG. 8, when one drawing region boundary moves due to activity tracking, the opposite boundary moves as well by the same distance (except in special circumstances involving adjacent drawing regions or wall edges). Thus the drawing region retains its width. In another embodiment, movement of a boundary due to activity tracking does not necessarily trigger movement of the opposite boundary; other rules may apply to the opposite boundary in such an embodiment. In one embodiment, only the one boundary which is being approached moves, thereby enlarging the drawing region.
In the embodiment of FIGS. 8A and 8B, the region 810 is not permitted to track to a position at which it overlaps with another region. In FIG. 9, user 101d, using drawing region 910, drags the stylus toward the right. Region 910 tracks the stylus until the region meets another drawing region 912, at which point region 910 stops moving. User 101d continues to draw toward the right, first passing the edge of the dead zone so as to continue drawing between the dead zone and the right hand boundary of region 910.
Preferably, the system prevents a continuous line from being drawn beyond a region's boundary. As illustrated in FIG. 9, if the stylus moves past the drawing region boundary it ceases to draw outside the region. If user 101d were to lift the stylus and put it down again in the next region 912, however, then as previously described, the user can continue drawing. But the line properties of region 912 will be used rather than those of region 910. In essence the user has terminated the line draw at the drawing region 910 boundary, and started a new stroke in region 912 as if he or she were user 101c. 
The region boundary behavior described above with respect to FIGS. 2-9 is effected by the computer system 110 in response to software modules stored accessibly thereto. The software modules cause the computer system 110 to operate in the manner described. The software modules also cause the computer system 110 to perform the steps indicated in FIG. 12 below as being performed by the computer system 110. While the present invention is described herein in the context of fully functioning computer systems, those of ordinary skill in the art will appreciate that the software modules used for controlling the computer systems to perform the functions said herein to be performed by computer systems, are capable of being stored or distributed in the form of a computer readable medium of instructions and data and that the invention applies equally regardless of the particular type of signal bearing media actually used to carry out the storage or distribution. As used herein, a computer readable medium is one on which information can be stored and read by a computer system. Examples include a floppy disk, a hard disk drive, a RAM, a CD, a DVD, flash memory, a USB drive, and so on. The computer readable medium may store information in coded formats that are decoded for actual use in a particular computer system. A single computer readable medium, as the term is used herein, may also include more than one physical item, such as a plurality of CD ROMs or a plurality of segments of RAM, or a combination of several different kinds of media. As used herein, the term does not include mere time varying signals in which the information is encoded in the way the signal varies over time.
FIG. 13 is a flow chart illustrating the operation of computer system 110 to effect the region boundary behavior described above with respect to FIGS. 2-9, among other things. In step 1310, the computer system 110 detects a touch on the whiteboard 102c. In step 1312 it determines whether the touch is within an existing drawing region or on the background. The system can determine this in the embodiment of FIGS. 2-9 by comparing the horizontal position of the touch point with the horizontal positions of the boundaries of all the then-existing drawing regions. If the touch point is not within an existing drawing region, then in step 1314 the computer system 110 determines whether there is sufficient space surrounding the touch point for a new drawing region. This includes determining whether a minimum width region is available, and if not then whether an adjacent pre-existing region can be narrowed without violating the minimum width rule. If sufficient space is not available, then in step 1316 the touch is ignored. If step 1314 determines that sufficient space does exist for the new drawing region, then in step 1318 the computer system 110 places the toolbar near the touch point and opens the new drawing region using the boundary positioning rules as set forth above with respect to FIGS. 2-9.
If in step 1312 the computer system 110 determines that the touch point is within a drawing region, then in step 1320 the computer system 110 determines whether the writing implement that made the touch was a stylus or one or more fingers. If it was a finger touch, then in step 1322 the computer system 110 handles the finger touch. If it was a stylus, then in step 1324 the computer system 110 handles the line drawing function as described herein, including automatically moving a drawing region boundary if necessary as described above with respect to FIG. 8.
FIG. 10 is a simplified block diagram of a computer system 110. Computer system 110 typically includes a processor subsystem 1014 which communicates with a number of peripheral devices via bus subsystem 1012. These peripheral devices may include a storage subsystem 1024, comprising a memory subsystem 1026 and a file storage subsystem 1028, user interface input devices 1022, user interface output devices 1020, and a network interface subsystem 1016. The input and output devices allow user interaction with computer system 110. Network interface subsystem 1016 provides an interface to outside networks, including an interface to communication network 104, and is coupled via communication network 104 to corresponding interface devices in other computer systems. Communication network 104 may comprise many interconnected computer systems and communication links. These communication links may be wireline links, optical links, wireless links, or any other mechanisms for communication of information, but typically it is an IP-based communication network, at least at its extremities. While in one embodiment, communication network 104 is the Internet, in other embodiments, communication network 104 may be any suitable computer network.
The physical hardware component of network interfaces are sometimes referred to as network interface cards (NICs), although they need not be in the form of cards: for instance they could be in the form of integrated circuits (ICs) and connectors fitted directly onto a motherboard, or in the form of macrocells fabricated on a single integrated circuit chip with other components of the computer system.
User interface input devices 1022 may include a keyboard, pointing devices such as a mouse, trackball, touchpad, or graphics tablet, a scanner, a touch screen incorporated into the display (including the touch sensitive portions of large format digital whiteboard 102c), audio input devices such as voice recognition systems, microphones, and other types of input devices. In general, use of the term “input device” is intended to include all possible types of devices and ways to input information into computer system 110 or onto computer network 104.
User interface output devices 1020 may include a display subsystem, a printer, a fax machine, or non-visual displays such as audio output devices. The display subsystem may include a cathode ray tube (CRT), a flat panel device such as a liquid crystal display (LCD), a projection device, or some other mechanism for creating a visible image. In the embodiment of FIG. 1B, it includes the display functions of large format digital whiteboard 102c. The display subsystem may also provide non visual display such as via audio output devices. In general, use of the term “output device” is intended to include all possible types of devices and ways to output information from computer system 110 to the user or to another machine or computer system.
Storage subsystem 1024 stores the basic programming and data constructs that provide the functionality of certain embodiments of the present invention. For example, the various modules implementing the functionality of certain embodiments of the invention may be stored in storage subsystem 1024. These software modules are generally executed by processor subsystem 1014.
Memory subsystem 1026 typically includes a number of memories including a main random access memory (RAM) 1030 for storage of instructions and data during program execution and a read only memory (ROM) 1032 in which fixed instructions are stored. File storage subsystem 1028 provides persistent storage for program and data files, and may include a hard disk drive, a floppy disk drive along with associated removable media, a CD ROM drive, an optical drive, or removable media cartridges. The databases and modules implementing the functionality of certain embodiments of the invention may have been provided on a computer readable medium such as one or more CD-ROMs, and may be stored by file storage subsystem 1028. The host memory 1026 contains, among other things, computer instructions which, when executed by the processor subsystem 1014, cause the computer system to operate or perform functions as described herein. As used herein, processes and software that are said to run in or on “the host” or “the computer”, execute on the processor subsystem 1014 in response to computer instructions and data in the host memory subsystem 1026 including any other local or remote storage for such instructions and data.
Bus subsystem 1012 provides a mechanism for letting the various components and subsystems of computer system 110 communicate with each other as intended. Although bus subsystem 1012 is shown schematically as a single bus, alternative embodiments of the bus subsystem may use multiple busses.
Computer system 110 itself can be of varying types including a personal computer, a portable computer, a workstation, a computer terminal, a network computer, a television, a mainframe, a server farm, or any other data processing system or user device. In one embodiment, computer system 110 includes several computer systems, each controlling one of the tiles that make up the large format whiteboard 102c. (See the patent applications incorporated by reference.) Due to the ever changing nature of computers and networks, the description of computer system 110 depicted in FIG. 10 is intended only as a specific example for purposes of illustrating the preferred embodiments of the present invention. Many other configurations of computer system 110 are possible having more or less components than the computer system depicted in FIG. 10. The same components and variations can also make up each of the other devices 102 in the collaboration environment of FIG. 1, as well as the collaboration server 105 and whiteboard database 106. Another embodiment of a computer system that can be used to implement collaboration server 105 is set forth in the above-incorporated PCT International Application No. PCT/US12/39176.
Certain information about the drawing regions active on the digital whiteboard 102c are stored in a database accessible to the computer system 110. The database can take on many forms in different embodiments, including but not limited to a MongoDB database, an XML database, a relational database, or an object oriented database. FIG. 11 is a schematic diagram illustrating certain information that the database contains, and certain relationships among the data.
In embodiments described herein, each drawing region is considered to be a child of a toolbar. The touching of a point on the wall background spawns a toolbar, which in turn spawns a drawing region (though the toolbar is not necessarily visible until the drawing region opens). Similarly, to close a drawing region, a user touches a ‘close’ icon on the drawing region's toolbar. Thus in FIG. 11, the database is headed by one or more toolbar ID's 1110. Each toolbar ID 1110 includes or points to a respective block 1112 of data, indicating the horizontal position of the toolbar, the horizontal position of the left edge of the toolbar's drawing region, with width of the drawing region, and a set of drawing properties for the drawing region. It will be appreciated that many variations are possible, such as specifying the right edge position of the drawing region rather than the left, and specifying the opposite edge position rather than the drawing region width. The toolbar position has only a horizontal value, because in an embodiment, it always remains at the same vertical position. In another embodiment both horizontal and vertical positions may be specified.
The drawing properties include or point to an array 114 of drawing attributes, each in association with one or more values. The drawing properties in FIG. 11 include a brush type, the value of which may for example indicate “paint”, “ink”, “crayon”, “marker” or “eraser”, each of which has a different character of appearance when drawn on the whiteboard 102c. The drawing properties in FIG. 11 also include a brush width, which can take on any value in a range of available values. The drawing properties in FIG. 11 also include a brush color, which has three associated values: red, green and blue content. As used herein, the three attributes brush type, brush width and brush color are considered to constitute “line appearance properties”. Drawing properties 114 may in various embodiments also include other attributes, such as those that affect its location of the line or the location of part of the line. These properties may include such attributes as corner-rounding radius, or Bézier curve parameters. As can be seen in FIG. 11, there is no requirement that the drawing properties (including the line appearance properties) for different drawing regions be the same. They can be established independently of each other, so there is no need that they be identical. In a typical case they will not be identical.
In order to draw a line on the whiteboard 102c, a user provides “drawing user input” which indicates the drawing of the line. While other embodiments may allow a user to draw with a finger, in the embodiment of FIG. 1, only a stylus can be used to indicate the drawing of a line. Intuitively, the user so indicates by touching the stylus to the whiteboard 102c surface, within a drawing region, and dragging the stylus along the positions desired for the line. The end of a line drawing operation is indicated by lifting the stylus from the whiteboard 102c surface. The local computer system 110 determines from the user input where the points on the line are to be positioned, and displays them on the whiteboard 102c. The computer system 110 also transmits the stroke information to the collaboration server 105 (FIG. 1B), which writes them into its whiteboard database 106 and transmits them back to the various devices 102 sharing the session. Each of the devices 102 can then display the line (so long as the line intersects the device's viewport), so all such devices 102 will show the line at roughly the same time.
FIG. 12 (consisting of FIGS. 12A, 12B, 12C and 12D) is a flow chart illustrating a typical flow in which two users 101c and 101d are working at the whiteboard 102c. For simplicity of illustration, the circumstances of FIG. 5 will be assumed. As with all flowcharts herein, it will be appreciated that many of the steps can be combined, performed in parallel or performed in a different sequence without affecting the functions achieved. In some cases, as the reader will appreciate, a re-arrangement of steps will achieve the same results only if certain other changes are made as well. In other cases, as the reader will appreciate, a re-arrangement of steps will achieve the same results only if certain conditions are satisfied. Furthermore, it will be appreciated that the flow charts herein show only steps that are pertinent to an understanding of the invention, and it will be understood that numerous additional steps for accomplishing other functions can be performed before, after and between those shown.
Initially, in step 1210, it is assumed that no drawing regions are open. In step 1212, user 101c provides “opening user input” by touching the background. In step 1214, computer system 110 establishes initial values (which may be defaults) for the attributes in block 1112 (FIG. 11) for a new drawing region 512, and in step 1216 it visibly opens the drawing region on the whiteboard 102c and displays toolbar 510. The drawing region 512 is smaller than the full area of the whiteboard 102c. The flow for user 101c continues at the designation “B” in FIG. 12B.
Either before, after or concurrently with steps 1212, 1214 and 1216, in step 1218 the second user 101d provides “opening user input” by touching the background. In step 1220 computer system 110 establishes initial values for the attributes in block 1112 for a new drawing region 514, and in step 1222 the computer system visibly opens drawing region 514 on the whiteboard 102c and shows the toolbar 520. The two drawing regions 512 and 514 are distinct from each other (they do not overlap), and their line appearance properties are independent of each other.
In addition, in step 1224, user 101d provides user input indicating a change in the line appearance properties for lines drawn in drawing region 514, such as brush type, width and color, by touching appropriate icons in toolbar 520. In step 1226 the computer system 110 establishes the new the desired values for the drawing region 514 by recording them in the block 1114 for drawing region 514. At this point the appearance properties in effect for drawing region 514 are no longer identical to those in effect for drawing region 512. The flow for user 101d continues at the designation “C” in FIG. 12C.
Up to this point, all activity is local and no drawing-related messages have been transmitted to collaboration server 105.
Referring to FIG. 12B, in step 1228 the user 101c provides user input indicating drawing of a line within drawing region 512. Whereas other embodiments may follow a different strategy, in the embodiment of FIG. 1, lines are indicated by a starting position followed by the sequence of points through which the user's stylus passes. The touching of the stylus to the whiteboard 102c surface indicates the starting point of the line. In step 1230 the computer system 110 sends a Begin Stroke message to the server 105. This message contains the (X,Y) position of the starting point of the line, as well as the line drawing properties then in effect for drawing region 512. The (X,Y) position of the stylus as detected on the whiteboard 102c is represented in a local coordinate system specific to the whiteboard, which in turn reflects only a viewport into the more universal coordinate system with which positions are represented by the collaboration server 105. Thus computer system 110 translates the position of the stylus from the local coordinate system to the universal coordinate system before transmitting any message to the server 105.
In step 1232 the user 101c drags or swipes the stylus to the next touch point, and in step 1234 the computer system 110 sends a Continue Stroke message to the server 105. The Continue Stroke message identifies the new touch point position (X,Y), as well as the line drawing properties then in effect for drawing region 512. Again, the computer system 110 translates coordinate systems before transmitting the Continue Stroke message.
In step 1236 the computer system 110 paints the stroke on the whiteboard 105c roughly or exactly from the prior stylus position to the current stylus position, using the line appearance properties then in effect for the drawing region 512. In another embodiment, the whiteboard 105c does not paint the stroke from the touch input data, but rather awaits a broadcast of the stroke information from the server and paints it in response to the broadcast stroke information.
In step 1238, the computer system 110 determines whether the current touch point is within a predetermined distance from a boundary of region 512. (Refer to the discussion accompanying FIG. 8.) If it is not, then the process loops back to step 1232 where the user 101c drags the stylus on to the next touch point. This loop repeats many times as the user touches points on the whiteboard 105c in sequence, to indicate the drawing of a line. As the user does so, the system 110 displays the line on the whiteboard 105c with the appearance properties then in effect for the drawing region 512.
If in step 1238 it is determined that the current touch point is within the predetermined distance from a boundary of region 512, then as described above with respect to FIG. 8, the computer system 110 moves the near boundary in a direction away from the current touch point (step 1240). It also moves the opposite boundary of region 512 in the same direction, such that the width of region 512 remains constant. The process then returns to step 1232 to continue the line drawing loop.
At some point the user lifts the stylus to indicate termination of the line (step 1242). In response to this user behavior, in step 1244 the computer system 110 transmits an End Stroke message to the server 110. After a short delay, as described below, the computer system 110 may also at this time move the toolbar 510 closer to the endpoint of the line (step 1246).
The user 101d's process after step 1226 (FIG. 12A) is similar to that of user 101c's process just described. Referring to FIG. 12C, in step 1248 the user 101c provides user input indicating drawing of a line within drawing region 514. The touching of the stylus to the whiteboard 102c surface indicates the starting point of the line. In step 1250 the computer system 110 sends a Begin Stroke message to the server 105, containing the (X,Y) position of the starting point of the line in universal coordinates, as well as the line drawing properties then in effect for drawing region 512. In step 1252 the user 101c drags the stylus to the next touch point, and in step 1254 the computer system 110 sends a Continue Stroke message to the server 105. The Continue Stroke message identifies the new touch point position (X,Y), as well as the line drawing properties then in effect for drawing region 514.
In step 1256 the computer system 110 paints the stroke on the whiteboard 105c roughly or exactly from the prior stylus position to the current stylus position, using the line appearance properties then in effect for the drawing region 514, which as mentioned, are different from those then in effect for drawing region 512. The process then loops back to step 1252 where the user 101d drags the stylus on to the next touch point. This loop repeats many times as the user touches points on the whiteboard 105c in sequence, to indicate the drawing of a line. As the user does so, the system 110 displays the line on the whiteboard 105c with the appearance properties then in effect for the drawing region 514.
At some point the user 101d lifts the stylus to indicate termination of the line (step 1262). In response to this user behavior, in step 1264 the computer system 110 transmits an End Stroke message to the server 110. After a short delay, as described below, the computer system 110 may also at this time move the toolbar 520 closer to the endpoint of the line (step 1266).
FIG. 12D illustrates the process that takes place in collaboration server 105 upon receipt of the Begin Stroke, Continue Stroke, and End Stroke messages. In step 1270, the server receives the message. In step 1272, it records the content of the message in the whiteboard database 106. In step 1274, the server broadcasts the message to all devices 102 that are sharing the session with whiteboard 102c. The broadcast message includes a position in universal coordinates, as well as the line appearance properties that it received in step 1270. Whiteboard 102c ignores the broadcast message, since it has already painted the appropriate points on its local display as described with respect to steps 1236 and 1256. But in step 1276, all of the other devices 102 that receive the broadcast message determine whether the indicated point is within the viewport of the local device, and if so they convert the point to the local device coordinate system and display it on the local display using the received line appearance properties. Those of the other devices which are small, such as PC's and tablets, might have only a single drawing region. An independent set of appearance properties are associated with such drawing regions, but they are ignored when painting the line as received in the broadcast messages from step 1274. The collaboration environment of FIG. 1 also supports additional large format whiteboards which can have their own multiple drawing regions defined as does whiteboard 102c, but again, the local drawing regions and the line appearance properties then in effect for such drawing regions are ignored when painting the line as received in the broadcast messages from step 1274. The drawing region boundaries on these other whiteboards are ignored as well, and the line being painted can even traverse multiple drawing regions.
If a user of one of the other devices 102 begins drawing on the local device, the same sequence of messages are sent to the server and rebroadcast to all the other devices (including whiteboard 102c) as described above with respect to FIG. 12. These lines, however, are drawn using the line appearance properties then in effect in the drawing region on which the user is swiping the stylus. Thus, for example, two different users may be operating two different devices 102. The first user may have set the line color for his or her drawing region to red, whereas the second user may have set the line color for his or her drawing region to blue. The lines drawn by the first user will then be displayed in red on both devices, and the lines drawn by the second user will then be displayed in blue on both devices. Both lines can appear simultaneously on both devices, and for example they can even intersect each other.
Toolbar Behavior
As mentioned, in the embodiment of FIG. 1, each drawing region has an associated toolbar. The toolbar controls a variety of functions in various embodiments, but at a minimum it provides a way for a user to set one or more line appearance properties for the drawing region. Toolbars in the embodiment of FIG. 1 are local features; they are spawned, moved and closed entirely by the computer system 110, and neither their presence nor their motion is sent to the collaboration server 105. In other embodiments the collaboration server 105 can be involved in various aspects of the toolbar.
In the embodiment of FIG. 1, the computer system 110 positions the toolbar close enough to the user's activity, but does so with minimum distraction. In particular, if the user's activity (such as drawing a line) has not moved too far away from the current toolbar position, then the toolbar remains where it is. Only when the user's activity has become farther than a predetermined distance from the toolbar, will the system 110 move the toolbar closer. In addition, distraction is minimized also by always keeping the toolbar at a constant vertical position, and always moving the toolbar horizontally. Distance in this embodiment is measured horizontally only.
Thus in the embodiment of FIG. 1, when the user first touches a position on the whiteboard 102c to open a drawing window, the computer system 110 first displays the toolbar at a position which depends on the first touch position. Specifically, it is displayed at the predetermined vertical position, and at a horizontal position that is close to the first touch position, but not so close that it overlaps the first touch position. In an embodiment, the toolbar always appears directly above the touch position.
As the user draws on the whiteboard, the computer system 110 determines the position of the user's activity. The distance (in the horizontal dimension) between the user's activity and the current toolbar position is then compared to a predefined maximum toolbar distance. If the position of the user's activity remains closer to the current toolbar position than the predetermined distance, then the toolbar does not move. Only if the position of the user's activity becomes more than the predetermined distance from the current toolbar position, does the computer system 110 move the toolbar to a new toolbar position which is closer to the user's most recent activity (though again, not so close that it overlaps the user's most recent activity).
Preferably the computer system 110 does not move the toolbar during the process of a line draw, but rather waits until the stylus is lifted from the whiteboard surface. In an embodiment, the system waits for a further few seconds of inactivity time in order to ensure the user is truly finished. If the distance at that time exceeds the predetermined distance then the toolbar is moved.
In another embodiment, the distance measured against the predetermined maximum toolbar distance is the Euclidean distance, rather than solely the horizontal distance. Such an embodiment might be most useful where the toolbar is allowed to move vertically as well as horizontally.
As used herein, the “identification” of an item of information does not necessarily require the direct specification of that item of information. Information can be “identified” in a field by simply referring to the actual information through one or more layers of indirection, or by identifying one or more items of different information which are together sufficient to determine the actual item of information. In addition, the term “indicate” is used herein to mean the same as “identify”.
Also as used herein, a given signal, event or value is “responsive” to a predecessor signal, event or value if the predecessor signal, event or value influenced the given signal, event or value. If there is an intervening processing element, step or time period, the given signal, event or value can still be “responsive” to the predecessor signal, event or value. If the intervening processing element or step combines more than one signal, event or value, the signal output of the processing element or step is considered “responsive” to each of the signal, event or value inputs. If the given signal, event or value is the same as the predecessor signal, event or value, this is merely a degenerate case in which the given signal, event or value is still considered to be “responsive” to the predecessor signal, event or value. “Dependency” of a given signal, event or value upon another signal, event or value is defined similarly.
The applicant hereby discloses in isolation each individual feature described herein and any combination of two or more such features, to the extent that such features or combinations are capable of being carried out based on the present specification as a whole in light of the common general knowledge of a person skilled in the art, irrespective of whether such features or combinations of features solve any problems disclosed herein, and without limitation to the scope of the claims. The applicant indicates that aspects of the present invention may consist of any such feature or combination of features. In view of the foregoing description it will be evident to a person skilled in the art that various modifications may be made within the scope of the invention.
The foregoing description of preferred embodiments of the present invention has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Obviously, many modifications and variations will be apparent to practitioners skilled in this art. For example, though the whiteboards described herein are of large format, small format whiteboards can also be arranged to use multiple drawing regions, though multiple drawing regions are more useful for whiteboards that are at least as large as 12′ in width. In particular, and without limitation, any and all variations described, suggested by the Background section of this patent application or by the material incorporated by references are specifically incorporated by reference into the description herein of embodiments of the invention. In addition, any and all variations described, suggested or incorporated by reference herein with respect to any one embodiment are also to be considered taught with respect to all other embodiments. The embodiments described herein were chosen and described in order to best explain the principles of the invention and its practical application, thereby enabling others skilled in the art to understand the invention for various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims and their equivalents.

## Claims

1. A method for positioning a toolbar on a touch sensitive display surface, comprising the steps of:
in response to first user input at a first touch position on the display, displaying the toolbar at a first toolbar position which depends on, but does not overlap with, the first touch position; and
after displaying the tool bar at the first toolbar position, and in response to second user input that includes a sequence of touchpoints to draw a line, the sequence of touchpoints including a touchpoint at a second touch position:
painting the line on the display at the location of the sequence of touchpoints;
determining whether the second touch position is less than a predetermined distance horizontally from the first toolbar position;
if the second touch position is determined to be less than a predetermined distance horizontally from the first toolbar position, leaving the toolbar at the first toolbar position; and
if the second touch position is determined to be greater than the predetermined distance horizontally from the first toolbar position, moving the toolbar to a second toolbar position which is closer to the second touch position.

2. The method of claim 1, wherein the second toolbar position is such that the toolbar does not overlap the second touch position.

3. The method of claim 1, wherein the first and second touch positions have different vertical positions,
but wherein the first and second toolbar positions have equal vertical positions and the step of moving the toolbar to a second toolbar position which is closer to the second touch position moves the toolbar only horizontally.

4. The method of claim 1, for use in drawing a line, wherein:
the first user input includes the user touching a writing implement to the display to indicate a begin of the line; and
the second user input includes the user lifting the writing implement from the display to indicate an end of the line.

5. The method of claim 4, wherein the second touch position is determined to be greater than the predetermined distance horizontally from the first toolbar position,
further comprising a step of inserting a time delay between detection of the second user input and the step of moving the toolbar.

6. A system for positioning a toolbar on a touch sensitive display surface, comprising:
a memory; and
a data processor coupled to the memory, the data processor configured to:
in response to first user input at a first touch position on the display, display the toolbar at a first toolbar position which depends on, but does not overlap with, the first touch position; and
after the tool bar is displayed at the first toolbar position, and in response to second user input that includes a sequence of touchpoints to draw a line, the sequence of touchpoints including a touchpoint at a second touch position:
paint the line on the display at the location of the sequence of touchpoints;
determine whether the second touch position is less than a predetermined distance horizontally from the first toolbar position;
if the second touch position is determined to be less than a predetermined distance horizontally from the first toolbar position, leave the toolbar at the first toolbar position; and
if the second touch position is determined to be greater than the predetermined distance horizontally from the first toolbar position, move the toolbar to a second toolbar position which is closer to the second touch position.

7. The system of claim 6, wherein the second toolbar position is such that the toolbar does not overlap the second touch position.

8. The system of claim 6, wherein the first and second touch positions have different vertical positions,
but wherein the first and second toolbar positions have equal vertical positions and the moving the toolbar to a second toolbar position which is closer to the second touch position moves the toolbar only horizontally.

9. The system of claim 6, for use in drawing a line, wherein:
the first user input includes the user touching a writing implement to the display to indicate a begin of the line; and
the second user input includes the user lifting the writing implement from the display to indicate an end of the line.

10. The system of claim 6, wherein the second touch position is determined to be greater than the predetermined distance horizontally from the first toolbar position,
and wherein the data processor is further configured to insert a time delay between detection of the second user input and moving the toolbar.