/*
|
* 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 "SkColor.h"
|
#include "SkRefCnt.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; }
|
|
private:
|
SkPMColor* fColors;
|
int fCount;
|
|
typedef SkRefCnt INHERITED;
|
};
|
|
#endif
|