1/* 2 * Copyright (C) 2010 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 23 * THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#ifndef WKCAImageQueue_h 27#define WKCAImageQueue_h 28 29#if USE(ACCELERATED_COMPOSITING) 30 31typedef const void * CFTypeRef; 32typedef const struct __CFDictionary * CFDictionaryRef; 33 34#include <stdint.h> 35#include <wtf/OwnPtr.h> 36 37namespace WebCore { 38 39class WKCAImageQueuePrivate; 40 41class WKCAImageQueue { 42public: 43 enum Flags { 44 Async = 1U << 0, 45 Fill = 1U << 1, 46 Protected = 1U << 2, 47 UseCleanAperture = 1U << 3, 48 UseAspectRatio = 1U << 4, 49 LowQualityColor = 1U << 5, 50 }; 51 52 enum ImageType { 53 Nil = 1, 54 Surface, 55 Buffer, 56 IOSurface, 57 }; 58 59 enum ImageFlags { 60 Opaque = 1U << 0, 61 Flush = 1U << 1, 62 WillFlush = 1U << 2, 63 Flipped = 1U << 3, 64 WaitGPU = 1U << 4, 65 }; 66 67 typedef void (*ReleaseCallback)(unsigned int type, uint64_t id, void* info); 68 69 WKCAImageQueue(uint32_t width, uint32_t height, uint32_t capacity); 70 ~WKCAImageQueue(void); 71 72 size_t collect(); 73 74 bool insertImage(double t, unsigned int type, uint64_t id, uint32_t flags, ReleaseCallback release, void* info); 75 uint64_t registerPixelBuffer(void *data, size_t data_size, size_t rowbytes, size_t width, size_t height, uint32_t pixel_format, CFDictionaryRef attachments, uint32_t flags); 76 77 uint32_t flags() const; 78 void setFlags(uint32_t mask, uint32_t flags); 79 80 CFTypeRef get(); 81 82private: 83 WKCAImageQueue(const WKCAImageQueue&); 84 WKCAImageQueue& operator=(const WKCAImageQueue&); 85 OwnPtr<WKCAImageQueuePrivate> m_private; 86}; 87 88} 89 90#endif 91 92#endif 93