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

Unified Diff: Source/core/platform/graphics/filters/FilterEffect.h

Issue 99103006: Moving GraphicsContext and dependencies from core to platform. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Final patch - fixes Android Created 7 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
Index: Source/core/platform/graphics/filters/FilterEffect.h
diff --git a/Source/core/platform/graphics/filters/FilterEffect.h b/Source/core/platform/graphics/filters/FilterEffect.h
deleted file mode 100644
index f502b09b753355b5bad9407437881232327cfa0a..0000000000000000000000000000000000000000
--- a/Source/core/platform/graphics/filters/FilterEffect.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Copyright (C) 2008 Alex Mathews <possessedpenguinbob@gmail.com>
- * Copyright (C) 2009 Dirk Schulze <krit@webkit.org>
- * Copyright (C) Research In Motion Limited 2010. All rights reserved.
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef FilterEffect_h
-#define FilterEffect_h
-
-#include "platform/geometry/FloatRect.h"
-#include "platform/geometry/IntRect.h"
-#include "platform/graphics/ColorSpace.h"
-
-#include "third_party/skia/include/core/SkImageFilter.h"
-
-#include "wtf/PassOwnPtr.h"
-#include "wtf/RefCounted.h"
-#include "wtf/RefPtr.h"
-#include "wtf/Uint8ClampedArray.h"
-#include "wtf/Vector.h"
-
-static const float kMaxFilterSize = 5000.0f;
-
-namespace WebCore {
-
-class Filter;
-class FilterEffect;
-class ImageBuffer;
-class TextStream;
-
-class SkiaImageFilterBuilder;
-
-typedef Vector<RefPtr<FilterEffect> > FilterEffectVector;
-
-enum FilterEffectType {
- FilterEffectTypeUnknown,
- FilterEffectTypeImage,
- FilterEffectTypeTile,
- FilterEffectTypeSourceInput
-};
-
-enum DetermineSubregionFlag {
- DetermineSubregionNone = 0,
- MapRectForward = 1,
- ClipToFilterRegion = 1 << 1
-};
-
-typedef int DetermineSubregionFlags;
-
-class FilterEffect : public RefCounted<FilterEffect> {
-public:
- virtual ~FilterEffect();
-
- void clearResult();
- void clearResultsRecursive();
-
- ImageBuffer* asImageBuffer();
- PassRefPtr<Uint8ClampedArray> asUnmultipliedImage(const IntRect&);
- PassRefPtr<Uint8ClampedArray> asPremultipliedImage(const IntRect&);
- void copyUnmultipliedImage(Uint8ClampedArray* destination, const IntRect&);
- void copyPremultipliedImage(Uint8ClampedArray* destination, const IntRect&);
-
- FilterEffectVector& inputEffects() { return m_inputEffects; }
- FilterEffect* inputEffect(unsigned) const;
- unsigned numberOfEffectInputs() const { return m_inputEffects.size(); }
-
- inline bool hasResult() const
- {
- // This function needs platform specific checks, if the memory managment is not done by FilterEffect.
- return m_imageBufferResult
- || m_unmultipliedImageResult
- || m_premultipliedImageResult;
- }
-
- IntRect drawingRegionOfInputImage(const IntRect&) const;
- IntRect requestedRegionOfInputImageData(const IntRect&) const;
-
- // Solid black image with different alpha values.
- bool isAlphaImage() const { return m_alphaImage; }
- void setIsAlphaImage(bool alphaImage) { m_alphaImage = alphaImage; }
-
- IntRect absolutePaintRect() const { return m_absolutePaintRect; }
- void setAbsolutePaintRect(const IntRect& absolutePaintRect) { m_absolutePaintRect = absolutePaintRect; }
-
- FloatRect maxEffectRect() const { return m_maxEffectRect; }
- void setMaxEffectRect(const FloatRect& maxEffectRect) { m_maxEffectRect = maxEffectRect; }
-
- void apply();
-
- // Correct any invalid pixels, if necessary, in the result of a filter operation.
- // This method is used to ensure valid pixel values on filter inputs and the final result.
- // Only the arithmetic composite filter ever needs to perform correction.
- virtual void correctFilterResultIfNeeded() { }
-
- virtual PassRefPtr<SkImageFilter> createImageFilter(SkiaImageFilterBuilder*);
-
- virtual void determineAbsolutePaintRect();
-
- // Mapping a rect forwards determines which which destination pixels a
- // given source rect would affect. Mapping a rect backwards determines
- // which pixels from the source rect would be required to fill a given
- // destination rect. Note that these are not necessarily the inverse of
- // each other. For example, for FEGaussianBlur, they are the same
- // transformation.
- virtual FloatRect mapRect(const FloatRect& rect, bool forward = true) { return rect; }
- FloatRect mapRectRecursive(const FloatRect&);
-
- // This is a recursive version of a backwards mapRect(), which also takes
- // into account the filter primitive subregion of each effect.
- FloatRect getSourceRect(const FloatRect& destRect, const FloatRect& clipRect);
-
- virtual FilterEffectType filterEffectType() const { return FilterEffectTypeUnknown; }
-
- virtual TextStream& externalRepresentation(TextStream&, int indention = 0) const;
-
- // The following functions are SVG specific and will move to RenderSVGResourceFilterPrimitive.
- // See bug https://bugs.webkit.org/show_bug.cgi?id=45614.
- bool hasX() const { return m_hasX; }
- void setHasX(bool value) { m_hasX = value; }
-
- bool hasY() const { return m_hasY; }
- void setHasY(bool value) { m_hasY = value; }
-
- bool hasWidth() const { return m_hasWidth; }
- void setHasWidth(bool value) { m_hasWidth = value; }
-
- bool hasHeight() const { return m_hasHeight; }
- void setHasHeight(bool value) { m_hasHeight = value; }
-
- FloatRect filterPrimitiveSubregion() const { return m_filterPrimitiveSubregion; }
- void setFilterPrimitiveSubregion(const FloatRect& filterPrimitiveSubregion) { m_filterPrimitiveSubregion = filterPrimitiveSubregion; }
-
- FloatRect effectBoundaries() const { return m_effectBoundaries; }
- void setEffectBoundaries(const FloatRect& effectBoundaries) { m_effectBoundaries = effectBoundaries; }
-
- Filter* filter() { return m_filter; }
- const Filter* filter() const { return m_filter; }
-
- bool clipsToBounds() const { return m_clipsToBounds; }
- void setClipsToBounds(bool value) { m_clipsToBounds = value; }
-
- ColorSpace operatingColorSpace() const { return m_operatingColorSpace; }
- virtual void setOperatingColorSpace(ColorSpace colorSpace) { m_operatingColorSpace = colorSpace; }
- ColorSpace resultColorSpace() const { return m_resultColorSpace; }
- virtual void setResultColorSpace(ColorSpace colorSpace) { m_resultColorSpace = colorSpace; }
-
- virtual void transformResultColorSpace(FilterEffect* in, const int) { in->transformResultColorSpace(m_operatingColorSpace); }
- void transformResultColorSpace(ColorSpace);
-
- FloatRect determineFilterPrimitiveSubregion(DetermineSubregionFlags = DetermineSubregionNone);
-
-protected:
- FilterEffect(Filter*);
-
- ImageBuffer* createImageBufferResult();
- Uint8ClampedArray* createUnmultipliedImageResult();
- Uint8ClampedArray* createPremultipliedImageResult();
-
- // Return true if the filter will only operate correctly on valid RGBA values, with
- // alpha in [0,255] and each color component in [0, alpha].
- virtual bool requiresValidPreMultipliedPixels() { return true; }
-
- // If a pre-multiplied image, check every pixel for validity and correct if necessary.
- void forceValidPreMultipliedPixels();
- SkImageFilter::CropRect getCropRect(const FloatSize& cropOffset) const;
-
-private:
- virtual void applySoftware() = 0;
- virtual bool applySkia() { return false; }
-
- inline void copyImageBytes(Uint8ClampedArray* source, Uint8ClampedArray* destination, const IntRect&);
-
- OwnPtr<ImageBuffer> m_imageBufferResult;
- RefPtr<Uint8ClampedArray> m_unmultipliedImageResult;
- RefPtr<Uint8ClampedArray> m_premultipliedImageResult;
- FilterEffectVector m_inputEffects;
-
- bool m_alphaImage;
-
- IntRect m_absolutePaintRect;
-
- // The maximum size of a filter primitive. In SVG this is the primitive subregion in absolute coordinate space.
- // The absolute paint rect should never be bigger than m_maxEffectRect.
- FloatRect m_maxEffectRect;
- Filter* m_filter;
-
- // The following member variables are SVG specific and will move to RenderSVGResourceFilterPrimitive.
- // See bug https://bugs.webkit.org/show_bug.cgi?id=45614.
-
- // The subregion of a filter primitive according to the SVG Filter specification in local coordinates.
- // This is SVG specific and needs to move to RenderSVGResourceFilterPrimitive.
- FloatRect m_filterPrimitiveSubregion;
-
- // x, y, width and height of the actual SVGFE*Element. Is needed to determine the subregion of the
- // filter primitive on a later step.
- FloatRect m_effectBoundaries;
- bool m_hasX;
- bool m_hasY;
- bool m_hasWidth;
- bool m_hasHeight;
-
- // Should the effect clip to its primitive region, or expand to use the combined region of its inputs.
- bool m_clipsToBounds;
-
- ColorSpace m_operatingColorSpace;
- ColorSpace m_resultColorSpace;
-};
-
-} // namespace WebCore
-
-#endif // FilterEffect_h
« no previous file with comments | « Source/core/platform/graphics/filters/Filter.h ('k') | Source/core/platform/graphics/filters/FilterEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698