| /* |
| * Copyright 2024 Google LLC. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "include/codec/SkPngRustDecoder.h" |
| |
| #include <utility> |
| |
| #include "include/core/SkStream.h" |
| #include "src/codec/SkPngRustCodec.h" |
| |
| namespace SkPngRustDecoder { |
| |
| bool IsPng(const void* buff, size_t bytesRead) { |
| static constexpr unsigned char pngSignature[] = { |
| 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A}; |
| if (bytesRead < sizeof(pngSignature)) { |
| return false; |
| } |
| |
| return memcmp(buff, pngSignature, sizeof(pngSignature)) == 0; |
| } |
| |
| std::unique_ptr<SkCodec> Decode(std::unique_ptr<SkStream> stream, |
| SkCodec::Result* result, |
| SkCodecs::DecodeContext) { |
| SkCodec::Result resultStorage; |
| if (!result) { |
| result = &resultStorage; |
| } |
| return SkPngRustCodec::MakeFromStream(std::move(stream), result); |
| } |
| |
| } // namespace SkPngRustDecoder |