Language selection

Search

Patent 2219886 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent Application: (11) CA 2219886
(54) English Title: METHOD AND SYSTEM FOR INTERFACING APPLICATIONS SOFTWARE WITH ELECTRONIC WRITEBOARD
(54) French Title: METHODE ET SYSTEME D'INTERFACAGE D'UN LOGICIEL D'APPLICATION AVEC UN TABLEAU D'ECRITURE ELECTRONIQUE
Status: Dead
Bibliographic Data
(51) International Patent Classification (IPC):
  • G06F 3/048 (2013.01)
  • G06F 9/44 (2006.01)
(72) Inventors :
  • FUKUSHIMA, TOM H. (Canada)
(73) Owners :
  • SMART TECHNOLOGIES INC. (Canada)
(71) Applicants :
  • SMART TECHNOLOGIES INC. (Canada)
(74) Agent: SIM & MCBURNEY
(74) Associate agent:
(45) Issued:
(22) Filed Date: 1997-10-31
(41) Open to Public Inspection: 1999-04-30
Examination requested: 2002-03-27
Availability of licence: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): No

(30) Application Priority Data: None

Abstracts

English Abstract



An interactive display system includes an electronic writeboard having
a touch sensitive panel and a tool tray accommodating at least one tool selectable to
apply pressure to the touch sensitive panel. Controller means is responsive to the
touch sensitive panel and tool tray and generates events. A computer is connected to
the electronic writeboard and executes applications software. An interface acts
between the controller means and the applications software and translates eventsgenerated by the electronic writeboard into messages processable by the applications
software.


French Abstract

L'invention est un système d'affichage interactif comportant un tableau d'écriture électronique à panneau tactile et un plateau à outils portant un outil au moins servant à appliquer une pression à ce panneau tactile. Un contrôleur réagit aux signaux transmis par le panneau tactile et le plateau à outils et produit des événements. Un ordinateur est connecté au tableau d'écriture électronique et exécute un logiciel d'application. Une interface installée entre le contrôleur et le logiciel d'application traduit les événements produits par le tableau d'écriture électronique en messages qui peuvent être traités par le logiciel d'application.

Claims

Note: Claims are shown in the official language in which they were submitted.



-21-
We Claim:
1. A method of interfacing applications software with an electronic
writeboard comprising the steps of:
maintaining a table of electronic writeboard events and associated
applications software messages representing commands to be processed by said
applications software in response to electronic writeboard events;
monitoring events generated by said electronic writeboard;
comparing each event generated by said electronic writeboard with
electronic writeboard events in said table to determine if said generated event is in
said table; and
transmitting the associated applications software message to said
applications software for processing when said generated event is in said table.

2. The method of claim 1 wherein generated events not found in said
table are ignored.

3. The method of claim 1 wherein for at least one of said events, said
command is sent to said applications software using a PostMessage API call directly
to said applications software.

4. The method of claim 1 wherein for at least one of said events, said set
of commands represents mouse actions.

5. The method of claim 4 wherein said set of commands representing
mouse actions includes point parameters set generally to the center of the control
being selected and includes a handle identifying a window to receive the set of
commands.


-22-
6. The method of claim 1 wherein mouse events generating by said
electronic writeboard are sent directly to said applications software and stored in an
applications queue therein.

7. An interface for interfacing applications software with an electronicwriteboard comprising:
a table storing a list of electronic writeboard events and associated
applications software messages;
means to monitor events generated by said electronic writeboard;
means to compare each event generated by said electronic writeboard
with said list to determine if said generated event is in said table; and
means to transmit the associated applications software message to said
applications software for processing when said generated event is in said table.

8. An interactive display system comprising:
an electronic writeboard including a touch sensitive panel, a tool tray
accommodating at least one tool selectable to apply pressure to said touch sensitive
panel and controller means responsive to said touch sensitive panel and tool tray and
generating events;
a computer connected to said electronic writeboard and executing
applications software; and
an interface acting between said controller means and said applications
software and translating events generated by said electronic writeboard into messages
processable by said applications software.

Description

Note: Descriptions are shown in the official language in which they were submitted.


CA 02219886 1997-10-31


METHOD AND SYSTEM FOR INTERFACING APPLICATIONS
SOFTWARE WITH ELECTRONIC WRITEBOARD
Field Of The Invention
The present invention relates to electronic writeboards and in particular
to a method and system for interfacing applications software executed by a host
computer with an electronic writeboard.




