Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(591)

Unified Diff: WebCore/platform/graphics/skia/LayerSkia.h

Issue 650002: Implementing ACCELERATED_COMPOSITING via Skia Base URL: http://svn.webkit.org/repository/webkit/trunk/
Patch Set: '' Created 10 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « WebCore/platform/graphics/skia/LayerRendererSkia.cpp ('k') | WebCore/platform/graphics/skia/LayerSkia.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: WebCore/platform/graphics/skia/LayerSkia.h
===================================================================
--- WebCore/platform/graphics/skia/LayerSkia.h (revision 0)
+++ WebCore/platform/graphics/skia/LayerSkia.h (revision 0)
@@ -0,0 +1,231 @@
+/*
+ * Copyright (c) 2010, Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+
+#ifndef LayerSkia_h
+#define LayerSkia_h
+
+#if USE(ACCELERATED_COMPOSITING)
+
+#include "StringHash.h"
+
+#include <wtf/RefCounted.h>
+
+#include <wtf/PassRefPtr.h>
+#include <wtf/Vector.h>
+
+#include "GraphicsContext.h"
+#include "GraphicsLayerSkia.h"
+#include "PlatformString.h"
+#include "TransformationMatrix.h"
+
+#include "SkPoint.h"
+#include "SkColor.h"
+
+namespace skia {
+class PlatformCanvas;
+}
+
+namespace WebCore {
+
+class LayerSkia : public RefCounted<LayerSkia> {
+public:
+ enum LayerType { Layer, TransformLayer };
+ enum FilterType { Linear, Nearest, Trilinear, Lanczos };
+ enum ContentsGravityType { Center, Top, Bottom, Left, Right, TopLeft, TopRight,
+ BottomLeft, BottomRight, Resize, ResizeAspect, ResizeAspectFill };
+
+ static PassRefPtr<LayerSkia> create(LayerType, GraphicsLayerSkia* owner = 0);
+
+ ~LayerSkia();
+
+ void display(PlatformGraphicsContext*);
+
+ void addSublayer(PassRefPtr<LayerSkia> sublayer);
+ void insertSublayer(PassRefPtr<LayerSkia>, size_t index);
+ void replaceSublayer(LayerSkia* reference, PassRefPtr<LayerSkia>);
+ void removeFromSuperlayer();
+
+ LayerSkia* ancestorOrSelfWithSuperlayer(LayerSkia*) const;
+
+ void setAnchorPoint(const SkPoint& anchorPoint) { m_anchorPoint = anchorPoint; setNeedsCommit(); }
+ SkPoint anchorPoint() const { return m_anchorPoint; }
+
+ void setAnchorPointZ(float anchorPointZ) { m_anchorPointZ = anchorPointZ; setNeedsCommit(); }
+ float anchorPointZ() const { return m_anchorPointZ; }
+
+ void setBackgroundColor(Color color) { m_backgroundColor = color; setNeedsCommit(); }
+ Color backgroundColor() const { return m_backgroundColor; }
+
+ void setBorderColor(const Color& color) { m_borderColor = color; }
+ Color borderColor() const { return m_borderColor; }
+
+ void setBorderWidth(float width) { m_borderWidth = width; }
+ SkScalar borderWidth() const { return m_borderWidth; }
+
+ void setBounds(const SkIRect&);
+ SkIRect bounds() const { return m_bounds; }
+
+ void setClearsContext(bool clears) { m_clearsContext = clears; setNeedsCommit(); }
+ bool clearsContext() const { return m_clearsContext; }
+
+ void setContentsGravity(ContentsGravityType gravityType) { m_contentsGravity = gravityType; setNeedsCommit(); }
+ ContentsGravityType contentsGravity() const { return m_contentsGravity; }
+
+ void setDoubleSided(bool doubleSided) { m_doubleSided = doubleSided; setNeedsCommit(); }
+ bool doubleSided() const { return m_doubleSided; }
+
+ void setEdgeAntialiasingMask(uint32_t mask) { m_edgeAntialiasingMask = mask; setNeedsCommit(); }
+ uint32_t edgeAntialiasingMask() const { return m_edgeAntialiasingMask; }
+
+ void setFrame(const SkRect&);
+ SkRect frame() const { return m_frame; }
+
+ void setHidden(bool hidden) { m_hidden = hidden; setNeedsCommit(); }
+ bool isHidden() const { return m_hidden; }
+
+ void setMasksToBounds(bool masksToBounds) { m_masksToBounds = masksToBounds; }
+ bool masksToBounds() const { return m_masksToBounds; }
+
+ void setName(const String& name) { m_name = name; }
+ String name() const { return m_name; }
+
+ void setNeedsDisplay(const SkRect& dirtyRect);
+ void setNeedsDisplay();
+
+ void setNeedsDisplayOnBoundsChange(bool needsDisplay) { m_needsDisplayOnBoundsChange = needsDisplay; }
+
+ void setOpacity(float opacity) { m_opacity = opacity; setNeedsCommit(); }
+ float opacity() const { return m_opacity; }
+
+ void setOpaque(bool opaque) { m_opaque = opaque; setNeedsCommit(); }
+ bool opaque() const { return m_opaque; }
+
+ void setPosition(const SkPoint& position) {
+ m_position = position; setNeedsCommit(); }
+
+ SkPoint position() const { return m_position; }
+
+ void setZPosition(float zPosition) { m_zPosition = zPosition; setNeedsCommit(); }
+ SkScalar zPosition() const { return m_zPosition; }
+
+ LayerSkia* rootLayer() const;
+
+ void removeAllSublayers();
+
+ void setSublayers(const Vector<RefPtr<LayerSkia> >&);
+
+ const Vector<RefPtr<LayerSkia>>& getSublayers() const { return m_sublayers; }
+
+ void setSublayerTransform(const SkMatrix& transform) { m_sublayerTransform = transform; setNeedsCommit(); }
+ SkMatrix sublayerTransform() const { return m_sublayerTransform; }
+
+ void setSuperlayer(LayerSkia* superlayer);
+ LayerSkia* superlayer() const;
+
+
+ void setTransform(const SkMatrix& transform) { m_transform = transform; setNeedsCommit(); }
+ SkMatrix transform() const { return m_transform; }
+
+ void setGeometryFlipped(bool flipped) { m_geometryFlipped = flipped; setNeedsCommit(); }
+ bool geometryFlipped() const { return m_geometryFlipped; }
+
+ void updateContents();
+
+ skia::PlatformCanvas* platformCanvas() { return m_canvas; }
+ GraphicsContext* graphicsContext() { return m_graphicsContext; }
+
+ void setBackingStoreRect(const SkIRect& rect);
+
+private:
+ LayerSkia(LayerType, GraphicsLayerSkia* owner);
+
+ void setNeedsCommit();
+
+ void paintMe();
+
+ size_t numSublayers() const
+ {
+ return m_sublayers.size();
+ }
+
+ // Returns the index of the passed layer in this layer's sublayers list
+ // or -1 if not found
+ int indexOfSublayer(const LayerSkia*);
+
+ // This should only be called from removeFromSuperlayer.
+ void removeSublayer(LayerSkia*);
+
+ // Re-created the canvas and graphics context. This method
+ // must be called every time the layer is resized.
+ void updateGraphicsContext(const SkIRect& rect);
+
+ Vector< RefPtr<LayerSkia> > m_sublayers;
+ LayerSkia* m_superlayer;
+
+ bool m_needsDisplayOnBoundsChange;
+ GraphicsLayerSkia* m_owner;
+
+ skia::PlatformCanvas* m_canvas;
+ PlatformContextSkia* m_skiaContext;
+ GraphicsContext* m_graphicsContext;
+ Color m_borderColor;
+ float m_borderWidth;
+
+ LayerType m_layerType;
+
+ SkIRect m_bounds;
+ SkIRect m_backingStoreRect;
+ SkPoint m_position;
+ SkPoint m_anchorPoint;
+ float m_anchorPointZ;
+ Color m_backgroundColor;
+ bool m_clearsContext;
+ bool m_doubleSided;
+ uint32_t m_edgeAntialiasingMask;
+ SkRect m_frame;
+ bool m_hidden;
+ bool m_masksToBounds;
+ ContentsGravityType m_contentsGravity;
+ float m_opacity;
+ bool m_opaque;
+ float m_zPosition;
+ bool m_geometryFlipped;
+ String m_name;
+
+ SkMatrix m_transform;
+ SkMatrix m_sublayerTransform;
+};
+
+}
+
+#endif // USE(ACCELERATED_COMPOSITING)
+
+#endif // WKCACFLayer_h
Property changes on: WebCore\platform\graphics\skia\LayerSkia.h
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « WebCore/platform/graphics/skia/LayerRendererSkia.cpp ('k') | WebCore/platform/graphics/skia/LayerSkia.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698