XFA: merge patch from CL 792953005, fix most warnings

Includes fixes to XFA specific warnings -- benign truncations.
Bug https://code.google.com/p/pdfium/issues/detail?id=104
was filed to track changing types to avoid some truncations.

Resolve all but two VC++ build warnings in pdfium.

pdfium builds on Win32 have about 85 warnings (250 in the XFA
branch, totaling over 480 lines!), mostly from four lines in
a header file and a warning that should be disabled. This
change resolves all but two of them and turns on
warning-as-errors. Bugs have been filed for the two
remaining warnings:
https://code.google.com/p/pdfium/issues/detail?id=100
the 64-bit warnings:
https://code.google.com/p/pdfium/issues/detail?id=101
and the Linux warnings:
https://code.google.com/p/pdfium/issues/detail?id=102

The fix to the double->float truncation bugs will also
improve code-generation.

R=bo_xu@foxitsoftware.com, tsepez@chromium.org

Review URL: https://codereview.chromium.org/792953005

BUG= https://code.google.com/p/pdfium/issues/detail?id=100

Review URL: https://codereview.chromium.org/834413002
diff --git a/build/standalone.gypi b/build/standalone.gypi
index d335f05..0d650a3 100644
--- a/build/standalone.gypi
+++ b/build/standalone.gypi
@@ -165,6 +165,7 @@
       'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)',
       'CharacterSet': '1',
     },
+    'msvs_disabled_warnings': [4800, 4996],
     'msvs_settings': {
       'VCCLCompilerTool': {
         'MinimalRebuild': 'false',
@@ -172,7 +173,6 @@
         'EnableFunctionLevelLinking': 'true',
         'RuntimeTypeInfo': 'false',
         'WarningLevel': '3',
-        'WarnAsError': 'false',
         'DebugInformationFormat': '3',
         'Detect64BitPortabilityProblems': 'false',
         'conditions': [
@@ -184,6 +184,13 @@
           }, {
             'ExceptionHandling': '0',
           }],
+          ['target_arch=="x64"', {
+            # 64-bit warnings need to be resolved.
+            # https://code.google.com/p/pdfium/issues/detail?id=101
+            'WarnAsError': 'false',
+          }, {
+            'WarnAsError': 'true',
+          }],
         ],
       },
       'VCLibrarianTool': {
diff --git a/core/src/fpdftext/fpdf_text_int.cpp b/core/src/fpdftext/fpdf_text_int.cpp
index c28647d..5ed0e01 100644
--- a/core/src/fpdftext/fpdf_text_int.cpp
+++ b/core/src/fpdftext/fpdf_text_int.cpp
@@ -37,13 +37,13 @@
 FX_FLOAT _NormalizeThreshold(FX_FLOAT threshold)
 {
     if (threshold < 300) {
-        return threshold / 2.0;
+        return threshold / 2.0f;
     } else if (threshold < 500) {
-        return threshold / 4.0;
+        return threshold / 4.0f;
     } else if (threshold < 700) {
-        return threshold / 5.0;
+        return threshold / 5.0f;
     }
-    return threshold / 6.0;
+    return threshold / 6.0f;
 }
 
 FX_FLOAT _CalculateBaseSpace(const CPDF_TextObject* pTextObj,
diff --git a/fpdfsdk/include/fsdk_mgr.h b/fpdfsdk/include/fsdk_mgr.h
index cbe4741..357be3c 100644
--- a/fpdfsdk/include/fsdk_mgr.h
+++ b/fpdfsdk/include/fsdk_mgr.h
@@ -476,10 +476,10 @@
 			double bottom;
 			m_pInfo->FFI_GetPageViewRect(m_pInfo, page, &left, &top, &right, &bottom);
 
-			dstRect.left = left;
-			dstRect.top = top < bottom? bottom:top;
-			dstRect.bottom = top < bottom? top:bottom;
-			dstRect.right = right;
+			dstRect.left = static_cast<float>(left);
+			dstRect.top = static_cast<float>(top < bottom ? bottom : top);
+			dstRect.bottom = static_cast<float>(top < bottom ? top : bottom);
+			dstRect.right = static_cast<float>(right);
 		}
 	}
 
diff --git a/fpdfsdk/src/fpdfformfill.cpp b/fpdfsdk/src/fpdfformfill.cpp
index 0fb3291..ea94925 100644
--- a/fpdfsdk/src/fpdfformfill.cpp
+++ b/fpdfsdk/src/fpdfformfill.cpp
@@ -71,7 +71,8 @@
 			rcWidget.bottom -= 1.0f;
 			rcWidget.top += 1.0f;
 
-			if (rcWidget.Contains(page_x, page_y)) {
+			if (rcWidget.Contains(static_cast<FX_FLOAT>(page_x),
+				static_cast<FX_FLOAT>(page_y))) {
 				pWidgetIterator->Release();
 				return FPDF_FORMFIELD_XFA;
 			}
diff --git a/fpdfsdk/src/fsdk_mgr.cpp b/fpdfsdk/src/fsdk_mgr.cpp
index c4cee6f..f134b79 100644
--- a/fpdfsdk/src/fsdk_mgr.cpp
+++ b/fpdfsdk/src/fsdk_mgr.cpp
@@ -678,7 +678,10 @@
 		gs.Create(pDevice);
 		if (pClip) {
 			CFX_RectF rectClip;
-			rectClip.Set(pClip->left, pClip->top, pClip->Width(), pClip->Height());
+			rectClip.Set(static_cast<FX_FLOAT>(pClip->left),
+				static_cast<FX_FLOAT>(pClip->top),
+				static_cast<FX_FLOAT>(pClip->Width()),
+				static_cast<FX_FLOAT>(pClip->Height()));
 			gs.SetClipRect(rectClip);
 		}	
 		IXFA_RenderContext* pRenderContext = XFA_RenderContext_Create();
diff --git a/pdfium.gyp b/pdfium.gyp
index 1f852d6..9476241 100644
--- a/pdfium.gyp
+++ b/pdfium.gyp
@@ -309,6 +309,13 @@
       'include_dirs': [
       ],
       'ldflags': [ '-L<(PRODUCT_DIR)',],
+      'msvs_settings': {
+        'VCCLCompilerTool': {
+          # Unresolved warnings in fx_codec_jpx_opj.cpp
+          # https://code.google.com/p/pdfium/issues/detail?id=100
+          'WarnAsError': 'false',
+        },
+      },
       'sources': [
         'core/include/fxcodec/fx_codec.h',
         'core/include/fxcodec/fx_codec_def.h',
diff --git a/xfa/src/fxfa/src/parser/xfa_localevalue.cpp b/xfa/src/fxfa/src/parser/xfa_localevalue.cpp
index 6d55def..46ea47d 100644
--- a/xfa/src/fxfa/src/parser/xfa_localevalue.cpp
+++ b/xfa/src/fxfa/src/parser/xfa_localevalue.cpp
@@ -650,7 +650,7 @@
         return FALSE;

     }

     CFX_Unitime ut;

-    ut.Set(wYear, wMonth, wDay);

+    ut.Set(wYear, static_cast<FX_BYTE>(wMonth), static_cast<FX_BYTE>(wDay));

     unDate = unDate + ut;

     return TRUE;

 }