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

Unified Diff: ui/gfx/compositor/compositor.h

Issue 10365007: ui: Move compositor/ directory out of gfx/, up to ui/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix DEPS Created 8 years, 8 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 | « ui/gfx/compositor/PRESUBMIT.py ('k') | ui/gfx/compositor/compositor.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/compositor/compositor.h
diff --git a/ui/gfx/compositor/compositor.h b/ui/gfx/compositor/compositor.h
deleted file mode 100644
index 9475cf62445acfe2de8b85b8450cbaba2fe1cf07..0000000000000000000000000000000000000000
--- a/ui/gfx/compositor/compositor.h
+++ /dev/null
@@ -1,245 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_GFX_COMPOSITOR_COMPOSITOR_H_
-#define UI_GFX_COMPOSITOR_COMPOSITOR_H_
-#pragma once
-
-#include "base/hash_tables.h"
-#include "base/memory/ref_counted.h"
-#include "base/observer_list.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebLayer.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebLayerTreeView.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebLayerTreeViewClient.h"
-#include "ui/gfx/compositor/compositor_export.h"
-#include "ui/gfx/gl/gl_share_group.h"
-#include "ui/gfx/native_widget_types.h"
-#include "ui/gfx/size.h"
-#include "ui/gfx/transform.h"
-
-
-class SkBitmap;
-namespace gfx {
-class GLContext;
-class GLSurface;
-class GLShareGroup;
-class Point;
-class Rect;
-}
-
-namespace ui {
-
-class Compositor;
-class CompositorObserver;
-class Layer;
-
-// This class abstracts the creation of the 3D context for the compositor. It is
-// a global object.
-class COMPOSITOR_EXPORT ContextFactory {
- public:
- virtual ~ContextFactory() {}
-
- // Gets the global instance.
- static ContextFactory* GetInstance();
-
- // Sets the global instance. Caller keeps ownership.
- // If this function isn't called (for tests), a "default" factory will be
- // created on the first call of GetInstance.
- static void SetInstance(ContextFactory* instance);
-
- // Creates a context for given compositor. The factory may keep per-compositor
- // data (e.g. a shared context), that needs to be cleaned up by calling
- // RemoveCompositor when the compositor gets destroyed.
- virtual WebKit::WebGraphicsContext3D* CreateContext(
- Compositor* compositor) = 0;
-
- // Creates a context for given compositor used for offscreen rendering. See
- // the comments of CreateContext to know how per-compositor data is handled.
- virtual WebKit::WebGraphicsContext3D* CreateOffscreenContext(
- Compositor* compositor) = 0;
-
- // Destroys per-compositor data.
- virtual void RemoveCompositor(Compositor* compositor) = 0;
-};
-
-// The default factory that creates in-process contexts.
-class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory {
- public:
- DefaultContextFactory();
- virtual ~DefaultContextFactory();
-
- // ContextFactory implementation
- virtual WebKit::WebGraphicsContext3D* CreateContext(
- Compositor* compositor) OVERRIDE;
- virtual WebKit::WebGraphicsContext3D* CreateOffscreenContext(
- Compositor* compositor) OVERRIDE;
- virtual void RemoveCompositor(Compositor* compositor) OVERRIDE;
-
- bool Initialize();
-
- void set_share_group(gfx::GLShareGroup* share_group) {
- share_group_ = share_group;
- }
-
- private:
- WebKit::WebGraphicsContext3D* CreateContextCommon(
- Compositor* compositor,
- bool offscreen);
-
- scoped_refptr<gfx::GLShareGroup> share_group_;
-
- DISALLOW_COPY_AND_ASSIGN(DefaultContextFactory);
-};
-
-// Texture provide an abstraction over the external texture that can be passed
-// to a layer.
-class COMPOSITOR_EXPORT Texture : public base::RefCounted<Texture> {
- public:
- Texture(bool flipped, const gfx::Size& size);
-
- unsigned int texture_id() const { return texture_id_; }
- void set_texture_id(unsigned int id) { texture_id_ = id; }
- bool flipped() const { return flipped_; }
- gfx::Size size() const { return size_; }
-
- protected:
- virtual ~Texture();
-
- private:
- friend class base::RefCounted<Texture>;
-
- unsigned int texture_id_;
- bool flipped_;
- gfx::Size size_;
-
- DISALLOW_COPY_AND_ASSIGN(Texture);
-};
-
-// An interface to allow the compositor to communicate with its owner.
-class COMPOSITOR_EXPORT CompositorDelegate {
- public:
- // Requests the owner to schedule a redraw of the layer tree.
- virtual void ScheduleDraw() = 0;
-
- protected:
- virtual ~CompositorDelegate() {}
-};
-
-// Compositor object to take care of GPU painting.
-// A Browser compositor object is responsible for generating the final
-// displayable form of pixels comprising a single widget's contents. It draws an
-// appropriately transformed texture for each transformed view in the widget's
-// view hierarchy.
-class COMPOSITOR_EXPORT Compositor
- : NON_EXPORTED_BASE(public WebKit::WebLayerTreeViewClient) {
- public:
- Compositor(CompositorDelegate* delegate,
- gfx::AcceleratedWidget widget,
- const gfx::Size& size);
- virtual ~Compositor();
-
- static void Initialize(bool useThread);
- static void Terminate();
-
- // Schedules a redraw of the layer tree associated with this compositor.
- void ScheduleDraw();
-
- // Sets the root of the layer tree drawn by this Compositor. The root layer
- // must have no parent. The compositor's root layer is reset if the root layer
- // is destroyed. NULL can be passed to reset the root layer, in which case the
- // compositor will stop drawing anything.
- // The Compositor does not own the root layer.
- const Layer* root_layer() const { return root_layer_; }
- Layer* root_layer() { return root_layer_; }
- void SetRootLayer(Layer* root_layer);
-
- // Draws the scene created by the layer tree and any visual effects. If
- // |force_clear| is true, this will cause the compositor to clear before
- // compositing.
- void Draw(bool force_clear);
-
- // Where possible, draws are scissored to a damage region calculated from
- // changes to layer properties. This bypasses that and indicates that
- // the whole frame needs to be drawn.
- void ScheduleFullDraw();
-
- // Reads the region |bounds| of the contents of the last rendered frame
- // into the given bitmap.
- // Returns false if the pixels could not be read.
- bool ReadPixels(SkBitmap* bitmap, const gfx::Rect& bounds);
-
- // Notifies the compositor that the size of the widget that it is
- // drawing to has changed.
- void WidgetSizeChanged(const gfx::Size& size);
-
- // Returns the size of the widget that is being drawn to.
- const gfx::Size& size() const { return size_; }
-
- // Returns the widget for this compositor.
- gfx::AcceleratedWidget widget() const { return widget_; }
-
- // Compositor does not own observers. It is the responsibility of the
- // observer to remove itself when it is done observing.
- void AddObserver(CompositorObserver* observer);
- void RemoveObserver(CompositorObserver* observer);
- bool HasObserver(CompositorObserver* observer);
-
- // Returns whether a draw is pending, that is, if we're between the Draw call
- // and the OnCompositingEnded.
- bool DrawPending() const { return swap_posted_; }
-
- // Internal functions, called back by command-buffer contexts on swap buffer
- // events.
-
- // Signals swap has been posted.
- void OnSwapBuffersPosted();
-
- // Signals swap has completed.
- void OnSwapBuffersComplete();
-
- // Signals swap has aborted (e.g. lost context).
- void OnSwapBuffersAborted();
-
- // WebLayerTreeViewClient implementation.
- virtual void updateAnimations(double frameBeginTime);
- virtual void layout();
- virtual void applyScrollAndScale(const WebKit::WebSize& scrollDelta,
- float scaleFactor);
- virtual WebKit::WebGraphicsContext3D* createContext3D();
- virtual void didRebindGraphicsContext(bool success);
- virtual void didCommitAndDrawFrame();
- virtual void didCompleteSwapBuffers();
- virtual void scheduleComposite();
-
- private:
- // When reading back pixel data we often get RGBA rather than BGRA pixels and
- // and the image often needs to be flipped vertically.
- static void SwizzleRGBAToBGRAAndFlip(unsigned char* pixels,
- const gfx::Size& image_size);
-
- // Notifies the compositor that compositing is complete.
- void NotifyEnd();
-
- CompositorDelegate* delegate_;
- gfx::Size size_;
-
- // The root of the Layer tree drawn by this compositor.
- Layer* root_layer_;
-
- ObserverList<CompositorObserver> observer_list_;
-
- gfx::AcceleratedWidget widget_;
- WebKit::WebLayer root_web_layer_;
- WebKit::WebLayerTreeView host_;
-
- // This is set to true when the swap buffers has been posted and we're waiting
- // for completion.
- bool swap_posted_;
-
- friend class base::RefCounted<Compositor>;
-};
-
-} // namespace ui
-
-#endif // UI_GFX_COMPOSITOR_COMPOSITOR_H_
« no previous file with comments | « ui/gfx/compositor/PRESUBMIT.py ('k') | ui/gfx/compositor/compositor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698