B~k~round Of The Invention
Electronic writeboards (EWBs) are known in the art and have been
used in conjunction with host col~ ul~l~ executing applications software to provide
enhanced multimedia and teleconferencing capabilities. An example of an electronic
10 writeboard of this nature is sold by Smart Technologies Inc. of Calgary, Alberta,
Canada under the name Smart Board. This electronic writeboard includes a touch
sensitive panel and a tool tray accommodating a plurality of tools such as coloured
pens and an eraser as well as an associated controller and driver. A software
development kit (SDK) including source code and supporting documentation is
15 provided with the electronic writeboard to allow a user to write client applications to
enhance the functionality of the electronic writeboard.
In use, the electronic writeboard is connected to a host computer, such
as a personal computer (PC), operating in a Windows ellvilonll~ent and executingapplications software, via a standard serial cable. The electronic writeboard can be
20 operated in one of two modes, namely a projection mode and a non-projection mode.
In the projection mode, the image on the screen of the personal
computer is projected onto the touch sensitive panel. In this case, the electronic
writeboard functions as a giant mouse providing input to the personal colll~ul~l in
response to user input made by touching the touch sensitive panel. The applications
25 software in the personal computer performs operations in accordance with the input
received from the electronic writeboard. Thus, by pressing on the touch sensitive
panel, the personal computer can be conditioned to open and display menus, to
activate displayed menus, to drag icons and to execute software.
In the non-projection mode, no image is projected onto the touch
30 sensitive panel. Tn.~te~-l, a dry erase marker is used to write on the touch sensitive

CA 02219886 1997-10-31



panel. The applications software in the personal computer tracks where writing on the
touch sensitive panel has occurred and m~int~in~ a comput~ri7e~ image of the touch
sensitive panel. This allows meeting notes to be saved and/or printed.
When the electronic writeboard and the personal computer are
S connected and initi~ efl the electronic writeboard driver registers with the
applications software executed by the personal computer. During the registrationprocess, the driver determines the messages to which the applications software
responds. Once the registration process has been completed, all events generated by
the electronic writeboard are sent directly to the applications software.
In order for the applications software to register with the electronic
writeboard, it must be "aware". When the applications software is aware, it uses the
SDK source code and has part of the SDK, namely a CSMARTBoardHandler class,
embedded therein so that when an event is received from the driver, the applications
software calls a "hook". In this manner for example, when a tool is removed from the
15 tool tray and used to write on the touch sensitive panel, the writing results in native
pen stroke annotations being generated by the applications software.
In many cases however, third party applications software is not
"aware" of the electronic writeboard due to the reluctance of third parties to embed
parts of the SDK source code into their software. This is due to the fact that it may
20 introduce bugs into their applications software and requires extra resources to
implement and test their modified applications software. As a result, if a toolis lifted
from the tool tray, the applications software will not get an event. Also, if the tool is
used to write on the touch sensitive panel, the electronic writeboard driver creates
temporary annotations instead of native pen stroke annotations being generated by the
25 applications software. Accordingly, means to make applications software not
specifically written for an electronic writeboard, "aware" of the electronic writeboard
is desired.
It is therefore an object of the present invention to provide a novel
system and method for interfacing applications software executed by a computer with
30 an electronic writeboard.

CA 02219886 1997-10-31




Summary Of The Invention
According to one aspect of the present invention there is provided a
method of interfacing applications software with an electronic writeboard comprising
the steps of:
m~ g a table of electronic writeboard events and associated
applications software messages representing operations to be performed by said
applications software in response to electronic writeboard events;
monitoring events generated by said electronic writeboard;
co~ g each event generated by said electronic writeboard with
electronic writeboard events in said table to det~rmine if said generated event is in
said table; and
lllillillg the associated applications software message to said
applications software for processing when said generated event is in said table.According to another aspect of the present invention there is provided
an interface for interfacing applications software with an electronic writeboardcomprising:
a table storing a list of electronic writeboard events and associated
applications software messages;
means to monitor events generated by said electronic writeboard;
means to compare each event generated by said electronic writeboard
with said list to determine if said generated event is in said table; and
means to lld,lslllil the associated applications software message to said
applications software for processing when said generated event is in said table.According to still yet another aspect of the present invention there is
provided an interactive display system comprising:
an electronic writeboard including a touch sellsiliv~ panel, a tool tray
accommodating at least one tool selectable to apply p~es~u~e to said touch sensitive
panel and controller means responsive to said touch sensitive panel and tool tray and
30 generating events;

