[{"data":1,"prerenderedAt":1222},["ShallowReactive",2],{"navigation":3,"nav-sdk32":498,"docs-sdk-3.2-editor-rendering":691,"support-index":1153},[4],{"title":5,"path":6,"stem":7,"children":8,"page":40},"Docs","\u002Fdocs","docs",[9,242,320],{"title":10,"path":11,"stem":12,"children":13,"page":40},"Cloud","\u002Fdocs\u002Fcloud","docs\u002Fcloud",[14],{"title":15,"path":16,"stem":17,"children":18,"page":40},"4.5","\u002Fdocs\u002Fcloud\u002F4.5","docs\u002Fcloud\u002F4.5",[19,41,54,79,100,147,172,196,209,234],{"title":20,"path":21,"stem":22,"children":23,"page":40},"Overview","\u002Fdocs\u002Fcloud\u002F4.5\u002Foverview","docs\u002Fcloud\u002F4.5\u002F01.overview",[24,28,32,36],{"title":25,"path":26,"stem":27},"MyScript iink SDK for web-based platform","\u002Fdocs\u002Fcloud\u002F4.5\u002Foverview\u002Fintroduction","docs\u002Fcloud\u002F4.5\u002F01.overview\u002F01.introduction",{"title":29,"path":30,"stem":31},"Choosing between REST or WebSockets","\u002Fdocs\u002Fcloud\u002F4.5\u002Foverview\u002Fhttp-rest-or-websocket","docs\u002Fcloud\u002F4.5\u002F01.overview\u002F02.http-rest-or-websocket",{"title":33,"path":34,"stem":35},"What's new","\u002Fdocs\u002Fcloud\u002F4.5\u002Foverview\u002Fchangelog","docs\u002Fcloud\u002F4.5\u002F01.overview\u002F03.changelog",{"title":37,"path":38,"stem":39},"Migration guide","\u002Fdocs\u002Fcloud\u002F4.5\u002Foverview\u002Fmigration-guide","docs\u002Fcloud\u002F4.5\u002F01.overview\u002F04.migration-guide",false,{"title":42,"path":43,"stem":44,"children":45,"page":40},"Integration","\u002Fdocs\u002Fcloud\u002F4.5\u002Fintegration","docs\u002Fcloud\u002F4.5\u002F02.integration",[46,50],{"title":47,"path":48,"stem":49},"Supported platforms","\u002Fdocs\u002Fcloud\u002F4.5\u002Fintegration\u002Fplatforms","docs\u002Fcloud\u002F4.5\u002F02.integration\u002F01.platforms",{"title":51,"path":52,"stem":53},"Integration levels","\u002Fdocs\u002Fcloud\u002F4.5\u002Fintegration\u002Fintegration-levels","docs\u002Fcloud\u002F4.5\u002F02.integration\u002F02.integration-levels",{"title":55,"path":56,"stem":57,"children":58,"page":40},"Recognition capabilities","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities",[59,63,67,71,75],{"title":60,"path":61,"stem":62},"Recognizers","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities\u002Frecognizers","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities\u002F01.recognizers",{"title":64,"path":65,"stem":66},"Text languages and features","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities\u002Ftext-languages","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities\u002F02.text-languages",{"title":68,"path":69,"stem":70},"Math elements and rules","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities\u002Fmath-elements-and-rules","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities\u002F03.math-elements-and-rules",{"title":72,"path":73,"stem":74},"Shapes and connectors","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities\u002Fdiagram-features","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities\u002F04.diagram-features",{"title":76,"path":77,"stem":78},"Gestures","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities\u002Fgestures","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities\u002F05.gestures",{"title":80,"path":81,"stem":82,"children":83,"page":40},"Interactivity integration","\u002Fdocs\u002Fcloud\u002F4.5\u002Finteractivity-integration","docs\u002Fcloud\u002F4.5\u002F04.interactivity-integration",[84,88,92,96],{"title":85,"path":86,"stem":87},"Content types","\u002Fdocs\u002Fcloud\u002F4.5\u002Finteractivity-integration\u002Fcontent-types","docs\u002Fcloud\u002F4.5\u002F04.interactivity-integration\u002F01.content-types",{"title":89,"path":90,"stem":91},"Interactive features","\u002Fdocs\u002Fcloud\u002F4.5\u002Finteractivity-integration\u002Finteractive-features","docs\u002Fcloud\u002F4.5\u002F04.interactivity-integration\u002F02.interactive-features",{"title":93,"path":94,"stem":95},"Import and export formats","\u002Fdocs\u002Fcloud\u002F4.5\u002Finteractivity-integration\u002Fimport-and-export-formats","docs\u002Fcloud\u002F4.5\u002F04.interactivity-integration\u002F03.import-and-export-formats",{"title":97,"path":98,"stem":99},"Math interactive features","\u002Fdocs\u002Fcloud\u002F4.5\u002Finteractivity-integration\u002Fmath-features","docs\u002Fcloud\u002F4.5\u002F04.interactivity-integration\u002F04.math-features",{"title":101,"path":102,"stem":103,"children":104,"page":40},"iinkTS","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts","docs\u002Fcloud\u002F4.5\u002F05.iinkts",[105,109,113,121,138],{"title":106,"path":107,"stem":108},"Getting started","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Fget-started","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F01.get-started",{"title":110,"path":111,"stem":112},"Canvas","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Fcanvas","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F02.canvas",{"title":114,"path":115,"stem":116,"children":117,"page":40},"Ink Canvas","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Fink-canvas","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F03.ink-canvas",[118],{"title":114,"path":119,"stem":120},"\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Fink-canvas\u002Fink-canvas","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F03.ink-canvas\u002F01.ink-canvas",{"title":122,"path":123,"stem":124,"children":125,"page":40},"Interactive Ink Canvas","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Finteractive-ink-canvas","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F04.interactive-ink-canvas",[126,130,134],{"title":127,"path":128,"stem":129},"Interactive ink canvas","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Finteractive-ink-canvas\u002Finteractive-ink-canvas","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F04.interactive-ink-canvas\u002F01.interactive-ink-canvas",{"title":131,"path":132,"stem":133},"Interactive Math","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Finteractive-ink-canvas\u002Fiicanvas-math","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F04.interactive-ink-canvas\u002F02.iicanvas-math",{"title":135,"path":136,"stem":137},"Using a custom rendering","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Finteractive-ink-canvas\u002Fiicanvas-other-rendering","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F04.interactive-ink-canvas\u002F03.iicanvas-other-rendering",{"title":139,"path":140,"stem":141,"children":142,"page":40},"Reference","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Freference","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F05.reference",[143],{"title":144,"path":145,"stem":146},"Configuration","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Freference\u002Fconfiguration-iinkts","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F05.reference\u002F01.configuration-iinkts",{"title":148,"path":149,"stem":150,"children":151,"page":40},"REST","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest","docs\u002Fcloud\u002F4.5\u002F06.rest",[152,156,160,164,168],{"title":153,"path":154,"stem":155},"MyScript iink SDK Web REST Overview","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest\u002Farchitecture","docs\u002Fcloud\u002F4.5\u002F06.rest\u002F01.architecture",{"title":157,"path":158,"stem":159},"MyScript iink SDK Web REST Recognizer API","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest\u002Fnew-api","docs\u002Fcloud\u002F4.5\u002F06.rest\u002F02.new-api",{"title":161,"path":162,"stem":163},"Recognizer configuration","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest\u002Fconfiguration-recognizer-rest","docs\u002Fcloud\u002F4.5\u002F06.rest\u002F03.configuration-recognizer-rest",{"title":165,"path":166,"stem":167},"MyScript iink SDK Web REST Batch API","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest\u002Flegacy-api","docs\u002Fcloud\u002F4.5\u002F06.rest\u002F04.legacy-api",{"title":169,"path":170,"stem":171},"Batch configuration","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest\u002Fconfiguration-rest","docs\u002Fcloud\u002F4.5\u002F06.rest\u002F05.configuration-rest",{"title":173,"path":174,"stem":175,"children":176,"page":40},"WebSockets","\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets","docs\u002Fcloud\u002F4.5\u002F07.websockets",[177,181,185,189,193],{"title":178,"path":179,"stem":180},"MyScript iink SDK WebSockets API architecture","\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets\u002Farchitecture","docs\u002Fcloud\u002F4.5\u002F07.websockets\u002F01.architecture",{"title":182,"path":183,"stem":184},"Offscreen interactivity mode messages","\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets\u002Fmessages-offscreen","docs\u002Fcloud\u002F4.5\u002F07.websockets\u002F02.messages-offscreen",{"title":186,"path":187,"stem":188},"Offscreen interactivity math messages","\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets\u002Fmath-offscreen","docs\u002Fcloud\u002F4.5\u002F07.websockets\u002F03.math-offscreen",{"title":190,"path":191,"stem":192},"Onscreen interactivity mode messages","\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets\u002Fmessages-onscreen","docs\u002Fcloud\u002F4.5\u002F07.websockets\u002F04.messages-onscreen",{"title":144,"path":194,"stem":195},"\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets\u002Fconfiguration-ws","docs\u002Fcloud\u002F4.5\u002F07.websockets\u002F05.configuration-ws",{"title":197,"path":198,"stem":199,"children":200,"page":40},"Specific","\u002Fdocs\u002Fcloud\u002F4.5\u002Fspecific","docs\u002Fcloud\u002F4.5\u002F08.specific",[201,205],{"title":202,"path":203,"stem":204},"Text recognition candidates","\u002Fdocs\u002Fcloud\u002F4.5\u002Fspecific\u002Ftext-recognition-candidates","docs\u002Fcloud\u002F4.5\u002F08.specific\u002F01.text-recognition-candidates",{"title":206,"path":207,"stem":208},"Recognition resources","\u002Fdocs\u002Fcloud\u002F4.5\u002Fspecific\u002Fcustom-recognition","docs\u002Fcloud\u002F4.5\u002F08.specific\u002F02.custom-recognition",{"title":210,"path":211,"stem":212,"children":213,"page":40},"Server","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver","docs\u002Fcloud\u002F4.5\u002F09.server",[214,218,222,226,230],{"title":215,"path":216,"stem":217},"MyScript Server Installation Preamble and Prerequisites","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver\u002Fpreamble-prerequisites","docs\u002Fcloud\u002F4.5\u002F09.server\u002F01.preamble-prerequisites",{"title":219,"path":220,"stem":221},"MyScript Server Monoserver Installation Documentation","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver\u002Fmonoserver-installation","docs\u002Fcloud\u002F4.5\u002F09.server\u002F02.monoserver-installation",{"title":223,"path":224,"stem":225},"MyScript Server Production Installation Documentation","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver\u002Fproduction-installation","docs\u002Fcloud\u002F4.5\u002F09.server\u002F03.production-installation",{"title":227,"path":228,"stem":229},"MyScript Server Migration Guide","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver\u002Fserver-migration-guide","docs\u002Fcloud\u002F4.5\u002F09.server\u002F04.server-migration-guide",{"title":231,"path":232,"stem":233},"MyScript Server Administration Guide","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver\u002Fadministration-guide","docs\u002Fcloud\u002F4.5\u002F09.server\u002F05.administration-guide",{"title":139,"path":235,"stem":236,"children":237,"page":40},"\u002Fdocs\u002Fcloud\u002F4.5\u002Freference","docs\u002Fcloud\u002F4.5\u002F10.reference",[238],{"title":239,"path":240,"stem":241},"JIIX format reference","\u002Fdocs\u002Fcloud\u002F4.5\u002Freference\u002Fjiix","docs\u002Fcloud\u002F4.5\u002F10.reference\u002F01.jiix",{"title":243,"path":244,"stem":245,"children":246,"page":40},"Concepts","\u002Fdocs\u002Fconcepts","docs\u002Fconcepts",[247,250,254],{"title":20,"path":248,"stem":249},"\u002Fdocs\u002Fconcepts\u002Foverview","docs\u002Fconcepts\u002F01.overview",{"title":251,"path":252,"stem":253},"Glossary","\u002Fdocs\u002Fconcepts\u002Fglossary","docs\u002Fconcepts\u002F02.glossary",{"title":255,"path":256,"stem":257,"children":258,"page":40},"Fundamentals","\u002Fdocs\u002Fconcepts\u002Ffundamentals","docs\u002Fconcepts\u002F03.fundamentals",[259,263,292,312],{"title":260,"path":261,"stem":262},"OCR vs digital ink recognition","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fdigital-ink-vs-ocr","docs\u002Fconcepts\u002F03.fundamentals\u002F01.digital-ink-vs-ocr",{"title":264,"path":265,"stem":266,"children":267,"page":40},"Ink interpretation","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation",[268,272,276,280,284,288],{"title":269,"path":270,"stem":271},"Ink processing","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Fink-interpretation","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F01.ink-interpretation",{"title":273,"path":274,"stem":275},"Recognition features","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Fcontent-types","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F02.content-types",{"title":277,"path":278,"stem":279},"Ink classification","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Fink-classification","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F03.ink-classification",{"title":281,"path":282,"stem":283},"What are batch mode and incremental mode?","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Fbatch-mode","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F04.batch-mode",{"title":285,"path":286,"stem":287},"Gestures and context","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Fcontext-gestures","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F05.context-gestures",{"title":289,"path":290,"stem":291},"What is interactivity","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Finteractive-ink","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F06.interactive-ink",{"title":293,"path":294,"stem":295,"children":296,"page":40},"Rendering-driven interactivity","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Frendering-driven-interactivity","docs\u002Fconcepts\u002F03.fundamentals\u002F03.rendering-driven-interactivity",[297,301,304,308],{"title":298,"path":299,"stem":300},"Ink capture","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Frendering-driven-interactivity\u002Fink-capture","docs\u002Fconcepts\u002F03.fundamentals\u002F03.rendering-driven-interactivity\u002F01.ink-capture",{"title":76,"path":302,"stem":303},"\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Frendering-driven-interactivity\u002Fediting-gestures","docs\u002Fconcepts\u002F03.fundamentals\u002F03.rendering-driven-interactivity\u002F02.editing-gestures",{"title":305,"path":306,"stem":307},"Smart tools","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Frendering-driven-interactivity\u002Fsmart-tools","docs\u002Fconcepts\u002F03.fundamentals\u002F03.rendering-driven-interactivity\u002F03.smart-tools",{"title":309,"path":310,"stem":311},"Responsive and productive","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Frendering-driven-interactivity\u002Fresponsive-layout","docs\u002Fconcepts\u002F03.fundamentals\u002F03.rendering-driven-interactivity\u002F04.responsive-layout",{"title":313,"path":314,"stem":315,"children":316,"page":40},"Handwriting generation","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fhandwriting-generation","docs\u002Fconcepts\u002F03.fundamentals\u002F04.handwriting-generation",[317],{"title":313,"path":318,"stem":319},"\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fhandwriting-generation\u002Fhandwriting-generation","docs\u002Fconcepts\u002F03.fundamentals\u002F04.handwriting-generation\u002F01.handwriting-generation",{"title":321,"path":322,"stem":323,"children":324,"page":40},"Sdk","\u002Fdocs\u002Fsdk","docs\u002Fsdk",[325],{"title":15,"path":326,"stem":327,"children":328,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5","docs\u002Fsdk\u002F4.5",[329,333,336,339,349,368,381,393,401,417,426,463,467,470,474,477,484],{"title":330,"path":331,"stem":332},"About MyScript iink SDK","\u002Fdocs\u002Fsdk\u002F4.5\u002Fabout","docs\u002Fsdk\u002F4.5\u002F01.about",{"title":33,"path":334,"stem":335},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fchangelog","docs\u002Fsdk\u002F4.5\u002F02.changelog",{"title":37,"path":337,"stem":338},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fmigration-guide","docs\u002Fsdk\u002F4.5\u002F03.migration-guide",{"title":42,"path":340,"stem":341,"children":342,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fintegration","docs\u002Fsdk\u002F4.5\u002F04.integration",[343,346],{"title":47,"path":344,"stem":345},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fintegration\u002Fplatforms","docs\u002Fsdk\u002F4.5\u002F04.integration\u002F01.platforms",{"title":51,"path":347,"stem":348},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fintegration\u002Fintegration-levels","docs\u002Fsdk\u002F4.5\u002F04.integration\u002F02.integration-levels",{"title":55,"path":350,"stem":351,"children":352,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities",[353,356,359,362,365],{"title":60,"path":354,"stem":355},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities\u002Frecognizers","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities\u002F01.recognizers",{"title":64,"path":357,"stem":358},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities\u002Ftext-languages","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities\u002F02.text-languages",{"title":68,"path":360,"stem":361},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities\u002Fmath-elements-and-rules","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities\u002F03.math-elements-and-rules",{"title":72,"path":363,"stem":364},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities\u002Fdiagram-features","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities\u002F04.diagram-features",{"title":76,"path":366,"stem":367},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities\u002Fgestures","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities\u002F05.gestures",{"title":80,"path":369,"stem":370,"children":371,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity-integration","docs\u002Fsdk\u002F4.5\u002F06.interactivity-integration",[372,375,378],{"title":85,"path":373,"stem":374},"\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity-integration\u002Fcontent-types","docs\u002Fsdk\u002F4.5\u002F06.interactivity-integration\u002F01.content-types",{"title":89,"path":376,"stem":377},"\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity-integration\u002Finteractive-features","docs\u002Fsdk\u002F4.5\u002F06.interactivity-integration\u002F02.interactive-features",{"title":93,"path":379,"stem":380},"\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity-integration\u002Fimport-and-export-formats","docs\u002Fsdk\u002F4.5\u002F06.interactivity-integration\u002F03.import-and-export-formats",{"title":106,"path":382,"stem":383,"children":384,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fgetting-started","docs\u002Fsdk\u002F4.5\u002F07.getting-started",[385,389],{"title":386,"path":387,"stem":388},"Setup","\u002Fdocs\u002Fsdk\u002F4.5\u002Fgetting-started\u002Fsetup","docs\u002Fsdk\u002F4.5\u002F07.getting-started\u002F01.setup",{"title":390,"path":391,"stem":392},"Instantiate Engine","\u002Fdocs\u002Fsdk\u002F4.5\u002Fgetting-started\u002Finteractive-ink-runtime","docs\u002Fsdk\u002F4.5\u002F07.getting-started\u002F02.interactive-ink-runtime",{"title":394,"path":395,"stem":396,"children":397,"page":40},"Recognizer","\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognizer","docs\u002Fsdk\u002F4.5\u002F08.recognizer",[398],{"title":60,"path":399,"stem":400},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognizer\u002Frecognizers","docs\u002Fsdk\u002F4.5\u002F08.recognizer\u002F01.recognizers",{"title":402,"path":403,"stem":404,"children":405,"page":40},"Interactivity specific","\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity","docs\u002Fsdk\u002F4.5\u002F09.interactivity",[406,410,413],{"title":407,"path":408,"stem":409},"Storage","\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity\u002Fstorage","docs\u002Fsdk\u002F4.5\u002F09.interactivity\u002F01.storage",{"title":97,"path":411,"stem":412},"\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity\u002Fmath-features","docs\u002Fsdk\u002F4.5\u002F09.interactivity\u002F02.math-features",{"title":414,"path":415,"stem":416},"Integrate with the undo\u002Fredo stack of your application","\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity\u002Fcombined-undo-redo-stacks","docs\u002Fsdk\u002F4.5\u002F09.interactivity\u002F03.combined-undo-redo-stacks",{"title":418,"path":419,"stem":420,"children":421,"page":40},"OffScreenEditor specific","\u002Fdocs\u002Fsdk\u002F4.5\u002Foffscreen-editor","docs\u002Fsdk\u002F4.5\u002F10.offscreen-editor",[422],{"title":423,"path":424,"stem":425},"OffscreenEditor","\u002Fdocs\u002Fsdk\u002F4.5\u002Foffscreen-editor\u002Foff-screen-usage","docs\u002Fsdk\u002F4.5\u002F10.offscreen-editor\u002F01.off-screen-usage",{"title":427,"path":428,"stem":429,"children":430,"page":40},"Editor specific","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor","docs\u002Fsdk\u002F4.5\u002F11.editor",[431,435,439,443,447,451,455,459],{"title":432,"path":433,"stem":434},"Rendering","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Frendering","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F01.rendering",{"title":436,"path":437,"stem":438},"Editing","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fediting","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F02.editing",{"title":440,"path":441,"stem":442},"Tool controller","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Ftool-controller","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F03.tool-controller",{"title":444,"path":445,"stem":446},"Selection and block","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fblock-selection-management","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F04.block-selection-management",{"title":448,"path":449,"stem":450},"Conversion","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fconversion","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F05.conversion",{"title":452,"path":453,"stem":454},"Zooming and scrolling","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fzooming-and-scrolling","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F06.zooming-and-scrolling",{"title":456,"path":457,"stem":458},"Styling","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fstyling","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F07.styling",{"title":460,"path":461,"stem":462},"Custom inking","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fcustom-inking","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F08.custom-inking",{"title":464,"path":465,"stem":466},"Result, import and export","\u002Fdocs\u002Fsdk\u002F4.5\u002Fimport-and-export","docs\u002Fsdk\u002F4.5\u002F12.import-and-export",{"title":202,"path":468,"stem":469},"\u002Fdocs\u002Fsdk\u002F4.5\u002Ftext-recognition-candidates","docs\u002Fsdk\u002F4.5\u002F13.text-recognition-candidates",{"title":471,"path":472,"stem":473},"Error management","\u002Fdocs\u002Fsdk\u002F4.5\u002Ferror-management","docs\u002Fsdk\u002F4.5\u002F14.error-management",{"title":206,"path":475,"stem":476},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fcustom-recognition","docs\u002Fsdk\u002F4.5\u002F15.custom-recognition",{"title":313,"path":478,"stem":479,"children":480,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fhandwriting-generation","docs\u002Fsdk\u002F4.5\u002F16.handwriting-generation",[481],{"title":313,"path":482,"stem":483},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fhandwriting-generation\u002Fhandwriting-generation","docs\u002Fsdk\u002F4.5\u002F16.handwriting-generation\u002F01.handwriting-generation",{"title":139,"path":485,"stem":486,"children":487,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Freference","docs\u002Fsdk\u002F4.5\u002F17.reference",[488,491,494],{"title":144,"path":489,"stem":490},"\u002Fdocs\u002Fsdk\u002F4.5\u002Freference\u002Fconfiguration","docs\u002Fsdk\u002F4.5\u002F17.reference\u002F01.configuration",{"title":239,"path":492,"stem":493},"\u002Fdocs\u002Fsdk\u002F4.5\u002Freference\u002Fjiix","docs\u002Fsdk\u002F4.5\u002F17.reference\u002F02.jiix",{"title":495,"path":496,"stem":497},"Styling reference","\u002Fdocs\u002Fsdk\u002F4.5\u002Freference\u002Fstyling","docs\u002Fsdk\u002F4.5\u002F17.reference\u002F03.styling",[499],{"title":5,"path":6,"stem":7,"children":500,"page":40},[501],{"title":321,"path":322,"stem":323,"children":502,"page":40},[503],{"title":504,"navTitle":505,"icon":505,"path":506,"stem":507,"children":508,"page":40},"3.2",null,"\u002Fdocs\u002Fsdk\u002F3.2","docs\u002Fsdk\u002F3.2",[509,514,519,523,536,560,581,592,599,616,624,660,663,667,671,675],{"title":330,"path":510,"stem":511,"navTitle":512,"icon":513},"\u002Fdocs\u002Fsdk\u002F3.2\u002Fabout","docs\u002Fsdk\u002F3.2\u002F01.about","About","i-tabler-info-circle",{"title":515,"path":516,"stem":517,"navTitle":33,"icon":518},"New in 3.2","\u002Fdocs\u002Fsdk\u002F3.2\u002Fchangelog","docs\u002Fsdk\u002F3.2\u002F02.changelog","i-tabler-bell-ringing",{"title":37,"path":520,"stem":521,"navTitle":37,"icon":522},"\u002Fdocs\u002Fsdk\u002F3.2\u002Fmigration-guide","docs\u002Fsdk\u002F3.2\u002F03.migration-guide","i-tabler-gps",{"title":42,"navTitle":505,"icon":505,"path":524,"stem":525,"children":526,"page":40},"\u002Fdocs\u002Fsdk\u002F3.2\u002Fintegration","docs\u002Fsdk\u002F3.2\u002F04.integration",[527,532],{"title":47,"path":528,"stem":529,"navTitle":530,"icon":531},"\u002Fdocs\u002Fsdk\u002F3.2\u002Fintegration\u002Fplatforms","docs\u002Fsdk\u002F3.2\u002F04.integration\u002F01.platforms","Platforms","i-tabler-device-laptop",{"title":51,"path":533,"stem":534,"navTitle":51,"icon":535},"\u002Fdocs\u002Fsdk\u002F3.2\u002Fintegration\u002Fintegration-levels","docs\u002Fsdk\u002F3.2\u002F04.integration\u002F02.integration-levels","i-tabler-stack-2",{"title":55,"navTitle":505,"icon":505,"path":537,"stem":538,"children":539,"page":40},"\u002Fdocs\u002Fsdk\u002F3.2\u002Frecognition-capabilities","docs\u002Fsdk\u002F3.2\u002F05.recognition-capabilities",[540,544,548,552,556],{"title":60,"path":541,"stem":542,"navTitle":505,"icon":543},"\u002Fdocs\u002Fsdk\u002F3.2\u002Frecognition-capabilities\u002Frecognizers","docs\u002Fsdk\u002F3.2\u002F05.recognition-capabilities\u002F01.recognizers","i-tabler-text-scan-2",{"title":64,"path":545,"stem":546,"navTitle":64,"icon":547},"\u002Fdocs\u002Fsdk\u002F3.2\u002Frecognition-capabilities\u002Ftext-languages","docs\u002Fsdk\u002F3.2\u002F05.recognition-capabilities\u002F02.text-languages","i-tabler-language",{"title":68,"path":549,"stem":550,"navTitle":68,"icon":551},"\u002Fdocs\u002Fsdk\u002F3.2\u002Frecognition-capabilities\u002Fmath-elements-and-rules","docs\u002Fsdk\u002F3.2\u002F05.recognition-capabilities\u002F03.math-elements-and-rules","i-tabler-math",{"title":72,"path":553,"stem":554,"navTitle":72,"icon":555},"\u002Fdocs\u002Fsdk\u002F3.2\u002Frecognition-capabilities\u002Fdiagram-features","docs\u002Fsdk\u002F3.2\u002F05.recognition-capabilities\u002F04.diagram-features","i-tabler-circle-square",{"title":76,"path":557,"stem":558,"navTitle":505,"icon":559},"\u002Fdocs\u002Fsdk\u002F3.2\u002Frecognition-capabilities\u002Fgestures","docs\u002Fsdk\u002F3.2\u002F05.recognition-capabilities\u002F05.gestures","i-tabler-hand-finger",{"title":80,"navTitle":505,"icon":505,"path":561,"stem":562,"children":563,"page":40},"\u002Fdocs\u002Fsdk\u002F3.2\u002Finteractivity-integration","docs\u002Fsdk\u002F3.2\u002F06.interactivity-integration",[564,568,572,577],{"title":85,"path":565,"stem":566,"navTitle":85,"icon":567},"\u002Fdocs\u002Fsdk\u002F3.2\u002Finteractivity-integration\u002Fcontent-types","docs\u002Fsdk\u002F3.2\u002F06.interactivity-integration\u002F01.content-types","i-tabler-eye",{"title":89,"path":569,"stem":570,"navTitle":89,"icon":571},"\u002Fdocs\u002Fsdk\u002F3.2\u002Finteractivity-integration\u002Finteractive-features","docs\u002Fsdk\u002F3.2\u002F06.interactivity-integration\u002F02.interactive-features","i-tabler-bolt",{"title":93,"path":573,"stem":574,"navTitle":575,"icon":576},"\u002Fdocs\u002Fsdk\u002F3.2\u002Finteractivity-integration\u002Fimport-and-export-formats","docs\u002Fsdk\u002F3.2\u002F06.interactivity-integration\u002F03.import-and-export-formats","Import and export","i-tabler-arrows-left-right",{"title":97,"path":578,"stem":579,"navTitle":97,"icon":580},"\u002Fdocs\u002Fsdk\u002F3.2\u002Finteractivity-integration\u002Fmath-features","docs\u002Fsdk\u002F3.2\u002F06.interactivity-integration\u002F04.math-features","i-tabler-calculator",{"title":106,"navTitle":505,"icon":505,"path":582,"stem":583,"children":584,"page":40},"\u002Fdocs\u002Fsdk\u002F3.2\u002Fgetting-started","docs\u002Fsdk\u002F3.2\u002F07.getting-started",[585,589],{"title":386,"path":586,"stem":587,"navTitle":505,"icon":588},"\u002Fdocs\u002Fsdk\u002F3.2\u002Fgetting-started\u002Fsetup","docs\u002Fsdk\u002F3.2\u002F07.getting-started\u002F01.setup","i-tabler-direction-sign",{"title":390,"path":590,"stem":591,"navTitle":505,"icon":588},"\u002Fdocs\u002Fsdk\u002F3.2\u002Fgetting-started\u002Finteractive-ink-runtime","docs\u002Fsdk\u002F3.2\u002F07.getting-started\u002F02.interactive-ink-runtime",{"title":394,"navTitle":505,"icon":505,"path":593,"stem":594,"children":595,"page":40},"\u002Fdocs\u002Fsdk\u002F3.2\u002Frecognizer","docs\u002Fsdk\u002F3.2\u002F08.recognizer",[596],{"title":60,"path":597,"stem":598,"navTitle":505,"icon":543},"\u002Fdocs\u002Fsdk\u002F3.2\u002Frecognizer\u002Frecognizers","docs\u002Fsdk\u002F3.2\u002F08.recognizer\u002F01.recognizers",{"title":402,"navTitle":505,"icon":505,"path":600,"stem":601,"children":602,"page":40},"\u002Fdocs\u002Fsdk\u002F3.2\u002Finteractivity","docs\u002Fsdk\u002F3.2\u002F09.interactivity",[603,607,611],{"title":604,"path":605,"stem":606,"navTitle":505,"icon":547},"Non-interactive languages","\u002Fdocs\u002Fsdk\u002F3.2\u002Finteractivity\u002Fnon-interactive-languages","docs\u002Fsdk\u002F3.2\u002F09.interactivity\u002F01.non-interactive-languages",{"title":407,"path":608,"stem":609,"navTitle":505,"icon":610},"\u002Fdocs\u002Fsdk\u002F3.2\u002Finteractivity\u002Fstorage","docs\u002Fsdk\u002F3.2\u002F09.interactivity\u002F02.storage","i-tabler-file-database",{"title":414,"path":612,"stem":613,"navTitle":614,"icon":615},"\u002Fdocs\u002Fsdk\u002F3.2\u002Finteractivity\u002Fcombined-undo-redo-stacks","docs\u002Fsdk\u002F3.2\u002F09.interactivity\u002F03.combined-undo-redo-stacks","Combined undo\u002Fredo stacks","i-tabler-arrow-back-up",{"title":418,"navTitle":505,"icon":505,"path":617,"stem":618,"children":619,"page":40},"\u002Fdocs\u002Fsdk\u002F3.2\u002Foffscreen-editor","docs\u002Fsdk\u002F3.2\u002F10.offscreen-editor",[620],{"title":423,"path":621,"stem":622,"navTitle":505,"icon":623},"\u002Fdocs\u002Fsdk\u002F3.2\u002Foffscreen-editor\u002Foff-screen-usage","docs\u002Fsdk\u002F3.2\u002F10.offscreen-editor\u002F01.off-screen-usage","i-tabler-stack-backward",{"title":427,"navTitle":505,"icon":505,"path":625,"stem":626,"children":627,"page":40},"\u002Fdocs\u002Fsdk\u002F3.2\u002Feditor","docs\u002Fsdk\u002F3.2\u002F11.editor",[628,632,636,640,644,648,652,656],{"title":432,"path":629,"stem":630,"navTitle":505,"icon":631},"\u002Fdocs\u002Fsdk\u002F3.2\u002Feditor\u002Frendering","docs\u002Fsdk\u002F3.2\u002F11.editor\u002F01.rendering","i-tabler-app-window",{"title":436,"path":633,"stem":634,"navTitle":505,"icon":635},"\u002Fdocs\u002Fsdk\u002F3.2\u002Feditor\u002Fediting","docs\u002Fsdk\u002F3.2\u002F11.editor\u002F02.editing","i-tabler-edit",{"title":440,"path":637,"stem":638,"navTitle":505,"icon":639},"\u002Fdocs\u002Fsdk\u002F3.2\u002Feditor\u002Ftool-controller","docs\u002Fsdk\u002F3.2\u002F11.editor\u002F03.tool-controller","i-tabler-adjustments",{"title":444,"path":641,"stem":642,"navTitle":505,"icon":643},"\u002Fdocs\u002Fsdk\u002F3.2\u002Feditor\u002Fblock-selection-management","docs\u002Fsdk\u002F3.2\u002F11.editor\u002F04.block-selection-management","i-tabler-pointer",{"title":448,"path":645,"stem":646,"navTitle":505,"icon":647},"\u002Fdocs\u002Fsdk\u002F3.2\u002Feditor\u002Fconversion","docs\u002Fsdk\u002F3.2\u002F11.editor\u002F05.conversion","i-tabler-sparkles",{"title":452,"path":649,"stem":650,"navTitle":505,"icon":651},"\u002Fdocs\u002Fsdk\u002F3.2\u002Feditor\u002Fzooming-and-scrolling","docs\u002Fsdk\u002F3.2\u002F11.editor\u002F06.zooming-and-scrolling","i-tabler-zoom-pan",{"title":456,"path":653,"stem":654,"navTitle":505,"icon":655},"\u002Fdocs\u002Fsdk\u002F3.2\u002Feditor\u002Fstyling","docs\u002Fsdk\u002F3.2\u002F11.editor\u002F07.styling","i-tabler-palette",{"title":460,"path":657,"stem":658,"navTitle":505,"icon":659},"\u002Fdocs\u002Fsdk\u002F3.2\u002Feditor\u002Fcustom-inking","docs\u002Fsdk\u002F3.2\u002F11.editor\u002F08.custom-inking","i-tabler-brush",{"title":464,"path":661,"stem":662,"navTitle":505,"icon":576},"\u002Fdocs\u002Fsdk\u002F3.2\u002Fimport-and-export","docs\u002Fsdk\u002F3.2\u002F12.import-and-export",{"title":202,"path":664,"stem":665,"navTitle":505,"icon":666},"\u002Fdocs\u002Fsdk\u002F3.2\u002Ftext-recognition-candidates","docs\u002Fsdk\u002F3.2\u002F13.text-recognition-candidates","i-tabler-tags",{"title":471,"path":668,"stem":669,"navTitle":505,"icon":670},"\u002Fdocs\u002Fsdk\u002F3.2\u002Ferror-management","docs\u002Fsdk\u002F3.2\u002F14.error-management","i-tabler-bug",{"title":206,"path":672,"stem":673,"navTitle":505,"icon":674},"\u002Fdocs\u002Fsdk\u002F3.2\u002Fcustom-recognition","docs\u002Fsdk\u002F3.2\u002F15.custom-recognition","i-tabler-file-code",{"title":139,"navTitle":505,"icon":505,"path":676,"stem":677,"children":678,"page":40},"\u002Fdocs\u002Fsdk\u002F3.2\u002Freference","docs\u002Fsdk\u002F3.2\u002F16.reference",[679,683,688],{"title":144,"path":680,"stem":681,"navTitle":505,"icon":682},"\u002Fdocs\u002Fsdk\u002F3.2\u002Freference\u002Fconfiguration","docs\u002Fsdk\u002F3.2\u002F16.reference\u002F01.configuration","i-tabler-settings",{"title":239,"path":684,"stem":685,"navTitle":686,"icon":687},"\u002Fdocs\u002Fsdk\u002F3.2\u002Freference\u002Fjiix","docs\u002Fsdk\u002F3.2\u002F16.reference\u002F02.jiix","JIIX","i-tabler-braces",{"title":495,"path":689,"stem":690,"navTitle":456,"icon":655},"\u002Fdocs\u002Fsdk\u002F3.2\u002Freference\u002Fstyling","docs\u002Fsdk\u002F3.2\u002F16.reference\u002F03.styling",{"path":629,"page":692},{"id":693,"title":432,"body":694,"canonicalPath":433,"description":1145,"extension":1146,"icon":631,"meta":1147,"navTitle":505,"navigation":1148,"path":629,"resolveKey":1149,"resolveVersion":1150,"seo":1151,"stem":630,"__hash__":1152},"sdk32\u002Fdocs\u002Fsdk\u002F3.2\u002F11.editor\u002F01.rendering.md",{"type":695,"value":696,"toc":1132},"minimark",[697,701,706,715,720,749,752,774,778,787,793,851,855,862,870,873,889,892,896,899,919,935,939,949,954,1036,1040,1125],[698,699,700],"p",{},"This page provides an introduction to the way iink SDK manages the rendering.\nYou will learn how to use the reference implementation provided by MyScript and properly plug things together.",[702,703,705],"h2",{"id":704},"key-concepts","Key concepts",[698,707,708,709,714],{},"With these concepts, you will be able to better understand how to use the ",[710,711,713],"a",{"href":712},"#reference-implementation","reference rendering implementation"," or build your own (not\ndocumented yet).",[716,717,719],"h3",{"id":718},"render-target","Render target",[721,722,723,740],"partial",{},[724,725,727],"template",{"v-slot:swift":726},"",[698,728,729,730,734,735,739],{},"A ",[731,732,733],"strong",{},"render target"," (adopting the ",[736,737,738],"code",{},"IINKIRenderTarget"," protocol) represents the platform \"view\" where the drawing operations will occur.",[698,741,729,742,744,745,748],{},[731,743,733],{}," (implementing the ",[736,746,747],{},"IRenderTarget"," interface) represents the platform \"view\" where the drawing operations will occur.",[716,750,110],{"id":751},"canvas",[721,753,754,765],{},[724,755,756],{"v-slot:swift":726},[698,757,729,758,760,761,764],{},[731,759,751],{}," object provides a platform implementation of the drawing commands called by iink SDK to render content. It is defined by the ",[736,762,763],{},"IINKICanvas"," protocol.",[698,766,729,767,769,770,773],{},[731,768,751],{}," object provides a platform implementation of the drawing commands called by iink SDK to render content. It is defined in the ",[736,771,772],{},"ICanvas"," interface.",[716,775,777],{"id":776},"renderer","Renderer",[698,779,729,780,782,783,786],{},[731,781,776],{}," is a component in charge of deciding how to render content of each layer, knowing which area of the model needs to be refreshed, as well as\nparameters such as ",[710,784,785],{"href":649},"zoom factor or view offset",". It will issue rendering commands, through a canvas object that will do the actual\ndrawing operations.",[698,788,789,790,792],{},"Version 1.4 introduced a new rendering capacity for the ",[731,791,776],{}," based on the drawing of offscreen surfaces.\nThis increases the rendering speed and is even necessary for new features like math animation. So it is definitively our recommended choice.",[721,794,795,816,839,847],{},[724,796,797,810],{"v-slot:swift":726},[698,798,799,800,802,803,805,806,809],{},"To use this rendering, you must adopt the ",[736,801,738],{}," and ",[736,804,763],{}," protocols, or use the ones provided with ",[710,807,808],{"href":712},"the reference implementation",", to handle the drawing requests of offscreen surfaces.",[698,811,812,813,815],{},"The iink SDK 3.2 ",[731,814,776],{}," is still compatible with the legacy rendering mode that we name \"direct rendering\".",[724,817,818,828,835],{"v-slot:csharp":726},[698,819,820,821,802,823,825,826,809],{},"To use this rendering, you must implement the offscreen rendering functions of ",[736,822,747],{},[736,824,772],{}," introduced in version 1.4,\nor use the ones provided with ",[710,827,808],{"href":712},[829,830,832],"callout",{"color":831},"secondary",[698,833,834],{},"Only the UWP reference implementation implements these interfaces for you. For WPF, you should make your own implementation.",[698,836,812,837,815],{},[731,838,776],{},[698,840,820,841,802,843,825,845,809],{},[736,842,747],{},[736,844,772],{},[710,846,808],{"href":712},[698,848,812,849,815],{},[731,850,776],{},[716,852,854],{"id":853},"layer","Layer",[698,856,857,858,861],{},"For performance reasons, the renderer works on two different ",[731,859,860],{},"layers",".",[829,863,864],{"color":831},[698,865,866,867,869],{},"The ",[710,868,713],{"href":712}," implements these layers for you. However, you may sometimes need to interact\nwith them.",[698,871,872],{},"The two layers are:",[874,875,876,883],"ul",{},[877,878,729,879,882],"li",{},[731,880,881],{},"model"," layer, corresponding to everything in the model that was already processed by the engine (guidelines, strokes, images, typeset text, ...),",[877,884,729,885,888],{},[731,886,887],{},"capture"," layer, rendering the ink drawn on the screen but not yet processed by the engine.",[698,890,891],{},"Each layer can be refreshed independently from the other, so that it is not needed to redraw everything.",[716,893,895],{"id":894},"ink-prediction","Ink prediction",[698,897,898],{},"An ink prediction mechanism is available that allows bridging part of the gap between the pen and the ink, but may trigger some visual artifacts.\nThis mechanism is available with two configuration properties:",[874,900,901,912],{},[877,902,903,904,907,908,911],{},"a boolean ",[736,905,906],{},"renderer.prediction.enable"," (default value is ",[736,909,910],{},"false",")",[877,913,914,915,918],{},"a number ",[736,916,917],{},"renderer.prediction.duration"," that represents the targeted prediction duration in ms (default value is 16 ms, max is 200 ms).\nA 16 ms prediction corresponds to one rendered frame on a 60Hz device screen.\nHigher durations are possible but might reduce prediction accuracy or stability, depending on your device input sampling frequency or screen refresh rate.\nValue should be tuned to avoid unwanted visual artifacts and guarantee the best user experience.",[698,920,921,922,929,930,934],{},"By default, ink prediction is disabled in the SDK, but all ",[710,923,925,928],{"href":924},"\u002Fdocs\u002Fsdk\u002F3.2\u002Fgetting-started\u002Fsetup#example-applications",[736,926,927],{},"Demo"," examples"," enable prediction duration at 16 ms, which is a good compromise to avoid visual artifacts.\nSo, if you want to evaluate the ink prediction mechanism, you can draw on ",[710,931,932,928],{"href":924},[736,933,927],{}," to learn how to do it.",[716,936,938],{"id":937},"additional-brush-implementation","Additional brush implementation",[698,940,941,942,948],{},"The iink SDK supports additional brushes based on APIs that rely on ",[710,943,947],{"href":944,"rel":945},"https:\u002F\u002Fwww.opengl.org\u002F",[946],"nofollow","OpenGL"," for advanced rendering styling, such as the Pencil brush.",[829,950,951],{"color":831},[698,952,953],{},"While these new iink APIs are cross-platform (and backward compatible), they are currently only implemented for Android.",[721,955,956],{},[724,957,958,977,993,1000],{"v-slot:java":726},[698,959,960,961,964,965,968,969,972,973,976],{},"To implement these kinds of \"extra\" brushes, you must first configure them in the new Java class called ",[736,962,963],{},"GLRenderer"," that has been added to the iink package.\nNote: All brush names must be prefixed with ",[736,966,967],{},"Extra-",". These names can then be used to set the value of the ",[736,970,971],{},"-myscript-pen-brush"," CSS property in ",[710,974,975],{"href":653},"the style",", as with legacy brushes.",[698,978,979,980,983,984,986,987,990,991,861],{},"You will also need to override the ",[736,981,982],{},"isExtraBrushSupported"," method of your ",[736,985,110],{}," class to indicate that your implementation supports these additional brushes.\nIf so, the ",[736,988,989],{},"Canvas.drawStrokeWithExtraBrush"," method is called to handle the special rendering of the associated strokes using the ",[736,992,963],{},[698,994,995,996,999],{},"You can refer to the Android Demo example and UIReferenceImplementation that show the integration of such an extra brush, called ",[736,997,998],{},"Extra-Pencil"," (which mimics a pencil):",[874,1001,1002,1012,1020],{},[877,1003,1004,1005,1008,1009,861],{},"The pencil brush configuration is done in the ",[736,1006,1007],{},"provideExtraBrushConfigurations"," method of the ",[736,1010,1011],{},"DemoModule",[877,1013,1014,1015,1017,1018,861],{},"It is used by the ",[736,1016,110],{}," class in the UIReferenceImplementation to initialize and use the ",[736,1019,963],{},[877,1021,1022,1023,1025,1026,1028,1029,1032,1033,861],{},"The value of ",[736,1024,971],{}," CSS property must be set to ",[736,1027,998],{}," when selecting this brush in the ",[736,1030,1031],{},"fromStyleValue"," method of Demo ",[736,1034,1035],{},"PartEditor",[702,1037,1039],{"id":1038},"reference-implementation","Reference implementation",[721,1041,1042,1074,1100],{},[724,1043,1044,1052,1055],{"v-slot:java":726},[698,1045,1046,1047,1051],{},"To make it easy to build applications, MyScript provides in its ",[1048,1049,1050],"span",{},"examples repository"," a default rendering implementation.",[698,1053,1054],{},"It is released as a library, under a permissive license and can be reused as-is or modified should you feel the need.\nAs an integrator, you just have to link against it and do a bit of plumbing:",[1056,1057,1058,1064],"ol",{},[877,1059,1060,1063],{},[731,1061,1062],{},"Use an EditorView object"," which is a ready-to-use implementation of a render target, with layered rendering based on integrated canvas for drawing operations.",[877,1065,1066,1069,1070,1073],{},[731,1067,1068],{},"Bind it to the Editor"," with the ",[731,1071,1072],{},"EditorBinding"," object from our UIReferenceImplementation.",[724,1075,1076,1079,1088,1093],{"v-slot:cpp":726},[698,1077,1078],{},"It consists of the following files:",[1080,1081,1086],"pre",{"className":1082,"code":1084,"language":1085},[1083],"language-text","Canvas.h                 -> ICanvas implementation\nCanvas.cpp\nEditorListener.h         -> IEditorListener implementation\nEditorListener.h\nEditorWidget.h           -> Entry point: ready to use widget that comes with all the required plumbing\nEditorWidget.cpp\nFontMetricsProvider.h    -> See the conversion part of the guide\nFontMetricsProvider.cpp\nImagePainter.h            -> Object to produce image data for some export options\nImagePainter.cpp\nImageLoader.h            -> Object used to manage an image cache\nImageLoader.cpp\nLayerWidget.h            -> Ink layer implementation\nPath.h                   -> IPath implementation (used by the canvas)\nPath.cpp\nRendererListener.h       -> IRendererListener implementation\nSmartGuideWidget.h       -> Graphical widget to provide real-time recognition feedback\nSmartGuideWidget.cpp\n","text",[736,1087,1084],{"__ignoreMap":726},[829,1089,1090],{"color":831},[698,1091,1092],{},"The C++ reference implementation relies on Qt, but iink SDK is compatible with a wide range of graphical toolkits.",[698,1094,1095,1096,1099],{},"As an integrator, you just have to import the files of the reference implementation into your project, instantiate an ",[736,1097,1098],{},"EditorWidget"," and add it to your view hierarchy.",[724,1101,1102,1106,1108],{"v-slot:csharp":726},[698,1103,1046,1104,1051],{},[1048,1105,1050],{},[698,1107,1054],{},[698,1109,1110,1117,1118,1121,1122,1124],{},[731,1111,1112,1113,1116],{},"Instanciate a ",[736,1114,1115],{},"EditorUserControl"," object in your application xaml",".\nIt is a ready-to-use implementation of a UserControl that holds an ",[736,1119,1120],{},"Editor"," and a ",[736,1123,777],{},", and that handles capture, rendering and some editing commands.",[698,1126,1127,1128,1131],{},"The goal of the ",[710,1129,1130],{"href":633},"next step"," of this guide is to explain how to add some content to the model.",{"title":726,"searchDepth":1133,"depth":1133,"links":1134},3,[1135,1144],{"id":704,"depth":1136,"text":705,"children":1137},2,[1138,1139,1140,1141,1142,1143],{"id":718,"depth":1133,"text":719},{"id":751,"depth":1133,"text":110},{"id":776,"depth":1133,"text":777},{"id":853,"depth":1133,"text":854},{"id":894,"depth":1133,"text":895},{"id":937,"depth":1133,"text":938},{"id":1038,"depth":1136,"text":1039},"Guide to discover iink SDK","md",{},true,"9nixj3","3.1",{"title":432,"description":1145},"GmNPE2WMa1RR3Z6RY7ZVsdQ6_ybd_CuSLMNz6S0N3q0",{"id":1154,"title":1155,"body":1156,"canonicalPath":505,"description":1216,"extension":1146,"icon":522,"meta":1217,"navTitle":20,"navigation":1148,"path":1218,"resolveKey":505,"resolveVersion":505,"seo":1219,"stem":1220,"__hash__":1221},"support\u002Fsupport\u002F01.index.md","Support",{"type":695,"value":1157,"toc":1214},[1158,1161],[698,1159,1160],{},"Find answers to common questions about integrating the iink SDK and MyScript Cloud APIs. Browse the topics below or reach out on the community forum.",[1162,1163,1164,1173,1181,1189,1197,1206],"card-group",{},[1165,1166,1170],"card",{"icon":1167,"title":1168,"to":1169},"i-tabler-package","Recognition assets","\u002Fsupport\u002Frecognition-assets\u002F",[698,1171,1172],{},"Download base assets and build custom resources to fine-tune the recognition.",[1165,1174,1178],{"icon":1175,"title":1176,"to":1177},"i-tabler-key","On-device license management","\u002Fsupport\u002Fon-device\u002Fon-device-license-management\u002F",[698,1179,1180],{},"Manage licenses for applications embedding the on-device iink SDK.",[1165,1182,1186],{"icon":1183,"title":1184,"to":1185},"i-tabler-user-circle","Registering with MyScript Cloud","\u002Fsupport\u002Fcloud\u002Fregistering-myscript-cloud\u002F",[698,1187,1188],{},"Create a Cloud account and obtain the keys to call our recognition APIs.",[1165,1190,1194],{"icon":1191,"title":1192,"to":1193},"i-tabler-rocket","Being production ready","\u002Fsupport\u002Fcloud\u002Fbeing-production-ready\u002F",[698,1195,1196],{},"Best practices and quotas to ship your iink Cloud integration to production.",[1165,1198,1203],{"icon":1199,"title":1200,"to":1201,"target":1202},"i-tabler-message-circle","Forums","https:\u002F\u002Fdeveloper-support.myscript.com\u002Fsupport\u002Flogin","_blank",[698,1204,1205],{},"Ask questions and get answers from the MyScript developer community.",[1165,1207,1211],{"icon":1208,"title":1209,"to":1210,"target":1202},"i-tabler-mail","Contact us","https:\u002F\u002Fwww.myscript.com\u002Fcontact\u002F",[698,1212,1213],{},"Can't find what you're looking for? Reach out to our team.",{"title":726,"searchDepth":1133,"depth":1133,"links":1215},[],"MyScript Developer Support hub",{},"\u002Fsupport",{"title":1155,"description":1216},"support\u002F01.index","jENFmcn55y_8r3_6pH5xxlH1dZJBwoAuq9F7gXQtow8",1792566591006]