Changeset 64367 in webkit


Ignore:
Timestamp:
Jul 30, 2010 12:06:26 PM (14 years ago)
Author:
commit-queue@webkit.org
Message:

2010-07-30 fsamuel@chromium.org <fsamuel@chromium.org>

Reviewed by Dimitri Glazkov.

Expand SVG Attribute Macros
https://bugs.webkit.org/show_bug.cgi?id=43254

Expanded SVG Attribute Macros to reduce debugging headache.

No change in behavior, so no new tests.

  • rendering/style/SVGRenderStyle.h: Expanded and removed references to SVG_RS_DEFINE_ATTRIBUTE* macros.
  • rendering/style/SVGRenderStyleDefs.h: Removed definitons for expanded macros.
Location:
trunk/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r64366 r64367  
     12010-07-30  fsamuel@chromium.org  <fsamuel@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        Expand SVG Attribute Macros
     6        https://bugs.webkit.org/show_bug.cgi?id=43254
     7
     8        Expanded SVG Attribute Macros to reduce debugging headache.
     9
     10        No change in behavior, so no new tests.
     11
     12        * rendering/style/SVGRenderStyle.h: Expanded and removed references to SVG_RS_DEFINE_ATTRIBUTE* macros.
     13        * rendering/style/SVGRenderStyleDefs.h: Removed definitons for expanded macros.
     14
    1152010-07-30  Kinuko Yasuda  <kinuko@chromium.org>
    216
  • trunk/WebCore/rendering/style/SVGRenderStyle.h

    r62259 r64367  
    5757    bool operator!=(const SVGRenderStyle& o) const { return !(*this == o); }
    5858
    59     // SVG CSS Properties
    60     SVG_RS_DEFINE_ATTRIBUTE(EAlignmentBaseline, AlignmentBaseline, alignmentBaseline, AB_AUTO)
    61     SVG_RS_DEFINE_ATTRIBUTE(EDominantBaseline, DominantBaseline, dominantBaseline, DB_AUTO)
    62     SVG_RS_DEFINE_ATTRIBUTE(EBaselineShift, BaselineShift, baselineShift, BS_BASELINE)
    63     SVG_RS_DEFINE_ATTRIBUTE(EVectorEffect, VectorEffect, vectorEffect, VE_NONE)
    64 
    65     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(LineCap, CapStyle, capStyle, ButtCap)
    66     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(WindRule, ClipRule, clipRule, RULE_NONZERO)
    67     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(EColorInterpolation, ColorInterpolation, colorInterpolation, CI_SRGB)
    68     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(EColorInterpolation, ColorInterpolationFilters, colorInterpolationFilters, CI_LINEARRGB)
    69     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(EColorRendering, ColorRendering, colorRendering, CR_AUTO)
    70     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(WindRule, FillRule, fillRule, RULE_NONZERO)
    71     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(EImageRendering, ImageRendering, imageRendering, IR_AUTO)
    72     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(LineJoin, JoinStyle, joinStyle, MiterJoin)
    73     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(EShapeRendering, ShapeRendering, shapeRendering, SR_AUTO)
    74     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(ETextAnchor, TextAnchor, textAnchor, TA_START)
    75     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(EWritingMode, WritingMode, writingMode, WM_LRTB)
    76     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(EGlyphOrientation, GlyphOrientationHorizontal, glyphOrientationHorizontal, GO_0DEG)
    77     SVG_RS_DEFINE_ATTRIBUTE_INHERITED(EGlyphOrientation, GlyphOrientationVertical, glyphOrientationVertical, GO_AUTO)
    78 
    79     // SVG CSS Properties (using DataRef's)
    80     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(float, fill, opacity, FillOpacity, fillOpacity, 1.0f)
    81     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL_REFCOUNTED(SVGPaint, fill, paint, FillPaint, fillPaint, SVGPaint::defaultFill())
    82 
    83     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(float, stroke, opacity, StrokeOpacity, strokeOpacity, 1.0f)
    84     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL_REFCOUNTED(SVGPaint, stroke, paint, StrokePaint, strokePaint, SVGPaint::defaultStroke())
    85     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL_REFCOUNTED(CSSValueList, stroke, dashArray, StrokeDashArray, strokeDashArray, 0)
    86     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(float, stroke, miterLimit, StrokeMiterLimit, strokeMiterLimit, 4.0f)
     59    // Initial values for all the properties
     60    static EAlignmentBaseline initialAlignmentBaseline() { return AB_AUTO; }
     61    static EDominantBaseline initialDominantBaseline() { return DB_AUTO; }
     62    static EBaselineShift initialBaselineShift() { return BS_BASELINE; }
     63    static EVectorEffect initialVectorEffect() { return VE_NONE; }
     64    static LineCap initialCapStyle() { return ButtCap; }
     65    static WindRule initialClipRule() { return RULE_NONZERO; }
     66    static EColorInterpolation initialColorInterpolation() { return CI_SRGB; }
     67    static EColorInterpolation initialColorInterpolationFilters() { return CI_LINEARRGB; }
     68    static EColorRendering initialColorRendering() { return CR_AUTO; }
     69    static WindRule initialFillRule() { return RULE_NONZERO; }
     70    static EImageRendering initialImageRendering() { return IR_AUTO; }
     71    static LineJoin initialJoinStyle() { return MiterJoin; }
     72    static EShapeRendering initialShapeRendering() { return SR_AUTO; }
     73    static ETextAnchor initialTextAnchor() { return TA_START; }
     74    static EWritingMode initialWritingMode() { return WM_LRTB; }
     75    static EGlyphOrientation initialGlyphOrientationHorizontal() { return GO_0DEG; }
     76    static EGlyphOrientation initialGlyphOrientationVertical() { return GO_AUTO; }
     77    static float initialFillOpacity() { return 1.0f; }
     78    static SVGPaint* initialFillPaint() { return SVGPaint::defaultFill(); }
     79    static float initialStrokeOpacity() { return 1.0f; }
     80    static SVGPaint* initialStrokePaint() { return SVGPaint::defaultStroke(); }
     81    static CSSValueList* initialStrokeDashArray() { return 0; }
     82    static float initialStrokeMiterLimit() { return 4.0f; }
     83    static CSSValue* initialStrokeWidth() { return 0; }
     84    static CSSValue* initialStrokeDashOffset() { return 0; };
     85    static CSSValue* initialKerning() { return 0; }
     86    static float initialStopOpacity() { return 1.0f; }
     87    static Color initialStopColor() { return Color(0, 0, 0); }
     88    static float initialFloodOpacity() { return 1.0f; }
     89    static Color initialFloodColor() { return Color(0, 0, 0); }
     90    static Color initialLightingColor() { return Color(255, 255, 255); }
     91    static CSSValue* initialBaselineShiftValue() { return 0; }
     92    static ShadowData* initialShadow() { return 0; }
     93    static String initialClipperResource() { return String(); }
     94    static String initialFilterResource() { return String(); }
     95    static String initialMaskerResource() { return String(); }
     96    static String initialMarkerStartResource() { return String(); }
     97    static String initialMarkerMidResource() { return String(); }
     98    static String initialMarkerEndResource() { return String(); }
     99
     100    // SVG CSS Property setters
     101    void setAlignmentBaseline(EAlignmentBaseline val) { svg_noninherited_flags.f._alignmentBaseline = val; }
     102    void setDominantBaseline(EDominantBaseline val) { svg_noninherited_flags.f._dominantBaseline = val; }
     103    void setBaselineShift(EBaselineShift val) { svg_noninherited_flags.f._baselineShift = val; }
     104    void setVectorEffect(EVectorEffect val) { svg_noninherited_flags.f._vectorEffect = val; }
     105    void setCapStyle(LineCap val) { svg_inherited_flags._capStyle = val; }
     106    void setClipRule(WindRule val) { svg_inherited_flags._clipRule = val; }
     107    void setColorInterpolation(EColorInterpolation val) { svg_inherited_flags._colorInterpolation = val; }
     108    void setColorInterpolationFilters(EColorInterpolation val) { svg_inherited_flags._colorInterpolationFilters = val; }
     109    void setColorRendering(EColorRendering val) { svg_inherited_flags._colorRendering = val; }
     110    void setFillRule(WindRule val) { svg_inherited_flags._fillRule = val; }
     111    void setImageRendering(EImageRendering val) { svg_inherited_flags._imageRendering = val; }
     112    void setJoinStyle(LineJoin val) { svg_inherited_flags._joinStyle = val; }
     113    void setShapeRendering(EShapeRendering val) { svg_inherited_flags._shapeRendering = val; }
     114    void setTextAnchor(ETextAnchor val) { svg_inherited_flags._textAnchor = val; }
     115    void setWritingMode(EWritingMode val) { svg_inherited_flags._writingMode = val; }
     116    void setGlyphOrientationHorizontal(EGlyphOrientation val) { svg_inherited_flags._glyphOrientationHorizontal = val; }
     117    void setGlyphOrientationVertical(EGlyphOrientation val) { svg_inherited_flags._glyphOrientationVertical = val; }
    87118   
    88     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL_REFCOUNTED(CSSValue, stroke, width, StrokeWidth, strokeWidth, 0)
    89     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL_REFCOUNTED(CSSValue, stroke, dashOffset, StrokeDashOffset, strokeDashOffset, 0);
    90 
    91     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL_REFCOUNTED(CSSValue, text, kerning, Kerning, kerning, 0)
    92 
    93     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(float, stops, opacity, StopOpacity, stopOpacity, 1.0f)
    94     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(Color, stops, color, StopColor, stopColor, Color(0, 0, 0))   
    95 
    96     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(float, misc, floodOpacity, FloodOpacity, floodOpacity, 1.0f)
    97     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(Color, misc, floodColor, FloodColor, floodColor, Color(0, 0, 0))
    98     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(Color, misc, lightingColor, LightingColor, lightingColor, Color(255, 255, 255))
    99     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL_REFCOUNTED(CSSValue, misc, baselineShiftValue, BaselineShiftValue, baselineShiftValue, 0)
    100 
    101     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL_OWNPTR(ShadowData, shadowSVG, shadow, Shadow, shadow, 0)
    102 
    103     // Non-inherited resources
    104     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(String, resources, clipper, ClipperResource, clipperResource, String())
    105     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(String, resources, filter, FilterResource, filterResource, String())
    106     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(String, resources, masker, MaskerResource, maskerResource, String())
    107 
    108     // Inherited resources
    109     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(String, inheritedResources, markerStart, MarkerStartResource, markerStartResource, String())
    110     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(String, inheritedResources, markerMid, MarkerMidResource, markerMidResource, String())
    111     SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(String, inheritedResources, markerEnd, MarkerEndResource, markerEndResource, String())
     119    void setFillOpacity(float obj)
     120    {
     121        if (!(fill->opacity == obj))
     122            fill.access()->opacity = obj;
     123    }
     124
     125    void setFillPaint(PassRefPtr<SVGPaint> obj)
     126    {
     127        if (!(fill->paint == obj))
     128            fill.access()->paint = obj;
     129    }
     130
     131    void setStrokeOpacity(float obj)
     132    {
     133        if (!(stroke->opacity == obj))
     134            stroke.access()->opacity = obj;
     135    }
     136
     137    void setStrokePaint(PassRefPtr<SVGPaint> obj)
     138    {
     139        if (!(stroke->paint == obj))
     140            stroke.access()->paint = obj;
     141    }
     142
     143    void setStrokeDashArray(PassRefPtr<CSSValueList> obj)
     144    {
     145        if (!(stroke->dashArray == obj))
     146            stroke.access()->dashArray = obj;
     147    }
     148
     149    void setStrokeMiterLimit(float obj)
     150    {
     151        if (!(stroke->miterLimit == obj))
     152            stroke.access()->miterLimit = obj;
     153    }
     154
     155    void setStrokeWidth(PassRefPtr<CSSValue> obj)
     156    {
     157        if (!(stroke->width == obj))
     158            stroke.access()->width = obj;
     159    }
     160
     161    void setStrokeDashOffset(PassRefPtr<CSSValue> obj)
     162    {
     163        if (!(stroke->dashOffset == obj))
     164            stroke.access()->dashOffset = obj;
     165    }
     166
     167    void setKerning(PassRefPtr<CSSValue> obj)
     168    {
     169        if (!(text->kerning == obj))
     170            text.access()->kerning = obj;
     171    }
     172
     173    void setStopOpacity(float obj)
     174    {
     175        if (!(stops->opacity == obj))
     176            stops.access()->opacity = obj;
     177    }
     178
     179    void setStopColor(Color obj)
     180    {
     181        if (!(stops->color == obj))
     182            stops.access()->color = obj;
     183    }
     184
     185    void setFloodOpacity(float obj)
     186    {
     187        if (!(misc->floodOpacity == obj))
     188            misc.access()->floodOpacity = obj;
     189    }
     190
     191    void setFloodColor(Color obj)
     192    {
     193        if (!(misc->floodColor == obj))
     194            misc.access()->floodColor = obj;
     195    }
     196
     197    void setLightingColor(Color obj)
     198    {
     199        if (!(misc->lightingColor == obj))
     200            misc.access()->lightingColor = obj;
     201    }
     202
     203    void setBaselineShiftValue(PassRefPtr<CSSValue> obj)
     204    {
     205        if (!(misc->baselineShiftValue == obj))
     206            misc.access()->baselineShiftValue = obj;
     207    }
     208
     209    void setShadow(PassOwnPtr<ShadowData> obj) { shadowSVG.access()->shadow = obj;
     210    }
     211
     212    // Setters for non-inherited resources
     213    void setClipperResource(String obj)
     214    {
     215        if (!(resources->clipper == obj))
     216            resources.access()->clipper = obj;
     217    }
     218
     219    void setFilterResource(String obj)
     220    {
     221        if (!(resources->filter == obj))
     222            resources.access()->filter = obj;
     223    }
     224
     225    void setMaskerResource(String obj)
     226    {
     227        if (!(resources->masker == obj))
     228            resources.access()->masker = obj;
     229    }
     230
     231    // Setters for inherited resources
     232    void setMarkerStartResource(String obj)
     233    {
     234        if (!(inheritedResources->markerStart == obj))
     235            inheritedResources.access()->markerStart = obj;
     236    }
     237
     238    void setMarkerMidResource(String obj)
     239    {
     240        if (!(inheritedResources->markerMid == obj))
     241            inheritedResources.access()->markerMid = obj;
     242    }
     243
     244    void setMarkerEndResource(String obj)
     245    {
     246        if (!(inheritedResources->markerEnd == obj))
     247            inheritedResources.access()->markerEnd = obj;
     248    }
     249
     250    // Read accessors for all the properties
     251    EAlignmentBaseline alignmentBaseline() const { return (EAlignmentBaseline) svg_noninherited_flags.f._alignmentBaseline; }
     252    EDominantBaseline dominantBaseline() const { return (EDominantBaseline) svg_noninherited_flags.f._dominantBaseline; }
     253    EBaselineShift baselineShift() const { return (EBaselineShift) svg_noninherited_flags.f._baselineShift; }
     254    EVectorEffect vectorEffect() const { return (EVectorEffect) svg_noninherited_flags.f._vectorEffect; }
     255    LineCap capStyle() const { return (LineCap) svg_inherited_flags._capStyle; }
     256    WindRule clipRule() const { return (WindRule) svg_inherited_flags._clipRule; }
     257    EColorInterpolation colorInterpolation() const { return (EColorInterpolation) svg_inherited_flags._colorInterpolation; }
     258    EColorInterpolation colorInterpolationFilters() const { return (EColorInterpolation) svg_inherited_flags._colorInterpolationFilters; }
     259    EColorRendering colorRendering() const { return (EColorRendering) svg_inherited_flags._colorRendering; }
     260    WindRule fillRule() const { return (WindRule) svg_inherited_flags._fillRule; }
     261    EImageRendering imageRendering() const { return (EImageRendering) svg_inherited_flags._imageRendering; }
     262    LineJoin joinStyle() const { return (LineJoin) svg_inherited_flags._joinStyle; }
     263    EShapeRendering shapeRendering() const { return (EShapeRendering) svg_inherited_flags._shapeRendering; }
     264    ETextAnchor textAnchor() const { return (ETextAnchor) svg_inherited_flags._textAnchor; }
     265    EWritingMode writingMode() const { return (EWritingMode) svg_inherited_flags._writingMode; }
     266    EGlyphOrientation glyphOrientationHorizontal() const { return (EGlyphOrientation) svg_inherited_flags._glyphOrientationHorizontal; }
     267    EGlyphOrientation glyphOrientationVertical() const { return (EGlyphOrientation) svg_inherited_flags._glyphOrientationVertical; }
     268    float fillOpacity() const { return fill->opacity; }
     269    SVGPaint* fillPaint() const { return fill->paint.get(); }
     270    float strokeOpacity() const { return stroke->opacity; }
     271    SVGPaint* strokePaint() const { return stroke->paint.get(); }
     272    CSSValueList* strokeDashArray() const { return stroke->dashArray.get(); }
     273    float strokeMiterLimit() const { return stroke->miterLimit; }
     274    CSSValue* strokeWidth() const { return stroke->width.get(); }
     275    CSSValue* strokeDashOffset() const { return stroke->dashOffset.get(); }
     276    CSSValue* kerning() const { return text->kerning.get(); }
     277    float stopOpacity() const { return stops->opacity; }
     278    Color stopColor() const { return stops->color; }
     279    float floodOpacity() const { return misc->floodOpacity; }
     280    Color floodColor() const { return misc->floodColor; }
     281    Color lightingColor() const { return misc->lightingColor; }
     282    CSSValue* baselineShiftValue() const { return misc->baselineShiftValue.get(); }
     283    ShadowData* shadow() const { return shadowSVG->shadow.get(); }
     284    String clipperResource() const { return resources->clipper; }
     285    String filterResource() const { return resources->filter; }
     286    String maskerResource() const { return resources->masker; }
     287    String markerStartResource() const { return inheritedResources->markerStart; }
     288    String markerMidResource() const { return inheritedResources->markerMid; }
     289    String markerEndResource() const { return inheritedResources->markerEnd; }
    112290
    113291    // convenience
  • trunk/WebCore/rendering/style/SVGRenderStyleDefs.h

    r62677 r64367  
    3939#include <wtf/RefPtr.h>
    4040
    41 // Helper macros for 'SVGRenderStyle'
    42 #define SVG_RS_DEFINE_ATTRIBUTE(Data, Type, Name, Initial) \
    43     void set##Type(Data val) { svg_noninherited_flags.f._##Name = val; } \
    44     Data Name() const { return (Data) svg_noninherited_flags.f._##Name; } \
    45     static Data initial##Type() { return Initial; }
    46 
    47 #define SVG_RS_DEFINE_ATTRIBUTE_INHERITED(Data, Type, Name, Initial) \
    48     void set##Type(Data val) { svg_inherited_flags._##Name = val; } \
    49     Data Name() const { return (Data) svg_inherited_flags._##Name; } \
    50     static Data initial##Type() { return Initial; }
    51 
    52 // "Helper" macros for SVG's RenderStyle properties
    53 // FIXME: These are impossible to work with or debug.
    54 #define SVG_RS_DEFINE_ATTRIBUTE_DATAREF(Data, Group, Variable, Type, Name) \
    55     Data Name() const { return Group->Variable; } \
    56     void set##Type(Data obj) { SVG_RS_SET_VARIABLE(Group, Variable, obj) }
    57 
    58 #define SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(Data, Group, Variable, Type, Name, Initial) \
    59     SVG_RS_DEFINE_ATTRIBUTE_DATAREF(Data, Group, Variable, Type, Name) \
    60     static Data initial##Type() { return Initial; }
    61 
    62 #define SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL_REFCOUNTED(Data, Group, Variable, Type, Name, Initial) \
    63     Data* Name() const { return Group->Variable.get(); } \
    64     void set##Type(PassRefPtr<Data> obj) { \
    65         if (!(Group->Variable == obj)) \
    66             Group.access()->Variable = obj; \
    67     } \
    68     static Data* initial##Type() { return Initial; }
    69 
    70 #define SVG_RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL_OWNPTR(Data, Group, Variable, Type, Name, Initial) \
    71     Data* Name() const { return Group->Variable.get(); } \
    72     void set##Type(PassOwnPtr<Data> obj) { \
    73         Group.access()->Variable = obj; \
    74     } \
    75     static Data* initial##Type() { return Initial; }
    76 
    77 #define SVG_RS_SET_VARIABLE(Group, Variable, Value) \
    78     if (!(Group->Variable == Value)) \
    79         Group.access()->Variable = Value;
    80 
    8141namespace WebCore {
    8242
Note: See TracChangeset for help on using the changeset viewer.