CA 02219886 1997-10-31



a computer connected to said electronic writeboard and executing
applications software; and
an interface acting between said controller means and said applications
software and tr~n~l~ting events generated by said electronic writeboard into messages
5 processable by said applications software.
The present invention provides advantages in that third party
applications software can be made "aware" of the electronic writeboard while only
requiring minim~l involvement of the third party. In addition, when an electronic
writeboard tool is selected, the interface software automatically selects a
10 corresponding tool, if one exists, in the applications software making the interface
very natural and virtually seamless. Also, the interface software results in smoother
and more legible figures and characters being projected onto the touch sensitive panel
when the electronic writeboard is operating in a projection mode in response to
p~ Ule applied to the touch sensitive panel using a tool, as compared to characters
15 and figures drawn using a mouse-based input device. Furthermore, the interface
software ensures annotations generated by the electronic writeboard driver as a result
of pressure applied to the touch sensitive panel using a tool are native to the
applications software.

Brief Description Of The D.. i~s
An embodiment of the present invention will now be described more
fully with reference to the acco~ )a~lying drawings in which:
Figure 1 is schematic view of an interactive display system;
Figure 2 is a functional block diagram of Aware interface software in
25 accordance with the present invention used in the system of Figure l;
Figure 3 is a flowchart illustrating the registration process between the
interface software of the present invention and a driver in an electronic writeboard;
Figure 4 is a flowchart illustrating the loop process performed by the
interface software in order to handle electronic writeboard events;

CA 02219886 1997-10-31



Figure S is table showing a list of electronic writeboard events and
associated EWB applications software comm~n-l~ generated by the interface software
for a personal co~ ulel executing Microsoft NetMeeting Whiteboard;
Figure 6 is a flowchart illustrating the messages generated by the
5 interface software and conveyed to the personal computer in response to a specific
electronic writeboard event; and
Figure 7 is a flowch~l illustrating the steps performed by the interface
software in response to electronic writeboard contact events when the electronicwriteboard is operated in a non-projection mode.
Detailed De~ ,lion Of The Preferred Embodiment
Referring now to Figure 1, an interactive display system is shown and
is generally indicated to by reference numeral 10. As can be seen, interactive display
system 10 includes an electronic writeboard 12 (EWB) of the type manufactured by15 Smart Technologies Inc. under model No. SB360 and sold under the name Smart
Board. The Smart Board 12 includes a touch sensilive panel 14 and a tool tray 16accommodating a plurality of tools 18 and having at least one user selectable button
19. The tools 18 include a number of coloured pens and an eraser. A controller 28
having memory is installed in a slot of a personal computer 26 executing application
20 software. The controller 28 executes a controller application to control the overall
operation of the Smart Board 12. A driver in the form of an application is executed by
the personal computer 26 and tr~n.~l~tes serial data from the controller 28 into events
such as mouse events, tool change events and button press events. A software
development kit (SDK) including source code and ~ul)pol ling documentation is
25 provided with the Smart Board to allow a user to write client applications to enhance
the functionality of the Smart Board 12. The SDK includes C++ source code for a
CSMARTBoardHandler allowing Smart Board default behaviors to be overridden by
writing client applications deriving classes from the CSMARTBoardHandler.
Appendix A illustrates methods of the CSMARTBoardHandler.

CA 02219886 1997-10-31



The Smart Board 12 can operate either in a projection mode or in a
non-projection mode. As mentioned previously, in the projection mode, images
generated by the personal computer 26 are projected onto the touch sensitive panel 14
and the Smart Board 12 functions as a giant mouse. In the non-projection mode, no
images are projected onto the touch sensitive panel 14. The touch sensitive panel is
however mapped onto the drawing area of the applications software so that notes
written on the touch sensitive panel 14 are stored by the personal co~ ulel 26.
The personal computer 26 operates in a Windows environment and in
this particular embodiment, executes Microsoft NetMeeting Whiteboard applications
10 software sold by Microsoft Corporation of Redmond, Washington. The Microsoft
NetMeeting Whiteboard (MNW) applications software is "unaware" of the Smart
Board 12. To make the MNW applications software "aware" of the Smart Board,
Aware interface software is also executed by the personal computer 26. The Awareinterface software tran~l~tes events generated by the Smart Board driver into
15 comm~ntl~ that can be understood and processed by the MNW applications software.
Further details of the Aware interface software and the Smart Board SDK will now be
described
The SDK includes source code that compiles under Visual C++ or
Borland C~ and as mentioned above allows a user to write client applications. The
20 controller application executed by the controller 28 has a well-defined external
interface of which the client applications take advantage. The SDK wraps the
controller interface in a C++ class thereby allowing a user to take advantage of the
features of the Smart Board in an easy and natural way. The Smart Board driver uses
the SDK to col"",ù~ficate with the Aware interface software.
When the Smart Board 12 is operating in the projection mode, the
Smart Board driver generates events falling generally into three categories, namely
button events, tool tray events, and contact events. Button events occur when one of
the buttons 19 on the tool tray 16 is pressed. The controller application allows the
user to select from a series of behaviors for this button. In the controller application,
30 each button 19 is mapped to a specific behavior. When a button 19 is pressed, the

