pub struct TextAreaVimConfig {
pub search_bar_style: StyleSlot,
pub search_bar_prefix_style: StyleSlot,
pub search_bar_count_style: StyleSlot,
pub search_match_style: StyleSlot,
pub current_search_match_style: StyleSlot,
pub current_line_highlight: TextAreaVimCurrentLineHighlight,
pub current_line_style: StyleSlot,
pub current_line_number_style: StyleSlot,
}Expand description
Rendering configuration for TextArea Vim affordances.
This keeps Vim-only visual options grouped separately from the plain TextArea
builder API. It controls the built-in search bar/match feedback and optional
current-line highlighting; Vim command semantics are still enabled with
TextArea::vim_motions.
Fields§
§search_bar_style: StyleSlotStyle for the Vim search/status bar. Inherit resolves to the widget
chrome style, Extend patches the chrome style, and Replace uses the
supplied style directly.
search_bar_prefix_style: StyleSlotStyle overlay for the Vim search bar prefix icons.
Unset fields fall through to Self::search_bar_style.
search_bar_count_style: StyleSlotStyle overlay for Vim search count labels like [2/5].
Unset fields fall through to Self::search_bar_style.
search_match_style: StyleSlotStyle patched over visible matches while Vim search feedback is shown.
Inherit resolves against the theme text-selection role.
current_search_match_style: StyleSlotStyle patched over the current Vim search match. While a search prompt is
pending, this is the match Enter would jump to; after Enter, n and
N update it. Inherit resolves against the theme text-selection role so
the default uses a background highlight.
current_line_highlight: TextAreaVimCurrentLineHighlightOptional Vim current-line highlighting.
current_line_style: StyleSlotStyle for current-line highlighting. Inherit resolves against the theme
item-hover role so the default follows the active theme.
current_line_number_style: StyleSlotStyle for the current line number/custom gutter row. Unset fields fall through to the current-line style so full-row highlights stay continuous.
Implementations§
Source§impl TextAreaVimConfig
impl TextAreaVimConfig
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a Vim rendering config with default search feedback and no current-line highlight.
Sourcepub fn search_bar_style(self, style: Style) -> Self
pub fn search_bar_style(self, style: Style) -> Self
Replace the Vim search/status bar style.
Sourcepub fn extend_search_bar_style(self, style: Style) -> Self
pub fn extend_search_bar_style(self, style: Style) -> Self
Extend the TextArea chrome style for the Vim search/status bar.
Sourcepub fn search_bar_style_slot(self, slot: StyleSlot) -> Self
pub fn search_bar_style_slot(self, slot: StyleSlot) -> Self
Set the Vim search/status bar style slot directly for composite forwarding.
Sourcepub fn search_bar_prefix_style(self, style: Style) -> Self
pub fn search_bar_prefix_style(self, style: Style) -> Self
Overlay style for the Vim search bar prefix icons.
Sourcepub fn extend_search_bar_prefix_style(self, style: Style) -> Self
pub fn extend_search_bar_prefix_style(self, style: Style) -> Self
Extend the Vim search bar style for the prefix icons.
Sourcepub fn search_bar_prefix_style_slot(self, slot: StyleSlot) -> Self
pub fn search_bar_prefix_style_slot(self, slot: StyleSlot) -> Self
Set the Vim search bar prefix style slot directly for composite forwarding.
Sourcepub fn search_bar_count_style(self, style: Style) -> Self
pub fn search_bar_count_style(self, style: Style) -> Self
Overlay style for Vim search count labels like [2/5].
Sourcepub fn extend_search_bar_count_style(self, style: Style) -> Self
pub fn extend_search_bar_count_style(self, style: Style) -> Self
Extend the Vim search bar style for count labels like [2/5].
Sourcepub fn search_bar_count_style_slot(self, slot: StyleSlot) -> Self
pub fn search_bar_count_style_slot(self, slot: StyleSlot) -> Self
Set the Vim search bar count style slot directly for composite forwarding.
Sourcepub fn search_match_style(self, style: Style) -> Self
pub fn search_match_style(self, style: Style) -> Self
Replace the visible Vim search-match style.
Sourcepub fn extend_search_match_style(self, style: Style) -> Self
pub fn extend_search_match_style(self, style: Style) -> Self
Extend the theme text-selection role for visible Vim search matches.
Sourcepub fn search_match_style_slot(self, slot: StyleSlot) -> Self
pub fn search_match_style_slot(self, slot: StyleSlot) -> Self
Set the search-match style slot directly for composite forwarding.
Sourcepub fn current_search_match_style(self, style: Style) -> Self
pub fn current_search_match_style(self, style: Style) -> Self
Replace the current Vim search-match style.
Sourcepub fn extend_current_search_match_style(self, style: Style) -> Self
pub fn extend_current_search_match_style(self, style: Style) -> Self
Extend the theme text-selection role for the current Vim search match.
Sourcepub fn current_search_match_style_slot(self, slot: StyleSlot) -> Self
pub fn current_search_match_style_slot(self, slot: StyleSlot) -> Self
Set the current-search-match style slot directly for composite forwarding.
Sourcepub fn current_line_highlight(
self,
mode: TextAreaVimCurrentLineHighlight,
) -> Self
pub fn current_line_highlight( self, mode: TextAreaVimCurrentLineHighlight, ) -> Self
Configure Vim current-line highlighting.
Sourcepub fn highlight_current_line(self, enabled: bool) -> Self
pub fn highlight_current_line(self, enabled: bool) -> Self
Convenience toggle for full-row Vim current-line highlighting.
Sourcepub fn current_line_style(self, style: Style) -> Self
pub fn current_line_style(self, style: Style) -> Self
Replace the Vim current-line style.
Sourcepub fn extend_current_line_style(self, style: Style) -> Self
pub fn extend_current_line_style(self, style: Style) -> Self
Extend the theme item-hover role for Vim current-line highlighting.
Sourcepub fn current_line_style_slot(self, slot: StyleSlot) -> Self
pub fn current_line_style_slot(self, slot: StyleSlot) -> Self
Set the Vim current-line style slot directly for composite forwarding.
Sourcepub fn current_line_number_style(self, style: Style) -> Self
pub fn current_line_number_style(self, style: Style) -> Self
Replace the style overlay used for the current line number/custom gutter row.
Sourcepub fn extend_current_line_number_style(self, style: Style) -> Self
pub fn extend_current_line_number_style(self, style: Style) -> Self
Extend the current-line style for the current line number/custom gutter row.
Sourcepub fn current_line_number_style_slot(self, slot: StyleSlot) -> Self
pub fn current_line_number_style_slot(self, slot: StyleSlot) -> Self
Set the current-line-number style slot directly for composite forwarding.
Trait Implementations§
Source§impl Clone for TextAreaVimConfig
impl Clone for TextAreaVimConfig
Source§fn clone(&self) -> TextAreaVimConfig
fn clone(&self) -> TextAreaVimConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TextAreaVimConfig
impl Debug for TextAreaVimConfig
Source§impl Default for TextAreaVimConfig
impl Default for TextAreaVimConfig
impl Eq for TextAreaVimConfig
Source§impl Hash for TextAreaVimConfig
impl Hash for TextAreaVimConfig
Source§impl PartialEq for TextAreaVimConfig
impl PartialEq for TextAreaVimConfig
Source§fn eq(&self, other: &TextAreaVimConfig) -> bool
fn eq(&self, other: &TextAreaVimConfig) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for TextAreaVimConfig
Auto Trait Implementations§
impl Freeze for TextAreaVimConfig
impl RefUnwindSafe for TextAreaVimConfig
impl Send for TextAreaVimConfig
impl Sync for TextAreaVimConfig
impl Unpin for TextAreaVimConfig
impl UnsafeUnpin for TextAreaVimConfig
impl UnwindSafe for TextAreaVimConfig
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
impl<T> ContextValue for T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DragPayload for T
impl<T> DragPayload for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.impl<T> ThemeExtension for T
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more