12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CC_OUTPUT_RENDER_SURFACE_FILTERS_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CC_OUTPUT_RENDER_SURFACE_FILTERS_H_
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/basictypes.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/base/cc_export.h"
1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "skia/ext/refptr.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class GrContext;
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class SkBitmap;
1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class SkImageFilter;
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace gfx {
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class SizeF;
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc {
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass FilterOperations;
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CC_EXPORT RenderSurfaceFilters {
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  static SkBitmap Apply(const FilterOperations& filters,
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        unsigned texture_id,
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                        const gfx::SizeF& size,
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        GrContext* gr_context);
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  static FilterOperations Optimize(const FilterOperations& filters);
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  static skia::RefPtr<SkImageFilter> BuildImageFilter(
3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      const FilterOperations& filters,
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const gfx::SizeF& size);
3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  DISALLOW_IMPLICIT_CONSTRUCTORS(RenderSurfaceFilters);
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace cc
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // CC_OUTPUT_RENDER_SURFACE_FILTERS_H_
44