aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core/SkPngChunkReader.h
blob: 0cd6634bce97d0e7c079075950ed82a3ef73b246 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
 * Copyright 2015 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SkPngChunkReader_DEFINED
#define SkPngChunkReader_DEFINED

#include "SkTypes.h"
#include "SkRefCnt.h"

/**
 *  SkPngChunkReader
 *
 *  Base class for optional callbacks to retrieve meta/chunk data out of a PNG
 *  encoded image as it is being decoded.
 *  Used by SkCodec.
 */
class SkPngChunkReader : public SkRefCnt {
public:
    /**
     *  This will be called by the decoder when it sees an unknown chunk.
     *
     *  Use by SkCodec:
     *  Depending on the location of the unknown chunks, this callback may be
     *  called by
     *      - the factory (NewFromStream/NewFromData)
     *      - getPixels
     *      - startScanlineDecode
     *      - the first call to getScanlines/skipScanlines
     *  The callback may be called from a different thread (e.g. if the SkCodec
     *  is passed to another thread), and it may be called multiple times, if
     *  the SkCodec is used multiple times.
     *
     *  @param tag Name for this type of chunk.
     *  @param data Data to be interpreted by the subclass.
     *  @param length Number of bytes of data in the chunk.
     *  @return true to continue decoding, or false to indicate an error, which
     *      will cause the decoder to not return the image.
     */
    virtual bool readChunk(const char tag[], const void* data, size_t length) = 0;
};
#endif // SkPngChunkReader_DEFINED