StyleControl

class HPS::StyleControl : public HPS::Control

The StyleControl class is a smart pointer that is tied to a database object. Controls are used for manipulating settings within the database.

Public Functions

StyleKey AppendNamed(char const *in_style_name, ConditionalExpression const &in_conditional, Style::AppendMode in_mode = Style::AppendMode::Or)

Appends a conditional expression to an existing style or conditional style. If the style does not currently exist, a new conditional style is pushed. Conditional styles are only applied if their condition(s) are satisfied.

Parameters
  • in_style_name – The name of the named style which should be defined in an accessible portfolio.

  • in_conditional – A conditional expression that must be satisfied in order for the style to be applied.

  • in_mode – The behavior of the conditional expression if another conditional style is currently applied with the same style.

Returns

a StyleKey that can be used to interact with the style.

StyleKey AppendSegment(SegmentKey const &in_style_source, ConditionalExpression const &in_conditional, Style::AppendMode in_mode = Style::AppendMode::Or)

Appends a conditional expression to an existing style or conditional style. If the style does not currently exist, a new conditional style is pushed. Conditional styles are only applied if their condition(s) are satisfied.

Parameters
  • in_style_source – The segment to use as the source for the attributes that should be styled.

  • in_conditional – A conditional expression that must be satisfied in order for the style to be applied.

  • in_mode – The behavior of the conditional expression if another conditional style is currently applied with the same style.

Returns

a StyleKey that can be used to interact with the style.

void Flush(char const *in_style_name)

Removes any styles on the associated segment which refer to the provided style name. The styles will be removed regardless if there is a conditional expression associated with the style or not.

Parameters

in_style_name – The style name used to identify which styles to remove.

void Flush(char const *in_style_name, ConditionalExpression const &in_conditional)

Removes any styles on the associated segment which refer to the provided style name with the provided condition. If a style is found which references the style name and has an associated conditional expression which contains the provided conditional expression, the provided conditional expression will be removed from the conditional expression associated with the style. If removing the provided conditional expression from the style results in the complete removal of the conditional expression for the style, the style itself will be completely removed.

Parameters
  • in_style_name – The style name used to identify which styles to remove or modify.

  • in_conditional – The conditional expression to remove from styles which refer to the provided style name.

void Flush(SegmentKey const &in_style_source)

Removes any styles on the associated segment which refer to the provided style source. The styles will be removed regardless if there is a conditional expression associated with the style or not.

Parameters

in_style_source – The style source used to identify which styles to remove.

void Flush(SegmentKey const &in_style_source, ConditionalExpression const &in_conditional)

Removes any styles on the associated segment which refer to the provided style source with the provided condition. If a style is found which references the style source and has an associated conditional expression which contains the provided conditional expression, the provided conditional expression will be removed from the conditional expression associated with the style. If removing the provided conditional expression from the style results in the complete removal of the conditional expression for the style, the style itself will be completely removed.

Parameters
  • in_style_source – The style source used to identify which styles to remove or modify.

  • in_conditional – The conditional expression to remove from styles which refer to the provided style source.

size_t GetCount() const

Returns the number of styles set here.

inline virtual HPS::Type ObjectType() const

This function returns the type the object, as declared (if the object is derived, this does not give the true type of the derived object).

Returns

The declared type of the object in question, which may differ from the true, underlying type.

StyleControl &operator=(StyleControl &&in_that)

The move assignment operator transfers the underlying impl of the rvalue reference to this StyleControl thereby avoiding a copy.

Parameters

in_that – An rvalue reference to a StyleControl to take the impl from.

Returns

A reference to this StyleControl.

StyleControl &operator=(StyleControl const &in_that)

Share the underlying smart-pointer of the StyleControl source.

Parameters

in_that – The StyleControl source of the assignment.

Returns

A reference to this StyleControl.

bool Pop()

Removes the most recent style.

Returns

true if a style was present, false otherwise.

bool Pop(Style::Type &out_type, SegmentKey &out_segment_source, UTF8 &out_style_name, ConditionalExpression &out_conditional)

