1db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block/* 2db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * Copyright (C) 2010 Apple Inc. All rights reserved. 365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Portions Copyright (c) 2010 Motorola Mobility, Inc. All rights reserved. 42fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2011 Igalia S.L 5db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * 6db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * Redistribution and use in source and binary forms, with or without 7db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * modification, are permitted provided that the following conditions 8db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * are met: 9db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * 1. Redistributions of source code must retain the above copyright 10db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * notice, this list of conditions and the following disclaimer. 11db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * 2. Redistributions in binary form must reproduce the above copyright 12db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * notice, this list of conditions and the following disclaimer in the 13db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * documentation and/or other materials provided with the distribution. 14db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * 15db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 16db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 17db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 19db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 25db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * THE POSSIBILITY OF SUCH DAMAGE. 26db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block */ 27db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 282fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#ifndef UpdateChunk_h 292fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#define UpdateChunk_h 30dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "IntRect.h" 322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "SharedMemory.h" 3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 342fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include <cairo.h> 3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 362fc2651226baac27029e38c9d6ef883fa32084dbSteve Blocknamespace CoreIPC { 372fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass ArgumentEncoder; 382fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass ArgumentDecoder; 39dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 40db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 412fc2651226baac27029e38c9d6ef883fa32084dbSteve Blocknamespace WebKit { 422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 432fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass UpdateChunk { 442fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockpublic: 452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block UpdateChunk(); 462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block UpdateChunk(const WebCore::IntRect&); 472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ~UpdateChunk(); 482fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 492fc2651226baac27029e38c9d6ef883fa32084dbSteve Block const WebCore::IntRect& rect() const { return m_rect; } 502fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool isEmpty() { return m_rect.isEmpty(); } 512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block void encode(CoreIPC::ArgumentEncoder*) const; 532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block static bool decode(CoreIPC::ArgumentDecoder*, UpdateChunk&); 542fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block cairo_surface_t* createImage() const; 562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 572fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockprivate: 582fc2651226baac27029e38c9d6ef883fa32084dbSteve Block size_t size() const; 592fc2651226baac27029e38c9d6ef883fa32084dbSteve Block int m_stride; 602fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WebCore::IntRect m_rect; 612fc2651226baac27029e38c9d6ef883fa32084dbSteve Block mutable RefPtr<SharedMemory> m_sharedMemory; 622fc2651226baac27029e38c9d6ef883fa32084dbSteve Block}; 632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebKit 652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif // UpdateChunk_h 68