// Copyright 2019 Google LLC
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

#pragma once

#include "include/core/SkBitmap.h"
#include "include/core/SkStream.h"
#include "tools/flags/CommandLineFlags.h"

// HashAndEncode transforms any SkBitmap into a standard format, currently
// 16-bit unpremul RGBA in the Rec. 2020 color space.  This lets us compare
// images from different backends or configurations, using feedHash() for
// direct content-based hashing, or encodePNG() for visual comparison.
class HashAndEncode {
public:
    explicit HashAndEncode(const SkBitmap&);

    // Feed uncompressed pixel data into a hash function like MD5.
    void feedHash(SkWStream*) const;

    // Encode pixels as a PNG in our standard format, with md5 and key/properties as metadata.
    bool encodePNG(SkWStream*,
                   const char* md5,
                   CommandLineFlags::StringArray key,
                   CommandLineFlags::StringArray properties) const;

private:
    const SkISize               fSize;
    std::unique_ptr<uint64_t[]> fPixels;  // In our standard format mentioned above.
};

