diff options
Diffstat (limited to 'WebCore/platform/graphics/cairo/GradientCairo.cpp')
-rw-r--r-- | WebCore/platform/graphics/cairo/GradientCairo.cpp | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/WebCore/platform/graphics/cairo/GradientCairo.cpp b/WebCore/platform/graphics/cairo/GradientCairo.cpp deleted file mode 100644 index 4e6ed07..0000000 --- a/WebCore/platform/graphics/cairo/GradientCairo.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (C) 2006, 2007, 2008 Apple Computer, Inc. All rights reserved. - * Copyright (C) 2007 Alp Toker <alp@atoker.com> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "config.h" -#include "Gradient.h" - -#include "CSSParser.h" -#include "GraphicsContext.h" -#include <cairo.h> - -namespace WebCore { - -void Gradient::platformDestroy() -{ - if (m_gradient) { - cairo_pattern_destroy(m_gradient); - m_gradient = 0; - } -} - -cairo_pattern_t* Gradient::platformGradient() -{ - if (m_gradient) - return m_gradient; - - if (m_radial) - m_gradient = cairo_pattern_create_radial(m_p0.x(), m_p0.y(), m_r0, m_p1.x(), m_p1.y(), m_r1); - else - m_gradient = cairo_pattern_create_linear(m_p0.x(), m_p0.y(), m_p1.x(), m_p1.y()); - - Vector<ColorStop>::iterator stopIterator = m_stops.begin(); - while (stopIterator != m_stops.end()) { - cairo_pattern_add_color_stop_rgba(m_gradient, stopIterator->stop, stopIterator->red, stopIterator->green, stopIterator->blue, stopIterator->alpha); - ++stopIterator; - } - - switch (m_spreadMethod) { - case SpreadMethodPad: - cairo_pattern_set_extend(m_gradient, CAIRO_EXTEND_PAD); - break; - case SpreadMethodReflect: - cairo_pattern_set_extend(m_gradient, CAIRO_EXTEND_REFLECT); - break; - case SpreadMethodRepeat: - cairo_pattern_set_extend(m_gradient, CAIRO_EXTEND_REPEAT); - break; - } - - cairo_matrix_t matrix = m_gradientSpaceTransformation; - cairo_matrix_invert(&matrix); - cairo_pattern_set_matrix(m_gradient, &matrix); - - return m_gradient; -} - -void Gradient::setPlatformGradientSpaceTransform(const AffineTransform& gradientSpaceTransformation) -{ - if (m_gradient) { - cairo_matrix_t matrix = gradientSpaceTransformation; - cairo_matrix_invert(&matrix); - cairo_pattern_set_matrix(m_gradient, &matrix); - } -} - -void Gradient::fill(GraphicsContext* context, const FloatRect& rect) -{ - cairo_t* cr = context->platformContext(); - - context->save(); - cairo_set_source(cr, platformGradient()); - cairo_rectangle(cr, rect.x(), rect.y(), rect.width(), rect.height()); - cairo_fill(cr); - context->restore(); -} - -} //namespace |