/* * Copyright (C) 2016 Apple Inc. All rights reserved. * * 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 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 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 "NativeImage.h" #if USE(CAIRO) #include "CairoOperations.h" #include "CairoUtilities.h" #include "PlatformContextCairo.h" #include <cairo.h> namespace WebCore { IntSize nativeImageSize(const NativeImagePtr& image) { return image ? cairoSurfaceSize(image.get()) : IntSize(); } bool nativeImageHasAlpha(const NativeImagePtr& image) { return !image || cairo_surface_get_content(image.get()) != CAIRO_CONTENT_COLOR; } Color nativeImageSinglePixelSolidColor(const NativeImagePtr& image) { if (!image || nativeImageSize(image) != IntSize(1, 1)) return Color(); if (cairo_surface_get_type(image.get()) != CAIRO_SURFACE_TYPE_IMAGE) return Color(); RGBA32* pixel = reinterpret_cast_ptr<RGBA32*>(cairo_image_surface_get_data(image.get())); return colorFromPremultipliedARGB(*pixel); } void drawNativeImage(const NativeImagePtr& image, GraphicsContext& context, const FloatRect& destRect, const FloatRect& srcRect, const IntSize& imageSize, const ImagePaintingOptions& options) { context.drawNativeImage(image, imageSize, destRect, srcRect, options); } void clearNativeImageSubimages(const NativeImagePtr&) { } } // namespace WebCore #endif // USE(CAIRO)