diff --git a/zoomify.zmp/GetUrlScript.txt b/zoomify.zmp/GetUrlScript.txt index 18f817bf..5d6d794e 100644 --- a/zoomify.zmp/GetUrlScript.txt +++ b/zoomify.zmp/GetUrlScript.txt @@ -1,50 +1,79 @@ + +{----------------------------------------------- +Из файла ImageProperties.xml +------------------------------------------------} const -width=9910; -height=7476; + m_nWidth = 9910; + m_nHeight = 7476; -var TileGroup:integer; -z:integer; -i:integer; -cur_width,cur_height:integer; -maxZoom:integer; +var + i, zoom, nMaxZoom, nTileGroup :Longint; -function TilesAtZoom(z:integer):integer; +{----------------------------------------------- +Возвращает floor значение +------------------------------------------------} +function Floor(v :Extended) :Extended; begin - result:=(1+trunc(width/(256*intpower(2,(MaxZoom-z)))))*(1+trunc(height/(256*intpower(2,(MaxZoom-z))))); + Result := Trunc(v); + if v < Result then Result := Result - 1.0; end; - -function getTileCount(zoom:integer):integer; -var i:integer; +{----------------------------------------------- +Возвращает ceil значение +------------------------------------------------} +function Ceil(v :Extended) :Extended; begin -Result:=0; -for i:=1 to zoom do Result:=Result+TilesAtZoom(i); + Result := Trunc(v); + if v > Result then Result := Result + 1.0; end; - +{----------------------------------------------- +Получение максимально возможного Zoom'а +------------------------------------------------} +procedure GetMaxZoom(); +var k, i :Longint; begin -i:=1;cur_width:=0; - while cur_width m_nWidth then k := m_nHeight; + i := 0; + while k > 256 do + begin + k := Trunc(k / 2); + Inc(i); + end; + nMaxZoom := i; +end; -i:=1;cur_width:=0; - while cur_widthMaxZoom then MaxZoom:=i; - +{----------------------------------------------- +Получение количества тайлов на данном Zoom'е +------------------------------------------------} +function GetTilesAtZoom(zoom: Longint) :Longint; +var k :Extended; +begin + k := 256.0 * IntPower(2, nMaxZoom - zoom); + Result := Trunc(Ceil(m_nWidth / k) * Ceil(m_nHeight / k)); +end; +{----------------------------------------------- +Количество тайлов предшествующих данному Zoom'у +------------------------------------------------} +function GetTilesCount(nZoom: Longint) :Longint; +var i: Longint; +begin + Result := 0; + for i := 0 to nZoom - 1 do Result := Result + GetTilesAtZoom(i); +end; -z:=GetZ-1; -tilegroup:=(getTileCount(z) +GetX +GetY*(1+trunc(width/(256*intpower(2,(MaxZoom-z-1)))))) div 256; -ResultURL:=GetURLBase+inttostr(tilegroup)+'/'+inttostr(z)+'-'+inttostr(GetX)+'-'+inttostr(GetY)+'.jpg'; +{----------------------------------------------- +Получение URL тайла +------------------------------------------------} +begin + zoom := GetZ - 1; + GetMaxZoom(); + nTileGroup := (GetX + GetY * Trunc(Ceil(m_nWidth / (256.0 * IntPower(2, nMaxZoom - zoom)))) + GetTilesCount(zoom)) div 256; + ResultURL := GetURLBase + IntToStr(nTileGroup) + '/' + IntToStr(zoom) + '-' + IntToStr(GetX) + '-' + IntToStr(GetY) + '.jpg'; +{ RequestHead := 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + #13#10; } end. diff --git a/zoomify.zmp/info.txt b/zoomify.zmp/info.txt index f9bd8fc4..fdb159c5 100644 --- a/zoomify.zmp/info.txt +++ b/zoomify.zmp/info.txt @@ -1,4 +1,4 @@ -Пример использования ресурсов в формате Zoomify +
Пример использования ресурсов в формате Zoomify
 
 ... отображается в левом верхнем углу с зума 1 по 7
 
@@ -15,8 +15,8 @@
 устанавливаем
 
 const
-width=9910;
-height=7476;
+m_nWidth = 9910;
+m_nHeight = 7476;
 
 
 Рекомендации:
@@ -29,3 +29,7 @@ height=7476;
 mra:Garl@mail.ru
 jabber:garl@qip.ru
 
+Исправил
+TokarevVV  http://sasgis.ru/mantis/view.php?id=1740
+
+
\ No newline at end of file