1/*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkEncoder_DEFINED
9#define SkEncoder_DEFINED
10
11#include "include/core/SkPixmap.h"
12#include "include/private/SkNoncopyable.h"
13#include "include/private/SkTemplates.h"
14
15class SK_API SkEncoder : SkNoncopyable {
16public:
17
18 /**
19 * Encode |numRows| rows of input. If the caller requests more rows than are remaining
20 * in the src, this will encode all of the remaining rows. |numRows| must be greater
21 * than zero.
22 */
23 bool encodeRows(int numRows);
24
25 virtual ~SkEncoder() {}
26
27protected:
28
29 virtual bool onEncodeRows(int numRows) = 0;
30
31 SkEncoder(const SkPixmap& src, size_t storageBytes)
32 : fSrc(src)
33 , fCurrRow(0)
34 , fStorage(storageBytes)
35 {}
36
37 const SkPixmap& fSrc;
38 int fCurrRow;
39 SkAutoTMalloc<uint8_t> fStorage;
40};
41
42#endif
43