Removes the most recent style and gives information about it to the user.

Parameters
  • out_type – Indicates the type of the style.

  • out_segment_source – If out_type was Segment, this value contains the source segment for the style.

  • out_style_name – If out_type was Named, this value contains the name of the style (defined in a portfolio).

  • out_conditional – The conditions, if any, set on the style when it was applied.

Returns

true if a style was present, false otherwise.

StyleKey PushNamed(char const *in_style_name)

Adds a named style to the top of the style stack. Existing styles are unmodified but styles on top take precedence if there are duplicate settings.

StyleKey PushNamed(char const *in_style_name, ConditionalExpression const &in_conditional)

Adds a conditional named style to the top of the style stack. Existing styles are unmodified but styles on top take precedence if there are duplicate settings. Conditional styles are only applied if their condition(s) are satisfied.

Parameters
  • in_style_name – The name of the named style which should be defined in an accessible portfolio.

  • in_conditional – A conditional expression that must be satisfied in order for the style to be applied.

Returns

a StyleKey that can be used to interact with the style.

StyleKey PushSegment(SegmentKey const &in_style_source)

Creates a new style based on in_style_source and places it on the top of the style stack. Existing styles are unmodified but styles on top take precedence if there are duplicate settings.

Parameters

in_style_source – The segment to use as the source for the attributes that should be styled.

Returns

a StyleKey that can be used to interact with the style.

StyleKey PushSegment(SegmentKey const &in_style_source, ConditionalExpression const &in_conditional)

Creates a new style based on in_style_source and places it on the top of the style stack. Existing styles are unmodified but styles on top take precedence if there are duplicate settings.

Parameters
  • in_style_source – The segment to use as the source for the attributes that should be styled.

  • in_conditional – A conditional expression that must be satisfied in order for the style to be applied.

Returns

a StyleKey that can be used to interact with the style.

void Set(size_t in_count, Style::Type const in_types[], SegmentKey const in_segment_sources[], UTF8 const in_style_names[], ConditionalExpression const in_conditions[])

Sets a collection of styles, replacing any existing styles.

Parameters
  • in_count – The length of all arrays

  • in_types – Indicates the type of each style.

  • in_segment_sources – For each entry, if in_type was Segment, this value must contain the source segment for the style.

  • in_style_names – For each entry, if in_type was Named, this value must contain the name of the style (defined in a portfolio).

  • in_conditions – The conditions, if any, to set on each style. Passing a null pointer indicates no conditions are requested.

void Set(StyleTypeArray const &in_types, SegmentKeyArray const &in_segment_sources, UTF8Array const &in_style_names)

Sets a collection of styles, replacing any existing styles.

Parameters
  • in_types – Indicates the type of each style.

  • in_segment_sources – For each entry, if in_type was Segment, this value must contain the source segment for the style.

  • in_style_names – For each entry, if in_type was Named, this value must contain the name of the style (defined in a portfolio).

void Set(StyleTypeArray const &in_types, SegmentKeyArray const &in_segment_sources, UTF8Array const &in_style_names, ConditionalExpressionArray const &in_conditions)

Sets a collection of styles, replacing any existing styles.

Parameters
  • in_types – Indicates the type of each style.

  • in_segment_sources – For each entry, if in_type was Segment, this value must contain the source segment for the style.

  • in_style_names – For each entry, if in_type was Named, this value must contain the name of the style (defined in a portfolio).

  • in_conditions – The conditions to set on each style.

StyleKey SetNamed(char const *in_style_name)

Sets in_style_name as the only active style, replacing any existing styles.

Parameters

in_style_name – The name of the style to apply. If the name does not exist in the active portfolio, no style is applied.

StyleKey SetNamed(char const *in_style_name, ConditionalExpression const &in_conditional)

Sets in_style_name as the only active style, replacing any existing styles.

Parameters
  • in_style_name – The name of the style to apply. If the name does not exist in the active portfolio, no style is applied.

  • in_conditional – A condition or conditions that must be met for a style to be activated.

