Home | History | Annotate | Download | only in style
      1 /*
      2  * Copyright (C) 2000 Lars Knoll (knoll (at) kde.org)
      3  *           (C) 2000 Antti Koivisto (koivisto (at) kde.org)
      4  *           (C) 2000 Dirk Mueller (mueller (at) kde.org)
      5  * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
      6  * Copyright (C) 2006 Graham Dennis (graham.dennis (at) gmail.com)
      7  *
      8  * This library is free software; you can redistribute it and/or
      9  * modify it under the terms of the GNU Library General Public
     10  * License as published by the Free Software Foundation; either
     11  * version 2 of the License, or (at your option) any later version.
     12  *
     13  * This library is distributed in the hope that it will be useful,
     14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     16  * Library General Public License for more details.
     17  *
     18  * You should have received a copy of the GNU Library General Public License
     19  * along with this library; see the file COPYING.LIB.  If not, write to
     20  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     21  * Boston, MA 02110-1301, USA.
     22  *
     23  */
     24 
     25 #ifndef StyleRareNonInheritedData_h
     26 #define StyleRareNonInheritedData_h
     27 
     28 #include "CounterDirectives.h"
     29 #include "CursorData.h"
     30 #include "DataRef.h"
     31 #include "FillLayer.h"
     32 #include "LineClampValue.h"
     33 #include "NinePieceImage.h"
     34 #include "StyleTransformData.h"
     35 #include <wtf/OwnPtr.h>
     36 #include <wtf/PassRefPtr.h>
     37 #include <wtf/Vector.h>
     38 
     39 namespace WebCore {
     40 
     41 class AnimationList;
     42 class CSSStyleSelector;
     43 class ShadowData;
     44 class StyleFlexibleBoxData;
     45 class StyleMarqueeData;
     46 class StyleMultiColData;
     47 class StyleReflection;
     48 class StyleTransformData;
     49 
     50 struct ContentData;
     51 struct LengthSize;
     52 
     53 #if ENABLE(DASHBOARD_SUPPORT)
     54 struct StyleDashboardRegion;
     55 #endif
     56 
     57 // Page size type.
     58 // StyleRareNonInheritedData::m_pageSize is meaningful only when
     59 // StyleRareNonInheritedData::m_pageSizeType is PAGE_SIZE_RESOLVED.
     60 enum PageSizeType {
     61     PAGE_SIZE_AUTO, // size: auto
     62     PAGE_SIZE_AUTO_LANDSCAPE, // size: landscape
     63     PAGE_SIZE_AUTO_PORTRAIT, // size: portrait
     64     PAGE_SIZE_RESOLVED // Size is fully resolved.
     65 };
     66 
     67 // This struct is for rarely used non-inherited CSS3, CSS2, and WebKit-specific properties.
     68 // By grouping them together, we save space, and only allocate this object when someone
     69 // actually uses one of these properties.
     70 class StyleRareNonInheritedData : public RefCounted<StyleRareNonInheritedData> {
     71 public:
     72     static PassRefPtr<StyleRareNonInheritedData> create() { return adoptRef(new StyleRareNonInheritedData); }
     73     PassRefPtr<StyleRareNonInheritedData> copy() const { return adoptRef(new StyleRareNonInheritedData(*this)); }
     74     ~StyleRareNonInheritedData();
     75 
     76     bool operator==(const StyleRareNonInheritedData&) const;
     77     bool operator!=(const StyleRareNonInheritedData& o) const { return !(*this == o); }
     78 
     79     bool contentDataEquivalent(const StyleRareNonInheritedData& o) const;
     80     bool shadowDataEquivalent(const StyleRareNonInheritedData& o) const;
     81     bool reflectionDataEquivalent(const StyleRareNonInheritedData& o) const;
     82     bool animationDataEquivalent(const StyleRareNonInheritedData&) const;
     83     bool transitionDataEquivalent(const StyleRareNonInheritedData&) const;
     84 
     85     LineClampValue lineClamp; // An Apple extension.
     86 #if ENABLE(DASHBOARD_SUPPORT)
     87     Vector<StyleDashboardRegion> m_dashboardRegions;
     88 #endif
     89     float opacity; // Whether or not we're transparent.
     90 
     91     DataRef<StyleFlexibleBoxData> flexibleBox; // Flexible box properties
     92     DataRef<StyleMarqueeData> marquee; // Marquee properties
     93     DataRef<StyleMultiColData> m_multiCol; //  CSS3 multicol properties
     94     DataRef<StyleTransformData> m_transform; // Transform properties (rotate, scale, skew, etc.)
     95 
     96     OwnPtr<ContentData> m_content;
     97     OwnPtr<CounterDirectiveMap> m_counterDirectives;
     98 
     99     unsigned userDrag : 2; // EUserDrag
    100     bool textOverflow : 1; // Whether or not lines that spill out should be truncated with "..."
    101     unsigned marginBeforeCollapse : 2; // EMarginCollapse
    102     unsigned marginAfterCollapse : 2; // EMarginCollapse
    103     unsigned matchNearestMailBlockquoteColor : 1; // EMatchNearestMailBlockquoteColor, FIXME: This property needs to be eliminated. It should never have been added.
    104     unsigned m_appearance : 6; // EAppearance
    105     unsigned m_borderFit : 1; // EBorderFit
    106     unsigned m_textCombine : 1; // CSS3 text-combine properties
    107 
    108     short m_counterIncrement;
    109     short m_counterReset;
    110 
    111 #if USE(ACCELERATED_COMPOSITING)
    112     bool m_runningAcceleratedAnimation : 1;
    113 #endif
    114     OwnPtr<ShadowData> m_boxShadow;  // For box-shadow decorations.
    115 
    116     RefPtr<StyleReflection> m_boxReflect;
    117 
    118     OwnPtr<AnimationList> m_animations;
    119     OwnPtr<AnimationList> m_transitions;
    120 
    121     FillLayer m_mask;
    122     NinePieceImage m_maskBoxImage;
    123 
    124     ETransformStyle3D m_transformStyle3D;
    125     EBackfaceVisibility m_backfaceVisibility;
    126     float m_perspective;
    127     Length m_perspectiveOriginX;
    128     Length m_perspectiveOriginY;
    129 
    130     LengthSize m_pageSize;
    131     PageSizeType m_pageSizeType;
    132 
    133 private:
    134     StyleRareNonInheritedData();
    135     StyleRareNonInheritedData(const StyleRareNonInheritedData&);
    136 };
    137 
    138 } // namespace WebCore
    139 
    140 #endif // StyleRareNonInheritedData_h
    141