Training
Certifications
Books
Special Offers
Community




 
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.
 

More Information

About the Book
Table of Contents
Sample Chapter
Index
Related Series
Related Books
About the Author

Support: Book & CD

Rate this book
Barnes Noble Amazon Quantum Books

 

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
Top of Page