| Index: cc/output/filter_operation.h
|
| diff --git a/cc/output/filter_operation.h b/cc/output/filter_operation.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..21686951781cca8bd1186d3650571223d857457e
|
| --- /dev/null
|
| +++ b/cc/output/filter_operation.h
|
| @@ -0,0 +1,176 @@
|
| +// Copyright 2013 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 CC_OUTPUT_FILTER_OPERATION_H_
|
| +#define CC_OUTPUT_FILTER_OPERATION_H_
|
| +
|
| +#include "base/logging.h"
|
| +#include "cc/base/cc_export.h"
|
| +#include "third_party/skia/include/core/SkColor.h"
|
| +#include "third_party/skia/include/core/SkScalar.h"
|
| +#include "ui/gfx/point.h"
|
| +
|
| +namespace cc {
|
| +
|
| +class CC_EXPORT FilterOperation {
|
| + public:
|
| + enum FilterType {
|
| + GRAYSCALE,
|
| + SEPIA,
|
| + SATURATE,
|
| + HUE_ROTATE,
|
| + INVERT,
|
| + BRIGHTNESS,
|
| + CONTRAST,
|
| + OPACITY,
|
| + BLUR,
|
| + DROP_SHADOW,
|
| + COLOR_MATRIX,
|
| + ZOOM,
|
| + SATURATING_BRIGHTNESS, // Not used in CSS/SVG.
|
| + };
|
| +
|
| + FilterType type() const { return type_; }
|
| +
|
| + float amount() const {
|
| + DCHECK_NE(type_, COLOR_MATRIX);
|
| + return amount_;
|
| + }
|
| +
|
| + gfx::Point drop_shadow_offset() const {
|
| + DCHECK_EQ(type_, DROP_SHADOW);
|
| + return drop_shadow_offset_;
|
| + }
|
| +
|
| + SkColor drop_shadow_color() const {
|
| + DCHECK_EQ(type_, DROP_SHADOW);
|
| + return drop_shadow_color_;
|
| + }
|
| +
|
| + const SkScalar* matrix() const {
|
| + DCHECK_EQ(type_, COLOR_MATRIX);
|
| + return matrix_;
|
| + }
|
| +
|
| + int zoom_inset() const {
|
| + DCHECK_EQ(type_, ZOOM);
|
| + return zoom_inset_;
|
| + }
|
| +
|
| + static FilterOperation CreateGrayscaleFilter(float amount) {
|
| + return FilterOperation(GRAYSCALE, amount);
|
| + }
|
| +
|
| + static FilterOperation CreateSepiaFilter(float amount) {
|
| + return FilterOperation(SEPIA, amount);
|
| + }
|
| +
|
| + static FilterOperation CreateSaturateFilter(float amount) {
|
| + return FilterOperation(SATURATE, amount);
|
| + }
|
| +
|
| + static FilterOperation CreateHueRotateFilter(float amount) {
|
| + return FilterOperation(HUE_ROTATE, amount);
|
| + }
|
| +
|
| + static FilterOperation CreateInvertFilter(float amount) {
|
| + return FilterOperation(INVERT, amount);
|
| + }
|
| +
|
| + static FilterOperation CreateBrightnessFilter(float amount) {
|
| + return FilterOperation(BRIGHTNESS, amount);
|
| + }
|
| +
|
| + static FilterOperation CreateContrastFilter(float amount) {
|
| + return FilterOperation(CONTRAST, amount);
|
| + }
|
| +
|
| + static FilterOperation CreateOpacityFilter(float amount) {
|
| + return FilterOperation(OPACITY, amount);
|
| + }
|
| +
|
| + static FilterOperation CreateBlurFilter(float amount) {
|
| + return FilterOperation(BLUR, amount);
|
| + }
|
| +
|
| + static FilterOperation CreateDropShadowFilter(gfx::Point offset,
|
| + float std_deviation,
|
| + SkColor color) {
|
| + return FilterOperation(DROP_SHADOW, offset, std_deviation, color);
|
| + }
|
| +
|
| + static FilterOperation CreateColorMatrixFilter(SkScalar matrix[20]) {
|
| + return FilterOperation(COLOR_MATRIX, matrix);
|
| + }
|
| +
|
| + static FilterOperation CreateZoomFilter(float amount, int inset) {
|
| + return FilterOperation(ZOOM, amount, inset);
|
| + }
|
| +
|
| + static FilterOperation CreateSaturatingBrightnessFilter(float amount) {
|
| + return FilterOperation(SATURATING_BRIGHTNESS, amount);
|
| + }
|
| +
|
| + bool operator==(const FilterOperation& other) const;
|
| +
|
| + bool operator!=(const FilterOperation& other) const {
|
| + return !(*this == other);
|
| + }
|
| +
|
| + // Methods for restoring a FilterOperation.
|
| + static FilterOperation CreateEmptyFilter() {
|
| + return FilterOperation(GRAYSCALE, 0.f);
|
| + }
|
| +
|
| + void set_type(FilterType type) { type_ = type; }
|
| +
|
| + void set_amount(float amount) {
|
| + DCHECK_NE(type_, COLOR_MATRIX);
|
| + amount_ = amount;
|
| + }
|
| +
|
| + void set_drop_shadow_offset(gfx::Point offset) {
|
| + DCHECK_EQ(type_, DROP_SHADOW);
|
| + drop_shadow_offset_ = offset;
|
| + }
|
| +
|
| + void set_drop_shadow_color(SkColor color) {
|
| + DCHECK_EQ(type_, DROP_SHADOW);
|
| + drop_shadow_color_ = color;
|
| + }
|
| +
|
| + void set_matrix(const SkScalar matrix[20]) {
|
| + DCHECK_EQ(type_, COLOR_MATRIX);
|
| + for (unsigned i = 0; i < 20; ++i)
|
| + matrix_[i] = matrix[i];
|
| + }
|
| +
|
| + void set_zoom_inset(int inset) {
|
| + DCHECK_EQ(type_, ZOOM);
|
| + zoom_inset_ = inset;
|
| + }
|
| +
|
| + private:
|
| + FilterOperation(FilterType type, float amount);
|
| +
|
| + FilterOperation(FilterType type,
|
| + gfx::Point offset,
|
| + float stdDeviation,
|
| + SkColor color);
|
| +
|
| + FilterOperation(FilterType, SkScalar matrix[20]);
|
| +
|
| + FilterOperation(FilterType type, float amount, int inset);
|
| +
|
| + FilterType type_;
|
| + float amount_;
|
| + gfx::Point drop_shadow_offset_;
|
| + SkColor drop_shadow_color_;
|
| + SkScalar matrix_[20];
|
| + int zoom_inset_;
|
| +};
|
| +
|
| +} // namespace cc
|
| +
|
| +#endif // CC_OUTPUT_FILTER_OPERATION_H_
|
|
|