CA 02219886 1997-10-31



SDK finds the specific behavior mapped to that button and calls a virtual handler for
that behavior. Overriding the virtual handler via a client application gives a user the
ability to alter the behavior for that button event.
Tool tray events occur when a pen or eraser is lifted from the tool tray
16. These events reflect the fact that a tool 18 has been selected. Subsequent contacts
on the touch sensitive panel 14 are therefore interpreted as drawing events with that
particular tool. The pens are configured through the controller application allowing
the size and colour for a particular pen to be selected as desired.
Contact events are generated if highly precise writing is required.
10 Because the Smart Board 12 functions as a mouse in the projection mode,
intermediate move events may be lost if the interactive display system 10 is really
busy. This is due to the fact that Windows only keeps one move event in the system
queue, replacing it with an updated move event if the move event is not processed
quickly enough. The result can be very choppy writing displayed on the screen of the
15 personal computer 26 and projected onto the touch sensitive panel 14. By requesting
contact events to be generated via a client application, a parallel mechanism of contact
down, move, and contact up events is created. The pattern of contact events is almost
exactly the same as it is for drawing events, except that WPARAM contains some
additional information about the tool being used.
These contact events are posted to the MNW applications software
queue and therefore, they are not discarded when new contact events are posted to the
queue, allowing all of the points in a stroke to be m~int~ined. However, doing this
increases the processing drain on the MNW applications software and therefore, the
easiest way to handle these contact events is to simply register the event Ids to be
25 WM_LBUTTONDOWN, WM_MOUSEMOVE, and WM_LBUTTONUP. These
pseudo mouse events can be handled by the MNW applications software without
writing any extra code.
Because these contact events are not mouse events, the window in
which the contact events are to be received must be specified. Contact events outside
30 of the specified window are treated like mouse events, whereas contact events inside

CA 02219886 1997-10-31



the window are treated as described above. This allows floating tool bars and palettes
to be used, even when the surrounding surface captures mouse events.
Referring now to Figure 2, the functional blocks of the Aware interface
software are shown. As can be seen, the Aware interface software includes an
5 initialization routine 50, a projection mode event h~n-lling routine 52, a non-
projection event h~n~lling routine 54 and a mapping table 56 accessed by the
projection mode event h~n~lling routine 52 and the non-projection mode event
h~n~lling routine 54. The initi~ tion routine 50 registers the MNW applications
software with the Smart Board driver and termin~tes the registration when the MNW
10 applications software has been termin~te~l The projection mode event handlingroutine 52 tr~n~l~tes Smart Board generated events to comm~n~l~ processable by the
MNW applications software to effect the desired operation of the MNW applications
software. The non-projection event h~n~lling routine 54 maps contact events
generated by the Smart Board driver onto the drawing area of the MNW applications
1 5 software.
The mapping table 56 (shown in Figure 5) includes a list of possible
events that can be generated by the Smart Board driver and the corresponding effects
the generated events are to have on the MNW applications software. The possible
events are enumerated in the SDK documentation. Examples of such possible events20 are OnNewTool, OnPrint, On NextPage etc. Associated with each corresponding
effect is a command or set of comm~n~ which cause the colles~onding effect to take
place in the MNW applications software. The command or set of commands is sent
by the Aware interface software to the personal computer 26 in response to the
associated event received from the Smart Board driver to effect the MNW
25 applications software operation. Where possible, the Aware interface softwaresimulates the command by sending the command (ie. WM_COMMAND message) to
the MNW applications software using a PostMessage API call directly to the MNW
applications software. The comm~n~ls are obtained from the applications softwarevendor or using a tool, such as for example Microsoft Spy~.

CA 02219886 1997-10-31



