colorFilter property
A color filter to apply when a shape is drawn or when a layer is composited.
See ColorFilter for details.
When a shape is being drawn, colorFilter overrides color and shader.
Implementation
ColorFilter get colorFilter {
switch (_data.getInt32(_kColorFilterOffset, _kFakeHostEndian)) {
case ColorFilter._TypeNone:
return null;
case ColorFilter._TypeMode:
return new ColorFilter.mode(
new Color(_data.getInt32(_kColorFilterColorOffset, _kFakeHostEndian)),
BlendMode.values[_data.getInt32(_kColorFilterBlendModeOffset, _kFakeHostEndian)],
);
case ColorFilter._TypeMatrix:
return new ColorFilter.matrix(_objects[_kColorFilterMatrixIndex]);
case ColorFilter._TypeLinearToSrgbGamma:
return const ColorFilter.linearToSrgbGamma();
case ColorFilter._TypeSrgbToLinearGamma:
return const ColorFilter.srgbToLinearGamma();
}
return null;
}
Implementation
set colorFilter(ColorFilter value) {
if (value == null) {
_data.setInt32(_kColorFilterOffset, ColorFilter._TypeNone, _kFakeHostEndian);
_data.setInt32(_kColorFilterColorOffset, 0, _kFakeHostEndian);
_data.setInt32(_kColorFilterBlendModeOffset, 0, _kFakeHostEndian);
if (_objects != null) {
_objects[_kColorFilterMatrixIndex] = null;
}
} else {
_data.setInt32(_kColorFilterOffset, value._type, _kFakeHostEndian);
if (value._type == ColorFilter._TypeMode) {
assert(value._color != null);
assert(value._blendMode != null);
_data.setInt32(_kColorFilterColorOffset, value._color.value, _kFakeHostEndian);
_data.setInt32(_kColorFilterBlendModeOffset, value._blendMode.index, _kFakeHostEndian);
} else if (value._type == ColorFilter._TypeMatrix) {
assert(value._matrix != null);
_objects ??= new List<dynamic>(_kObjectCount);
_objects[_kColorFilterMatrixIndex] = Float32List.fromList(value._matrix);
}
}
}