SkTableColorFilter.h revision f724c4df1cd6b4fb476e15f397ee6d656a4a7beb
1357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org 2357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org#ifndef SkTableColorFilter_DEFINED 3357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org#define SkTableColorFilter_DEFINED 4357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org 5357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org#include "SkColorFilter.h" 6357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org 7357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.orgclass SK_API SkTableColorFilter { 8357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.orgpublic: 9357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org /** 10357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * Create a table colorfilter, copying the table into the filter, and 11357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * applying it to all 4 components. 12357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * a' = table[a]; 13357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * r' = table[r]; 14357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * g' = table[g]; 15357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * b' = table[b]; 16357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * Compoents are operated on in unpremultiplied space. If the incomming 17357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * colors are premultiplied, they are temporarily unpremultiplied, then 18357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * the table is applied, and then the result is remultiplied. 19357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org */ 20357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org static SkColorFilter* Create(const uint8_t table[256]); 21357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org 22357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org /** 23357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * Create a table colorfilter, with a different table for each 24357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * component [A, R, G, B]. If a given table is NULL, then it is 25357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * treated as identity, with the component left unchanged. If a table 26357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org * is not null, then its contents are copied into the filter. 27357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org */ 28357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org static SkColorFilter* CreateARGB(const uint8_t tableA[256], 29357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org const uint8_t tableR[256], 30357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org const uint8_t tableG[256], 31357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org const uint8_t tableB[256]); 32357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org}; 33357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org 34357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org#endif 35357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org