2023-05-09 13:25:39 +02:00
|
|
|
<!DOCTYPE html>
|
2019-05-23 11:21:46 +02:00
|
|
|
<html lang="en">
|
2023-05-09 13:25:39 +02:00
|
|
|
<head>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
2019-05-23 11:21:46 +02:00
|
|
|
|
2023-05-09 13:25:39 +02:00
|
|
|
<title>DeepZoomImage Doctests</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../3rdparty/highlight/styles/default.css" />
|
|
|
|
<link rel="stylesheet" href="../../../css/doctest.css" />
|
|
|
|
|
|
|
|
<script src="../../3rdparty/highlight/highlight.pack.js"></script>
|
|
|
|
|
|
|
|
<script src="../../../dist/iwmlib.3rdparty.js"></script>
|
|
|
|
|
|
|
|
<script src="../../../dist/iwmlib.js"></script>
|
|
|
|
<script src="../../../dist/iwmlib.pixi.js"></script>
|
|
|
|
|
|
|
|
<style>
|
|
|
|
#app {
|
|
|
|
display: table;
|
|
|
|
margin: 0 auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
#app > * {
|
|
|
|
margin-bottom: 5px;
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body onload="Doctest.run()">
|
|
|
|
<h1>
|
|
|
|
<a href="../../index.html">lib.</a><a href="../index.html">pixi.</a><a href="index.html">deepzoom.</a>
|
|
|
|
DeepZoom
|
|
|
|
</h1>
|
|
|
|
<p>
|
|
|
|
The main class of a deeply zoomable image that is represented by a hierarchy of tile layers for each zoom
|
|
|
|
level. This gives the user the impression that even huge pictures (up to gigapixel-images) can be zoomed
|
|
|
|
instantaneously, since the tiles at smaller levels are scaled immediately and overloaded by more detailed
|
|
|
|
tiles at the larger level as fast as possible.
|
|
|
|
</p>
|
|
|
|
<br />
|
|
|
|
<div id="div1" style="float: left"></div>
|
|
|
|
<div id="div2" style="float: right"></div>
|
|
|
|
<div style="clear: left; margin-top: 540px" />
|
|
|
|
<script class="doctest">
|
|
|
|
// deepZoom
|
|
|
|
//--------------------
|
|
|
|
const deepZoomInfo = new DeepZoomInfo({
|
|
|
|
tileSize: 128,
|
|
|
|
format: 'jpg',
|
|
|
|
overlap: 0,
|
|
|
|
type: 'map',
|
|
|
|
height: 4096,
|
|
|
|
width: 4096,
|
|
|
|
path: '../assets/maps/test',
|
|
|
|
urlTileTemplate: '{path}/{level}/{column}/{row}.{format}'
|
|
|
|
})
|
|
|
|
// const deepZoomInfo = new DeepZoomInfo({
|
|
|
|
// compression: [
|
|
|
|
// "dds"
|
|
|
|
// ],
|
|
|
|
// clip: {
|
|
|
|
// minLevel: 12,
|
|
|
|
// maxLevel: 20,
|
|
|
|
// startCol: 275215,
|
|
|
|
// startRow: 181050,
|
|
|
|
// bounds: {
|
|
|
|
// min: [48.458353, 8.96484374976547],
|
|
|
|
// max: [48.5747899110263, 9.14062499976523]
|
|
|
|
// }
|
|
|
|
// },
|
|
|
|
// tileSize: 512,
|
|
|
|
// format: "png",
|
|
|
|
// overlap: 0,
|
|
|
|
// type: "map",
|
|
|
|
// height: 131072,
|
|
|
|
// width: 131072,
|
|
|
|
// path: "../../../var/tuesch/luftbild_2016_full",
|
|
|
|
// urlTileTemplate: "{path}/{level}/{row}/{column}.{format}"
|
|
|
|
// })
|
|
|
|
|
|
|
|
// app
|
|
|
|
//--------------------
|
|
|
|
window.app = new PIXIApp({
|
|
|
|
width: 400,
|
|
|
|
height: 500,
|
|
|
|
backgroundColor: 0xffcccccc
|
|
|
|
})
|
|
|
|
.setup()
|
|
|
|
.run()
|
|
|
|
|
|
|
|
div1.appendChild(app.view)
|
|
|
|
|
|
|
|
// create the ScatterContainer
|
|
|
|
//--------------------
|
|
|
|
const scatterContainer1 = new ScatterContainer(app.renderer, { showBounds: true, app: app })
|
|
|
|
app.scene.addChild(scatterContainer1)
|
|
|
|
|
|
|
|
// Create the DeepZoomImage
|
|
|
|
//--------------------
|
|
|
|
setTimeout(() => {
|
|
|
|
const deepZoomImage1 = new DeepZoomImage(deepZoomInfo, { app, world: scatterContainer1 })
|
|
|
|
deepZoomImage1.scatter = new DisplayObjectScatter(deepZoomImage1, app.renderer, {
|
|
|
|
minScale: 0,
|
|
|
|
maxScale: 50,
|
|
|
|
onTransform: (event) => {
|
|
|
|
//console.log('currentLevel', deepZoomImage1.currentLevel)
|
|
|
|
deepZoomImage1.transformed(event)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
scatterContainer1.addChild(deepZoomImage1)
|
|
|
|
}, 1000)
|
|
|
|
|
|
|
|
// app2
|
|
|
|
//--------------------
|
|
|
|
const app2 = new PIXIApp({
|
|
|
|
width: 400,
|
|
|
|
height: 500,
|
|
|
|
backgroundColor: 0xffcccccc
|
|
|
|
})
|
|
|
|
.setup()
|
|
|
|
.run()
|
|
|
|
|
|
|
|
div2.appendChild(app2.view)
|
|
|
|
|
|
|
|
// create the ScatterContainer
|
|
|
|
//--------------------
|
|
|
|
const scatterContainer2 = new ScatterContainer(app2.renderer, { showBounds: true, app: app2 })
|
|
|
|
app2.scene.addChild(scatterContainer2)
|
|
|
|
|
|
|
|
// Create the DeepZoomImage
|
|
|
|
//--------------------
|
|
|
|
const deepZoomImage2 = new DeepZoomImage(deepZoomInfo, { app: app2 })
|
|
|
|
deepZoomImage2.scatter = new DisplayObjectScatter(deepZoomImage2, app2.renderer, {
|
2019-05-23 11:21:46 +02:00
|
|
|
minScale: 0,
|
2023-05-09 13:25:39 +02:00
|
|
|
maxScale: 100,
|
|
|
|
onTransform: (event) => {
|
|
|
|
deepZoomImage2.transformed(event)
|
2019-05-23 11:21:46 +02:00
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2023-05-09 13:25:39 +02:00
|
|
|
scatterContainer2.addChild(deepZoomImage2)
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<h1>DeepZoomImage in DeepZoomImage</h1>
|
|
|
|
<p>
|
|
|
|
The main class of a deeply zoomable image that is represented by a hierarchy of tile layers for each zoom
|
|
|
|
level. This gives the user the impression that even huge pictures (up to gigapixel-images) can be zoomed
|
|
|
|
instantaneously, since the tiles at smaller levels are scaled immediately and overloaded by more detailed
|
|
|
|
tiles at the larger level as fast as possible.
|
|
|
|
</p>
|
|
|
|
<br />
|
|
|
|
<div id="div3"></div>
|
|
|
|
<script class="doctest">
|
|
|
|
// app3
|
|
|
|
//--------------------
|
|
|
|
const app3 = new PIXIApp({
|
|
|
|
width: 900,
|
|
|
|
height: 500,
|
|
|
|
backgroundColor: 0xffcccccc
|
|
|
|
})
|
|
|
|
.setup()
|
|
|
|
.run()
|
|
|
|
|
|
|
|
window.app3 = app3
|
|
|
|
|
|
|
|
div3.appendChild(app3.view)
|
|
|
|
|
|
|
|
// create the ScatterContainer
|
|
|
|
//--------------------
|
|
|
|
const scatterContainer3 = new ScatterContainer(app3.renderer, {
|
|
|
|
app: app3,
|
|
|
|
showBounds: true,
|
|
|
|
claimEvent: false,
|
|
|
|
stopEvents: false
|
|
|
|
})
|
|
|
|
app3.scene.addChild(scatterContainer3)
|
|
|
|
|
|
|
|
// Create the DeepZoomImage
|
|
|
|
//--------------------
|
|
|
|
const deepZoomImage3 = new DeepZoomImage(deepZoomInfo, { app: app3 })
|
|
|
|
deepZoomImage3.scatter = new DisplayObjectScatter(deepZoomImage3, app3.renderer, {
|
|
|
|
minScale: 0,
|
|
|
|
maxScale: 100,
|
|
|
|
startScale: 2,
|
|
|
|
autoBringToFront: false,
|
|
|
|
onTransform: (event) => {
|
|
|
|
deepZoomImage3.transformed(event)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
app3._deepZoomImage3 = deepZoomImage3
|
|
|
|
|
|
|
|
scatterContainer3.addChild(deepZoomImage3)
|
2019-05-23 11:21:46 +02:00
|
|
|
|
2023-05-09 13:25:39 +02:00
|
|
|
// Create the second DeepZoomImage
|
|
|
|
//--------------------
|
|
|
|
const border = new PIXI.Graphics()
|
|
|
|
border.beginFill(0x282828, 1)
|
|
|
|
border.drawRect(0, 0, 264, 244)
|
|
|
|
scatterContainer3.addChild(border)
|
2019-05-23 11:21:46 +02:00
|
|
|
|
2023-05-09 13:25:39 +02:00
|
|
|
const mask = new PIXI.Graphics()
|
|
|
|
mask.beginFill(0x282828, 1)
|
|
|
|
mask.drawRect(0, 0, 260, 240)
|
|
|
|
scatterContainer3.addChild(mask)
|
|
|
|
|
|
|
|
const deepZoomImage4 = new DeepZoomImage(deepZoomInfo, { app: app3 })
|
|
|
|
deepZoomImage4.x = 4
|
|
|
|
deepZoomImage4.y = 4
|
|
|
|
deepZoomImage4.scatter = new DisplayObjectScatter(deepZoomImage4, app3.renderer, {
|
|
|
|
minScale: 0,
|
|
|
|
maxScale: 100,
|
|
|
|
onTransform: (event) => {
|
|
|
|
deepZoomImage4.transformed(event)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
deepZoomImage4.mask = mask
|
2019-05-23 11:21:46 +02:00
|
|
|
|
2023-05-09 13:25:39 +02:00
|
|
|
app3._deepZoomImage4 = deepZoomImage4
|
2019-05-23 11:21:46 +02:00
|
|
|
|
2023-05-09 13:25:39 +02:00
|
|
|
scatterContainer3.addChild(deepZoomImage4)
|
|
|
|
</script>
|
|
|
|
</body>
|
2019-05-23 11:21:46 +02:00
|
|
|
</html>
|