The mapping between the possible events and the corresponding
effects the generated events are to have on the MNW applications software can beselected to suit desired needs. Therefore, the mapping does not need to be exact nor
does the mapping need to reflect what is actually happening on the Smart Board 12.
5 Also, generated events can be ignored by omitting them from the mapping table 56.
In some instances however, an MNW applications software comm~ncl
is not available and so the operation must be effected through a series of mouseactions. If the operations to be performed by the MNW applications software require
the generation of messages having point parameters that are important, the values
10 assigned to the point parameters are set to the center of the control being "clicked". In
this case, the messages will also require a handle to a window identifying the window
getting the event. The Windows API call to find the handle of the correct Window is
"FindWindow".
The operation of the Aware interface software will now be described
15 with particular reference to Figures 3 to 7.

Initi~ tion Routine
When the MNW applications software is executed by the personal
computer 26, since the MNW applications software does not use the SDK of the
20 Smart Board 12, no CSMARTBoardHandler object is created. The Aware interface
software when started (block 100 in Figure 3), enters its initialization routine 50. In
the initialization routine, the Aware interface software checks to see if a
CSMARTBoardHandler object is created for the NW applications software and if notcreates one (block 102). This is achieved by initiating a timer and polling the
25 windows in the operating software of the personal computer every 1 OOOms using an
EnumWindows API call. The Aware interface software then checks the list of
windows to detect if a recognized application that has not been registered, is found. If
this occurs, the Aware interface software creates a CSMARTBoardHandler object for
the MNW applications software and the window is registered (block 104).

CA 02219886 1997-10-31


-10-

Once the CSMARTBoardHandler object is created by the Aware
interface software, the Aware interface software uses the CSMARTBoardHandler
object to register the MNW applications software with the Smart Board driver for one
or both of the projection mode and non-projection mode depending on the call made
5 by the MNW applications software. The registration process is performed using the
CSMARTBoardHandler::RegisterRawContactWindow method. In particular, a
CSMARTBoardHandler class (or some class derived from the
CSMARTBoardHandler) is created in the Aware interface software and the
RegisterRawContactWindow method is used to register the MNW applications
10 software with the Smart Board driver.
The projection mode method call is as follows:
RegisterRawContactWindow(canvasHWND, ..., ..., ..., ...). The canvasHWND is the
handle of the MNW applications software window that displays the pen strokes andother graphics. Once this method call is made, the Smart Board driver sends mouse
events (i.e., WM_LBUTTONDOWN, WM_LBUTTON UP, and
WM_MOUSEMOVE) to the Aware interface software which in turn passes the mouse
events unchanged directly to the MNW applications software window specified by
canvasHWND using a PostMessage API call, instead of through the system queue
using a mouse_event API call.
During registration of the MNW application software to the Smart
Board driver in the non-projection mode, the Aware interface software calls a non-
projection mode constructor with al,propliate parameters from the SDK. When the
Smart Board 12 is opelaling in the non-projection mode, Smart Board events are not
sent as mouse events. Since there is no projector, driving applications softwarewithout visual feedback is difficult.
The Aware interface software also checks the list of windows using the
EnumWindows API call to detect if an application has been t~nnin~te.l If an
application that is currently registered with the Smart Board driver is no longer in the
list of windows, it is deregistered from the Smart Board driver using the

CA 02219886 1997-10-31



DeregisterRawContactWindow method of the CSMARTBoardHandler and the
corresponding CSMARTBoardHandler object is destroyed.

