File: nsMediaFeatures.h

package info (click to toggle)
wine-gecko-2.24 2.24%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 740,092 kB
  • ctags: 688,789
  • sloc: cpp: 3,160,639; ansic: 1,619,153; python: 164,084; java: 128,022; asm: 114,527; xml: 69,863; sh: 55,281; makefile: 49,648; perl: 20,454; objc: 2,344; yacc: 2,066; pascal: 995; lex: 982; exp: 449; php: 244; lisp: 228; awk: 211; sed: 61; csh: 21; ada: 16; ruby: 3
file content (74 lines) | stat: -rw-r--r-- 2,913 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/* vim: set shiftwidth=4 tabstop=8 autoindent cindent expandtab: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/* the features that media queries can test */

#ifndef nsMediaFeatures_h_
#define nsMediaFeatures_h_

#include "nsError.h"

class nsIAtom;
class nsPresContext;
class nsCSSValue;

struct nsMediaFeature;
typedef nsresult
(* nsMediaFeatureValueGetter)(nsPresContext* aPresContext,
                              const nsMediaFeature* aFeature,
                              nsCSSValue& aResult);

struct nsMediaFeature {
    nsIAtom **mName; // extra indirection to point to nsGkAtoms members

    enum RangeType { eMinMaxAllowed, eMinMaxNotAllowed };
    RangeType mRangeType;

    enum ValueType {
        // All value types allow eCSSUnit_Null to indicate that no value
        // was given (in addition to the types listed below).
        eLength,     // values are such that nsCSSValue::IsLengthUnit() is true
        eInteger,    // values are eCSSUnit_Integer
        eFloat,      // values are eCSSUnit_Number
        eBoolInteger,// values are eCSSUnit_Integer (0, -0, or 1 only)
        eIntRatio,   // values are eCSSUnit_Array of two eCSSUnit_Integer
        eResolution, // values are in eCSSUnit_Inch (for dpi),
                     //   eCSSUnit_Pixel (for dppx), or
                     //   eCSSUnit_Centimeter (for dpcm)
        eEnumerated, // values are eCSSUnit_Enumerated (uses keyword table)
        eIdent       // values are eCSSUnit_Ident
        // Note that a number of pieces of code (both for parsing and
        // for matching of valueless expressions) assume that all numeric
        // value types cannot be negative.  The parsing code also does
        // not allow zeros in eIntRatio types.
    };
    ValueType mValueType;

    union {
      // In static arrays, it's the first member that's initialized.  We
      // need that to be void* so we can initialize both other types.
      // This member should never be accessed by name.
      const void* mInitializer_;
      // If mValueType == eEnumerated:  const int32_t*: keyword table in
      //   the same format as the keyword tables in nsCSSProps.
      const int32_t* mKeywordTable;
      // If mGetter == GetSystemMetric (which implies mValueType ==
      //   eBoolInteger): nsIAtom * const *, for the system metric.
      nsIAtom * const * mMetric;
    } mData;

    // A function that returns the current value for this feature for a
    // given presentation.  If it returns eCSSUnit_Null, the feature is
    // not present.
    nsMediaFeatureValueGetter mGetter;
};

class nsMediaFeatures {
public:
    // Terminated with an entry whose mName is null.
    static const nsMediaFeature features[];
};

#endif /* !defined(nsMediaFeatures_h_) */