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

Unified Diff: cc/output/filter_operation.h

Issue 1531403002: Revert "Delete CC." (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years 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 | « cc/output/dynamic_geometry_binding.cc ('k') | cc/output/filter_operation.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..8330f0692a12bbb874de91329e8191ee17437f42
--- /dev/null
+++ b/cc/output/filter_operation.h
@@ -0,0 +1,260 @@
+// 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 "base/memory/scoped_ptr.h"
+#include "skia/ext/refptr.h"
+#include "third_party/skia/include/core/SkColor.h"
+#include "third_party/skia/include/core/SkImageFilter.h"
+#include "third_party/skia/include/core/SkRegion.h"
+#include "third_party/skia/include/core/SkScalar.h"
+#include "ui/gfx/geometry/point.h"
+
+namespace base {
+namespace trace_event {
+class TracedValue;
+}
+class Value;
+}
+
+namespace cc {
+
+class FilterOperation {
+ public:
+ enum FilterType {
+ GRAYSCALE,
+ SEPIA,
+ SATURATE,
+ HUE_ROTATE,
+ INVERT,
+ BRIGHTNESS,
+ CONTRAST,
+ OPACITY,
+ BLUR,
+ DROP_SHADOW,
+ COLOR_MATRIX,
+ ZOOM,
+ REFERENCE,
+ SATURATING_BRIGHTNESS, // Not used in CSS/SVG.
+ ALPHA_THRESHOLD, // Not used in CSS/SVG.
+ FILTER_TYPE_LAST = ALPHA_THRESHOLD
+ };
+
+ FilterOperation(const FilterOperation& other);
+
+ ~FilterOperation();
+
+ FilterType type() const { return type_; }
+
+ float amount() const {
+ DCHECK_NE(type_, COLOR_MATRIX);
+ DCHECK_NE(type_, REFERENCE);
+ return amount_;
+ }
+
+ float outer_threshold() const {
+ DCHECK_EQ(type_, ALPHA_THRESHOLD);
+ return outer_threshold_;
+ }
+
+ 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_;
+ }
+
+ skia::RefPtr<SkImageFilter> image_filter() const {
+ DCHECK_EQ(type_, REFERENCE);
+ return image_filter_;
+ }
+
+ const SkScalar* matrix() const {
+ DCHECK_EQ(type_, COLOR_MATRIX);
+ return matrix_;
+ }
+
+ int zoom_inset() const {
+ DCHECK_EQ(type_, ZOOM);
+ return zoom_inset_;
+ }
+
+ const SkRegion& region() const {
+ DCHECK_EQ(type_, ALPHA_THRESHOLD);
+ return region_;
+ }
+
+ 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(const 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 CreateReferenceFilter(
+ const skia::RefPtr<SkImageFilter>& image_filter) {
+ return FilterOperation(REFERENCE, image_filter);
+ }
+
+ static FilterOperation CreateSaturatingBrightnessFilter(float amount) {
+ return FilterOperation(SATURATING_BRIGHTNESS, amount);
+ }
+
+ static FilterOperation CreateAlphaThresholdFilter(const SkRegion& region,
+ float inner_threshold,
+ float outer_threshold) {
+ return FilterOperation(ALPHA_THRESHOLD, region,
+ inner_threshold, outer_threshold);
+ }
+
+ 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);
+ DCHECK_NE(type_, REFERENCE);
+ amount_ = amount;
+ }
+
+ void set_outer_threshold(float outer_threshold) {
+ DCHECK_EQ(type_, ALPHA_THRESHOLD);
+ outer_threshold_ = outer_threshold;
+ }
+
+ void set_drop_shadow_offset(const 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_image_filter(const skia::RefPtr<SkImageFilter>& image_filter) {
+ DCHECK_EQ(type_, REFERENCE);
+ image_filter_ = image_filter;
+ }
+
+ 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;
+ }
+
+ void set_region(const SkRegion& region) {
+ DCHECK_EQ(type_, ALPHA_THRESHOLD);
+ region_ = region;
+ }
+
+ // Given two filters of the same type, returns a filter operation created by
+ // linearly interpolating a |progress| fraction from |from| to |to|. If either
+ // |from| or |to| (but not both) is null, it is treated as a no-op filter of
+ // the same type as the other given filter. If both |from| and |to| are null,
+ // or if |from| and |to| are non-null but of different types, returns a
+ // no-op filter.
+ static FilterOperation Blend(const FilterOperation* from,
+ const FilterOperation* to,
+ double progress);
+
+ void AsValueInto(base::trace_event::TracedValue* value) const;
+
+ private:
+ FilterOperation(FilterType type, float amount);
+
+ FilterOperation(FilterType type,
+ const gfx::Point& offset,
+ float stdDeviation,
+ SkColor color);
+
+ FilterOperation(FilterType, SkScalar matrix[20]);
+
+ FilterOperation(FilterType type, float amount, int inset);
+
+ FilterOperation(FilterType type,
+ const skia::RefPtr<SkImageFilter>& image_filter);
+
+ FilterOperation(FilterType type,
+ const SkRegion& region,
+ float inner_threshold,
+ float outer_threshold);
+
+ FilterType type_;
+ float amount_;
+ float outer_threshold_;
+ gfx::Point drop_shadow_offset_;
+ SkColor drop_shadow_color_;
+ skia::RefPtr<SkImageFilter> image_filter_;
+ SkScalar matrix_[20];
+ int zoom_inset_;
+ SkRegion region_;
+};
+
+} // namespace cc
+
+#endif // CC_OUTPUT_FILTER_OPERATION_H_
« no previous file with comments | « cc/output/dynamic_geometry_binding.cc ('k') | cc/output/filter_operation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698