Projection Mode Event Handlin~ Routine
After the registration has been completed, the Aware interface software
is ready to handle events generated by the Smart Board driver (block 120 in Figure 4).
If the Smart Board 12 is operating in the projection mode and an event is generated by
the Smart Board driver (block 122), the CSMARTBoardHandler class is subclassed
by the Aware interface software and the method corresponding to the event in the10 CSMARTBoardHandler is overridden. For example, if a new tool event is generated
by the Smart Board driver due to the fact that a pen has been removed from the tool
tray 16, the OnNewTool method in the CSMARTBoardHandler is overridden by the
Aware interface software. Since the Aware interface software handles all Smart
Board events it creates an instance of a subclass of the CSMARTBoardHandler where
15 all hook methods have been overridden.
If the generated event is in the mapping table 56, the Aware interface
software handles the event (block 124) by passing the command or set of comm~n(ls
associated with that event to the MNW applications software to effect the desired
operation of the MNW applications software. Thus, if a tool is lifted from the tool
20 tray 16, the Aware interface software sends a command to the MNW applicationssoftware to select a pen tool of a certain color and width. If a button has to be pressed
in order for the MNW applications software to select the pen tool, a
WM_LBUTTONDOWN and WM_LBUTTONUP message sequence is sent to the
MNW applications software, setting point parameters, if important, and identifying
25 the window getting the event.
For example, if a red pen tool of width five is selected from the tool
tray 16 ofthe Smart Board 12, the Aware interface software first gets a call to the
hook method OnNewTool (block 200 in Figure 5). The Aware interface software thenqueries the Smart Board object to find out that it is a red pen of width five. The
30 Aware interface software then compares the event with the mapping table 56 to

CA 02219886 1997-10-31


-12-

determine what comm~n-l~ need to be sent to the MNW applications software in order
for the MNW applications software to select a red pen of width 5. In order for the red
pen of width 5 to be selected by the MNW applications so~vare, the Aware interface
software performs the following actions. Firstly, the Aware interface software sends a
S WM_CO~fAND message with argument 0x3102 to the MNW applications
software application window (block 202). A WM_COMMAND message with
argument 0x3401 is then sent to the MNW applications software application windowto select the pen line thickness most closely corresponding to a pen width of 5 (block
204). Following this, the Aware interface software sends mouse down and mouse upmessages to the color palette window (class name has prefix: Afx:40000:3: title
unimportant) at position (71,24) which is about the center of the red blotch in the
color palette (blocks 206 and 208).
Mouse events generated by the Smart Board driver that are received by
the Aware interface software are sent directly to the MNW applications software,15 bypassing the system event queue. Also, the registered application window(s) of the
MNW applications software will receive contact events as mouse events directly from
the Aware interface software, instead of through the system queue.
The reason for bypassing the system event queue is that the system
event queue for WM_MOUSEMOVE events only holds one WM MOUSEMOVE
20 event at a time and may discard some of WM_MOUSEMOVE events if the MNW
applications software takes too long to process them. This may result in some lost
points. In this case, writing displayed on the touch sensitive panel 14 will notaccurately reflect the pen strokes. By sending the WM MOUSEMOVE events
directly to the MNW applications software message queue using the PostMessage API
25 call, the WM_MOUSEMOVE messages are not lost, unless the message queue
overflows, and therefore the set of points will accurately reflect the pen stroke.

Non-Projection Event Handlinp Routine
In non-projection mode, pen strokes made on the touch sensitive panel
30 14 of the Smart Board 12 must be scaled to fit into the drawing area of the MNW

CA 02219886 1997-10-31


-13-

applications software. A method call to the RegisterRawContactWindow method of
the CSMARTBoardHandler registers the Aware interface software to handle the
contact events generated by the Smart Board driver. The method is as follows:
RegisterRawContactWindow(..., WM_USER+l, WM_USER+2, WM_USER+3,
AwareWindowHWND). The second to fourth parameters specify when contact, move
and release events occur, respectively. The final parameter of the method call
specifies which window of the Aware interface software will receive these contact
events.
When a contact event occurs, the Smart Board driver sends the event to
the Aware interface software (block 300). Since all of the contact event points are in a
space of approximately 4000 by 4000, the contact event points are tr~n~l~ted to the
current resolution of the drawing area of the MNW applications software by the
Aware interface software (block 302) before the contact event points are sent to the
MNW applications software (block 304).
For example, if the Aware interface software receives a WM_USER+2
message from the Smart Board driver with position argument (2000,2000), a
WM_MOUSEMOVE message with position argument (200,100) is sent to the MNW
applications software by the Aware interface software a~ g the drawing area of
the MNW applications software has a 400 by 200 dimension.
In the non-projection mode, it is desired that the pen strokes appearing
in the MNW applications software closely reflect the pen strokes made on the touch
sensitive panel 14 of the Smart Board 12. The eraser tool tends to cause problems due
to the fact that MNW applications software includes an object eraser which causes
entire objects to be deleted if touched with the object eraser. However, with a real
eraser, only the part of the object that is actually touched by the eraser is erased.
To ~imul~te this, the Aware interface software in response to eraser
contact events sends messages to the MNW applications software to draw a thick
white line. Thus, the part of the object that is being overwritten with the white line
appears to disappear creating the eraser effect. If the applications software does not
have a pen tool that can draw a white line thick enough, the white line is ~imul~ted by

CA 022l9886 l997-lO-3l


-14-

drawing several parallel white lines close together, thus producing a white line of the
desired thickness.
Although the Aware interface software has been described in
conjunction with Microsoft NetMeeting Whiteboard applications software, it should
5 be appreciated by those of skill in the art that the Aware interface software can be
used with other third-party applications software. In this case, the comm~n~
associated with the mapping table will be set to achieve the desired operation in the
projection mode. Also, in the non-projection mode the scaling factor will need to be
set so that pen strokes made on the touch sensitive panel will be properly scaled onto
10 the drawing area of the third-party applications software.
Although a pler~ d embodiment of the present invention has been
described, those of skill in the art will appreciate that modifications and variations
may be made without departing from the spirit and scope thereof as defined by the
appended claims.

CA 02219886 1997-10-31




APPENDIX A

Constructors and Destructors




CSMARTBoardHandler::CSMARTBoardHandler(HWND, UINT)
HWND hwndReportEventsTo /*The window that private SMART Board
events get posted to*/
UINT uiEventID /*The ID assigned to private SMART Board
1 0 events*/

This constructor establishes a link with the Smart Board in projected mode. The
Smart Board will con""ul~icate back to this class by posting private messages to the
window provided. The message handler for this window ensures that these private
15 messages are passed on to the CSMARTBoardHandler class.

CSMARTBoardHandler: :CSMARTBoardHandler(HWND,UINT,UINT,UINT,
UINT)
HWND hwndReportEventsTo /*The window that SMART Board events get
posted to*/
UINT uiPenTrayID /*Pen Tray events ID*/
UINT uiDownID /*Contact down events ID*/
UINT uiMoveID /*Mouse move events ID*/
UINT uiUpID /*Mouse up events ID*/
This constructor establishes a link with the SMART Board in non-projected mode. In
this mode raw pen events and board contact events are sent directly to the application.

CSMARTBoardHandler: :~CSMARTBoardHandlerO
30 Smart Board messages will not be received a~er this standard destructor is called.

CA 02219886 1997-10-31


-16-


Static Functions

BOARDTYPE CSMARTBoardHandler::IsSMARTBoardRunningO const
s




This function determines whether there is any Smart Board hal-lw~e and software in
the system. It does this by checking for the presence of a controller application. If no
controller application is found, the ha~dw~e is considered absent or disabled.

10 Returns
NO_BOARD if the SMART Board is not running
NON PROJECTED if the SMART Board is running in projection mode
PROJECTED if the SMART Board is running in non-projection mode

15 Event Re~,i.lralion Methods

BOOL CSMARTBoardHandler::
RegisterRawContactWindow(HWND,UrNT,UINT,UINT)
HWND hwndPostHere /*The window to which raw contact events
should be posted*/
UINT uiDownID /*The ID to use for contact down events */
UINT uiUpID /*The ID to user for contact up events */
UINT uiMoveID /*The ID to use for move events*/

25 This function allows contact events to be acquired, as opposed to mouse events, for a
window. These contact events are only sent when a tool is selected. If no tools are
active, mouse events are received. Since intermediate contact events are not discarded
by Windows, this produces much smoother drawing from the Smart Board.



CA 02219886 1997-10-31



The basic structure ofthe message is as follows:

WPARAM unused.
LPARAM Standard packed point.




BOOL CSMARTBoardHandler:: I)e.~ii.lerRawContactWindow(HWND)
HWND hwnd /* Window to remove from the list of registered
windows */
This function removes the specified window from the registration list.

