// Copyright 2016 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 CSSPaintImageGeneratorImpl_h
#define CSSPaintImageGeneratorImpl_h

#include "bindings/core/v8/ScopedPersistent.h"
#include "core/css/CSSPaintImageGenerator.h"
#include "platform/geometry/IntSize.h"
#include "platform/heap/Handle.h"
#include <v8.h>

namespace blink {

class CSSPaintDefinition;
class Document;
class Image;

class CSSPaintImageGeneratorImpl final : public CSSPaintImageGenerator {
public:
    static CSSPaintImageGenerator* create(const String& name, Document&, Observer*);
    ~CSSPaintImageGeneratorImpl() override;

    PassRefPtr<Image> paint(const LayoutObject&, const IntSize&, float zoom) final;
    const Vector<CSSPropertyID>& nativeInvalidationProperties() const final;
    const Vector<AtomicString>& customInvalidationProperties() const final;
    bool hasAlpha() const final;

    // Should be called from the PaintWorkletGlobalScope when a javascript class
    // is registered with the same name.
    void setDefinition(CSSPaintDefinition*);

    DECLARE_VIRTUAL_TRACE();

private:
    CSSPaintImageGeneratorImpl(Observer*);
    CSSPaintImageGeneratorImpl(CSSPaintDefinition*);

    Member<CSSPaintDefinition> m_definition;
    Member<Observer> m_observer;
};

} // namespace blink

#endif // CSSPaintImageGeneratorImpl_h
