blob: c56e6fe917c7653b45bdfe5f18f4cd75da44260c [file] [log] [blame]
/*
* Copyright 2012 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkColorTable_DEFINED
#define SkColorTable_DEFINED
#include "../private/SkOnce.h"
#include "SkColor.h"
#include "SkFlattenable.h"
#include "SkImageInfo.h"
/** \class SkColorTable
SkColorTable holds an array SkPMColors (premultiplied 32-bit colors) used by
8-bit bitmaps, where the bitmap bytes are interpreted as indices into the colortable.
SkColorTable is thread-safe.
*/
class SkColorTable : public SkRefCnt {
public:
/** Copy up to 256 colors into a new SkColorTable.
*/
SkColorTable(const SkPMColor colors[], int count);
~SkColorTable() override;
/** Returns the number of colors in the table.
*/
int count() const { return fCount; }
/** Returns the specified color from the table. In the debug build, this asserts that
* the index is in range (0 <= index < count).
*/
SkPMColor operator[](int index) const {
SkASSERT(fColors != nullptr && (unsigned)index < (unsigned)fCount);
return fColors[index];
}
/** Return the array of colors for reading. */
const SkPMColor* readColors() const { return fColors; }
// may return null
static void Skip(SkReadBuffer&);
private:
SkPMColor* fColors;
int fCount;
typedef SkRefCnt INHERITED;
};
#endif