LRESULT CSMARTBoardHandler::OnInternalMessage(WPARAM,LPARAM)
WPARAM /* The WPARAM passed to the message handler
*/
LPARAM /* The LPARAM passed to the message
handler*/

This function is generally called whenever a private message for the
20 SMARTBoardHandler class is received. Private messages are passed to the window
specified in the constructor.

void SMARTBoardHandler::OnAliveC~ rl~(LPARAM)
LPARAM /* Encoded Window handle of the board driver*/
This function is generally called whenever the BOARDALIVE registered message
arrives at the main frame window. It is used to implement "Plug and Play"
functionality with the Smart Board.

CA 02219886 1997-10-31



Information Gatherin~ Functions

COLORREF CSMARTBoardHandler::GetCurrentPenColorO const

5 This function returns the color of the current pen, or -1 if there is no pen ~;ullelllly up.

int CSMARTBoardHandler::GetCurrentPenThicknessO

This function returns the thickness of the current pen, or -1 if there is no pen currently
10 up.

BOARDTOOL CSMARTBoardHandler::GetCurrentToolO

This function returns the type of the current tool (none, eraser, pen, or highlighter)
BOOL CSMARTBoardHandler::GetEraserSize(LPSIZE size) const

This function returns FALSE if there is no eraser in the system. Otherwise it fills the
SIZE structure with the size of the eraser. Contact events with the eraser tool are
20 assumed to be in the center of an area with the size specified.

