From 1ad8f23bfb5166586380ab6b8556e198ecb0efff Mon Sep 17 00:00:00 2001
From: "Alexey.Musinov" <Alexey.Musinov@OnlyOffice.com>
Date: Fri, 24 Jul 2015 12:08:23 +0000
Subject: [PATCH] [ios] tables

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@63687 954022d7-b5bf-4e40-9824-e11837661b57
---
 Excel/native/DrawingContext.js | 67 ++++++++++------------------------
 1 file changed, 20 insertions(+), 47 deletions(-)

diff --git a/Excel/native/DrawingContext.js b/Excel/native/DrawingContext.js
index e6884f1db..67ad1033d 100644
--- a/Excel/native/DrawingContext.js
+++ b/Excel/native/DrawingContext.js
@@ -399,21 +399,8 @@
 
         this.setCanvas(settings.canvas);
 
-		var ppiTest =
-				$('<div style="position: absolute; width: 10in; height:10in; visibility:hidden; padding:0;"/>')
-				.appendTo("body");
-		this.ppiX = asc_round(ppiTest[0] ? (ppiTest[0].offsetWidth * 0.1) : 96);
-		this.ppiY = asc_round(ppiTest[0] ? (ppiTest[0].offsetHeight * 0.1) : 96);
-
-        if (AscBrowser.isRetina) {
-			this.ppiX <<= 1;
-			this.ppiY <<= 1;
-		}
-
-        this.ppiX = parseInt(this.ppiX * this.deviceScale, 10);
-        this.ppiY = parseInt(this.ppiY * this.deviceScale, 10);
-
-        ppiTest.remove();
+        this.ppiX = 96.0 * this.deviceScale * (96.0 / (this.deviceDPI * this.deviceScale));
+        this.ppiY = 96.0 * this.deviceScale * (96.0 / (this.deviceDPI * this.deviceScale));
 
 		this._mct  = new Matrix();  // units transform
 		this._mt   = new Matrix();  // user transform
@@ -422,8 +409,6 @@
 		this._mift = new Matrix();  // inverted full transform
 		this._im   = new Matrix();
 
-		this.nppiX = parseInt(this.ppiX * this.deviceScale, 10);
-
 		this.scaleFactor = 1;
 
 		this.units  = 3/*mm*/;
@@ -824,8 +809,7 @@
 	 * @return {FontMetrics}
 	 */
 	DrawingContext.prototype.getFontMetrics = function (units) {
-		var fm =  this.napi_fmt[3];//this.fmgrGraphics[3];
-
+		var fm = this.napi_fmt[3];
 		var d  = Math.abs(fm.m_lDescender);
 		var r  = getCvtRatio(0/*px*/, units >= 0 && units <=3 ? units : this.units, this.ppiX);
 		var factor = this.getFontSize() * r / fm.m_lUnits_Per_Em;
@@ -835,20 +819,12 @@
 		res.descender = factor * d;
 		res.lineGap	= factor * (fm.m_lLineHeight - fm.m_lAscender - d);
 
-		//var face = fm.m_pFont.m_pFace;
-		res.nat_scale = 2048;//face.header.Units_Per_EM;
+        var face = g_oTextMeasurer.Measurer['GetFace']();
+        res.nat_scale = face[0];
+        res.nat_y1 = face[1];
+        res.nat_y2 = face[2];
 
-        res.nat_y1 = 2000;
-        res.nat_y2 = -500;
-
-//		if (face.os2) {
-//			res.nat_y1 = face.os2.usWinAscent;
-//			res.nat_y2 = -face.os2.usWinDescent;
-//		} else {
-//			res.nat_y1 = face.header.yMax;
-//			res.nat_y2 = face.header.yMin;
-//		}
-		return res;
+        return res;
 	};
 
 	/**
@@ -863,10 +839,8 @@
 
 		this.font.copyFrom(font);
 
-        // sample: 132 (ipad) * device_scale(is_retina=2) / 96 (default) * 2.54
-
-		///var rel = this.ppiX / this.nppiX
-        this.font.FontSize = this.font.FontSize * this.deviceDPI * this.deviceScale / this.nppiX * 2.54 * this.scaleFactor * this.deviceScale;// * rel;
+        this.font.FontSize = this.font.FontSize * 2.54 * this.scaleFactor *
+            this.deviceScale * this.deviceDPI / 96.0 * (96.0 / (this.deviceDPI * this.deviceScale));
 
         italic = true === font.Italic;
 		bold   = true === font.Bold;
@@ -882,10 +856,6 @@
         var _fontinfo, _info, flag, napi_fontInfo;
 
 		if (angle && 0 != angle) {
-			//r = g_fontApplication.LoadFont(font.FontFamily.Name, window.g_font_loader, this.fmgrGraphics[1], font.FontSize, fontStyle, this.ppiX, this.ppiY);
-
-            //===================================================================
-
             _fontinfo = g_fontApplication.GetFontInfo(this.font.FontFamily.Name, fontStyle, this.LastFontOriginInfo);
             _info = GetLoadInfoForMeasurer(_fontinfo, fontStyle);
 
@@ -903,18 +873,11 @@
             this.napi_fmt[1].m_lLineHeight      = napi_fontInfo[2];
 
             r = true;
-            //===================================================================
-
 
 			this.fmgrGraphics[1].SetTextMatrix(
 				this._mt.sx, this._mt.shy, this._mt.shx, this._mt.sy, this._mt.tx, this._mt.ty);
 		} else {
 
-		  //  r = g_fontApplication.LoadFont(font.FontFamily.Name, window.g_font_loader, this.fmgrGraphics[0], font.FontSize, fontStyle, this.ppiX, this.ppiY);
-		  //  g_fontApplication.LoadFont(font.FontFamily.Name, window.g_font_loader, this.fmgrGraphics[3], font.FontSize, fontStyle, this.ppiX, this.ppiY);
-
-            //===================================================================
-
             _fontinfo = g_fontApplication.GetFontInfo(this.font.FontFamily.Name, fontStyle, this.LastFontOriginInfo);
             _info = GetLoadInfoForMeasurer(_fontinfo, fontStyle);
 
@@ -928,6 +891,16 @@
 
             this.nctx["PD_LoadFont"](_info.Path, _info.FaceIndex, this.font.FontSize, flag);
 
+            this.napi_fmt[0].m_lUnits_Per_Em  = napi_fontInfo[3];
+            this.napi_fmt[0].m_lAscender      = napi_fontInfo[0];
+            this.napi_fmt[0].m_lDescender     = napi_fontInfo[2];
+            this.napi_fmt[0].m_lLineHeight    = napi_fontInfo[2];
+
+            this.napi_fmt[3].m_lUnits_Per_Em  = napi_fontInfo[3];
+            this.napi_fmt[3].m_lAscender      = napi_fontInfo[0];
+            this.napi_fmt[3].m_lDescender     = napi_fontInfo[2];
+            this.napi_fmt[3].m_lLineHeight    = napi_fontInfo[2];
+
             //var dKoef = g_dKoef_pt_to_mm * font.FontSize / napi_fontInfo[3];
             //
             //this.napi_fmt[0].m_lUnits_Per_Em    = napi_fontInfo[3];
-- 
2.30.9