|
|
 |

 |
|
Building Tablet PC Applications
|
|
|
Author
|
|
Rob Jarrett, Philip Su
|
|
|
Pages
|
576
|
|
Disk
|
1 Companion CD(s)
|
|
Level
|
All Levels
|
|
Published
|
09/25/2002
|
|
ISBN
|
9780735617230
|
|
Price
|
$59.99
To see this book's discounted price, select a reseller below.
|
|
|
|
|
 |
|
|
Index
Send feedback about this index to mspindex@microsoft.com
A
accessibility, 469
accuracy of digital ink, 97
activating the pointer, 100
Add( ) (Strokes collection), 187
AddStrokesAtRectangle( ) (Ink class), 194, 201
AddStrokesAtRectangle( ) (InkEx class), 194, 505
adoption rate of Tablet PCs, 462
AdvancedReco.cs (example), 376-383
aliasing effects (jaggies), 59, 226
AllGestures value (ApplicationGesture enumeration), 359
alphabets, non-Latin-based, 47
character auto-complete (CAC) mode, 370, 419
ink segmentation, 350
alternates, recognition, 350, 372
chopping into smaller alternates, 414
RecognitionAlternate class, 391-393
top alternate, 391
AlternatesWithConstantPropertyValues( ) (RecognitionAlternates class), 414
Altman, Dan, 20
anchoring annotation ink, 49
angle information, pen, 97
annotation ink, 49
AntiAliased property (DrawingAttributes class), 225- 226
antialiasing, 59
APIs, Tablet PC Platform, 21
Apple Newton MessagePad, 14
application design, 463-469
accessibility concerns, 469
Clipboard interactions, 465
digital ink storage, 464-465
ink architecture, 468
InkCollector and InkOverlay classes, 463-464
Undo feature, implementing, 466-468, 489
application gestures, 348, 354-366
GesturePad.cs (example), 360-366
list of (ApplicationGesture enumeration), 355-359
Microsoft Gesture Recognizer, 384
See also system gestures
application responsiveness, 57
application usability, 27-31
adding digital ink features, 461
lasso selection tool, 54
architecture, ink, 468
area of sensitivity, defining, 43
Ascender property (RecognitionAlternate class), 392
Asian languages
character auto-complete (CAC) mode, 370, 419
ink segmentation, 350
asynchronous (background) recognition, 349-350, 384-391
AsyncReco.cs (example), 385-391
AttachMode property (InkOverlay class), 119
AutoRedraw property (InkCollector, InkOverlay classes), 171
B
back plane, electromagnetic digitizers, 38
background (asynchronous) recognition, 349-350, 384-391
BackgroundRecognize( ) (RecognizerContent class), 384
BackgroundRecognizeWithAlternates( ) (RecognizerContent class), 384
ballpoint pen style, 60, 228
Base64 encoding of ink data, 464
Baseline property (RecognitionAlternate class), 392
BasicReco.cs (example), 351-354
batteries, 4, 18
BeginIndex property (Stroke class), 253, 257
Bézier fitting. See curve fitting
Bézier stroke cusps, 260
BezierCusps property (Stroke class), 261
BezierPoints property (Stroke class), 249
Big Ink model, 215, 468
binary executables, Tablet PC Platform, 21
BinaryFormatter class, 453
blocking screen with user's hand, 44
BOPOMOFO factoid, 418
bounding box, stroke, 246-248
BoundingBoxMode enumeration, 246
BoundingRect property (LassoUI class), 509
Brass, Dick, 19
brightness and digitizer technology, 35, 37
BuildingTabletApps library, 119
BuildingTabletApps utility library, 503-510
business benefits of Tablet PC Platform integration, 462
C
CAC (character auto-complete) mode, 370, 419
CanPaste( ) (Ink class), 336
canvas size, defining, 112
Capabilities property (Recognizer class), 368
capacitive (electrostatic) digitizers, 35
capturing pen input, 96-98
character auto-complete (CAC) mode, 370, 419
character recognition. See ink recognition
CharacterAutoCompletion property (RecognizerContext class), 370
characters, non-Latin-based, 47
character auto-complete (CAC) mode, 370, 419
ink segmentation, 350
choosing an ink. See ink selection
CHS_COMMON factoid, 418
CHT_COMMON factoid, 418
Clear( ) (Strokes collection), 187
clicking usability, 42
client notification events. See events, pen input
clip( ) (Ink, Stroke, Strokes classes), 312
clipboard functionality, 334-341
Clipboard interactions, 465
ClipboardCopy( ) (Ink class), 334
ClipboardPaste( ) (Ink class), 335
Clone( ) (Ink class), 194, 195, 201
cloning ink to implement undo features, 468, 489
Coerce flag (RecognitionModes enumeration), 369
CollectingInk property (InkCollector, InkOverlay classes), 171
CollectionMode property (InkCollector, InkOverlay classes), 121, 171, 355
events with, 139
CollegeBasic.cs (example), 423-425
CollegeFact.cs (example), 435-438
CollegeFull.cs (example), 429-433
color, ink, 56
color models, 61
transparency. See transparency effects
Color property (DrawingAttributes class), 225
COM automation APIs (SDK), 70
complex-layout text documents, 52
CompressionMode enumeration, 326
confidence level, recognition, 350, 360
top confidence, 391
Confidence property (RecognitionAlternate class), 392
ConfidenceAlternates property (RecognitionAlternate class), 392
ConfidenceLevel property (RecognitionProperty class), 413
Contains( ) (Strokes collection), 187
context hints, recognition (factoids), 369, 415-419
Continue( ) (LassoUI class), 509
contrast, display, 469
control points of Bézier curves, 249
convertible tablet computers, 8
converting ink to text letters, 27
coordinates, ink, 155
CopyAsTextDlg class (BuildingTabletApps library), 510
CopyAsTextDlg.cs (example), 405-412
copying ink (clipboard functionality), 334-341
correction UI, 350, 401-405
CorrectionUI.cs (example), 401-405
Count( ) (Strokes collection), 187
CreateRecognizerContext( ) (Recognizer class), 368
CreateStroke( ) (Ink class), 194, 207
CreateStrokes( ) (Ink class), 186
CTRL+ALT+DEL functionality, 514
CURRENCY factoid, 417
Cursor class, 89
Cursor property (InkEdit), 429
CursorButtonDown event, 122, 140
CursorButtonUp event, 123
CursorDown event, 122, 140
CursorInRange event, 122
CursorOutOfRange event, 123
cursors, compensating for parallax, 41
Cursors collection, 89
curve fitting, 58-59, 226
antialiasing, 59
Bézier curves, 58
control points, 249
cusps for, 260
polylines vs. curves, 207
cusps of strokes, retrieving, 260-263
CustomStrokes property (Ink class), 327
cutting ink (clipboard functionality), 334-341
D
data compression, 326
data management, ink. See Ink API; ink data management
DATE factoid, 417
deactivating the pointer, 100
DEFAULT factoid, 417
default recognizer, 348
DefaultDrawingAttributes property (InkCollector, InkOverlay classes), 171, 228
DefaultDrawingAttributes property (InkPicture class), 453
DefaultTablet property (Tablets class), 163
DelayedReco.cs (example), 439-440
delays of inking process, 57
Deleted property (Stroke class), 179-185
DeleteStroke( ) (Ink class), 194, 195
DeleteStrokes( ) (Ink class), 194, 195
deleting ink
deleting Stroke objects, 193-208
EraserMode property (InkOverlay class), 118
See also ink editing
Dell, Michael, 19
Descender property (RecognitionAlternate class), 392
designing Tablet PC applications, 463-469
accessibility concerns, 469
Clipboard interactions, 465
digital ink storage, 464-465
ink architecture, 468
InkCollector and InkOverlay classes, 463-464
Undo feature, implementing, 466-468, 489
DesiredPacketDescription property (InkCollector, InkOverlay classes), 143, 171
desktop computers vs. tablet computers, 7
detecting pen actions, 105
DeviceWalker.cs (example), 165-170
DIGIT factoid, 416
digital ink. See ink
digitizer
hardware requirements, 511
tablet data packets, 142-155, 172, 258
processing lag, 57
technologies of, 33-37
usability
electromagnetic distortion, 37-39
handedness, 44
parallax, 39
still motion, recognizing, 41-44
digitizer pad, 68, 73
Dirty property (Ink class), 326
dispatching events. See events, pen input
display. See screen
distortion (electromagnetic) from digitizers, 37-39
docking, requirements for, 513
document models, managed API and, 85
DotBrush property (LassoUI class), 510
DotSize property (LassoUI class), 510
DotSpacing property (LassoUI class), 510
DoubleClick event, 124
double-clicking, 42
double-tapping, 50
down (pointer state). See activating the pointer
drag-and-drop, 341-345
dragging, 51
Draw( ) (Renderer class), 209-214
DrawBoundingBoxes( ) (RendererEx class), 248, 507
DrawCusps( ) (RendererEx class), 261, 508
drawing with free-form ink, 49
DrawingAttributes class, 91, 225-240
DrawingAttributes property (Cursor class), 229
DrawingAttributes property (InkCollector class), 118, 469
DrawingAttributes property (InkEdit), 428
DrawingAttributes property (Stroke class), 228-240
DrawingAttributes( ) (FormatInkDlg class), 505
DrawIntersection( ) (RendererEx class), 508
DrawIntersections( ) (RendererEx class), 254
DrawPoints( ) (RendererEx class), 250, 507
DrawSelected( ) (RendererEx class), 506
DrawStrokeIds( ) (RendererEx class), 180, 506
dual-layer resistive digitizers, 34
DynamicRendering property (InkCollector, InkOverlay classes), 171
E
East Asian languages
character auto-complete (CAC) mode, 370, 419
ink segmentation, 350
editing ink. See ink editing
EditingMode property (InkOverlay class), 113, 171
electromagnetic digitizers, 36
electromagnetic distortion from digitizers, 37-39
electronic book readers, 6
electrostatic (capacitive) digitizers, 35
EMAIL factoid, 416
Enabled property (InkCollector, InkOverlay classes), 171
EndIndex property (Stroke class), 253, 257
EndInkInput( ) (RecognitionContext class), 371
EO Personal Communicator, 12
EraserMode property (InkOverlay class), 118, 171
EraserWidth property (InkOverlay class), 171
erasing ink with Scratchout gesture, 366
events, pen input, 121-142
asynchronization of pen and mouse events, 142, 172
best practices, 172
ink editing, 125, 160
InputWatcher.cs (example), 126-142
logging and analyzing, 139
mouse trigger, 123
pen movement, 122
rendering, 125
stroke addition and deletion, 121, 187, 196
tablet data packets, 142-155, 172, 258
processing lag, 57
tablet hardware, 124
explicit mode switching, 30, 160
ExtendedProperties property (DrawingAttributes, Ink, Stroke classes), 327
ExtractStrokes( ) (Ink class), 194, 195, 324
F
Factoid property (InkEdit class), 435
Factoid property (RecognizerContext class), 416
factoids (recognition context hints), 369, 415-419
recognition with InkEdit control, 435
Feldman, Evan, 20, 25
FILENAME factoid, 417
FindIntersections( ) (Stroke class), 253
first-order ink, 47-50
annotation ink, 49
inline ink, 50
fitting curves. See curve fitting
FitToCurve property (DrawingAttributes class), 225- 226
flexibility of managed APIs, 83
floating-point index, 252
font size, resolution and, 29
form factor, 4
FormatInkDlg class (BuildingTabletApps library), 505
FormatInkDlg.cs (example), 230-238
formats for saving ink, 325
formatting ink, 56, 225-240
controls for. See ink controls
with InkEdit control, 428
transparency. See transparency effects
See also pen tip shape
forward (synchronous) recognition, 349-350, 372-383
free-form ink, 49. See also lasso selection tool
Full character auto-completion, 370
G
GAC (Global Assembly Cache), 78
Gates, Bill, 12, 19
GCGetTotalMemory function, 486
general-purpose tablet computers, 6
geometry, stroke. See strokes, ink
Gesticulator.cs (example), 441-443
Gesture event, 121, 355, 360
GesturePad.cs (example), 360-366
recognition, performance and, 172
GesturePad.cs (example), 360-366
gestures, application. See application gestures
gestures, system. See system gestures
GetAlternatesFromSelection( ) (RecognitionResult class), 391
GetBoundingBox( ) (Ink, Stroke, Strokes classes), 201, 246
GetFlattenedBezierPoints( ) (Stroke class), 250
GetGestureStatus( ) (InkEdit), 444
GetObjectTransform( ) (Renderer class), 216
GetPacketData( ) (Stroke class), 258
GetPacketDescriptionPropertyMetrics( ) (Stroke class), 258
GetPacketValuesByProperty( ) (Stroke class), 259
GetPoint( ) (Stroke class), 249
GetPoints( ) (Stroke class), 249
GetPropertyMetrics( ) (Tablet class), 164
GetRectangleIntersections( ) (Stroke class), 253
GetStrokeIntersections( ) (Stroke class), 257
GetStrokesFromStrokeRanges( ) (RecognitionAlternate class), 393
GetStrokesFromTextRange( ) (RecognitionAlternate class), 393
GetTextRangeFromStrokes( ) (RecognitionAlternate class), 393
GetViewTransform( ) (Renderer class), 216
GIFs for ink storage, 464
Global Assembly Cache (GAC), 78
glowing ink effects, 242
GO PenPoint operating system, 11
graphics, portrait display and, 33
Graphics Interchange Format (GIF), 464
GRiDPad portable computer, 10
Guide property (RecognizerContent class), 419
guides (spatial recognition hints), 419
H
handedness, 44
handheld computers, 6
Handle property (InkCollector, InkOverlay classes), 171
Handspring, 16
handwriting recognition. See ink recognition
HANGUL_COMMON factoid, 418
hardware
digitizer. See digitizer
guidelines, Tablet PC, 20, 511-514
keyboards, 26
multiple tablet devices, 102, 151
profile. See form factor
tablet hardware events, 124
tablet input subsystem, 100
tablet technology, 32-33
tablet usability, 26, 39
HardwareCapabilities property (Tablet class), 164
Hawkins, Jeff, 10, 15, 19
Height property (DrawingAttributes class), 225, 228
HelloInkCollector.cs (example), 110-111
HelloInkOverlay.cs (example), 114-116
HelloManagedAPI.cs (example), 79-81
help documentation, SDK, 78
HID (Human Interface Device) standard, 101
highlighting, 54, 60
how accomplished, 228
pen styles for, 225
HIMETRIC units, 155, 179
hints, recognition context (factoids), 369, 415-419
hints, spatial (recognition guides), 419
HIRAGANA factoid, 418
HitTest( ) (Ink class), 284
HitTest( ) (Stroke class), 284
hit-testing, 281-311
functions for, 284
InsertRemoveSpace.cs (example), 285-292
LassoUI.cs (example), 292-299
performance, 283
RealtimeLasso.cs (example), 299-311
hold-dragging, 51
hold-through action, 51
hot point, gesture, 360
HotPoint property (RecognitionProperty class), 413
hovering, 43, 50, 104
detection for ToolTip purposes, 43
digitizer technologies for detecting, 35, 37
Human Interface Device (HID) standard, 101
I
Id property (Stroke class), 179-186
IgnorePressure property (DrawingAttributes class), 226, 228
immediacy of ink, 57
in-air gestures, 51. See also system gestures
IndexOf( ) (Strokes collection), 187, 192
ink, 21-23, 46-61
adding ink features to applications, 461
converting to text, 27
curve fitting. See curve fitting
erasing with Scratchout gesture, 366
formats for saving, 325
formatting. See ink formatting
input modality. See mode switching
memory usage, 485-491. See also storing ink
pen input. See pen input
selection usability, 31
system requirements, 97
Ink API (Data Management), 69, 84, 90
example application, 79
ink architecture, 468
Ink class, 90, 176-208
Big and Little Ink models, 215, 468
from BuildingTabletApps library, 505
stroke creation and deletion, 194-208
ink controls, 421-455
CollegeBasic.cs (example), 423-425
CollegeFact.cs (example), 435-438
CollegeFull.cs (example), 429-433
DelayedReco.cs (example), 439-440
editing. See ink editing
Gesticulator.cs (example), 441-443
InkEdit control (ActiveX), 422-446
accessing ink, 433
basic properties, 426-428
ink and gesture recognition, 435-444
limitations and usability, 444
mouse-related properties, 428
toggling between ink and text, 434
InkPicture control (ActiveX), 446-455
InkPictureApp.cs (example), 446-452
managed API vs., 92
recognition. See ink recognition
rendering. See ink rendering
selection. See ink selection
storage and organization, 85
integration considerations, 464-465, 490
in Tablet PC Platform SDK, 67, 70, 421
See also Ink
ink data management, 175-244
API for. See Ink API
cutting and pasting ink, 334-341
drag-and-drop, 341-345
Ink and Stroke objects, 176-208
stroke creation and deletion, 193-208
stroke ID behavior, 185
modeling ink. See ink modeling
rendering ink. See ink rendering
retrieving and setting packet data, 258
serialization, 325-333
splitting and trimming ink, 311-324
stroke geometry, 245-281
bounding box, 246-248
computing stroke intersections, 251-257
cusps, retrieving, 260-263
retrieving stroke points, 248-251
StrokeDataViewer.cs (example), 263-275
stroke targeting (hit-testing), 281-311
functions for, 284
InsertRemoveSpace.cs (example), 285-292
LassoUI.cs (example), 292-299
performance, 283
RealtimeLasso.cs (example), 299-311
stroke transformation, 276-281
ink editing
clipboard functionality, 334-341
controls for. See ink controls
events, 125
modeless switching, 30, 160
Scratchout gesture, 366
selection usability, 31
splitting and trimming, 311-324
ink formatting, 56
controls for. See ink controls
with InkEdit control, 428
transparency. See transparency effects
See also pen tip shape
ink interaction, 50-56
moving and resizing ink, 55
selecting ink, 51-55
See also pen actions
ink modeling, 47-50
annotation ink, 49
for complex alphabets, 47
first-order ink, 47-50
free-form ink, 49
inline ink, 50
realism, 57-61
second-order ink, 27, 47
for spatial layout, 47
Ink property (InkCollector, InkOverlay classes), 171, 176
ink recognition, 347-420
application gestures, 348, 354-366
GesturePad.cs (example), 360-366
list of (ApplicationGesture enumeration), 355-359
asynchronous (background), 349-350, 384-391
correcting misrecognition, 86
improving results, 415-419
InkEdit control
toggling between ink and text, 434
tuning or modifying, 435-440
language-specific (localization), 91
object recognition, 348
partial, 349, 371
recognition mode, 369
recognition properties, 413-415
recognizers
architecture of, 348-351
confidence level, 350, 360, 391
factoids (context hints), 369, 415-419
guides (spatial hints), 419
obtaining, 367
recognizer context, 368-372
sending strokes to, 371
results, storing, 412
results, working with, 391-413
CopyAsTextDlg.cs (example), 405-412
CorrectionUI.cs (example), 401-405
WordSelect.cs (example), 393-401
sample applications
AdvancedReco.cs (example), 376-383
AsyncReco.cs (example), 385-391
BasicReco.cs (example), 351-354
CopyAsTextDlg.cs (example), 405-412
CorrectionUI.cs (example), 401-405
IntermediateReco.cs (example), 372-376
WordSelect.cs (example), 393-401
segmentation, 350, 369
simple text recognition, 351-354
speed of, 481-485
synchronous (forward), 349-350, 372-383
See also Ink Recognition API
Ink Recognition API, 68, 69, 84, 91
example application, 79
ink rendering, 208-244
controls for. See ink controls
converting ink space to/from pixels, 214
differentiating selected and unselected objects, 54
electromagnetic distortion concerns, 37-39
formatting style. See formatting ink
inkable vs. non-inkable regions, 28
performance considerations, 244
realism, 57-61
scrolling and zooming transformations, 215-225
special effects, 240-244
See also ink modeling
ink segmentation, 350, 369
ink selection, 51-55
controls for. See ink controls
drag-and-drop, 341-345
hit-testing, 281-311
functions for, 284
InsertRemoveSpace.cs (example), 285-292
LassoUI.cs (example), 292-299
performance, 283
RealtimeLasso.cs (example), 299-311
percentage-based enclosure, 282
Ink Serialized Format (ISF), 464
ink space
converting to/from pixels, 214
determining, 207
ink strokes. See Stroke class; Strokes collection
ink transformations, 215-225
Ink( ) (Strokes collection), 187
InkAdded event, handling for recognition, 382
InkBall, 21
InkClipboardFormats, InkClipboardModes enumerations, 334
InkClippy.cs (example), 336-341
InkCollector class, 87, 89, 109-112
application gesture recognition, 354-366
best practices, 172
events, 121-141
InputWatcher.cs (example), 126-142
logging and analyzing, 139
mouse trigger, 123
pen movement, 122
strokes and gestures, 121
tablet hardware, 124
InkOverlay class vs., 113, 120, 170
integrating into applications, 463-464
InkControl class (BuildingTabletApps library), 504
InkControl2 class (BuildingTabletApps library), 504
InkCopy.cs (example), 197-202
InkDeleted event, handling for recognition, 382
InkDragDrop.cs (example), 341-345
InkEd.dll library, 78
InkEdit control (ActiveX), 70, 422-446
accessing ink, 433
basic properties, 426-428
CollegeBasic.cs (example), 423-425
CollegeFact.cs (example), 435-438
CollegeFull.cs (example), 429-433
DelayedReco.cs (example), 439-440
Gesticulator.cs (example), 441-443
ink and gesture recognition, 435-444
limitations and usability, 444
mouse-related properties, 428
toggling between ink and text, 434
InkEnabled property (InkPicture), 454
InkFactory.cs (example), 202-208
InkFormatter.cs (example), 230, 239-240
InkInputPanel class (BuildingTabletApps library), 503
InkInputPanel( ) (InkControl, InkControl2 classes), 504
InkInsertMode property (InkEdit), 428
InkLayers.cs (example), 210-214
InkMagnify.cs (example), 216-225
InkMode property (InkEdit), 426
InkObj.dll library, 78, 107
InkOverlay class, 87, 89, 113-120
adding functionality to, 155-163
application gesture recognition, 354-366
AttachMode property, 119
best practices, 172
drag-and-drop, 341-345
EraserMode property, 118
events, 121-142
ink editing, 125, 160
InputWatcher.cs (example), 126-142
logging and analyzing, 139
mouse trigger, 123
pen movement, 122
rendering events, 125
strokes and gestures, 121
tablet hardware, 124
integrating into applications, 463-464
properties shared by InkCollector, 170
InkOverlay( ) (InkControl, InkControl2 classes), 504
InkPadJunior.cs (example), 491-499
InkPersist.cs (example), 328-333
InkPicture control (ActiveX), 70, 446-455
InkPictureApp.cs (example), 446-452
InkSelector.cs (example), 188-193
InkSpaceToPixel( ) (Renderer class), 214
InkSpaceToPixel( ) (RendererEx class), 506
InkZoom.cs (example), 225
inline ink, 50
input, pen. See pen input
input modality. See mode switching
input panel, Tablet PC, 21
InputWatcher.cs (example), 126-142
InsertRemoveSpace.cs (example), 285-292
installing Tablet PC Platform SDK, 72-79
integration with Tablet PC
application design, 463-469
accessibility concerns, 469
Clipboard interactions, 465
digital ink storage, 464-465
ink architecture, 468
InkCollector and InkOverlay classes, 463-464
Undo feature, implementing, 466-468
Undo feature, implementing memory requirements, 489
business benefits, 462-463
InkPadJunior application (example), 491-499
performance considerations, 469-491
memory and storage, 485-491
operations speed, 470-485
user benefits, 460-462
interacting with ink. See ink interaction
IntermediateReco.cs (example), 372-376
internationalization, ink recognition (language specificity), 91
intersections of strokes, computing, 251-257
Invoke( ) (Control class), 185
ISF (Ink Serialized Format), 464
IsPacketPropertySupported( ) (Tablet class), 152, 164
IsStringSupported( ) (RecognizerContext class), 419
J
jaggies (aliasing effects), 59, 226
JAMO factoid, 418
Jobs, Steve, 14
Journal. See Windows Journal utility
JPN_COMMON factoid, 418
K
KANJI_COMMON factoid, 417
Kaplan, Jerry, 11
KATAKANA factoid, 418
Keely, Bert, 19
keyboards, 26
KOR_COMMON factoid, 418
L
lag in inking process, 57
Lampson, Butler, 20
landscape viewing mode, requirements for, 513
languages, defined, 348
languages, non-Latin-based
character auto-complete (CAC) mode, 370, 419
ink segmentation, 350
laptop computers vs. tablet computers, 7, 26
lasso action, 51
lasso selection tool, 32, 53, 54
hit-testing, 282
LassoUI.cs (example), 292-299
percentage-based enclosure, 282
LassoUI class (BuildingTabletApps library), 508-510
LassoUI.cs (example), 292-299
lattice of recognition result data, 391
LCD performance with digitizers, 35, 37
left-handedness, usability and, 44
legacy, freedom from (requirements), 514
letter recognition. See ink recognition
letters, non-Latin-based, 47
character auto-complete (CAC) mode, 370, 419
ink segmentation, 350
LineAlternates property (RecognitionAlternate class), 392
line-based properties, RecognitionAlternates class, 393
LineMetrics property (RecognitionProperty class), 413
LineNumber property (RecognitionAlternate class), 392
LineNumber property (RecognitionProperty class), 413
Little Ink model, 215, 468
Load( ) (Ink class), 326
loading ink, 325-333
integration considerations, 464-465
performance, 490
recognition results, 412
speed of digital ink operations, 470-480
LoadSaveRenderPerf.cs (example), 470-478
localization, ink recognition (language specificity), 91
Loeb, Alexandra, 20, 25
logo requirements, 21
Lui, Charlton, 20
M
Mailer, Norman, 416
managed APIs (SDK), 69, 79-92
ink controls vs., 92
managing ink data. See ink data management
markup ink, pen styles for, 225
Matrix class, 215
MaximumInputRectangle property (Tablet class), 164
MaximumStrokeCount property (RecognitionProperty class), 413
Measure( ) (Renderer class), 247
memory, demands of integration, 485-491
MemoryPerf.cs (example), 485-488
Microsoft Gesture Recognizer, 384
Microsoft Pocket PC, 16
Microsoft Tablet PC. See Tablet PC Platform
Microsoft Windows for Pen Computing, 11-13
Microsoft.Ink assembly, 78
Midline property (RecognitionAlternate class), 392
misrecognition, correcting, 86
mode switching, 30, 160
ModelessSwitch.cs (example), 160-162
modeling ink, 47-50
annotation ink, 49
for complex alphabets, 47
first-order ink, 47-50
free-form ink, 49
inline ink, 50
realism, 57-61
second-order ink, 27, 47
for spatial layout, 47
ModifyDrawingAttributes( ) (Strokes collection), 228- 240
mouse emulation, 96, 103
mouse input, 100
asynchronization of pen and mouse events, 142, 172
inking with InkEdit control, 428
mapping pen input to, 96, 103
trigger events, 123
use of multiple tablet devices, 102, 151
MouseDown, MouseMove, MouseUp, MouseWheel events, 124
Move( ) (Renderer class), 216
Move( ) (Stroke, Strokes classes), 276
moving ink, 55
drag-and-drop, 341-345
stroke transformations, 276-281
MSInkAut.h API header, 78
mstpcrt.msm (redistributable merge module), 73
multilevel undo feature, implementing, 466-468
N
Name property (Tablet class), 164
natural computing, 105
NearestPoint( ) (Ink class), 285
.NET settings for using SDK, 74
NewInAirPackets event, 122, 142-155, 172
NewPackets event, 122, 140, 142-155, 172
Newton MessagePad, 14
NoGesture value (ApplicationGesture enumeration), 359
NONE factoid, 417
NormalPressure property (PacketProperty class), 143, 228
NUMBER factoid, 417
O
object recognition, 348. See also ink recognition
object transformations (Renderer class), 215
object-based documents, two-dimensional, 53
OLED (Organic Light-Emitting Diode) technology, 17
ONECHAR factoid, 417
one-dimensional text streams, 52
operations speed, 470-485
operator( ) (Strokes collection), 187
Organic Light-Emitting Diode (OLED) technology, 17
ownership of Stroke objects, 193-208
P
PacketDescription property (Stroke class), 258
PacketProperty class, 143
PacketPropertyWatcher.cs (example), 145-154
packets, tablet data, 142-155, 172
memory and storage performance, 485-491
processing lag, 57
retrieving and setting, 258
PacketSize property (Stroke class), 258
PacketStatus property (PacketProperty class), 143
Painted, Painting events (InkOverlay class), 125
Palm Computing PalmPilot, 15
parallax, digitizer, 39
partial recognition, 349, 371
pasting ink (clipboard functionality), 334-341
pen actions, implementing modeless switching, 30
pen actions (system gestures), 50, 56, 98
detecting and differentiating, 105
hovering. See hovering
implementing modeless switching, 162
recognition, performance and, 172
recognition with InkEdit, 435, 440-444
SystemGesture event, 123
targeting ink strokes. See hit-testing
See also application gestures
Pen API. See Tablet Input API
pen buttons, detecting use of, 98
pen input, 5, 9, 95-173
API for. See Tablet Input API
compensating for parallax, 41
curve fitting. See curve fitting
editing ink
events for, 125
modeless switching, 160
events, dispatching, 106, 121-142
asynchronization of pen and mouse events, 142, 172
best practices, 172
ink editing, 125
InputWatcher.cs (example), 126-142
logging and analyzing, 139
movement events, 122
stroke addition and deletion, 121, 187, 196
tablet data packets, 142-155, 172, 258
handedness, 44
ink controls. See ink controls
ink coordinates, 155
ink entry without device for, 68
modeless switching, 30
mouse emulation, 96, 103
optimizing user interface for, 27, 460-461
Platform SDK support, 109-163
rendering ink. See ink rendering
still motion, recognizing, 41-44
system requirements, 96-98
tablet input subsystem architecture, 98-109
targeting and selection usability, 31, 42
top-of-pen erase, 98, 155-159
types of pen, 225-240
use of multiple tablet devices, 102, 151
WinTab API, 101
pen tip shape, 60
Pen Windows, 11
PenPoint operating system, 11
PenTip property (DrawingAttributes class), 226, 228
PERCENT factoid, 417
percentage-based enclosure, 282
performance, 25-32
application usability, 27-31
lasso selection tool, 54
digital ink, 97
handedness, setting, 44
improving ink recognition results, 415-419
InkEdit control limitations, 444
integrating Tablet PC features, 469-491
memory and storage, 485-491
operations speed, 470-485
LCD, digitizers and, 35, 37
managed APIs, 83
rendering ink, 244
screen targeting and ink selection usability, 31, 42
still motion, recognizing, 41-44
synchronous vs. asynchronous recognition, 349-350
tablet usability, 26
targeting ink strokes (hit-testing), 283. See also hit- testing
PersistenceFormat enumeration, 325
physical handling of the pen, 97
parallax issues, 39
quivering pen concerns, 41-44
usability studies, 31
See also angle information, pen; pressure information, pen; rotation information, pen; system gestures
pictographic alphabets, ink for, 47
character auto-complete (CAC) mode, 370, 419
ink segmentation, 350
PictureBox control, InkPicture control and, 446
Pitch property (PacketProperty class), 143
PixelRectToInkSpace( ) (BuildingTabletApps library), 207
pixels
aliasing effects (pixilation), 59, 226
converting to/from ink space, 214
user interface operations and, 29
PixelToInkSpace( ) (Renderer class), 214
PixelToInkSpace( ) (RendererEx class), 506
pixilation effects, 59, 226
PlugAndPlayId property (Tablet class), 164
Pocket PC (Microsoft), 16
pocket-sized PCs, 6
point-based hit-testing, 281
points of strokes
calculating nearest point, 285
retrieving, 248-251
Points property (LassoUI class), 509
PointsPerInch property (RecognitionProperty class), 413
polyline points, 249
polyline stroke cusps, 260
PolylineCusps property (Stroke class), 261
polylines vs. curves, 207, 226. See also curve fitting
portrait display orientation, 32
portrait viewing mode, requirements for, 513
POSTALCODE factoid, 417
power states, requirements for, 512
Prefix character auto-completion, 370
Prefix property (RecognizerContext class), 370
press-and-hold action, 51
detecting and differentiating, 98
mouse emulation mappings, 104
pressure information, pen, 60, 97, 144, 228
digitizer technologies for detecting, 35
PressureAdjust( ) (example), 259-260
projected virtual keyboards, 18
Q
quivering pen concerns, 41-44
R
Random character auto-completion, 370
RasterOperation property (DrawingAttributes class), 226, 228
realistic ink rendering, 57-61
RealtimeLasso.cs (example), 292, 299-311
recognition, ink. See ink recognition
recognition alternates, 350, 372
chopping into smaller alternates, 414
RecognitionAlternate class, 391-393
top alternate, 391
recognition context
factoids (context hints), 369, 415-419
guides (spatial hints), 419
recognition guides, 419
recognition mode, 369
recognition properties, 413-415
RecognitionConfidence enumeration, 360
RecognitionFlags property (RecognizerContext class), 369
RecognitionProperty class, 413-415
RecognitionResult class, 92, 391-413
CopyAsTextDlg.cs (example), 405-412
CorrectionUI.cs (example), 401-405
storing results, 412
WordSelect.cs (example), 393-401
RecognitionResult property (CopyAsTextDlg class), 510
RecognitionResult property (Strokes class), 412
Recognize( ) (InkEdit), 438
Recognizer class, 92, 367
InkEdit control with, 435
RecognizerContext class, 92, 368
InkEdit control and, 445
recognizers
architecture of, 348-351
confidence level, 350, 360
top confidence, 391
context, 368-372
factoids (context hints), 369, 415-419
guides (spatial hints), 419
obtaining, 367
sending strokes to, 371
RecoPerf.cs (example), 481-485
RecoTimeout property (InkEdit), 438
rectangle pen tip style, 60, 228
rectangle-based hit-testing, 282
redistributable merge module (mstpcrt.msm), 73
refraction-induced parallax, 39
remote access pads, 6
Remove( ) (Strokes collection), 187, 193
RemoveAt( ) (Strokes collection), 187
Render( ) (LassoUI class), 509
Renderer class, 208-225
converting ink space to/from pixels, 214
display contrast support, lack of, 469
drawing ink, 209-214
view and object transformations, 215-225
Renderer property (InkCollector, InkOverlay classes), 209
RendererEx class (BuildingTabletApps library), 506- 508
rendering events, InkOverlay class, 125
rendering ink, speed of, 470-480
resistive digitizers, 33-35
resizing ink, 55
resizing ink transformations, 215-225, 276-281
resolution, 29, 512
RF signal for digitizers, 36
RichEdit control, InkEdit control and, 423
RichTextBox control, InkEdit control and, 423
RightDrag system gesture, implementing modeless switching, 162
right-handedness, usability and, 44
RightTap system gesture, implementing modeless switching, 162
RollRotation property (PacketProperty class), 143
ROP code, 228
Rotate( ) (Renderer class), 216
Rotate( ) (Stroke, Strokes classes), 276
rotating ink strokes, 276-281
rotation information, pen, 97
round-tipped pen. See ballpoint pen style
S
sample SDK applications, 71, 73, 78
SAPI (Speech API) SDK, 72
SAS (Secure Attention Sequence) functionality, 514
Save( ) (Ink class), 325, 465
saving ink, 325-333
integration considerations, 464-465
performance, 490
recognition results, 412
speed of digital ink operations, 470-480
Scale( ) (Renderer class), 216
Scale( ) (Stroke, Strokes classes), 276
ScaleToRectangle( ) (Stroke, Strokes classes), 276
Scratchout gesture, 366
screen
blocked with hand, 44
brightness and digitizer technology, 35, 37
portrait display orientation, 32
See also user interfaces, ink-based
screen (display)
contrast, 469
OLED (Organic Light-Emitting Diode) technology, 17
size of, 4
viewing mode requirements, 513
scrolling ink transformations, 215-225
Sculley, John, 14, 19
SDK, Tablet PC Platform, 65-94
architecture of, 66
COM automation APIs, 70
ink controls, 421
installing, 72-79
integration with applications
application design, 463-469
business benefits, 462-463
InkPadJunior application (example), 491-499
performance considerations, 469-491
user benefits, 460-462
managed APIs, 69, 79-92
ink controls vs., 92
sample applications, 71
tablet input support, 109-163
second-order ink, 47
for complex written languages, 47
converting to text, 27
for spatial layout, 47
Secure Attention Sequence (SAS) functionality, 514
segmentation, ink, 350, 369
Segmentation property (RecognitionProperty class), 413
selecting ink. See ink selection
Selection events (InkOverlay class), 125
SelfIntersections property (Stroke class), 252, 257
SelInks property (InkEdit), 433
SelInksDisplayMode property (InkEdit), 434
sensitivity, defining area of, 43
serialization, 325-333
SetGestureStatus( ) (InkCollector, InkOverlay classes), 355
SetGestureStatus( ) (InkEdit), 444
SetObjectTransform( ) (Renderer class), 216
SetPacketValuesByProperty( ) (Stroke class), 259
SetPoint( ) (Stroke class), 249
SetPoints( ) (Stroke class), 249
SetStrokesResult( ) (RecognitionResult class), 412
SetViewTransform( ) (Renderer class), 216
Shear( ) (Stroke, Strokes classes), 276
shearing ink strokes, 276-281
simple-layout text documents, 52
single-layer resistive digitizers, 33
single-level undo feature, implementing, 466-468
size of packets (in bytes), 258
SizeMode setting (InkPicture), 452
sizing ink, 55
stroke transformations, 276-281
smoothing. See curve fitting
software guidelines, Tablet PC, 20
spatial hints, recognition (guides), 419
spatial layout, ink for, 47
speech recognition, 72
speed of common operations, 470-485
Split( ) (Stroke class), 311
splitting ink, 311-324
stand-alone tablet computers, 5
Start( ) (LassoUI class), 509
Status property (InkEdit), 427
still motion recognition, 41, 44
StopBackgroundRecognition( ) (RecognizerContent class), 390
StoragePerf.cs (example), 490-491
storing ink, 85
application integration, performance, 485-491
integration considerations, 464-465
performance, 490
recognition results, 412
speed of digital ink operations, 470-480
Stroke class, 90, 176-208
creating and deleting strokes, 193-208
drawing strokes to viewport. See Renderer class
identifier numbers for strokes, 179-186
Strokes collection and, 177
Stroke event, 121
stroke selection threshold, 55
stroke width, 56
StrokeChopper.cs (example), 312-324
StrokeDataViewer.cs (example), 263-275
StrokeIdViewer.cs (example), 180-185
StrokeIntersection structure, 253
strokes, ink, 245-281
bounding box, 246-248
cusps, retrieving, 260-263
hit-testing, 281-311
functions for, 284
InsertRemoveSpace.cs (example), 285-292
LassoUI.cs (example), 292-299
performance, 283
RealtimeLasso.cs (example), 299-311
intersections, computing, 251-257
managing application integration
memory and storage, 485-491
speed of digital ink operations, 470-480
retrieving and setting packet data, 258
retrieving points of, 248-251
sending to recognizer, 371
splitting and trimming, 311-324
StrokeDataViewer.cs (example), 263-275
transforming, 276-281
See also Stroke class; Strokes collection
Strokes collection, 91, 176-193
deleting all strokes of, 195
live (always current), 196
Stroke objects and, 177
Strokes property (RecognitionAlternate class), 392
Strokes property (RecognitionContext class), 371
StrokesAdded, StrokesDeleted events (Strokes collection), 187
StrokesDeleted, StrokesDeleting events (InkOverlay class), 125
StrokeWarper.cs (example), 277-281
stylus. See pen input
subtractive color models, 60
Suffix property (RecognizerContext class), 370
SupportHighContrastInk property (InkPicture, InkCollector, InkOverlay classes), 469
synchronizing pen and mouse events, 142, 172
synchronous (forward) recognition, 349-350, 372-383
SYSDICT factoid, 417
system gestures (pen actions), 50, 56, 98
detecting and differentiating, 105
hovering. See hovering
implementing modeless switching, 30, 162
recognition, performance and, 172
recognition with InkEdit, 435, 440-444
SystemGesture event, 123
targeting ink strokes. See hit-testing
See also application gestures
SystemGesture event, 122, 140
T
Tablet class, 89, 163
tablet computers
defined, 4, 6
hardware profile. See form factor
history of, 9
pen input. See pen input
portrait display orientation, 32
role of, 7
stand-alone vs. general-purpose, 5
usability studies, 26
tablet digitizer. See digitizer
tablet input. See mouse input; pen input; Tablet Input API
Tablet Input API (Pen API), 69, 83, 87-90
example application, 79
Tablet PC Platform, 18-23
integration with applications
application design, 463-469
business benefits, 462-463
InkPadJunior application (example), 491-499
performance considerations, 469-491
user benefits, 460-462
user research, 25-32
Tablet PC Platform SDK, 65-94
architecture of, 66
COM automation APIs, 70
ink controls, 421
installing, 72-79
managed APIs, 69, 79-92
ink controls vs., 92
sample applications, 71
tablet input support, 109-163
TabletAdded, TabletRemoved events, 124
TabletHardwareCapabilities enumeration, 164
TabletPropertyMetrics class, 164
Tablets collection, 89, 152, 163
tapping, 50
targeting ink strokes (hit-testing), 281-311
functions for, 284
InsertRemoveSpace.cs (example), 285-292
LassoUI.cs (example), 292-299
performance, 283
RealtimeLasso.cs (example), 299-311
targeting screen locations, 31, 42
TELEPHONE factoid, 417
text
converting ink to letters, 27
font size and resolution, 29
recognition. See ink recognition
toggling between ink and text (InkEdit control), 434
word-based lasso selection, 55
Thacker, Chuck, 20
thickness, ink, 56
tilt (pen), detecting, 35, 37
TIME factoid, 417
timing of InkEdit recognition, 438
ToolTips, using, 103, 105
top alternate, 391
TopAlternate property (RecognitionResult class), 391
TopConfidence property (RecognitionResult class), 391
TopInkBreaksOnly flag (RecognitionModes enumeration), 369
top-of-pen erase, detecting, 98, 155-159
TopOfPenErase.cs (example), 156-159
ToString( ) (Strokes class), 351-354, 367
touch pads, 36
TPCSDK10.chm help documentation, 78
Transform( ) (Stroke, Strokes classes), 276
transforming strokes, 276-281
translating ink strokes, 276-281
drag-and-drop, 341-345
transparency effects, 60, 229
Transparency property (DrawingAttributes class), 226, 242-243
trimming ink, 311-324
Trudeau, Garry, 14
two-dimensional canvas documents, 52
two-dimensional object-based documents, 53
two-dimensional text streams, 52
two-layer resistive digitizers, 34
types of pen, 225-240
U
undo feature, implementing, 466-468
memory requirements, 489
UPPERCHAR factoid, 417
usability studies, Tablet PCs, 25-44
application integration, 460-462
application usability, 27-31
lasso selection tool, 54
InkEdit control, 445
pen usability, 31, 42
handedness, 44
still motion, 41-44
refraction-induced parallax, 39
tablet usability, 26
UseMouseForInput property (InkEdit), 428
user interfaces, ink-based, 86
compensating for parallax, 41
correction UI, 350, 401-405
handedness, 44
inkable vs. non-inkable regions, 28
optimizing for pen interaction, 27, 460-461
portrait display orientation, 32
resolution concerns, 29
screen targeting and ink selection, 31, 42
still motion, recognizing, 41-44
See also screen
V
versions, ink controls, 422
view transformations (Renderer class), 215
viewing mode requirements, 513
viewport, 208
virtual keyboards, 18
virtual pens, 56
Visual Studio .NET settings for using SDK, 74
W
WEB factoid, 416
Web pads, 6
Width property (DrawingAttributes class), 226, 228
Windows for Pen Computing, 11-13
Windows Journal utility, 21
InkOverlay class vs., 120
pen types, 225-240
Windows XP Tablet PC Edition, 20
hardware guidelines, 511-514
Winlogon desktop support, 108
WinTab API, 101
Wisptis.exe executable, 79, 102-108
word lists for recognition context, 418
word recognition. See ink recognition
word-based lasso selection, 55
WORDLIST factoid, 417
WordList property (RecognizerContext class), 418
WordMode flag (RecognitionModes enumeration), 369
WordSelect.cs (example), 393-401
working with ink. See ink interaction
writing ink, pen styles for, 225
written languages, non-Latin-based, 47
character auto-complete (CAC) mode, 370, 419
ink segmentation, 350
X
X property (PacketProperty class), 143, 154
Y
Y property (PacketProperty class), 143, 154
Z
Zoomer, 15
zooming ink transformations, 215-225
Last Updated: September 4, 2002
|