<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Juozas devBlog &#187; msdn</title>
	<atom:link href="http://dev.juokaz.com/tag/msdn/feed" rel="self" type="application/rss+xml" />
	<link>http://dev.juokaz.com</link>
	<description>Random ideas, scripts and facts</description>
	<lastBuildDate>Mon, 22 Mar 2010 10:48:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Creating Deep Zoom applications with C#</title>
		<link>http://dev.juokaz.com/winphp-2009/creating-deep-zoom-applications-with-c</link>
		<comments>http://dev.juokaz.com/winphp-2009/creating-deep-zoom-applications-with-c#comments</comments>
		<pubDate>Sun, 26 Apr 2009 22:43:32 +0000</pubDate>
		<dc:creator>Juozas</dc:creator>
				<category><![CDATA[WinPhp 2009]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[deep zoom]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[manoknyga]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[msdn]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[windows server]]></category>

		<guid isPermaLink="false">http://dev.juokaz.com/?p=578</guid>
		<description><![CDATA[Today I was again working with my entry for WinPhp competition. Now with a key feature &#8211; Microsoft Deep Zoom.
To start with, there are many ways how Deep Zoom application can be created. As I have written before here, easiest way is to use Deep Zoom Composer. However, I want to use it as a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://dev.juokaz.com/wp-content/uploads/2009/04/060807-0453-nextgenerat11.jpg" alt="Seadragon" title="Seadragon" width="219" height="98" class="alignnone size-full wp-image-593" />Today I was again working with my entry for <a href="http://wiki.phpconference.nl/2009_WinPHP_Challenge">WinPhp competition</a>. Now with a key feature &#8211; Microsoft <a href="http://livelabs.com/seadragon/">Deep Zoom</a>.</p>
<p>To start with, there are many ways how Deep Zoom application can be created. As I have written before <a href="http://dev.juokaz.com/html/deep-zoom-with-microsoft-seadragon">here</a>, easiest way is to use <a href="http://www.microsoft.com/downloads/details.aspx?familyid=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&amp;displaylang=en">Deep Zoom Composer</a>. However, I want to use it as a part of my application, so any outside application is not a choice.</p>
<p>Microsoft has released independent Deep Zoom library, but documentation is <strong>very</strong> limited, so I mostly used various <a href="http://en.wikipedia.org/wiki/MSDN">MSDN</a> blogs. For example, only in this <a href="http://blogs.msdn.com/expression/archive/2008/11/26/hello-deepzoomtools-dll-deep-zoom-image-tile-generation-made-easy.aspx">article</a> I have found list of available classes (with some useful comments). My first try was to use <a href="http://blogs.sqlxml.org/bryantlikes/archive/2008/11/27/deep-zoom-image-generation-with-deepzoomtools-dll.aspx">this</a> Bryan Like&#8217;s example (at the end of post you can find a link to a working application).</p>
<p><a href="http://dev.juokaz.com/wp-content/uploads/2009/04/2313509133_d9602713d3.jpg"><img src="http://dev.juokaz.com/wp-content/uploads/2009/04/2313509133_d9602713d3-150x150.jpg" alt="Seadragon" title="Seadragon" style="float: right; margin-left: 5px;" width="100" height="100" class="alignnone size-thumbnail wp-image-595" /></a>Given code works just fine, but it can be improved. It allows doing a lot of post-processing modifications inside Silverligt client application, but in most cases such approach is very slow. Problem is, for every zoom level it loads not &#8220;grouped&#8221; image like <a href="http://dev.juokaz.com/wp-content/uploads/2009/04/0_1.jpg">this</a> but required size copies of all visible images.</p>
<p>If, for example, there are 1000 images in a window, it will load all of them even if a single image size is just some pixels. What correct application should do is to load &#8220;grouped&#8221; images &#8211; downloaded amount of data is the same, but required HTTP calls is minimal. I only recommend using that code if you need to have dynamic layout or something like that. As I said before, in most cases, different approach should be chosen.</p>
<p>For my tests I downloaded big collection (>5000) of books covers from my project <a href="http://www.manoknyga.lt">ManoKnyga.lt</a> and when tried to show them in one screen. Working <a href="http://winphp.juokaz.com/demo01/">demo</a> (requires Silverlight <a href="http://silverlight.net/GetStarted/">installed</a>), JavaScript example:<br />
<script type="text/javascript" src="http://seadragon.com/ajax/embed.js"></script><script type="text/javascript">Seadragon.embed("500px", "300px", "http://winphp.juokaz.com/demo01/ClientBin/GeneratedImages/output.xml", 29517, 20175, 256, 1, "jpg", [[0,0,29517,20175,0,9],[1956,0,652,665,0,10],[3260,0,652,321,0,10],[7824,0,652,628,0,10],[11084,0,652,495,0,10],[12388,0,1304,1047,0,10],[16952,0,652,487,0,10],[26080,0,652,843,0,10],[14344,0,652,1314,0,10],[21516,0,652,1628,0,10],[26732,0,652,1628,0,10],[24776,0,652,2490,0,10],[3260,869,652,2574,0,10],[4564,0,652,3463,0,10],[10432,0,652,3430,0,10],[11736,0,652,3054,0,10],[14996,0,652,3390,0,10],[16952,869,652,2305,0,10],[27384,0,652,3362,0,10],[1304,0,652,4324,0,10],[1956,869,652,3440,0,10],[2608,0,652,4263,0,10],[5216,0,652,4320,0,10],[7172,0,652,3956,0,10],[8476,0,652,4309,0,10],[9128,0,652,4174,0,10],[9780,0,652,4128,0,10],[10432,3476,652,672,0,10],[11084,869,652,3183,0,10],[12388,1047,652,3285,0,10],[19560,0,652,4023,0,10],[22820,0,652,3965,0,10],[24776,2607,652,1436,0,10],[25428,0,652,4316,0,10],[26080,869,652,3415,0,10],[11084,4346,652,552,0,10],[12388,4346,652,533,0,10],[16952,3476,652,1702,0,10],[17604,0,652,5047,0,10],[19560,4346,652,575,0,10],[20864,0,652,5201,0,10],[23472,0,652,4777,0,10],[24776,4346,652,652,0,10],[27384,3476,652,1712,0,10],[28036,0,652,4896,0,10],[28688,0,652,5206,0,10],[3912,0,652,5781,0,10],[8476,4346,652,1548,0,10],[15648,0,652,5890,0,10],[19560,5215,652,667,0,10],[22820,4346,652,1521,0,10],[24124,0,652,6074,0,10],[5216,4346,652,2556,0,10],[11084,5215,652,1435,0,10],[14344,1738,652,5058,0,10],[19560,6084,652,827,0,10],[24124,6084,652,417,0,10],[24776,5215,652,1595,0,10],[652,0,652,7762,0,10],[2608,4346,652,3274,0,10],[3912,6084,652,1701,0,10],[5216,6953,652,652,0,10],[5868,0,652,7609,0,10],[6520,0,652,7754,0,10],[11736,3476,652,4340,0,10],[16952,5215,652,2580,0,10],[20212,0,652,7520,0,10],[23472,5215,652,2303,0,10],[26080,4346,652,3230,0,10],[1304,4346,652,4220,0,10],[3260,3476,652,5020,0,10],[5216,7822,652,863,0,10],[5868,7822,1304,920,0,10],[7172,4346,652,4316,0,10],[12388,5215,652,3412,0,10],[14344,6953,652,1483,0,10],[14996,3476,652,5082,0,10],[15648,6084,652,2474,0,10],[11736,7822,652,1731,0,10],[13040,1047,652,8430,0,10],[13692,0,652,9293,0,10],[18256,0,652,9558,0,10],[22168,0,652,9309,0,10],[23472,7822,652,1617,0,10],[1304,8691,652,1732,0,10],[18256,9560,652,810,0,10],[21516,1738,652,8578,0,10],[26080,7822,652,2313,0,10],[28036,5215,652,5177,0,10],[0,0,652,11250,0,10],[652,7822,652,3417,0,10],[1304,10429,652,840,0,10],[26080,10429,652,867,0,10],[3912,7822,652,4125,0,10],[9128,4346,652,7777,0,10],[9780,4346,652,7808,0,10],[17604,5215,652,6843,0,10],[22168,9560,652,2605,0,10],[24124,6953,652,5189,0,10],[12388,8691,652,4282,0,10],[16952,7822,652,5155,0,10],[17604,12168,652,770,0,10],[25428,4346,652,8565,0,10],[28688,5215,652,7605,0,10],[13040,9560,652,4296,0,10],[19560,6953,652,6736,0,10],[20212,7822,652,6062,0,10],[21516,10429,652,3309,0,10],[24776,6953,652,6716,0,10],[28688,13037,652,851,0,10],[3260,8691,652,5997,0,10],[8476,6084,652,8626,0,10],[10432,4346,652,10419,0,10],[20212,13906,652,845,0,10],[20864,5215,652,9136,0,10],[27384,5215,652,9320,0,10],[28688,13906,652,843,0,10],[2608,7822,652,7797,0,10],[3912,12168,652,3447,0,10],[9128,12168,652,3259,0,10],[16300,0,652,15624,0,10],[2608,15644,652,744,0,10],[3260,14775,652,1648,0,10],[3912,15644,652,660,0,10],[4564,3476,652,12824,0,10],[6520,8742,652,7742,0,10],[7172,8691,652,7678,0,10],[12388,13037,652,3386,0,10],[18256,10429,652,5867,0,10],[20212,14775,652,1437,0,10],[21516,13906,652,2600,0,10],[26732,1738,652,14700,0,10],[11084,6953,652,10347,0,10],[13040,13906,652,3274,0,10],[13692,9560,652,7758,0,10],[14344,8691,652,8658,0,10],[19560,13906,652,3259,0,10],[20864,14775,652,2520,0,10],[18908,0,652,18230,0,10],[22168,12168,652,6020,0,10],[22820,6084,652,12138,0,10],[24124,12168,652,6081,0,10],[26080,11298,652,6744,0,10],[0,11298,652,7736,0,10],[1304,11298,652,7605,0,10],[6520,16513,652,2563,0,10],[7172,16513,652,2659,0,10],[7824,869,652,18411,0,10],[8476,14775,652,4703,0,10],[9128,15644,652,3562,0,10],[9780,12168,652,7147,0,10],[10432,14775,652,4407,0,10],[11084,17382,652,1782,0,10],[11736,9560,652,9636,0,10],[12388,16513,652,2816,0,10],[13040,17382,652,1760,0,10],[13692,17382,652,1821,0,10],[14344,17382,652,1653,0,10],[14996,8691,652,10579,0,10],[15648,8691,652,10684,0,10],[16300,15644,652,3683,0,10],[16952,13037,652,6227,0,10],[17604,13037,652,6192,0,10],[18256,16513,652,2573,0,10],[18908,18251,652,1104,0,10],[19560,17382,652,1845,0,10],[20212,16513,652,2733,0,10],[20864,17382,652,1928,0,10],[21516,16513,652,2580,0,10],[22168,18251,652,1089,0,10],[22820,18251,652,1011,0,10],[23472,9560,652,9640,0,10],[24124,18251,652,970,0,10],[24776,13906,652,5244,0,10],[25428,13037,652,6246,0,10],[26080,18251,652,1101,0,10],[26732,16513,652,2737,0,10],[27384,14775,652,4316,0,10],[28036,10429,652,8963,0,10],[28688,14775,652,4511,0,10],[0,19120,652,991,0,10],[652,11298,652,8474,0,10],[1304,19120,652,825,0,10],[1956,4346,652,15829,0,10],[2608,16513,652,3601,0,10],[3260,16513,652,3539,0,10],[3912,16513,652,3654,0,10],[4564,16513,652,3486,0,10],[5216,8691,652,11262,0,10],[5868,8742,652,11402,0,10],[6520,19120,652,1053,0,10],[1956,0,652,665,0,11],[3260,0,652,321,0,11],[7824,0,652,628,0,11],[11084,0,652,495,0,11],[12388,0,1304,1047,0,11],[16952,0,652,487,0,11],[26080,0,652,843,0,11],[14344,0,652,1314,0,11],[21516,0,652,1628,0,11],[26732,0,652,1628,0,11],[24776,0,652,2490,0,11],[3260,869,652,2574,0,11],[4564,0,652,3463,0,11],[10432,0,652,3430,0,11],[11736,0,652,3054,0,11],[14996,0,652,3390,0,11],[16952,869,652,2305,0,11],[27384,0,652,3362,0,11],[1304,0,652,4324,0,11],[1956,869,652,3440,0,11],[2608,0,652,4263,0,11],[5216,0,652,4320,0,11],[7172,0,652,3956,0,11],[8476,0,652,4309,0,11],[9128,0,652,4174,0,11],[9780,0,652,4128,0,11],[10432,3476,652,672,0,11],[11084,869,652,3183,0,11],[12388,1047,652,3285,0,11],[19560,0,652,4023,0,11],[22820,0,652,3965,0,11],[24776,2607,652,1436,0,11],[25428,0,652,4316,0,11],[26080,869,652,3415,0,11],[11084,4346,652,552,0,11],[12388,4346,652,533,0,11],[16952,3476,652,1702,0,11],[17604,0,652,5047,0,11],[19560,4346,652,575,0,11],[20864,0,652,5201,0,11],[23472,0,652,4777,0,11],[24776,4346,652,652,0,11],[27384,3476,652,1712,0,11],[28036,0,652,4896,0,11],[28688,0,652,5206,0,11],[3912,0,652,5781,0,11],[8476,4346,652,1548,0,11],[15648,0,652,5890,0,11],[19560,5215,652,667,0,11],[22820,4346,652,1521,0,11],[24124,0,652,6074,0,11],[5216,4346,652,2556,0,11],[11084,5215,652,1435,0,11],[14344,1738,652,5058,0,11],[19560,6084,652,827,0,11],[24124,6084,652,417,0,11],[24776,5215,652,1595,0,11],[652,0,652,7762,0,11],[2608,4346,652,3274,0,11],[3912,6084,652,1701,0,11],[5216,6953,652,652,0,11],[5868,0,652,7609,0,11],[6520,0,652,7754,0,11],[11736,3476,652,4340,0,11],[16952,5215,652,2580,0,11],[20212,0,652,7520,0,11],[23472,5215,652,2303,0,11],[26080,4346,652,3230,0,11],[1304,4346,652,4220,0,11],[3260,3476,652,5020,0,11],[5216,7822,652,863,0,11],[5868,7822,1304,920,0,11],[7172,4346,652,4316,0,11],[12388,5215,652,3412,0,11],[14344,6953,652,1483,0,11],[14996,3476,652,5082,0,11],[15648,6084,652,2474,0,11],[11736,7822,652,1731,0,11],[13040,1047,652,8430,0,11],[13692,0,652,9293,0,11],[18256,0,652,9558,0,11],[22168,0,652,9309,0,11],[23472,7822,652,1617,0,11],[1304,8691,652,1732,0,11],[18256,9560,652,810,0,11],[21516,1738,652,8578,0,11],[26080,7822,652,2313,0,11],[28036,5215,652,5177,0,11],[0,0,652,11250,0,11],[652,7822,652,3417,0,11],[1304,10429,652,840,0,11],[26080,10429,652,867,0,11],[3912,7822,652,4125,0,11],[9128,4346,652,7777,0,11],[9780,4346,652,7808,0,11],[17604,5215,652,6843,0,11],[22168,9560,652,2605,0,11],[24124,6953,652,5189,0,11],[12388,8691,652,4282,0,11],[16952,7822,652,5155,0,11],[17604,12168,652,770,0,11],[25428,4346,652,8565,0,11],[28688,5215,652,7605,0,11],[13040,9560,652,4296,0,11],[19560,6953,652,6736,0,11],[20212,7822,652,6062,0,11],[21516,10429,652,3309,0,11],[24776,6953,652,6716,0,11],[28688,13037,652,851,0,11],[3260,8691,652,5997,0,11],[8476,6084,652,8626,0,11],[10432,4346,652,10419,0,11],[20212,13906,652,845,0,11],[20864,5215,652,9136,0,11],[27384,5215,652,9320,0,11],[28688,13906,652,843,0,11],[2608,7822,652,7797,0,11],[3912,12168,652,3447,0,11],[9128,12168,652,3259,0,11],[16300,0,652,15624,0,11],[2608,15644,652,744,0,11],[3260,14775,652,1648,0,11],[3912,15644,652,660,0,11],[4564,3476,652,12824,0,11],[6520,8742,652,7742,0,11],[7172,8691,652,7678,0,11],[12388,13037,652,3386,0,11],[18256,10429,652,5867,0,11],[20212,14775,652,1437,0,11],[21516,13906,652,2600,0,11],[26732,1738,652,14700,0,11],[11084,6953,652,10347,0,11],[13040,13906,652,3274,0,11],[13692,9560,652,7758,0,11],[14344,8691,652,8658,0,11],[19560,13906,652,3259,0,11],[20864,14775,652,2520,0,11],[18908,0,652,18230,0,11],[22168,12168,652,6020,0,11],[22820,6084,652,12138,0,11],[24124,12168,652,6081,0,11],[26080,11298,652,6744,0,11],[0,11298,652,7736,0,11],[1304,11298,652,7605,0,11],[6520,16513,652,2563,0,11],[7172,16513,652,2659,0,11],[7824,869,652,18411,0,11],[8476,14775,652,4703,0,11],[9128,15644,652,3562,0,11],[9780,12168,652,7147,0,11],[10432,14775,652,4407,0,11],[11084,17382,652,1782,0,11],[11736,9560,652,9636,0,11],[12388,16513,652,2816,0,11],[13040,17382,652,1760,0,11],[13692,17382,652,1821,0,11],[14344,17382,652,1653,0,11],[14996,8691,652,10579,0,11],[15648,8691,652,10684,0,11],[16300,15644,652,3683,0,11],[16952,13037,652,6227,0,11],[17604,13037,652,6192,0,11],[18256,16513,652,2573,0,11],[18908,18251,652,1104,0,11],[19560,17382,652,1845,0,11],[20212,16513,652,2733,0,11],[20864,17382,652,1928,0,11],[21516,16513,652,2580,0,11],[22168,18251,652,1089,0,11],[22820,18251,652,1011,0,11],[23472,9560,652,9640,0,11],[24124,18251,652,970,0,11],[24776,13906,652,5244,0,11],[25428,13037,652,6246,0,11],[26080,18251,652,1101,0,11],[26732,16513,652,2737,0,11],[27384,14775,652,4316,0,11],[28036,10429,652,8963,0,11],[28688,14775,652,4511,0,11],[0,19120,652,991,0,11],[652,11298,652,8474,0,11],[1304,19120,652,825,0,11],[1956,4346,652,15829,0,11],[2608,16513,652,3601,0,11],[3260,16513,652,3539,0,11],[3912,16513,652,3654,0,11],[4564,16513,652,3486,0,11],[5216,8691,652,11262,0,11],[5868,8742,652,11402,0,11],[6520,19120,652,1053,0,11],[1956,0,652,665,0,12],[3260,0,652,321,0,12],[7824,0,652,628,0,12],[11084,0,652,495,0,12],[12388,0,1304,1047,0,12],[16952,0,652,487,0,12],[26080,0,652,843,0,12],[14344,0,652,1314,0,12],[21516,0,652,1628,0,12],[26732,0,652,1628,0,12],[24776,0,652,2490,0,12],[3260,869,652,2574,0,12],[4564,0,652,3463,0,12],[10432,0,652,3430,0,12],[11736,0,652,3054,0,12],[14996,0,652,3390,0,12],[16952,869,652,2305,0,12],[27384,0,652,3362,0,12],[1304,0,652,4324,0,12],[1956,869,652,3440,0,12],[2608,0,652,4263,0,12],[5216,0,652,4320,0,12],[7172,0,652,3956,0,12],[8476,0,652,4309,0,12],[9128,0,652,4174,0,12],[9780,0,652,4128,0,12],[10432,3476,652,672,0,12],[11084,869,652,3183,0,12],[12388,1047,652,3285,0,12],[19560,0,652,4023,0,12],[22820,0,652,3965,0,12],[24776,2607,652,1436,0,12],[25428,0,652,4316,0,12],[26080,869,652,3415,0,12],[11084,4346,652,552,0,12],[12388,4346,652,533,0,12],[16952,3476,652,1702,0,12],[17604,0,652,5047,0,12],[19560,4346,652,575,0,12],[20864,0,652,5201,0,12],[23472,0,652,4777,0,12],[24776,4346,652,652,0,12],[27384,3476,652,1712,0,12],[28036,0,652,4896,0,12],[28688,0,652,5206,0,12],[3912,0,652,5781,0,12],[8476,4346,652,1548,0,12],[15648,0,652,5890,0,12],[19560,5215,652,667,0,12],[22820,4346,652,1521,0,12],[24124,0,652,6074,0,12],[5216,4346,652,2556,0,12],[11084,5215,652,1435,0,12],[14344,1738,652,5058,0,12],[19560,6084,652,827,0,12],[24124,6084,652,417,0,12],[24776,5215,652,1595,0,12],[652,0,652,7762,0,12],[2608,4346,652,3274,0,12],[3912,6084,652,1701,0,12],[5216,6953,652,652,0,12],[5868,0,652,7609,0,12],[6520,0,652,7754,0,12],[11736,3476,652,4340,0,12],[16952,5215,652,2580,0,12],[20212,0,652,7520,0,12],[23472,5215,652,2303,0,12],[26080,4346,652,3230,0,12],[1304,4346,652,4220,0,12],[3260,3476,652,5020,0,12],[5216,7822,652,863,0,12],[5868,7822,1304,920,0,12],[7172,4346,652,4316,0,12],[12388,5215,652,3412,0,12],[14344,6953,652,1483,0,12],[14996,3476,652,5082,0,12],[15648,6084,652,2474,0,12],[11736,7822,652,1731,0,12],[13040,1047,652,8430,0,12],[13692,0,652,9293,0,12],[18256,0,652,9558,0,12],[22168,0,652,9309,0,12],[23472,7822,652,1617,0,12],[1304,8691,652,1732,0,12],[18256,9560,652,810,0,12],[21516,1738,652,8578,0,12],[26080,7822,652,2313,0,12],[28036,5215,652,5177,0,12],[0,0,652,11250,0,12],[652,7822,652,3417,0,12],[1304,10429,652,840,0,12],[26080,10429,652,867,0,12],[3912,7822,652,4125,0,12],[9128,4346,652,7777,0,12],[9780,4346,652,7808,0,12],[17604,5215,652,6843,0,12],[22168,9560,652,2605,0,12],[24124,6953,652,5189,0,12],[12388,8691,652,4282,0,12],[16952,7822,652,5155,0,12],[17604,12168,652,770,0,12],[25428,4346,652,8565,0,12],[28688,5215,652,7605,0,12],[13040,9560,652,4296,0,12],[19560,6953,652,6736,0,12],[20212,7822,652,6062,0,12],[21516,10429,652,3309,0,12],[24776,6953,652,6716,0,12],[28688,13037,652,851,0,12],[3260,8691,652,5997,0,12],[8476,6084,652,8626,0,12],[10432,4346,652,10419,0,12],[20212,13906,652,845,0,12],[20864,5215,652,9136,0,12],[27384,5215,652,9320,0,12],[28688,13906,652,843,0,12],[2608,7822,652,7797,0,12],[3912,12168,652,3447,0,12],[9128,12168,652,3259,0,12],[16300,0,652,15624,0,12],[2608,15644,652,744,0,12],[3260,14775,652,1648,0,12],[3912,15644,652,660,0,12],[4564,3476,652,12824,0,12],[6520,8742,652,7742,0,12],[7172,8691,652,7678,0,12],[12388,13037,652,3386,0,12],[18256,10429,652,5867,0,12],[20212,14775,652,1437,0,12],[21516,13906,652,2600,0,12],[26732,1738,652,14700,0,12],[11084,6953,652,10347,0,12],[13040,13906,652,3274,0,12],[13692,9560,652,7758,0,12],[14344,8691,652,8658,0,12],[19560,13906,652,3259,0,12],[20864,14775,652,2520,0,12],[18908,0,652,18230,0,12],[22168,12168,652,6020,0,12],[22820,6084,652,12138,0,12],[24124,12168,652,6081,0,12],[26080,11298,652,6744,0,12],[0,11298,652,7736,0,12],[1304,11298,652,7605,0,12],[6520,16513,652,2563,0,12],[7172,16513,652,2659,0,12],[7824,869,652,18411,0,12],[8476,14775,652,4703,0,12],[9128,15644,652,3562,0,12],[9780,12168,652,7147,0,12],[10432,14775,652,4407,0,12],[11084,17382,652,1782,0,12],[11736,9560,652,9636,0,12],[12388,16513,652,2816,0,12],[13040,17382,652,1760,0,12],[13692,17382,652,1821,0,12],[14344,17382,652,1653,0,12],[14996,8691,652,10579,0,12],[15648,8691,652,10684,0,12],[16300,15644,652,3683,0,12],[16952,13037,652,6227,0,12],[17604,13037,652,6192,0,12],[18256,16513,652,2573,0,12],[18908,18251,652,1104,0,12],[19560,17382,652,1845,0,12],[20212,16513,652,2733,0,12],[20864,17382,652,1928,0,12],[21516,16513,652,2580,0,12],[22168,18251,652,1089,0,12],[22820,18251,652,1011,0,12],[23472,9560,652,9640,0,12],[24124,18251,652,970,0,12],[24776,13906,652,5244,0,12],[25428,13037,652,6246,0,12],[26080,18251,652,1101,0,12],[26732,16513,652,2737,0,12],[27384,14775,652,4316,0,12],[28036,10429,652,8963,0,12],[28688,14775,652,4511,0,12],[0,19120,652,991,0,12],[652,11298,652,8474,0,12],[1304,19120,652,825,0,12],[1956,4346,652,15829,0,12],[2608,16513,652,3601,0,12],[3260,16513,652,3539,0,12],[3912,16513,652,3654,0,12],[4564,16513,652,3486,0,12],[5216,8691,652,11262,0,12],[5868,8742,652,11402,0,12],[6520,19120,652,1053,0,12],[1956,0,652,665,0,13],[3260,0,652,321,0,13],[7824,0,652,628,0,13],[11084,0,652,495,0,13],[12388,0,1304,1047,0,13],[16952,0,652,487,0,13],[26080,0,652,843,0,13],[14344,0,652,1314,0,13],[21516,0,652,1628,0,13],[26732,0,652,1628,0,13],[15648,0,652,2716,0,13],[24776,0,652,2490,0,13],[3260,869,652,2574,0,13],[4564,0,652,3463,0,13],[10432,0,652,3430,0,13],[11736,0,652,3054,0,13],[14996,0,652,3390,0,13],[16952,869,652,2305,0,13],[23472,0,652,3659,0,13],[27384,0,652,3362,0,13],[1304,0,652,4324,0,13],[1956,869,652,3440,0,13],[2608,0,652,4263,0,13],[5216,0,652,4320,0,13],[7172,0,652,3956,0,13],[8476,0,652,4309,0,13],[9128,0,652,4174,0,13],[9780,0,652,4128,0,13],[10432,3476,652,672,0,13],[11084,869,652,3183,0,13],[12388,1047,652,3285,0,13],[19560,0,652,4023,0,13],[22820,0,652,3965,0,13],[24776,2607,652,1436,0,13],[25428,0,652,4316,0,13],[26080,869,652,3415,0,13],[2608,4346,652,968,0,13],[11084,4346,652,552,0,13],[12388,4346,652,533,0,13],[16952,3476,652,1702,0,13],[17604,0,652,5047,0,13],[19560,4346,652,575,0,13],[20864,0,652,5201,0,13],[23472,4346,652,431,0,13],[24776,4346,652,652,0,13],[27384,3476,652,1712,0,13],[28036,0,652,4896,0,13],[28688,0,652,5206,0,13],[3912,0,652,5781,0,13],[8476,4346,652,1548,0,13],[9780,4346,652,1927,0,13],[15648,3476,652,2414,0,13],[19560,5215,652,667,0,13],[22820,4346,652,1521,0,13],[24124,0,652,6074,0,13],[5216,4346,652,2556,0,13],[11084,5215,652,1435,0,13],[14344,1738,652,5058,0,13],[17604,5215,652,1740,0,13],[18908,0,652,7008,0,13],[19560,6084,652,827,0,13],[24124,6084,652,417,0,13],[24776,5215,652,1595,0,13],[652,0,652,7762,0,13],[2608,6084,652,1536,0,13],[3912,6084,652,1701,0,13],[5216,6953,652,652,0,13],[5868,0,652,7609,0,13],[6520,0,652,7754,0,13],[11736,3476,652,4340,0,13],[16952,5215,652,2580,0,13],[20212,0,652,7520,0,13],[23472,5215,652,2303,0,13],[26080,4346,652,3230,0,13],[1304,4346,652,4220,0,13],[3260,3476,652,5020,0,13],[3912,7822,652,973,0,13],[5216,7822,652,863,0,13],[5868,7822,1304,920,0,13],[7172,4346,652,4316,0,13],[12388,5215,652,3412,0,13],[14344,6953,652,1483,0,13],[14996,3476,652,5082,0,13],[15648,6084,652,2474,0,13],[11736,7822,652,1731,0,13],[13040,1047,652,8430,0,13],[13692,0,652,9293,0,13],[15648,8691,652,1055,0,13],[18256,0,652,9558,0,13],[18908,7822,652,1931,0,13],[22168,0,652,9309,0,13],[23472,7822,652,1617,0,13],[1304,8691,652,1732,0,13],[18256,9560,652,810,0,13],[21516,1738,652,8578,0,13],[26080,7822,652,2313,0,13],[28036,5215,652,5177,0,13],[0,0,652,11250,0,13],[652,7822,652,3417,0,13],[1304,10429,652,840,0,13],[26080,10429,652,867,0,13],[652,11298,652,948,0,13],[3912,9560,652,2387,0,13],[9128,4346,652,7777,0,13],[9780,6953,652,5201,0,13],[17604,7822,652,4236,0,13],[22168,9560,652,2605,0,13],[24124,6953,652,5189,0,13],[12388,8691,652,4282,0,13],[16952,7822,652,5155,0,13],[17604,12168,652,770,0,13],[25428,4346,652,8565,0,13],[28688,5215,652,7605,0,13],[13040,9560,652,4296,0,13],[19560,6953,652,6736,0,13],[20212,7822,652,6062,0,13],[21516,10429,652,3309,0,13],[24776,6953,652,6716,0,13],[28688,13037,652,851,0,13],[3260,8691,652,5997,0,13],[8476,6084,652,8626,0,13],[10432,4346,652,10419,0,13],[20212,13906,652,845,0,13],[20864,5215,652,9136,0,13],[27384,5215,652,9320,0,13],[28688,13906,652,843,0,13],[2608,7822,652,7797,0,13],[3912,12168,652,3447,0,13],[9128,12168,652,3259,0,13],[16300,0,652,15624,0,13],[2608,15644,652,744,0,13],[3260,14775,652,1648,0,13],[3912,15644,652,660,0,13],[4564,3476,652,12824,0,13],[6520,8742,652,7742,0,13],[7172,8691,652,7678,0,13],[12388,13037,652,3386,0,13],[18256,10429,652,5867,0,13],[20212,14775,652,1437,0,13],[21516,13906,652,2600,0,13],[26732,1738,652,14700,0,13],[6520,16513,652,913,0,13],[11084,6953,652,10347,0,13],[13040,13906,652,3274,0,13],[13692,9560,652,7758,0,13],[14344,8691,652,8658,0,13],[19560,13906,652,3259,0,13],[20864,14775,652,2520,0,13],[14996,8691,652,9771,0,13],[18908,10429,652,7801,0,13],[22168,12168,652,6020,0,13],[22820,6084,652,12138,0,13],[24124,12168,652,6081,0,13],[26080,11298,652,6744,0,13],[0,11298,652,7736,0,13],[1304,11298,652,7605,0,13],[6520,18251,652,825,0,13],[7172,16513,652,2659,0,13],[7824,869,652,18411,0,13],[8476,14775,652,4703,0,13],[9128,15644,652,3562,0,13],[9780,12168,652,7147,0,13],[10432,14775,652,4407,0,13],[11084,17382,652,1782,0,13],[11736,10429,652,8767,0,13],[12388,16513,652,2816,0,13],[13040,17382,652,1760,0,13],[13692,17382,652,1821,0,13],[14344,17382,652,1653,0,13],[15648,10429,652,8946,0,13],[16300,15644,652,3683,0,13],[16952,13037,652,6227,0,13],[17604,13037,652,6192,0,13],[18256,16513,652,2573,0,13],[18908,18251,652,1104,0,13],[19560,17382,652,1845,0,13],[20212,16513,652,2733,0,13],[20864,17382,652,1928,0,13],[21516,16513,652,2580,0,13],[22168,18251,652,1089,0,13],[22820,18251,652,1011,0,13],[23472,9560,652,9640,0,13],[24124,18251,652,970,0,13],[24776,13906,652,5244,0,13],[25428,13037,652,6246,0,13],[26080,18251,652,1101,0,13],[26732,16513,652,2737,0,13],[27384,14775,652,4316,0,13],[28036,10429,652,8963,0,13],[28688,14775,652,4511,0,13],[0,19120,652,991,0,13],[652,13037,652,6735,0,13],[1304,19120,652,825,0,13],[1956,4346,652,15829,0,13],[2608,16513,652,3601,0,13],[3260,16513,652,3539,0,13],[3912,16513,652,3654,0,13],[4564,16513,652,3486,0,13],[5216,8691,652,11262,0,13],[5868,8742,652,11402,0,13],[6520,19120,652,1053,0,13],[1956,0,652,665,0,14],[3260,0,652,321,0,14],[5216,0,652,976,0,14],[7824,0,652,628,0,14],[8476,0,652,1043,0,14],[9128,0,652,928,0,14],[9780,0,652,1013,0,14],[10432,0,652,1082,0,14],[11084,0,652,495,0,14],[12388,0,1304,1047,0,14],[14996,0,652,963,0,14],[16952,0,652,487,0,14],[26080,0,652,843,0,14],[0,0,652,1924,0,14],[13692,0,652,1847,0,14],[14344,0,652,1314,0,14],[15648,0,652,2003,0,14],[17604,0,652,1755,0,14],[20212,0,652,1843,0,14],[20864,869,652,1032,0,14],[21516,0,652,1628,0,14],[26732,0,652,1628,0,14],[28688,869,652,935,0,14],[11736,0,652,2702,0,14],[12388,1738,652,1042,0,14],[14344,1738,652,998,0,14],[16952,869,652,1980,0,14],[21516,1738,652,1008,0,14],[23472,0,652,2720,0,14],[24124,0,652,2793,0,14],[24776,0,652,2490,0,14],[26080,869,652,1924,0,14],[26732,1738,652,963,0,14],[27384,869,652,1824,0,14],[28036,0,652,2751,0,14],[3260,1738,652,1705,0,14],[4564,869,652,2594,0,14],[10432,1738,652,1692,0,14],[14996,2607,652,783,0,14],[19560,0,652,3543,0,14],[20212,2607,652,1126,0,14],[22168,0,652,3601,0,14],[24776,2607,652,961,0,14],[652,0,652,4428,0,14],[1304,869,652,3455,0,14],[1956,869,652,3440,0,14],[2608,869,652,3394,0,14],[3260,3476,652,1055,0,14],[4564,3476,652,1055,0,14],[5216,1738,652,2582,0,14],[7172,2607,652,1349,0,14],[8476,1738,652,2571,0,14],[9128,1738,652,2436,0,14],[9780,1738,652,2390,0,14],[10432,3476,652,672,0,14],[11084,869,652,3183,0,14],[12388,3476,652,856,0,14],[16300,0,652,4483,0,14],[22820,0,652,3965,0,14],[25428,0,652,4316,0,14],[26080,3476,652,808,0,14],[1304,4346,652,1075,0,14],[3912,0,652,5362,0,14],[6520,1738,652,3628,0,14],[9780,4346,652,1073,0,14],[11084,4346,652,552,0,14],[11736,3476,652,1924,0,14],[12388,4346,652,533,0,14],[13040,3476,652,1874,0,14],[15648,3476,652,1909,0,14],[16952,3476,652,1702,0,14],[17604,2607,652,2440,0,14],[19560,4346,652,575,0,14],[20864,4346,652,855,0,14],[23472,4346,652,431,0,14],[24776,4346,652,652,0,14],[27384,3476,652,1712,0,14],[28036,3476,652,1420,0,14],[28688,4346,652,860,0,14],[7824,1738,652,4499,0,14],[8476,4346,652,1548,0,14],[11084,5215,652,960,0,14],[14344,4346,652,1876,0,14],[14996,3476,652,2723,0,14],[16300,5215,652,995,0,14],[16952,5215,652,1031,0,14],[18256,0,652,6262,0,14],[19560,5215,652,667,0,14],[22168,4346,652,1885,0,14],[22820,4346,652,1521,0,14],[24124,3476,652,2598,0,14],[25428,4346,652,1801,0,14],[3260,5215,652,1812,0,14],[5216,5215,652,1687,0,14],[9128,6084,652,963,0,14],[17604,5215,652,1740,0,14],[18908,0,652,7008,0,14],[19560,6084,652,827,0,14],[20212,4346,652,2797,0,14],[24124,6084,652,417,0,14],[24776,5215,652,1595,0,14],[26732,3476,652,3620,0,14],[652,6084,652,1678,0,14],[1956,4346,652,3658,0,14],[2608,6084,652,1536,0,14],[3912,6084,652,1701,0,14],[5216,6953,652,652,0,14],[5868,2607,652,5002,0,14],[6520,6953,652,801,0,14],[11736,6084,652,1732,0,14],[23472,6953,652,565,0,14],[24776,6953,652,976,0,14],[26080,4346,652,3230,0,14],[1304,6953,652,1613,0,14],[3260,7822,652,674,0,14],[3912,7822,652,973,0,14],[5216,7822,652,863,0,14],[5868,7822,1304,920,0,14],[7172,4346,652,4316,0,14],[7824,6953,652,1820,0,14],[9128,7822,652,974,0,14],[9780,6953,652,1920,0,14],[10432,4346,652,4454,0,14],[12388,5215,652,3412,0,14],[14344,6953,652,1483,0,14],[14996,6953,652,1605,0,14],[15648,6084,652,2474,0,14],[25428,7822,652,976,0,14],[26732,7822,652,1007,0,14],[3260,8691,652,959,0,14],[4564,5215,652,4587,0,14],[5216,8691,652,1141,0,14],[5868,8742,652,862,0,14],[11084,6953,652,2777,0,14],[11736,7822,652,1731,0,14],[13040,6953,652,2524,0,14],[13692,3476,652,5817,0,14],[14996,8691,652,970,0,14],[15648,8691,652,1055,0,14],[16952,7822,652,1744,0,14],[17604,8691,652,993,0,14],[18256,7822,652,1736,0,14],[18908,7822,652,1931,0,14],[19560,6953,652,2764,0,14],[22168,7822,652,1487,0,14],[23472,7822,652,1617,0,14],[1304,8691,652,1732,0,14],[1956,9560,652,998,0,14],[12388,8691,652,1852,0,14],[18256,9560,652,810,0,14],[20212,7822,652,2793,0,14],[21516,4346,652,5970,0,14],[22168,9560,652,1047,0,14],[25428,9560,652,1009,0,14],[26080,8691,652,1444,0,14],[27384,5215,652,5362,0,14],[28036,5215,652,5177,0,14],[0,2607,652,8643,0,14],[652,7822,652,3417,0,14],[1304,10429,652,840,0,14],[6520,9560,652,1817,0,14],[19560,10429,652,995,0,14],[20864,5215,652,6179,0,14],[23472,9560,652,1865,0,14],[24776,8691,652,2808,0,14],[26080,10429,652,867,0,14],[26732,9560,652,1854,0,14],[0,11298,652,1007,0,14],[652,11298,652,948,0,14],[1956,11298,652,1013,0,14],[3912,10429,652,1518,0,14],[4564,11298,652,1067,0,14],[9128,9560,652,2563,0,14],[9780,10429,652,1725,0,14],[14344,8691,652,3547,0,14],[17604,11298,652,760,0,14],[18908,10429,652,1806,0,14],[22168,11298,652,867,0,14],[24124,8691,652,3451,0,14],[3260,11298,652,1834,0,14],[5216,10429,652,2684,0,14],[6520,12168,652,1003,0,14],[7172,9560,652,3533,0,14],[7824,9560,652,3570,0,14],[8476,6084,652,7138,0,14],[10432,11298,652,1832,0,14],[11084,12168,652,931,0,14],[11736,10429,652,2617,0,14],[12388,12168,652,805,0,14],[13040,10429,652,2701,0,14],[13692,9560,652,3655,0,14],[14996,10429,652,2743,0,14],[16300,7822,652,5274,0,14],[16952,11298,652,1679,0,14],[17604,12168,652,770,0,14],[22168,12168,652,951,0,14],[23472,12168,1304,985,0,14],[25428,11298,652,1613,0,14],[28688,5215,652,7605,0,14],[5868,10429,652,3736,0,14],[14344,13037,652,945,0,14],[16952,13037,652,1043,0,14],[17604,13037,652,997,0,14],[18256,10429,652,3635,0,14],[18908,13037,652,889,0,14],[19560,12168,652,1521,0,14],[20212,13037,652,847,0,14],[21516,12168,652,1570,0,14],[22820,7822,652,6170,0,14],[24776,12168,652,1501,0,14],[28688,13037,652,851,0,14],[652,13037,652,1808,0,14],[3260,13906,652,782,0,14],[5216,13906,652,920,0,14],[8476,13906,652,804,0,14],[10432,13906,652,859,0,14],[15648,11298,652,3590,0,14],[20212,13906,652,845,0,14],[20864,12168,652,2183,0,14],[24776,13906,652,1074,0,14],[25428,13037,652,1904,0,14],[26080,13037,652,1797,0,14],[26732,12168,652,2762,0,14],[27384,13037,652,1498,0,14],[28688,13906,652,843,0,14],[1304,11298,652,4501,0,14],[1956,13906,652,1805,0,14],[2608,7822,652,7797,0,14],[3912,13037,652,2578,0,14],[7172,14775,1956,932,0,14],[9128,12168,652,3259,0,14],[14996,14775,652,1130,0,14],[16300,14775,652,849,0,14],[20864,14775,652,1047,0,14],[24124,13153,652,2598,0,14],[2608,15644,652,744,0,14],[3260,14775,652,1648,0,14],[3912,15644,652,660,0,14],[4564,13906,652,2394,0,14],[5216,15644,652,1055,0,14],[6520,15644,652,840,0,14],[7172,15707,652,662,0,14],[8476,15707,652,857,0,14],[10432,14775,652,1916,0,14],[12388,15644,652,779,0,14],[18256,15644,652,652,0,14],[20212,15644,652,568,0,14],[21516,13906,652,2600,0,14],[22820,14775,652,1825,0,14],[25428,15644,652,923,0,14],[26732,15644,652,794,0,14],[3260,16513,652,1028,0,14],[9128,15644,652,1831,0,14],[11084,13906,652,3394,0,14],[11736,13906,652,3547,0,14],[12388,16513,652,932,0,14],[13040,14775,652,2405,0,14],[13692,16513,652,805,0,14],[14344,14775,652,2574,0,14],[14996,16513,652,1013,0,14],[16952,14775,652,2701,0,14],[19560,14775,652,2390,0,14],[20212,16513,652,1032,0,14],[20864,16513,652,782,0,14],[27384,16513,652,913,0,14],[2608,17382,652,956,0,14],[5216,17382,652,910,0,14],[9780,12168,652,6310,0,14],[17604,14775,652,3556,0,14],[18908,15644,652,2586,0,14],[20864,17382,652,950,0,14],[21516,16513,652,1993,0,14],[22168,16513,652,1675,0,14],[22820,17382,652,840,0,14],[23472,13153,652,5464,0,14],[24124,17382,652,867,0,14],[24776,15644,652,2766,0,14],[25428,17382,652,1070,0,14],[26080,15644,652,2398,0,14],[0,14775,652,4259,0,14],[1304,18251,652,652,0,14],[6520,18251,652,825,0,14],[7172,16513,652,2659,0,14],[7824,15707,652,3573,0,14],[9128,18251,652,955,0,14],[11084,18251,652,913,0,14],[12388,18251,652,1078,0,14],[13040,18251,652,891,0,14],[13692,17382,652,1821,0,14],[14344,18251,652,784,0,14],[15648,15644,652,3731,0,14],[16300,15644,652,3683,0,14],[19560,18251,652,976,0,14],[22820,18251,652,1011,0,14],[24124,18251,652,970,0,14],[26080,18251,652,1101,0,14],[26732,16513,652,2737,0,14],[27384,18251,652,840,0,14],[28036,13037,652,6355,0,14],[28688,16513,652,2773,0,14],[0,19120,652,991,0,14],[652,17382,652,2390,0,14],[1304,19120,652,825,0,14],[1956,19120,652,1055,0,14],[2608,19120,652,994,0,14],[3260,19120,652,932,0,14],[3912,18251,652,1916,0,14],[4564,17382,652,2617,0,14],[5216,19120,652,833,0,14],[5868,14775,652,5369,0,14],[7824,0,652,628,0,15],[21516,0,652,949,0,15],[25428,0,652,953,0,15],[26080,0,652,843,0,15],[1304,869,652,920,0,15],[2608,869,652,938,0,15],[14344,869,652,445,0,15],[28688,869,652,935,0,15],[3912,0,652,2723,0,15],[4564,869,652,1804,0,15],[9128,1738,652,1043,0,15],[11736,1738,652,964,0,15],[12388,1738,652,1042,0,15],[5868,2607,652,881,0,15],[10432,1738,652,1692,0,15],[11084,2607,652,1004,0,15],[14996,2607,652,783,0,15],[18256,2607,652,1802,0,15],[18908,2607,652,1835,0,15],[22820,3476,652,489,0,15],[26080,3476,652,808,0,15],[8476,4346,652,1000,0,15],[26732,3476,652,1764,0,15],[27384,4346,652,842,0,15],[28036,4346,652,550,0,15],[28688,4346,652,860,0,15],[1956,4346,652,1906,0,15],[4564,6084,652,1144,0,15],[5216,5215,652,1687,0,15],[5868,5215,652,1800,0,15],[9128,6084,652,963,0,15],[12388,6084,652,943,0,15],[24124,6084,652,417,0,15],[24776,6084,652,726,0,15],[13692,6953,652,1063,0,15],[14344,6953,652,884,0,15],[14996,6953,652,1009,0,15],[15648,6953,652,978,0,15],[21516,6953,652,1764,0,15],[22168,7822,652,957,0,15],[22820,7822,652,902,0,15],[23472,7822,652,878,0,15],[26732,7822,652,1007,0,15],[0,8691,652,933,0,15],[11736,8691,652,862,0,15],[652,8691,652,1869,0,15],[1956,9560,652,998,0,15],[2608,9560,652,1052,0,15],[8476,9560,652,922,0,15],[9128,9560,652,902,0,15],[7824,10429,652,1109,0,15],[13040,10429,652,1068,0,15],[16300,10429,652,906,0,15],[16952,11298,652,1002,0,15],[25428,11298,652,1056,0,15],[24776,12168,652,1043,0,15],[652,13037,652,940,0,15],[28688,13037,652,851,0,15],[3912,13037,652,1827,0,15],[4564,13906,652,959,0,15],[8476,13906,652,804,0,15],[9780,13906,652,932,0,15],[11736,13906,652,914,0,15],[11084,13906,652,1870,0,15],[13040,14775,652,942,0,15],[14344,14775,652,978,0,15],[16300,14775,652,849,0,15],[19560,14775,652,929,0,15],[21516,15644,652,862,0,15],[22820,15644,652,956,0,15],[24776,15644,652,902,0,15],[26732,15644,652,794,0,15],[28036,15644,652,956,0,15],[28688,16513,652,974,0,15],[2608,17382,652,956,0,15],[4564,17382,652,962,0,15],[7824,17382,652,1898,0,15],[11084,18251,652,913,0,15],[13040,18251,652,891,0,15],[14344,18251,652,784,0,15],[16300,17382,652,1945,0,15]]);</script></p>
<p>After doing some in-depth analysis of <em>Composer </em>generated files I almost ended up witting my own Deep Zoom implementation, because I couldn&#8217;t find any flexible solution. However, later I found out that <em>SparseImageCreator </em>class is the only thing I need. It works almost the same as previously discussed <em>CollectionCreator </em>class, but generated output is exactly what I need. Code:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">string</span> source <span style="color: #008000;">=</span> <span style="color: #666666;">@&quot;C:\tests\Books&quot;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">string</span> dest <span style="color: #008000;">=</span> <span style="color: #666666;">@&quot;C:\tests\GeneratedImages&quot;</span><span style="color: #008000;">;</span>
&nbsp;
List images <span style="color: #008000;">=</span> GetImagesInDirectory<span style="color: #000000;">&#40;</span>source<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
List<span style="color: #008000;">&lt;</span>Image<span style="color: #008000;">&gt;</span> data <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> List<span style="color: #008000;">&lt;</span>Image<span style="color: #008000;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #FF0000;">int</span> start <span style="color: #008000;">=</span> <span style="color: #FF0000;">200</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">int</span> limit <span style="color: #008000;">=</span> start<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #FF0000;">double</span> x <span style="color: #008000;">=</span> <span style="color: #FF0000;">0.0</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">double</span> y <span style="color: #008000;">=</span> <span style="color: #FF0000;">0.0</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #FF0000;">double</span> rows <span style="color: #008000;">=</span> Math.<span style="color: #0000FF;">Sqrt</span><span style="color: #000000;">&#40;</span>start<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>var image <span style="color: #0600FF;">in</span> images<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>limit <span style="color: #008000;">&lt;</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
        break<span style="color: #008000;">;</span>
&nbsp;
    limit<span style="color: #008000;">--;</span>
&nbsp;
    Image img <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Image<span style="color: #000000;">&#40;</span>image<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    img.<span style="color: #0000FF;">ViewportWidth</span> <span style="color: #008000;">=</span> rows<span style="color: #008000;">+</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
    img.<span style="color: #0000FF;">ViewportOrigin</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Windows</span>.<span style="color: #0000FF;">Point</span><span style="color: #000000;">&#40;</span><span style="color: #008000;">-</span>x, <span style="color: #008000;">-</span>y<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    x <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>x <span style="color: #008000;">&gt;=</span> rows<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        y <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1.333</span><span style="color: #008000;">;</span>
        x <span style="color: #008000;">=</span> <span style="color: #FF0000;">0.0</span><span style="color: #008000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
    data.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span>img<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
SparseImageCreator cc <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SparseImageCreator<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
cc.<span style="color: #0000FF;">TileSize</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">256</span><span style="color: #008000;">;</span>
cc.<span style="color: #0000FF;">TileFormat</span> <span style="color: #008000;">=</span> ImageFormat.<span style="color: #0000FF;">Jpg</span><span style="color: #008000;">;</span>
cc.<span style="color: #0000FF;">ImageQuality</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">0.95</span><span style="color: #008000;">;</span>
cc.<span style="color: #0000FF;">TileOverlap</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
&nbsp;
cc.<span style="color: #0000FF;">Create</span><span style="color: #000000;">&#40;</span>data, dest <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\\</span>output&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>This code loops through all images (with limit) in folder and adds them to a list of <em>Image</em>s. Also it sets the <em><a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.multiscaleimage.viewportorigin(VS.95).aspx">ViewportOrigin</a></em> property, which is used to position <em>Image</em> in space. Last step is to create a collection, what is done by <em>SparseImageCreator </em>class. Depending on images count this takes a while and consumes quite a lot of memory, so for using in a web application I need to create a <a href="http://support.microsoft.com/kb/308569">scheduler</a> too.</p>
<p>Another part of Deep Zoom is creating a Silverlight application. It can be easily done with <a href="http://www.microsoft.com/downloads/details.aspx?familyid=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&#038;displaylang=en">Composer</a> (just create a project with one image, and then customize generated source code for your needs). However, I&#8217;m not going to explain how to do it, because there are lots of <a href="http://expression.microsoft.com/en-us/cc745977.aspx">examples</a> online and I&#8217;m going to write another article about Silverlight only.</p>
<p>Currently I have some problems with library throwing <a href="http://en.wikipedia.org/wiki/Exception_handling">Exceptions</a> with big collections, nevertheless another milestone is reached (first was using <a href="http://dev.juokaz.com/winphp-2009/using-php-with-c-written-libraries">.NET assemblies in PHP</a>). Now I need to work on front-end part.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.juokaz.com/winphp-2009/creating-deep-zoom-applications-with-c/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
