[{"data":1,"prerenderedAt":1624},["ShallowReactive",2],{"navigation":3,"nav-sdk30":498,"docs-sdk-3.0-fundamentals-zooming-and-scrolling":692,"support-index":1555},[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",null,"\u002Fdocs\u002Fsdk\u002F3.0","docs\u002Fsdk\u002F3.0",[509,514,519,523,536,560,581,638,676],{"title":330,"path":510,"stem":511,"navTitle":512,"icon":513},"\u002Fdocs\u002Fsdk\u002F3.0\u002Fabout","docs\u002Fsdk\u002F3.0\u002F01.about","About","i-tabler-info-circle",{"title":515,"path":516,"stem":517,"navTitle":33,"icon":518},"New in 3.0","\u002Fdocs\u002Fsdk\u002F3.0\u002Fchangelog","docs\u002Fsdk\u002F3.0\u002F02.changelog","i-tabler-bell-ringing",{"title":37,"path":520,"stem":521,"navTitle":37,"icon":522},"\u002Fdocs\u002Fsdk\u002F3.0\u002Fmigration-guide","docs\u002Fsdk\u002F3.0\u002F03.migration-guide","i-tabler-gps",{"title":42,"navTitle":505,"icon":505,"path":524,"stem":525,"children":526,"page":40},"\u002Fdocs\u002Fsdk\u002F3.0\u002Fintegration","docs\u002Fsdk\u002F3.0\u002F04.integration",[527,532],{"title":47,"path":528,"stem":529,"navTitle":530,"icon":531},"\u002Fdocs\u002Fsdk\u002F3.0\u002Fintegration\u002Fplatforms","docs\u002Fsdk\u002F3.0\u002F04.integration\u002F01.platforms","Platforms","i-tabler-device-laptop",{"title":51,"path":533,"stem":534,"navTitle":51,"icon":535},"\u002Fdocs\u002Fsdk\u002F3.0\u002Fintegration\u002Fintegration-levels","docs\u002Fsdk\u002F3.0\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.0\u002Frecognition-capabilities","docs\u002Fsdk\u002F3.0\u002F05.recognition-capabilities",[540,544,548,552,556],{"title":60,"path":541,"stem":542,"navTitle":505,"icon":543},"\u002Fdocs\u002Fsdk\u002F3.0\u002Frecognition-capabilities\u002Frecognizers","docs\u002Fsdk\u002F3.0\u002F05.recognition-capabilities\u002F01.recognizers","i-tabler-text-scan-2",{"title":64,"path":545,"stem":546,"navTitle":64,"icon":547},"\u002Fdocs\u002Fsdk\u002F3.0\u002Frecognition-capabilities\u002Ftext-languages","docs\u002Fsdk\u002F3.0\u002F05.recognition-capabilities\u002F02.text-languages","i-tabler-language",{"title":68,"path":549,"stem":550,"navTitle":68,"icon":551},"\u002Fdocs\u002Fsdk\u002F3.0\u002Frecognition-capabilities\u002Fmath-elements-and-rules","docs\u002Fsdk\u002F3.0\u002F05.recognition-capabilities\u002F03.math-elements-and-rules","i-tabler-math",{"title":72,"path":553,"stem":554,"navTitle":72,"icon":555},"\u002Fdocs\u002Fsdk\u002F3.0\u002Frecognition-capabilities\u002Fdiagram-features","docs\u002Fsdk\u002F3.0\u002F05.recognition-capabilities\u002F04.diagram-features","i-tabler-circle-square",{"title":76,"path":557,"stem":558,"navTitle":505,"icon":559},"\u002Fdocs\u002Fsdk\u002F3.0\u002Frecognition-capabilities\u002Fgestures","docs\u002Fsdk\u002F3.0\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.0\u002Finteractivity-integration","docs\u002Fsdk\u002F3.0\u002F06.interactivity-integration",[564,568,572,577],{"title":85,"path":565,"stem":566,"navTitle":85,"icon":567},"\u002Fdocs\u002Fsdk\u002F3.0\u002Finteractivity-integration\u002Fcontent-types","docs\u002Fsdk\u002F3.0\u002F06.interactivity-integration\u002F01.content-types","i-tabler-eye",{"title":89,"path":569,"stem":570,"navTitle":89,"icon":571},"\u002Fdocs\u002Fsdk\u002F3.0\u002Finteractivity-integration\u002Finteractive-features","docs\u002Fsdk\u002F3.0\u002F06.interactivity-integration\u002F02.interactive-features","i-tabler-bolt",{"title":93,"path":573,"stem":574,"navTitle":575,"icon":576},"\u002Fdocs\u002Fsdk\u002F3.0\u002Finteractivity-integration\u002Fimport-and-export-formats","docs\u002Fsdk\u002F3.0\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.0\u002Finteractivity-integration\u002Fmath-features","docs\u002Fsdk\u002F3.0\u002F06.interactivity-integration\u002F04.math-features","i-tabler-calculator",{"title":255,"navTitle":505,"icon":505,"path":582,"stem":583,"children":584,"page":40},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals","docs\u002Fsdk\u002F3.0\u002F07.fundamentals",[585,598,602,606,610,614,619,623,626,630,634],{"title":586,"navTitle":505,"icon":505,"path":587,"stem":588,"children":589,"page":40},"Getting Started","\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Fgetting-started","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F01.getting-started",[590,594],{"title":386,"path":591,"stem":592,"navTitle":505,"icon":593},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Fgetting-started\u002Fsetup","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F01.getting-started\u002F01.setup","i-tabler-direction-sign",{"title":595,"path":596,"stem":597,"navTitle":505,"icon":593},"Interactive Ink runtime","\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Fgetting-started\u002Finteractive-ink-runtime","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F01.getting-started\u002F02.interactive-ink-runtime",{"title":407,"path":599,"stem":600,"navTitle":505,"icon":601},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Fstorage","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F02.storage","i-tabler-file-database",{"title":432,"path":603,"stem":604,"navTitle":505,"icon":605},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Frendering","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F03.rendering","i-tabler-app-window",{"title":440,"path":607,"stem":608,"navTitle":505,"icon":609},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Ftool-controller","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F04.tool-controller","i-tabler-adjustments",{"title":436,"path":611,"stem":612,"navTitle":505,"icon":613},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Fediting","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F05.editing","i-tabler-edit",{"title":615,"path":616,"stem":617,"navTitle":505,"icon":618},"Selection and block management","\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Fblock-selection-management","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F06.block-selection-management","i-tabler-pointer",{"title":448,"path":620,"stem":621,"navTitle":505,"icon":622},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Fconversion","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F07.conversion","i-tabler-sparkles",{"title":575,"path":624,"stem":625,"navTitle":505,"icon":576},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Fimport-and-export","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F08.import-and-export",{"title":452,"path":627,"stem":628,"navTitle":505,"icon":629},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Fzooming-and-scrolling","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F09.zooming-and-scrolling","i-tabler-zoom-pan",{"title":456,"path":631,"stem":632,"navTitle":505,"icon":633},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Fstyling","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F10.styling","i-tabler-palette",{"title":471,"path":635,"stem":636,"navTitle":505,"icon":637},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Ferror-management","docs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F11.error-management","i-tabler-bug",{"title":197,"navTitle":505,"icon":505,"path":639,"stem":640,"children":641,"page":40},"\u002Fdocs\u002Fsdk\u002F3.0\u002Fspecific","docs\u002Fsdk\u002F3.0\u002F08.specific",[642,646,651,655,659,663,668,673],{"title":202,"path":643,"stem":644,"navTitle":505,"icon":645},"\u002Fdocs\u002Fsdk\u002F3.0\u002Fspecific\u002Ftext-recognition-candidates","docs\u002Fsdk\u002F3.0\u002F08.specific\u002F01.text-recognition-candidates","i-tabler-tags",{"title":647,"path":648,"stem":649,"navTitle":505,"icon":650},"Off-screen usage","\u002Fdocs\u002Fsdk\u002F3.0\u002Fspecific\u002Foff-screen-usage","docs\u002Fsdk\u002F3.0\u002F08.specific\u002F02.off-screen-usage","i-tabler-stack-backward",{"title":652,"path":653,"stem":654,"navTitle":505,"icon":547},"Languages restricted to non-interactive mode","\u002Fdocs\u002Fsdk\u002F3.0\u002Fspecific\u002Fnon-interactive-languages","docs\u002Fsdk\u002F3.0\u002F08.specific\u002F03.non-interactive-languages",{"title":460,"path":656,"stem":657,"navTitle":505,"icon":658},"\u002Fdocs\u002Fsdk\u002F3.0\u002Fspecific\u002Fcustom-inking","docs\u002Fsdk\u002F3.0\u002F08.specific\u002F04.custom-inking","i-tabler-brush",{"title":206,"path":660,"stem":661,"navTitle":505,"icon":662},"\u002Fdocs\u002Fsdk\u002F3.0\u002Fspecific\u002Fcustom-recognition","docs\u002Fsdk\u002F3.0\u002F08.specific\u002F05.custom-recognition","i-tabler-file-code",{"title":414,"path":664,"stem":665,"navTitle":666,"icon":667},"\u002Fdocs\u002Fsdk\u002F3.0\u002Fspecific\u002Fcombined-undo-redo-stacks","docs\u002Fsdk\u002F3.0\u002F08.specific\u002F06.combined-undo-redo-stacks","Combined undo\u002Fredo stacks","i-tabler-arrow-back-up",{"title":669,"path":670,"stem":671,"navTitle":505,"icon":672},"Interactive White Board","\u002Fdocs\u002Fsdk\u002F3.0\u002Fspecific\u002Finteractive-white-board","docs\u002Fsdk\u002F3.0\u002F08.specific\u002F07.interactive-white-board","i-tabler-presentation",{"title":60,"path":674,"stem":675,"navTitle":505,"icon":543},"\u002Fdocs\u002Fsdk\u002F3.0\u002Fspecific\u002Frecognizers","docs\u002Fsdk\u002F3.0\u002F08.specific\u002F08.recognizers",{"title":139,"navTitle":505,"icon":505,"path":677,"stem":678,"children":679,"page":40},"\u002Fdocs\u002Fsdk\u002F3.0\u002Freference","docs\u002Fsdk\u002F3.0\u002F09.reference",[680,684,689],{"title":144,"path":681,"stem":682,"navTitle":505,"icon":683},"\u002Fdocs\u002Fsdk\u002F3.0\u002Freference\u002Fconfiguration","docs\u002Fsdk\u002F3.0\u002F09.reference\u002F01.configuration","i-tabler-settings",{"title":239,"path":685,"stem":686,"navTitle":687,"icon":688},"\u002Fdocs\u002Fsdk\u002F3.0\u002Freference\u002Fjiix","docs\u002Fsdk\u002F3.0\u002F09.reference\u002F02.jiix","JIIX","i-tabler-braces",{"title":495,"path":690,"stem":691,"navTitle":456,"icon":633},"\u002Fdocs\u002Fsdk\u002F3.0\u002Freference\u002Fstyling","docs\u002Fsdk\u002F3.0\u002F09.reference\u002F03.styling",{"path":627,"page":693},{"id":694,"title":452,"body":695,"canonicalPath":453,"description":1548,"extension":1549,"icon":629,"meta":1550,"navTitle":505,"navigation":1551,"path":627,"resolveKey":1552,"resolveVersion":1291,"seo":1553,"stem":628,"__hash__":1554},"sdk30\u002Fdocs\u002Fsdk\u002F3.0\u002F07.fundamentals\u002F09.zooming-and-scrolling.md",{"type":696,"value":697,"toc":1536},"minimark",[698,719,724,727,730,804,808,865,868,872,875,882,887,956,959,1134,1165,1169,1221,1223,1467,1526,1533],[699,700,701,714],"partial",{},[702,703,705],"template",{"v-slot:swift":704},"",[706,707,708,709,713],"p",{},"This page explains how zooming and scrolling can be managed via the ",[710,711,712],"code",{},"IINKRenderer"," object of iink SDK.",[706,715,708,716,713],{},[710,717,718],{},"Renderer",[720,721,723],"h2",{"id":722},"view-transformation-matrix","View transformation matrix",[706,725,726],{},"Although interactive ink is digital by essence, handwriting itself has its roots in the physical world.\nA user feels comfortable when writing with a certain line spacing and will write differently depending on the type and quality of its stylus.\nSimilarly the recognition engine will not interpret the same way an ink circle, if it is almost undistinguishable from a dot or if it one centimeter wide.\nTrue to this anchoring in the physical world, iink SDK internally stores its data in millimeters.",[706,728,729],{},"Your application, however, will most likely work in view coordinates, and this is the unit you will rely on to dispatch input to the SDK.\nAs you may also specify a zoom factor, things are likely to get complicated.",[699,731,732,757,774,790],{},[702,733,734,750],{"v-slot:swift":704},[706,735,736,737,741,742,749],{},"MyScript iink SDK makes the link between these two coordinate systems via the ",[738,739,740],"strong",{},"view transform"," of the ",[743,744,746,748],"a",{"href":745},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Frendering#renderer",[710,747,712],{}," object"," you attached to your\neditor. It takes into account dpi, zoom and potential offset.",[706,751,752,753,756],{},"Like with most iink SDK APIs, you do not need to manipulate the transformation matrix yourself. You can however access it via the ",[710,754,755],{},"viewTransform"," property of\nthe renderer and use it to transform from one system into the other.",[702,758,759,767],{"v-slot:csharp":704},[706,760,736,761,741,763,749],{},[738,762,740],{},[743,764,765,748],{"href":745},[710,766,718],{},[706,768,769,770,773],{},"Like with most iink SDK APIs, you do not need to manipulate the transformation matrix yourself. You can however access it by calling ",[710,771,772],{},"GetViewTransform"," and use\nit to transform from one system into the other.",[702,775,776,784],{"v-slot:java":704},[706,777,736,778,741,780,749],{},[738,779,740],{},[743,781,782,748],{"href":745},[710,783,718],{},[706,785,769,786,789],{},[710,787,788],{},"getViewTransform()"," on the\nrenderer and use it to transform from one system into the other.",[702,791,792,800],{"v-slot:cpp":704},[706,793,736,794,741,796,749],{},[738,795,740],{},[743,797,798,748],{"href":745},[710,799,718],{},[706,801,769,802,789],{},[710,803,788],{},[720,805,807],{"id":806},"view-size","View size",[699,809,810,828,842,854],{},[702,811,812],{"v-slot:swift":704},[706,813,814,815,818,819,823,824,827],{},"The size of the view must be provided to the editor using the ",[710,816,817],{},"viewSize"," property.\nIf not, an exception will be raised when trying to attach a part to the editor (note that in the ",[743,820,822],{"href":821},"\u002Fdocs\u002Fsdk\u002F3.0\u002Ffundamentals\u002Frendering#reference-implementation","reference implementation",",\nthis call is made for you as part of the implementation of the ",[710,825,826],{},"EditorViewController"," object).",[702,829,830],{"v-slot:csharp":704},[706,831,832,833,836,837,823,839,827],{},"The size of the view must be provided to the editor using ",[710,834,835],{},"SetViewSize()",".\nIf not, an exception will be raised when trying to attach a part to the editor (note that in the ",[743,838,822],{"href":821},[710,840,841],{},"EditorUserControl",[702,843,844],{"v-slot:java":704},[706,845,832,846,836,849,823,851,827],{},[710,847,848],{},"setViewSize()",[743,850,822],{"href":821},[710,852,853],{},"EditorView",[702,855,856],{"v-slot:cpp":704},[706,857,832,858,836,860,823,862,827],{},[710,859,848],{},[743,861,822],{"href":821},[710,863,864],{},"EditorWidget",[706,866,867],{},"The size of the view plays an important role to enable interactive content to dynamically reflow and adjust to the view size.",[720,869,871],{"id":870},"zoom-and-scroll-management","Zoom and scroll management",[706,873,874],{},"Zooming and scrolling are managed by acting on the view transformation matrix.\nRather than manipulating it directly, however, a set of convenience methods are provided on the renderer object.",[876,877,879],"callout",{"color":878},"secondary",[706,880,881],{},"If you change the renderer transformation matrix, you need to invalidate the render target to force a redraw.",[883,884,886],"h3",{"id":885},"zooming","Zooming",[699,888,889,909,923,942],{},[702,890,891,898],{"v-slot:swift":704},[706,892,893,894,897],{},"You can manipulate the absolute value of the view scale with the ",[710,895,896],{},"viewScale"," property. A scale of 2.0 will make your content look twice as large as it is in\nreality, while a scale of 0.5 will render it twice smaller.",[706,899,900,901,904,905,908],{},"Alternatively, you can apply a zoom factor ",[738,902,903],{},"relatively to the current scale"," by calling ",[710,906,907],{},"zoom()"," and passing it the desired factor.",[702,910,911,916],{"v-slot:csharp":704},[706,912,893,913,897],{},[710,914,915],{},"ViewScale",[706,917,900,918,904,920,908],{},[738,919,903],{},[710,921,922],{},"Zoom()",[702,924,925,936],{"v-slot:java":704},[706,926,927,928,931,932,935],{},"You can manipulate the absolute value of the view scale by calling ",[710,929,930],{},"getViewScale()"," and ",[710,933,934],{},"setViewScale()",". A scale of 2.0 will make your content look twice as\nlarge as it is in reality, while a scale of 0.5 will render it twice smaller.",[706,937,900,938,904,940,908],{},[738,939,903],{},[710,941,907],{},[702,943,944,950],{"v-slot:cpp":704},[706,945,927,946,931,948,935],{},[710,947,930],{},[710,949,934],{},[706,951,900,952,904,954,908],{},[738,953,903],{},[710,955,907],{},[706,957,958],{},"For example:",[699,960,961,1011,1055,1090],{},[702,962,963],{"v-slot:java":704},[964,965,969],"pre",{"className":966,"code":967,"language":968,"meta":704,"style":704},"language-java shiki shiki-themes blue-hacker-light blue-hacker-light blue-hacker-dark","renderer.setViewScale(2.0f); \u002F\u002F Scale = 2.0f\nrenderer.zoom(4.0f);         \u002F\u002F Scale = 8.0f\n","java",[710,970,971,995],{"__ignoreMap":704},[972,973,976,980,984,988,991],"span",{"class":974,"line":975},"line",1,[972,977,979],{"class":978},"sEQEB","renderer",[972,981,983],{"class":982},"soFc9",".setViewScale(",[972,985,987],{"class":986},"sU2JI","2.0f",[972,989,990],{"class":982},");",[972,992,994],{"class":993},"sJjcI"," \u002F\u002F Scale = 2.0f\n",[972,996,998,1000,1003,1006,1008],{"class":974,"line":997},2,[972,999,979],{"class":978},[972,1001,1002],{"class":982},".zoom(",[972,1004,1005],{"class":986},"4.0f",[972,1007,990],{"class":982},[972,1009,1010],{"class":993},"         \u002F\u002F Scale = 8.0f\n",[702,1012,1013],{"v-slot:swift":704},[964,1014,1018],{"className":1015,"code":1016,"language":1017,"meta":704,"style":704},"language-swift shiki shiki-themes blue-hacker-light blue-hacker-light blue-hacker-dark","renderer.viewScale=2.0;\nrenderer.zoom(4.0);  \u002F* Scale = 8.0f *\u002F\n","swift",[710,1019,1020,1035],{"__ignoreMap":704},[972,1021,1022,1025,1029,1032],{"class":974,"line":975},[972,1023,1024],{"class":978},"renderer.viewScale",[972,1026,1028],{"class":1027},"sglaT","=",[972,1030,1031],{"class":986},"2.0",[972,1033,1034],{"class":978},";\n",[972,1036,1037,1040,1043,1046,1049,1052],{"class":974,"line":997},[972,1038,1039],{"class":978},"renderer.",[972,1041,1042],{"class":982},"zoom(",[972,1044,1045],{"class":986},"4.0",[972,1047,1048],{"class":982},")",[972,1050,1051],{"class":978},";  ",[972,1053,1054],{"class":993},"\u002F* Scale = 8.0f *\u002F\n",[702,1056,1057],{"v-slot:cpp":704},[964,1058,1062],{"className":1059,"code":1060,"language":1061,"meta":704,"style":704},"language-cpp shiki shiki-themes blue-hacker-light blue-hacker-light blue-hacker-dark","renderer->setViewScale(2.0f); \u002F\u002F Scale = 2.0f\nrenderer->zoom(4.0f);         \u002F\u002F Scale = 8.0f\n","cpp",[710,1063,1064,1077],{"__ignoreMap":704},[972,1065,1066,1068,1071,1073,1075],{"class":974,"line":975},[972,1067,979],{"class":978},[972,1069,1070],{"class":982},"->setViewScale(",[972,1072,987],{"class":986},[972,1074,990],{"class":982},[972,1076,994],{"class":993},[972,1078,1079,1081,1084,1086,1088],{"class":974,"line":997},[972,1080,979],{"class":978},[972,1082,1083],{"class":982},"->zoom(",[972,1085,1005],{"class":986},[972,1087,990],{"class":982},[972,1089,1010],{"class":993},[702,1091,1092],{"v-slot:csharp":704},[964,1093,1097],{"className":1094,"code":1095,"language":1096,"meta":704,"style":704},"language-csharp shiki shiki-themes blue-hacker-light blue-hacker-light blue-hacker-dark","renderer.ViewScale = 2.0f; \u002F\u002F Scale = 2.0\nrenderer.Zoom(4.0f);       \u002F\u002F Scale = 8.0\n","csharp",[710,1098,1099,1120],{"__ignoreMap":704},[972,1100,1101,1103,1106,1109,1111,1114,1117],{"class":974,"line":975},[972,1102,979],{"class":978},[972,1104,1105],{"class":982},".",[972,1107,1108],{"class":978},"ViewScale ",[972,1110,1028],{"class":1027},[972,1112,1113],{"class":986}," 2.0f",[972,1115,1116],{"class":982},";",[972,1118,1119],{"class":993}," \u002F\u002F Scale = 2.0\n",[972,1121,1122,1124,1127,1129,1131],{"class":974,"line":997},[972,1123,979],{"class":978},[972,1125,1126],{"class":982},".Zoom(",[972,1128,1005],{"class":986},[972,1130,990],{"class":982},[972,1132,1133],{"class":993},"       \u002F\u002F Scale = 8.0\n",[699,1135,1136,1145,1152,1159],{},[702,1137,1138],{"v-slot:swift":704},[706,1139,1140,1141,1144],{},"If you are processing a pinch to zoom gesture, you may also want to specify the location of the point around which to adjust the zoom. In this case, use\n",[710,1142,1143],{},"zoom(at:factor:)"," and provide the coordinates of the point to consider in addition to the zoom factor you want to apply.",[702,1146,1147],{"v-slot:csharp":704},[706,1148,1140,1149,1144],{},[710,1150,1151],{},"ZoomAt()",[702,1153,1154],{"v-slot:java":704},[706,1155,1140,1156,1144],{},[710,1157,1158],{},"zoomAt()",[702,1160,1161],{"v-slot:cpp":704},[706,1162,1140,1163,1144],{},[710,1164,1158],{},[883,1166,1168],{"id":1167},"scrolling","Scrolling",[699,1170,1171,1187,1198,1211],{},[702,1172,1173],{"v-slot:swift":704},[706,1174,1175,1176,1179,1180,931,1183,1186],{},"To scroll the view, just apply an offset to the renderer via the ",[710,1177,1178],{},"viewOffset"," property with the ",[710,1181,1182],{},"x",[710,1184,1185],{},"y"," absolute components of the offset to consider.",[702,1188,1189],{"v-slot:csharp":704},[706,1190,1175,1191,1179,1194,931,1196,1186],{},[710,1192,1193],{},"ViewOffset",[710,1195,1182],{},[710,1197,1185],{},[702,1199,1200],{"v-slot:java":704},[706,1201,1202,1203,1206,1207,931,1209,1186],{},"To scroll the view, just apply an offset to the renderer by calling ",[710,1204,1205],{},"setViewOffset()"," with the ",[710,1208,1182],{},[710,1210,1185],{},[702,1212,1213],{"v-slot:cpp":704},[706,1214,1202,1215,1206,1217,931,1219,1186],{},[710,1216,1205],{},[710,1218,1182],{},[710,1220,1185],{},[706,1222,958],{},[699,1224,1225,1272,1328,1376],{},[702,1226,1227,1266],{"v-slot:java":704},[964,1228,1230],{"className":966,"code":1229,"language":968,"meta":704,"style":704},"renderer.setViewOffset(2.1f, 3.0f);\nrenderer.setViewOffset(2.1f, 2.1f);\n",[710,1231,1232,1251],{"__ignoreMap":704},[972,1233,1234,1236,1239,1242,1245,1248],{"class":974,"line":975},[972,1235,979],{"class":978},[972,1237,1238],{"class":982},".setViewOffset(",[972,1240,1241],{"class":986},"2.1f",[972,1243,1244],{"class":982},",",[972,1246,1247],{"class":986}," 3.0f",[972,1249,1250],{"class":982},");\n",[972,1252,1253,1255,1257,1259,1261,1264],{"class":974,"line":997},[972,1254,979],{"class":978},[972,1256,1238],{"class":982},[972,1258,1241],{"class":986},[972,1260,1244],{"class":982},[972,1262,1263],{"class":986}," 2.1f",[972,1265,1250],{"class":982},[706,1267,1268,1269,1105],{},"You can get the current view offset with ",[710,1270,1271],{},"getViewOffset()",[702,1273,1274],{"v-slot:swift":704},[964,1275,1277],{"className":1015,"code":1276,"language":1017,"meta":704,"style":704},"renderer.viewOffset = CGPoint(x: 2.1,y: 3.0); \u002F* Offset = (2.1, 3.0) *\u002F\nrenderer.viewOffset = CGPoint(x: 1.4,y: 2.1); \u002F* Offset = (1.4, 2.1) *\u002F\n",[710,1278,1279,1306],{"__ignoreMap":704},[972,1280,1281,1284,1286,1289,1292,1295,1298,1300,1303],{"class":974,"line":975},[972,1282,1283],{"class":978},"renderer.viewOffset ",[972,1285,1028],{"class":1027},[972,1287,1288],{"class":982}," CGPoint(x: ",[972,1290,1291],{"class":986},"2.1",[972,1293,1294],{"class":982},",y: ",[972,1296,1297],{"class":986},"3.0",[972,1299,1048],{"class":982},[972,1301,1302],{"class":978},"; ",[972,1304,1305],{"class":993},"\u002F* Offset = (2.1, 3.0) *\u002F\n",[972,1307,1308,1310,1312,1314,1317,1319,1321,1323,1325],{"class":974,"line":997},[972,1309,1283],{"class":978},[972,1311,1028],{"class":1027},[972,1313,1288],{"class":982},[972,1315,1316],{"class":986},"1.4",[972,1318,1294],{"class":982},[972,1320,1291],{"class":986},[972,1322,1048],{"class":982},[972,1324,1302],{"class":978},[972,1326,1327],{"class":993},"\u002F* Offset = (1.4, 2.1) *\u002F\n",[702,1329,1330,1372],{"v-slot:cpp":704},[964,1331,1333],{"className":1059,"code":1332,"language":1061,"meta":704,"style":704},"renderer->setViewOffset(2.1, 3.0); \u002F\u002F Offset = (2.1, 3.0)\nrenderer->setViewOffset(2.1, 2.1); \u002F\u002F Offset = (2.1, 2.1)\n",[710,1334,1335,1354],{"__ignoreMap":704},[972,1336,1337,1339,1342,1344,1346,1349,1351],{"class":974,"line":975},[972,1338,979],{"class":978},[972,1340,1341],{"class":982},"->setViewOffset(",[972,1343,1291],{"class":986},[972,1345,1244],{"class":982},[972,1347,1348],{"class":986}," 3.0",[972,1350,990],{"class":982},[972,1352,1353],{"class":993}," \u002F\u002F Offset = (2.1, 3.0)\n",[972,1355,1356,1358,1360,1362,1364,1367,1369],{"class":974,"line":997},[972,1357,979],{"class":978},[972,1359,1341],{"class":982},[972,1361,1291],{"class":986},[972,1363,1244],{"class":982},[972,1365,1366],{"class":986}," 2.1",[972,1368,990],{"class":982},[972,1370,1371],{"class":993}," \u002F\u002F Offset = (2.1, 2.1)\n",[706,1373,1268,1374,1105],{},[710,1375,1271],{},[702,1377,1378],{"v-slot:csharp":704},[964,1379,1381],{"className":1094,"code":1380,"language":1096,"meta":704,"style":704},"renderer.ViewOffset = new MyScript.IInk.Graphics.Point(2.1f, 3.0f); \u002F\u002F Offset = (2.1, 3.0)\nrenderer.ViewOffset = new MyScript.IInk.Graphics.Point(2.1f, 2.1f); \u002F\u002F Offset = (2.1, 2.1)\n",[710,1382,1383,1429],{"__ignoreMap":704},[972,1384,1385,1387,1389,1392,1394,1397,1401,1403,1406,1408,1411,1413,1416,1419,1421,1423,1425,1427],{"class":974,"line":975},[972,1386,979],{"class":978},[972,1388,1105],{"class":982},[972,1390,1391],{"class":978},"ViewOffset ",[972,1393,1028],{"class":1027},[972,1395,1396],{"class":1027}," new",[972,1398,1400],{"class":1399},"sVYTS"," MyScript",[972,1402,1105],{"class":982},[972,1404,1405],{"class":1399},"IInk",[972,1407,1105],{"class":982},[972,1409,1410],{"class":1399},"Graphics",[972,1412,1105],{"class":982},[972,1414,1415],{"class":1399},"Point",[972,1417,1418],{"class":982},"(",[972,1420,1241],{"class":986},[972,1422,1244],{"class":982},[972,1424,1247],{"class":986},[972,1426,990],{"class":982},[972,1428,1353],{"class":993},[972,1430,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465],{"class":974,"line":997},[972,1432,979],{"class":978},[972,1434,1105],{"class":982},[972,1436,1391],{"class":978},[972,1438,1028],{"class":1027},[972,1440,1396],{"class":1027},[972,1442,1400],{"class":1399},[972,1444,1105],{"class":982},[972,1446,1405],{"class":1399},[972,1448,1105],{"class":982},[972,1450,1410],{"class":1399},[972,1452,1105],{"class":982},[972,1454,1415],{"class":1399},[972,1456,1418],{"class":982},[972,1458,1241],{"class":986},[972,1460,1244],{"class":982},[972,1462,1263],{"class":986},[972,1464,990],{"class":982},[972,1466,1371],{"class":993},[699,1468,1469,1493,1511],{},[702,1470,1471,1475],{"v-slot:csharp":704},[883,1472,1474],{"id":1473},"monitoring-transformation-matrix-changes","Monitoring transformation matrix changes",[706,1476,1477,1478,1481,1482,1485,1486,931,1489,1492],{},"You may want to attach a listener to the renderer to be notified of transformation matrix changes (for instance to adapt your user interface). Such a listener\nshall implement the ",[710,1479,1480],{},"ViewTransformChanged()"," method of the ",[710,1483,1484],{},"IRendererListener"," interface and can be respectively attached to or detached from your rendering\nusing the ",[710,1487,1488],{},"AddListener()",[710,1490,1491],{},"RemoveListener()"," methods.",[702,1494,1495,1498],{"v-slot:java":704},[883,1496,1474],{"id":1497},"monitoring-transformation-matrix-changes-1",[706,1499,1477,1500,1481,1503,1485,1505,931,1508,1492],{},[710,1501,1502],{},"viewTransformChanged()",[710,1504,1484],{},[710,1506,1507],{},"addListener()",[710,1509,1510],{},"removeListener()",[702,1512,1513,1516],{"v-slot:cpp":704},[883,1514,1474],{"id":1515},"monitoring-transformation-matrix-changes-2",[706,1517,1477,1518,1481,1520,1485,1522,931,1524,1492],{},[710,1519,1502],{},[710,1521,1484],{},[710,1523,1507],{},[710,1525,1510],{},[706,1527,1528,1529,1532],{},"The next part of the step-by-step guide will show how you can ",[743,1530,1531],{"href":631},"style"," your content.",[1531,1534,1535],{},"html pre.shiki code .sEQEB, html code.shiki .sEQEB{--shiki-light:#051F41;--shiki-default:#051F41;--shiki-dark:#D1E9FA}html pre.shiki code .soFc9, html code.shiki .soFc9{--shiki-light:#1A9FFF;--shiki-default:#1A9FFF;--shiki-dark:#1A9FFF}html pre.shiki code .sU2JI, html code.shiki .sU2JI{--shiki-light:#005FE4;--shiki-default:#005FE4;--shiki-dark:#80DFFF}html pre.shiki code .sJjcI, html code.shiki .sJjcI{--shiki-light:#467191;--shiki-light-font-style:italic;--shiki-default:#467191;--shiki-default-font-style:italic;--shiki-dark:#6493B4;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sglaT, html code.shiki .sglaT{--shiki-light:#7751EC;--shiki-default:#7751EC;--shiki-dark:#AC92FC}html pre.shiki code .sVYTS, html code.shiki .sVYTS{--shiki-light:#0081F0;--shiki-default:#0081F0;--shiki-dark:#1A9FFF}",{"title":704,"searchDepth":1537,"depth":1537,"links":1538},3,[1539,1540,1541],{"id":722,"depth":997,"text":723},{"id":806,"depth":997,"text":807},{"id":870,"depth":997,"text":871,"children":1542},[1543,1544,1545,1546,1547],{"id":885,"depth":1537,"text":886},{"id":1167,"depth":1537,"text":1168},{"id":1473,"depth":1537,"text":1474},{"id":1497,"depth":1537,"text":1474},{"id":1515,"depth":1537,"text":1474},"Guide to discover iink SDK","md",{},true,"lgq97n",{"title":452,"description":1548},"0oyNDESfO7kdcOyBdpYfwQK-h6tRqJii8dXW_E8BRqA",{"id":1556,"title":1557,"body":1558,"canonicalPath":505,"description":1618,"extension":1549,"icon":522,"meta":1619,"navTitle":20,"navigation":1551,"path":1620,"resolveKey":505,"resolveVersion":505,"seo":1621,"stem":1622,"__hash__":1623},"support\u002Fsupport\u002F01.index.md","Support",{"type":696,"value":1559,"toc":1616},[1560,1563],[706,1561,1562],{},"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.",[1564,1565,1566,1575,1583,1591,1599,1608],"card-group",{},[1567,1568,1572],"card",{"icon":1569,"title":1570,"to":1571},"i-tabler-package","Recognition assets","\u002Fsupport\u002Frecognition-assets\u002F",[706,1573,1574],{},"Download base assets and build custom resources to fine-tune the recognition.",[1567,1576,1580],{"icon":1577,"title":1578,"to":1579},"i-tabler-key","On-device license management","\u002Fsupport\u002Fon-device\u002Fon-device-license-management\u002F",[706,1581,1582],{},"Manage licenses for applications embedding the on-device iink SDK.",[1567,1584,1588],{"icon":1585,"title":1586,"to":1587},"i-tabler-user-circle","Registering with MyScript Cloud","\u002Fsupport\u002Fcloud\u002Fregistering-myscript-cloud\u002F",[706,1589,1590],{},"Create a Cloud account and obtain the keys to call our recognition APIs.",[1567,1592,1596],{"icon":1593,"title":1594,"to":1595},"i-tabler-rocket","Being production ready","\u002Fsupport\u002Fcloud\u002Fbeing-production-ready\u002F",[706,1597,1598],{},"Best practices and quotas to ship your iink Cloud integration to production.",[1567,1600,1605],{"icon":1601,"title":1602,"to":1603,"target":1604},"i-tabler-message-circle","Forums","https:\u002F\u002Fdeveloper-support.myscript.com\u002Fsupport\u002Flogin","_blank",[706,1606,1607],{},"Ask questions and get answers from the MyScript developer community.",[1567,1609,1613],{"icon":1610,"title":1611,"to":1612,"target":1604},"i-tabler-mail","Contact us","https:\u002F\u002Fwww.myscript.com\u002Fcontact\u002F",[706,1614,1615],{},"Can't find what you're looking for? Reach out to our team.",{"title":704,"searchDepth":1537,"depth":1537,"links":1617},[],"MyScript Developer Support hub",{},"\u002Fsupport",{"title":1557,"description":1618},"support\u002F01.index","jENFmcn55y_8r3_6pH5xxlH1dZJBwoAuq9F7gXQtow8",1792566544039]