{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["tabs","tab"]},"type":"markdown"},"seo":{"title":"ScaleScrollStrategy","description":"Accelerate E&P application development and protect your innovation by consuming our Data and Domain APIs / Platform APIs.","lang":"en-US","meta":[{"name":"robots","content":"noindex"}],"llmstxt":{"hide":true,"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"scalescrollstrategy","__idx":0},"children":["ScaleScrollStrategy"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"introduction","__idx":1},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#/pages/carnac/overview/scalescrollstrategies#intro"},"children":["#"]}," Introduction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Phrase \"Scale scroll strategy\" in CarnacJS means either a method formatted as follows:"]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"main","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ts","header":{"controls":{"copy":{}}},"source":"import {Transformation} from '@int/geotoolkit/util/Transformation'\n\nconst myScaleScrollStrategy = function (model, inputTransformation) {\n    var outputTransformation = new Transformation (...);\n    return outputTransformation;\n}\n","lang":"ts"},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["or a class implementing ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#/doc/classes/geotoolkit.scene.scalescrollstrategy.scalescrollstrategy.html"},"children":["ScaleScrollStrategy"]}," interface. The interface states the only method called ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["adjustTransformation"]}," having the same format as the function above."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"list","__idx":2},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#/pages/carnac/overview/scalescrollstrategies#list"},"children":["#"]}," List"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both types of strategies are internally utilized by {",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["geotoolkit/scene/AnnotatedNode"]},"} object to drive its data model scaling/scrolling behavior when the node's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["setTransformation"]}," method is called."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Currently CarnacJS has (in its geotoolkit.scene namespace) eight classes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#/doc/classes/geotoolkit.scene.onedimensionscalescrollstrategy.onedimensionscalescrollstrategy.html"},"children":["OneDimensionScaleScrollStrategy(options)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#/doc/classes/geotoolkit.scene.keepscaleaspectratiostrategy.keepscaleaspectratiostrategy.html"},"children":["KeepScaleAspectRatioStrategy(options)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#/doc/classes/geotoolkit.scene.restrictvisiblemodellimitsstrategy.restrictvisiblemodellimitsstrategy.html"},"children":["RestrictVisibleModelLimitsStrategy(options)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#/doc/classes/geotoolkit.scene.restrictscalestrategy.restrictscalestrategy.html"},"children":["RestrictScaleStrategy(options)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#/doc/classes/geotoolkit.scene.anchoredtransformationadjustmentstrategy.anchoredtransformationadjustmentstrategy.html"},"children":["AnchoredTransformationAdjustmentStrategy(options)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#/doc/classes/geotoolkit.scene.keepaspectfitbothdimensionsstrategy.keepaspectfitbothdimensionsstrategy.html"},"children":["KeepAspectFitBothDimensionsStrategy(options)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#/doc/classes/geotoolkit.scene.keepaspectratiorestrictedanchoredstrategy.keepaspectratiorestrictedanchoredstrategy.html"},"children":["KeepAspectRatioRestrictedAnchoredStrategy(options)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#/doc/classes/geotoolkit.scene.keepaspectrestrictvisiblestrategy.keepaspectrestrictvisiblestrategy.html"},"children":["KeepAspectRestrictVisibleStrategy(options)"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Object approach implies tuning for non-trivial strategies (the strategies requiring additional parameters to adjust transformation); plus, unlike methods, objects can be serialized/deserialized."]}]},"headings":[{"value":"ScaleScrollStrategy","id":"scalescrollstrategy","depth":1},{"value":"Introduction","id":"introduction","depth":3},{"value":"List","id":"list","depth":3}],"frontmatter":{"title":"ScaleScrollStrategy","seo":{"title":"ScaleScrollStrategy"}},"lastModified":"2026-02-11T19:54:32.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/solutions/geotoolkit/programmers-guide/architecture-overview/carnac/scalescrollstrategies","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}