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