Replace WTF::move with WTFMove
[WebKit-https.git] / Source / WebCore / dom / ViewportArguments.h
index b6293ef..4df52dd 100644 (file)
@@ -6,6 +6,7 @@
  * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
  * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
+ * Copyright (C) 2012 Intel Corporation. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -38,20 +39,19 @@ enum ViewportErrorCode {
     UnrecognizedViewportArgumentKeyError,
     UnrecognizedViewportArgumentValueError,
     TruncatedViewportArgumentValueError,
-    MaximumScaleTooLargeError,
-    TargetDensityDpiUnsupported
+    MaximumScaleTooLargeError
 };
 
 struct ViewportAttributes {
     FloatSize layoutSize;
 
-    float devicePixelRatio;
-
     float initialScale;
     float minimumScale;
     float maximumScale;
 
     float userScalable;
+    float orientation;
+    float shrinkToFit;
 };
 
 struct ViewportArguments {
@@ -59,69 +59,84 @@ struct ViewportArguments {
     enum Type {
         // These are ordered in increasing importance.
         Implicit,
-#if ENABLE(LEGACY_VIEWPORT_ADAPTION)
-        XHTMLMobileProfile,
-        HandheldFriendlyMeta,
-        MobileOptimizedMeta,
+#if PLATFORM(IOS)
+        PluginDocument,
+        ImageDocument,
 #endif
-        ViewportMeta
+        ViewportMeta,
+        CSSDeviceAdaptation
     } type;
 
     enum {
         ValueAuto = -1,
-        ValueDesktopWidth = -2,
-        ValueDeviceWidth = -3,
-        ValueDeviceHeight = -4,
+        ValueDeviceWidth = -2,
+        ValueDeviceHeight = -3,
+        ValuePortrait = -4,
+        ValueLandscape = -5
     };
 
-    ViewportArguments(Type type = Implicit)
+    explicit ViewportArguments(Type type = Implicit)
         : type(type)
-        , initialScale(ValueAuto)
-        , minimumScale(ValueAuto)
-        , maximumScale(ValueAuto)
-        , width(ValueAuto)
-        , height(ValueAuto)
-        , userScalable(ValueAuto)
     {
     }
 
-    float initialScale;
-    float minimumScale;
-    float maximumScale;
-    float width;
-    float height;
-    float userScalable;
+    // All arguments are in CSS units.
+    ViewportAttributes resolve(const FloatSize& initialViewportSize, const FloatSize& deviceSize, int defaultWidth) const;
+
+    float width { ValueAuto };
+    float minWidth { ValueAuto };
+    float maxWidth { ValueAuto };
+    float height { ValueAuto };
+    float minHeight { ValueAuto };
+    float maxHeight { ValueAuto };
+    float zoom { ValueAuto };
+    float minZoom { ValueAuto };
+    float maxZoom { ValueAuto };
+    float userZoom { ValueAuto };
+    float orientation { ValueAuto };
+    float shrinkToFit { ValueAuto };
 
     bool operator==(const ViewportArguments& other) const
     {
         // Used for figuring out whether to reset the viewport or not,
         // thus we are not taking type into account.
-        return initialScale == other.initialScale
-            && minimumScale == other.minimumScale
-            && maximumScale == other.maximumScale
-            && width == other.width
+        return width == other.width
+            && minWidth == other.minWidth
+            && maxWidth == other.maxWidth
             && height == other.height
-            && userScalable == other.userScalable;
+            && minHeight == other.minHeight
+            && maxHeight == other.maxHeight
+            && zoom == other.zoom
+            && minZoom == other.minZoom
+            && maxZoom == other.maxZoom
+            && userZoom == other.userZoom
+            && orientation == other.orientation
+            && shrinkToFit == other.shrinkToFit;
     }
 
     bool operator!=(const ViewportArguments& other) const
     {
         return !(*this == other);
     }
+
+#if PLATFORM(GTK)
     // FIXME: We're going to keep this constant around until all embedders
     // refactor their code to no longer need it.
-    static const int deprecatedTargetDPI = 160;
+    static const float deprecatedTargetDPI;
+#endif
 };
 
-ViewportAttributes computeViewportAttributes(ViewportArguments args, int desktopWidth, int deviceWidth, int deviceHeight, float devicePixelRatio, IntSize visibleViewport);
+WEBCORE_EXPORT ViewportAttributes computeViewportAttributes(ViewportArguments args, int desktopWidth, int deviceWidth, int deviceHeight, float devicePixelRatio, IntSize visibleViewport);
 
-void restrictMinimumScaleFactorToViewportSize(ViewportAttributes& result, IntSize visibleViewport);
-void restrictScaleFactorToInitialScaleIfNotUserScalable(ViewportAttributes& result);
+WEBCORE_EXPORT void restrictMinimumScaleFactorToViewportSize(ViewportAttributes& result, IntSize visibleViewport, float devicePixelRatio);
+WEBCORE_EXPORT void restrictScaleFactorToInitialScaleIfNotUserScalable(ViewportAttributes& result);
 float computeMinimumScaleFactorForContentContained(const ViewportAttributes& result, const IntSize& viewportSize, const IntSize& contentSize);
 
 void setViewportFeature(const String& keyString, const String& valueString, Document*, void* data);
 void reportViewportWarning(Document*, ViewportErrorCode, const String& replacement1, const String& replacement2);
 
+TextStream& operator<<(TextStream&, const ViewportArguments&);
+
 } // namespace WebCore
 
 #endif // ViewportArguments_h