15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2011 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "config.h" 275267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "core/css/CSSFilterValue.h" 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "wtf/text/StringBuilder.h" 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 335267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)CSSFilterValue::CSSFilterValue(FilterOperationType operationType) 3409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) : CSSValueList(CSSFilterClass, CommaSeparator) 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_type(operationType) 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)String CSSFilterValue::customCSSText() const 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) StringBuilder result; 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (m_type) { 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case ReferenceFilterOperation: 449e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) result.appendLiteral("url("); 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case GrayscaleFilterOperation: 479e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) result.appendLiteral("grayscale("); 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case SepiaFilterOperation: 509e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) result.appendLiteral("sepia("); 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case SaturateFilterOperation: 539e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) result.appendLiteral("saturate("); 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case HueRotateFilterOperation: 569e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) result.appendLiteral("hue-rotate("); 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case InvertFilterOperation: 599e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) result.appendLiteral("invert("); 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case OpacityFilterOperation: 629e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) result.appendLiteral("opacity("); 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case BrightnessFilterOperation: 659e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) result.appendLiteral("brightness("); 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case ContrastFilterOperation: 689e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) result.appendLiteral("contrast("); 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case BlurFilterOperation: 719e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) result.appendLiteral("blur("); 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case DropShadowFilterOperation: 749e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) result.appendLiteral("drop-shadow("); 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) default: 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) result.append(CSSValueList::customCSSText()); 8109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) result.append(')'); 8209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return result.toString(); 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 855267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)CSSFilterValue::CSSFilterValue(const CSSFilterValue& cloneFrom) 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : CSSValueList(cloneFrom) 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_type(cloneFrom.m_type) 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)PassRefPtrWillBeRawPtr<CSSFilterValue> CSSFilterValue::cloneForCSSOM() const 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 93f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return adoptRefWillBeNoop(new CSSFilterValue(*this)); 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 965267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)bool CSSFilterValue::equals(const CSSFilterValue& other) const 97926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 98926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return m_type == other.m_type && CSSValueList::equals(other); 99926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 100926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 103