diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/rendering/style/StyleCustomFilterProgram.h')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/rendering/style/StyleCustomFilterProgram.h | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/chromium/third_party/WebKit/Source/core/rendering/style/StyleCustomFilterProgram.h b/chromium/third_party/WebKit/Source/core/rendering/style/StyleCustomFilterProgram.h deleted file mode 100644 index d79cf6368f5..00000000000 --- a/chromium/third_party/WebKit/Source/core/rendering/style/StyleCustomFilterProgram.h +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef StyleCustomFilterProgram_h -#define StyleCustomFilterProgram_h - -#include "core/fetch/ResourceClient.h" -#include "core/fetch/ResourcePtr.h" -#include "core/fetch/ShaderResource.h" -#include "core/rendering/style/StyleShader.h" -#include "platform/graphics/filters/custom/CustomFilterProgram.h" -#include "platform/weborigin/KURL.h" -#include "wtf/FastAllocBase.h" - -namespace WebCore { - -// CSS Shaders - -class StyleCustomFilterProgramCache; - -class StyleCustomFilterProgram : public CustomFilterProgram, public ResourceClient { - WTF_MAKE_FAST_ALLOCATED; -public: - static PassRefPtr<StyleCustomFilterProgram> create(KURL vertexShaderURL, PassRefPtr<StyleShader> vertexShader, - KURL fragmentShaderURL, PassRefPtr<StyleShader> fragmentShader, CustomFilterProgramType programType, - const CustomFilterProgramMixSettings& mixSettings, CustomFilterMeshType meshType) - { - return adoptRef(new StyleCustomFilterProgram(vertexShaderURL, vertexShader, fragmentShaderURL, fragmentShader, programType, mixSettings, meshType)); - } - - void setVertexShader(PassRefPtr<StyleShader> shader) - { - // The shader is immutable while in the cache. - ASSERT(!m_cache); - m_vertexShader = shader; - } - StyleShader* vertexShader() const { return m_vertexShader.get(); } - - void setFragmentShader(PassRefPtr<StyleShader> shader) - { - // The shader is immutable while in the cache. - ASSERT(!m_cache); - m_fragmentShader = shader; - } - StyleShader* fragmentShader() const { return m_fragmentShader.get(); } - - virtual String vertexShaderString() const - { - ASSERT(isLoaded()); - return m_cachedVertexShader.get() ? m_cachedVertexShader->shaderString() : String(); - } - - virtual String fragmentShaderString() const - { - ASSERT(isLoaded()); - return m_cachedFragmentShader.get() ? m_cachedFragmentShader->shaderString() : String(); - } - - virtual bool isLoaded() const - { - // Do not use the Resource:isLoaded method here, because it actually means !isLoading(), - // so missing and canceled resources will have isLoaded set to true, even if they are not loaded yet. - ASSERT(!m_vertexShader || m_vertexShader->isShaderResource()); - ASSERT(!m_fragmentShader || m_fragmentShader->isShaderResource()); - - // If we failed to create resources for the vertex shader or the - // fragment shader, they won't be set here. - // This can happen if the ResourceFetcher is no longer accepting fetch - // requests because the page is being torn down. - if (!m_vertexShader && !m_fragmentShader) - return false; - - ASSERT(m_cachedVertexShader.get() || m_cachedFragmentShader.get()); - return (!m_cachedVertexShader.get() || m_isVertexShaderLoaded) - && (!m_cachedFragmentShader.get() || m_isFragmentShaderLoaded); - } - - virtual void willHaveClients() - { - if (m_vertexShader) { - m_cachedVertexShader = m_vertexShader->resource(); - m_cachedVertexShader->addClient(this); - } - if (m_fragmentShader) { - m_cachedFragmentShader = m_fragmentShader->resource(); - m_cachedFragmentShader->addClient(this); - } - } - - virtual void didRemoveLastClient() - { - if (m_cachedVertexShader.get()) { - m_cachedVertexShader->removeClient(this); - m_cachedVertexShader = 0; - m_isVertexShaderLoaded = false; - } - if (m_cachedFragmentShader.get()) { - m_cachedFragmentShader->removeClient(this); - m_cachedFragmentShader = 0; - m_isFragmentShaderLoaded = false; - } - } - - virtual void notifyFinished(Resource* resource) - { - if (resource->errorOccurred()) - return; - // Note that m_cachedVertexShader might be equal to m_cachedFragmentShader and it would only get one event in that case. - if (resource == m_cachedVertexShader.get()) - m_isVertexShaderLoaded = true; - if (resource == m_cachedFragmentShader.get()) - m_isFragmentShaderLoaded = true; - if (isLoaded()) - notifyClients(); - } - - bool hasPendingShaders() const - { - return (m_vertexShader && m_vertexShader->isPendingShader()) - || (m_fragmentShader && m_fragmentShader->isPendingShader()); - } - - // StyleCustomFilterProgramCache is responsible with updating the reference to the cache. - void setCache(StyleCustomFilterProgramCache* cache) { m_cache = cache; } - bool inCache() const { return m_cache; } - - KURL vertexShaderURL() const { return m_vertexShaderURL; } - KURL fragmentShaderURL() const { return m_fragmentShaderURL; } - -private: - StyleCustomFilterProgram(KURL vertexShaderURL, PassRefPtr<StyleShader> vertexShader, KURL fragmentShaderURL, PassRefPtr<StyleShader> fragmentShader, - CustomFilterProgramType programType, const CustomFilterProgramMixSettings& mixSettings, CustomFilterMeshType meshType) - : CustomFilterProgram(programType, mixSettings, meshType) - , m_vertexShader(vertexShader) - , m_fragmentShader(fragmentShader) - , m_vertexShaderURL(vertexShaderURL) - , m_fragmentShaderURL(fragmentShaderURL) - , m_cache(0) - , m_isVertexShaderLoaded(false) - , m_isFragmentShaderLoaded(false) - { - } - - ~StyleCustomFilterProgram(); - - RefPtr<StyleShader> m_vertexShader; - RefPtr<StyleShader> m_fragmentShader; - - ResourcePtr<ShaderResource> m_cachedVertexShader; - ResourcePtr<ShaderResource> m_cachedFragmentShader; - - // The URLs form the key of the StyleCustomFilterProgram in the cache and are used - // to lookup the StyleCustomFilterProgram when it's removed from the cache. - KURL m_vertexShaderURL; - KURL m_fragmentShaderURL; - - // The Cache is responsible of invalidating this reference. - StyleCustomFilterProgramCache* m_cache; - - bool m_isVertexShaderLoaded; - bool m_isFragmentShaderLoaded; -}; - -} // namespace WebCore - - -#endif // StyleCustomFilterProgram_h |