Advanced Overridables

virtual void CSMARTBoardHandler::OnNewTool(BOARDTOOL tool)
25 BOARDTOOL tool /*PEN,HIGHLIGHTER,ERASER,NONE*/

This function is called whenever the tool changes.

virtual void CSMARTBoardHandler::OnPrintO


CA 02219886 1997-10-31


-19-

This function is called whenever the print button on the Smart Board is pressed. The
normal functionality is to quickly print the current page.

virtual void CSMARTBoardHandler: :OnActivateAppO
s




This function is called whenever the activate application button on the Smart Board is

pressed. Normal functionality is to toggle to and from full-screen mode (if such a

mode exists in your application).




10 virtual void CSMARTBoardHandler::OnClearPageO




This function is called whenever the clear page button on the Smart Board is pressed.

Normal functionality is to delete all annotations from the current page.




15 virtual void CSMARTBoardHandler::OnNextPageO




This function is called whenever the next page button on the Smart Board is pressed.

Normal functionality is to save the current page and go to the next one.




20 virtual void CSMARTBoardHandler::OnPreviousPageO




This function is called whenever the PreviousPage button on the Smart Board is

pressed. Normal functionality is to go back one page if possible.




25 virtual void CSMARTBoardHandler::PreProcessButton(int)

int iButton /* Raw index of the button. */




This function does pre-processing on a button press. The default behavior calls one of

the OnPrint(), OnClearPage() type of handlers which is specific to the button pressed.




CA 02219886 1997-10-31


-20-

Advanced Confi~urations Functions

void CSMARTBoardHandler::OrientBoardO;

5 This function calls the Smart Board "Orient Board" function to normalize the points
received from the Board hanlw~e.

void CSMARTBoardHandler:: ConfigureToolSettings (BOOL bSetEraser,
BOOL bSetButtons, BOOL bUseHighliter);
This function calls the Smart Board "Pen Tray Settings" dialog to change the settings
for pen width, pen color, eraser size, and button functionality.

BOOL bSetEraser /* TRUE to include Eraser settings tab in dialog
BOOL bSetButtons /* TRUE to include Button settings tab in dialog
*l
BOOL bUseHighliter /* TRUE to include Highlighter check box in
pen settings tab */
void CSMARTBoardHandler::ConfigurePortSettingsO;

This function calls the Smart Board "Configure Ports" dialog to set up the COM port
settings for attached Smart Board h~dw~e.


Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date Unavailable
(22) Filed 1997-10-31
(41) Open to Public Inspection 1999-04-30
Examination Requested 2002-03-27
Dead Application 2004-11-01

Abandonment History

Abandonment Date Reason Reinstatement Date
2003-10-31 FAILURE TO PAY APPLICATION MAINTENANCE FEE

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Application Fee $300.00 1997-10-31
Registration of a document - section 124 $100.00 1998-05-14
Maintenance Fee - Application - New Act 2 1999-11-01 $100.00 1999-10-29
Maintenance Fee - Application - New Act 3 2000-10-31 $100.00 2000-09-29
Maintenance Fee - Application - New Act 4 2001-10-31 $100.00 2001-10-02
Request for Examination $400.00 2002-03-27
Maintenance Fee - Application - New Act 5 2002-10-31 $150.00 2002-07-30
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
SMART TECHNOLOGIES INC.
Past Owners on Record
FUKUSHIMA, TOM H.
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Abstract 1997-10-31 1 14
Description 1997-10-31 20 831
Representative Drawing 1999-05-14 1 3
Claims 1997-10-31 2 63
Drawings 1997-10-31 6 55
Cover Page 1999-05-14 1 41
Fees 1999-10-29 1 52
Assignment 1998-05-14 4 144
Assignment 1997-10-31 2 98
Correspondence 1998-02-05 1 32
Correspondence 1999-07-08 1 28
Prosecution-Amendment 2002-03-27 1 52
Prosecution-Amendment 2002-06-05 1 29
Fees 2000-09-29 1 50
Fees 2002-07-30 1 61
Fees 2001-10-02 1 53