2 * Copyright (C) 2011 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
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.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #ifndef PlatformCALayerWinInternal_h
27 #define PlatformCALayerWinInternal_h
29 #if USE(ACCELERATED_COMPOSITING)
31 #include <CoreGraphics/CGGeometry.h>
32 #include <wtf/RetainPtr.h>
33 #include <wtf/Vector.h>
35 typedef struct _CACFLayer *CACFLayerRef;
36 typedef struct CGContext *CGContextRef;
41 class PlatformCALayer;
43 typedef Vector<RefPtr<PlatformCALayer> > PlatformCALayerList;
45 class PlatformCALayerWinInternal {
47 PlatformCALayerWinInternal(PlatformCALayer*);
48 ~PlatformCALayerWinInternal();
50 void displayCallback(CACFLayerRef, CGContextRef);
51 void setNeedsDisplay(const FloatRect*);
52 PlatformCALayer* owner() const { return m_owner; }
54 void setSublayers(const PlatformCALayerList&);
55 void getSublayers(PlatformCALayerList&) const;
56 void removeAllSublayers();
57 void insertSublayer(PlatformCALayer*, size_t);
58 size_t sublayerCount() const;
59 int indexOfSublayer(const PlatformCALayer* reference);
61 void setBounds(const FloatRect&);
62 void setFrame(const FloatRect&);
65 void internalSetNeedsDisplay(const FloatRect*);
66 PlatformCALayer* sublayerAtIndex(int) const;
68 static void tileDisplayCallback(CACFLayerRef, CGContextRef);
70 void drawTile(CACFLayerRef, CGContextRef);
71 CGSize constrainedSize(const CGSize&) const;
74 CACFLayerRef tileAtIndex(int);
75 int tileCount() const;
78 PlatformCALayer* m_owner;
81 CGSize m_constrainedSize;
82 RetainPtr<CACFLayerRef> m_tileParent;
87 #endif // USE(ACCELERATED_COMPOSITING)
89 #endif // PlatformCALayerWinInternal_h