StyleKey SetSegment(SegmentKey const &in_style_source)

Sets in_style_source as the only active style, replacing any existing styles.

Parameters

in_style_source – A segment containing attributes that should be styled.

StyleKey SetSegment(SegmentKey const &in_style_source, ConditionalExpression const &in_conditional)

Sets in_style_source as the only active style, replacing any existing styles.

Parameters
  • in_style_source – A segment containing attributes that should be styled.

  • in_conditional – A condition or conditions that must be met for a style to be activated.

bool Show(StyleKeyArray &out_styles) const

Shows the all styles on this segment.

Parameters

out_styles – The StyleKey for each style on this segment.

Returns

true if any style was present, false otherwise.

bool Show(StyleTypeArray &out_types, SegmentKeyArray &out_segment_sources, UTF8Array &out_style_names, ConditionalExpressionArray &out_conditions) const

Shows all styles on this segment.

Parameters
  • out_types – Indicates the type of each style.

  • out_segment_sources – For each entry, if out_type was Style::Type::Segment, this value contains the source segment for the style.

  • out_style_names – For each entry, if out_type was Style::Type::Named, this value contains the name of the style (defined in a portfolio).

  • out_conditions – The conditions, if any, set on each style when it was applied.

Returns

true if any style was present, false otherwise.

bool ShowAllNamed(StyleKeyArray &out_styles) const

Shows the all named styles on this segment.

Parameters

out_styles – The StyleKey for each named style on this segment.

Returns

true if any named style was present, false otherwise.

bool ShowAllNamed(UTF8Array &out_names, HPS::ConditionalExpressionArray &out_conditions) const

Shows all named styles on this segment.

Parameters
  • out_names – Names of all named styles set on this segment.

  • out_conditions – The conditions, if any, set on each style when it was applied.

Returns

true if any style of the correct type was present, false otherwise.

bool ShowAllSegment(SegmentKeyArray &out_segments, HPS::ConditionalExpressionArray &out_conditions) const

Shows all segment styles on this segment.

Parameters
  • out_segments – Keys to all segments styled onto this segment.

  • out_conditions – The conditions, if any, set on each style when it was applied.

Returns

true if any style of the correct type was present, false otherwise.

bool ShowAllSegment(StyleKeyArray &out_styles) const

Shows the all segment styles on this segment.

Parameters

out_styles – The StyleKey for each segment style on this segment.

Returns

true if any segment style was present, false otherwise.

bool ShowTop(Style::Type &out_type, SegmentKey &out_segment_source, UTF8 &out_style_name, ConditionalExpression &out_conditional) const

Shows the most recent style applied to this segment.

Parameters
  • out_type – Indicates the type of the style.

  • out_segment_source – If out_type was Style::Type::Segment, this value contains the source segment for the style.

  • out_style_name – If out_type was Style::Type::Named, this value contains the name of the style (defined in a portfolio).

  • out_conditional – The conditions, if any, set on the style when it was applied.

Returns

true if a style was present, false otherwise.

bool ShowTop(StyleKey &out_style) const

Shows the most recent style applied to this segment.

Parameters

out_style – The StyleKey for the most recent style applied to this segment.

Returns

true if a style was present, false otherwise.

explicit StyleControl(SegmentKey &in_seg)

Initializes a control tied to the segment in_seg.

StyleControl(StyleControl &&in_that)

The move constructor creates a StyleControl by transferring the underlying impl of the rvalue reference to this StyleControl thereby avoiding a copy and allocation.

Parameters

in_that – An rvalue reference to a StyleControl to take the impl from.

StyleControl(StyleControl const &in_that)

Initializes a control tied to the same object as in_that.

void UnsetAllNamed()

Unsets all named styles on this segment.

void UnsetAllSegment()

Unsets all segment styles on this segment.

void UnsetEverything()

Unsets all styles on this segment.

void UnsetTop()

Unsets the most recent style on this segment.

~StyleControl()

Releases a reference to the database object this control is tied to.

Public Static Attributes

static const HPS::Type staticType = HPS::Type::StyleControl