xmake.repo/packages/n/noesis/latest/Include/NsGui/Enums.h

1078 lines
45 KiB
C
Raw Normal View History

2024-12-22 19:15:02 +08:00
////////////////////////////////////////////////////////////////////////////////////////////////////
// NoesisGUI - http://www.noesisengine.com
// Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved.
////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef __GUI_ENUMS_H__
#define __GUI_ENUMS_H__
#include <NsCore/Noesis.h>
#include <NsCore/ReflectionDeclareEnum.h>
#include <NsGui/CoreApi.h>
namespace Noesis
{
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Indicates the type of dedependency found in a xaml
////////////////////////////////////////////////////////////////////////////////////////////////////
enum XamlDependencyType: int32_t
{
/// Identifies Xamls, Audios, Textures and Uri properties
XamlDependencyType_Filename,
/// Identifies FontFamily properties and resources
XamlDependencyType_Font,
/// Reports UserControls found as prefixed nodes (e.g. local:ColorPicker)
XamlDependencyType_UserControl,
/// Reports the type of the root node (e.g. ResourceDictionary)
XamlDependencyType_Root
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Behavior for filtering visuals while hit testing
////////////////////////////////////////////////////////////////////////////////////////////////////
enum HitTestFilterBehavior: int32_t
{
/// Do not hit test against current visual or its children
HitTestFilterBehavior_ContinueSkipSelfAndChildren = 0,
/// Hit test against current visual and not its children
HitTestFilterBehavior_ContinueSkipChildren = 1,
/// Do not hit test against current visual but hit test against children
HitTestFilterBehavior_ContinueSkipSelf = 2,
/// Hit test against current visual and children
HitTestFilterBehavior_Continue = 3,
/// Stop any further hit testing and return
HitTestFilterBehavior_Stop = 4
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Behavior when a positive hit occurs during hit testing
////////////////////////////////////////////////////////////////////////////////////////////////////
enum HitTestResultBehavior: int32_t
{
/// Stop any further hit testing and return
HitTestResultBehavior_Stop,
/// Continue hit testing against next visual
HitTestResultBehavior_Continue
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Describes how content is positioned horizontally in a container
////////////////////////////////////////////////////////////////////////////////////////////////////
enum AlignmentX: int32_t
{
/// The contents align toward the left of the container
AlignmentX_Left,
/// The contents align toward the center of the container
AlignmentX_Center,
/// The contents align toward the right of the container
AlignmentX_Right
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Describes how content is positioned vertically in a container
////////////////////////////////////////////////////////////////////////////////////////////////////
enum AlignmentY: int32_t
{
/// The contents align toward the upper edge of the container
AlignmentY_Top,
/// The contents align toward the center of the container
AlignmentY_Center,
/// The contents align toward the lower edge of the container
AlignmentY_Bottom
};
////////////////////////////////////////////////////////////////////////////////////////////////////
enum AutoToolTipPlacement: int32_t
{
/// No automatic ToolTip
AutoToolTipPlacement_None,
/// For a horizontal Slider show the automatic ToolTip at the top edge of the Thumb. For a
/// vertical Slider show the automatic ToolTip at the left edge of the Thumb
AutoToolTipPlacement_TopLeft,
/// For a horizontal Slider show the automatic ToolTip at the bottom edge of the Thumb. For a
/// vertical Slider show the automatic ToolTip at the right edge of the Thumb
AutoToolTipPlacement_BottomRight
};
////////////////////////////////////////////////////////////////////////////////////////////////////
enum BindingMode: int32_t
{
/// Uses the default Mode value of the binding target. The default value varies for each
/// dependency property. In general, user-editable control properties, such as those of text
/// boxes and check boxes, default to two-way bindings, whereas most other properties default
/// to one-way bindings. A programmatic way to determine whether a dependency property binds
/// one-way or two-way by default is to get the property metadata of the property using
/// GetMetaData and then check the Boolean value of the BindsTwoWayByDefault property
BindingMode_Default,
/// Causes changes to either the source property or the target property to automatically update
/// the other. This type of binding is appropriate for editable forms or other
/// fully-interactive UI scenarios
BindingMode_TwoWay,
/// Updates the binding target (target) property when the binding source (source) changes. This
/// type of binding is appropriate if the control being bound is implicitly read-only. For
/// instance, you may bind to a source such as a stock ticker. Or perhaps your target property
/// has no control interface provided for making changes, such as a data-bound background color
/// of a table. If there is no need to monitor the changes of the target property, using the
/// OneWay binding mode avoids the overhead of the TwoWay binding mode
BindingMode_OneWay,
/// Updates the binding target when the application starts or when the data context changes.
/// This type of binding is appropriate if you are using data where either a snapshot of the
/// current state is appropriate to use or the data is truly static. This type of binding is
/// also useful if you want to initialize your target property with some value from a source
/// property and the data context is not known in advance. This is essentially a simpler form
/// of OneWay binding that provides better performance in cases where the source value does not
/// change
BindingMode_OneTime,
/// Updates the source property when the target property changes
BindingMode_OneWayToSource
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies which algorithm is used to scale bitmap images
////////////////////////////////////////////////////////////////////////////////////////////////////
enum BitmapScalingMode: int32_t
{
/// Use the default bitmap scaling mode, which is HighQuality
/// NOTE: In WPF the default value is LowQuality/Linear
BitmapScalingMode_Unspecified,
/// Use bilinear bitmap scaling, which is faster than HighQuality mode, but produces lower
/// quality output. The LowQuality mode is the same as the Linear mode
BitmapScalingMode_LowQuality,
/// Use high quality bitmap scaling, which is slower than LowQuality mode, but produces higher
/// quality output. The HighQuality mode is the same as the Fant mode
BitmapScalingMode_HighQuality,
/// Use linear bitmap scaling, which is faster than HighQuality mode, but produces lower
/// quality output
BitmapScalingMode_Linear = BitmapScalingMode_LowQuality,
/// Use very high quality Fant bitmap scaling, which is slower than all other bitmap scaling
/// modes, but produces higher quality output
BitmapScalingMode_Fant = BitmapScalingMode_HighQuality,
/// Use nearest-neighbor bitmap scaling, which provides performance benefits over LowQuality
/// mode when the software rasterizer is used. This mode is often used to magnify a bitmap.
BitmapScalingMode_NearestNeighbor,
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies how element contents are mixed with the background
////////////////////////////////////////////////////////////////////////////////////////////////////
enum BlendingMode: int32_t
{
BlendingMode_Normal,
BlendingMode_Multiply,
BlendingMode_Screen,
BlendingMode_Additive
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies the coordinate system used by a Brush
////////////////////////////////////////////////////////////////////////////////////////////////////
enum BrushMappingMode: int32_t
{
/// The coordinate system is not relative to a bounding box. Values are interpreted directly in
/// local space
BrushMappingMode_Absolute,
/// The coordinate system is relative to a bounding box: 0 indicates 0 percent of the bounding
/// box, and 1 indicates 100 percent of the bounding box. For example, (0.5, 0.5) describes a
/// point in the middle of the bounding box, and (1, 1) describes a point at the bottom right
/// of the bounding box
BrushMappingMode_RelativeToBoundingBox
};
////////////////////////////////////////////////////////////////////////////////////////////////////
enum CharacterCasing: int32_t
{
/// Characters typed into a TextBox are not converted
CharacterCasing_Normal,
/// Characters typed into a TextBox are converted to lowercase
CharacterCasing_Lower,
/// Characters typed into a TextBox are converted to uppercase
CharacterCasing_Upper
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies when the Click event should fire
////////////////////////////////////////////////////////////////////////////////////////////////////
enum ClickMode: int32_t
{
/// The Click event should fire when the mouse hovers over a control
ClickMode_Hover,
/// The Click event will occur as soon as a button is pressed
ClickMode_Press,
/// The Click event will occur when a button is pressed and released
ClickMode_Release
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Determines how the colors in a gradient are interpolated
////////////////////////////////////////////////////////////////////////////////////////////////////
enum ColorInterpolationMode: int32_t
{
/// Colors are interpolated in the scRGB color space
ColorInterpolationMode_ScRgbLinearInterpolation,
/// Colors are interpolated in the sRGB color space
ColorInterpolationMode_SRgbLinearInterpolation
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Dock. Specifies the Dock position of a child element that is inside a DockPanel
////////////////////////////////////////////////////////////////////////////////////////////////////
enum Dock: int32_t
{
/// A child element that is positioned on the left side of the DockPanel
Dock_Left,
/// A child element that is positioned at the top of the DockPanel
Dock_Top,
/// A child element that is positioned on the right side of the DockPanel
Dock_Right,
/// A child element that is positioned at the bottom of the DockPanel
Dock_Bottom
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// ExpandDirection. Specifies the direction in which an Expander control opens
////////////////////////////////////////////////////////////////////////////////////////////////////
enum ExpandDirection: int32_t
{
/// The Expander control opens down
ExpandDirection_Down,
/// The Expander control opens up
ExpandDirection_Up,
/// The Expander control opens left
ExpandDirection_Left,
/// The Expander control opens right
ExpandDirection_Right
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies how the intersecting areas of PathFigure objects contained in a Geometry are combined
/// to form the area of the Geometry
////////////////////////////////////////////////////////////////////////////////////////////////////
enum FillRule: int32_t
{
/// Rule that determines whether a point is in the fill region by drawing a ray from that point
/// to infinity in any direction and counting the number of path segments within the given
/// shape that the ray crosses. If this number is odd, the point is inside; if even, the point
/// is outside.
FillRule_EvenOdd,
/// Rule that determines whether a point is in the fill region of the path by drawing a ray
/// from that point to infinity in any direction and then examining the places where a segment
/// of the shape crosses the ray. Starting with a count of zero, add one each time a segment
/// crosses the ray from left to right and subtract one each time a path segment crosses the
/// ray from right to left. After counting the crossings, if the result is zero then the point
/// is outside the path. Otherwise, it is inside
FillRule_Nonzero
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies the different methods by which two geometries can be combined.
////////////////////////////////////////////////////////////////////////////////////////////////////
enum GeometryCombineMode: int32_t
{
/// The two regions are combined by taking the union of both. The resulting geometry is
/// geometry A + geometry B
GeometryCombineMode_Union,
/// The two regions are combined by taking their intersection. The new area consists of the
/// overlapping region between the two geometries
GeometryCombineMode_Intersect,
/// The two regions are combined by taking the area that exists in the first region but not the
/// second and the area that exists in the second region but not the first. The new region
/// consists of (A-B) + (B-A), where A and B are geometries
GeometryCombineMode_Xor,
/// The second region is excluded from the first. Given two geometries, A and B, the area of
/// geometry B is removed from the area of geometry A, producing a region that is A-B
GeometryCombineMode_Exclude
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies how to draw the gradient outside a gradient brush's gradient vector or space
////////////////////////////////////////////////////////////////////////////////////////////////////
enum GradientSpreadMethod: int32_t
{
/// Fill the remaining space with boundary colors (default)
GradientSpreadMethod_Pad,
/// Gradient is repeated in the reverse direction
GradientSpreadMethod_Reflect,
/// Gradient is repeated in the original direction
GradientSpreadMethod_Repeat
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Indicates where an element should be displayed on the horizontal axis relative to the
/// allocated layout slot of the parent element
////////////////////////////////////////////////////////////////////////////////////////////////////
enum HorizontalAlignment: int32_t
{
/// Element aligned to the left of the layout slot for the parent
HorizontalAlignment_Left,
/// Element aligned to the center of the layout slot for the parent
HorizontalAlignment_Center,
/// Element aligned to the right of the layout slot for the parent
HorizontalAlignment_Right,
/// Element stretched to fill the entire layout slot of the parent
HorizontalAlignment_Stretch
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies the scope which modifies how input from alternative input methods is interpreted
////////////////////////////////////////////////////////////////////////////////////////////////////
enum InputScope: int32_t
{
/// The default handling of input commands
InputScope_Default,
/// The text input pattern for a Uniform Resource Locator (URL)
InputScope_Url,
/// The text input pattern for the full path of a file
InputScope_FullFilePath,
/// The text input pattern for a file name
InputScope_FileName,
/// The text input pattern for an email user name
InputScope_EmailUserName,
/// The text input pattern for a Simple Mail Transfer Protocol (SMTP) email address
InputScope_EmailSmtpAddress,
/// The text input pattern for a log on name
InputScope_LogOnName,
/// The text input pattern for a person's full name
InputScope_PersonalFullName,
/// The text input pattern for the prefix of a person's name
InputScope_PersonalNamePrefix,
/// The text input pattern for a person's given name
InputScope_PersonalGivenName,
/// The text input pattern for a person's middle name
InputScope_PersonalMiddleName,
/// The text input pattern for a person's surname
InputScope_PersonalSurname,
/// The text input pattern for the suffix of a person's name
InputScope_PersonalNameSuffix,
/// The text input pattern for a postal address
InputScope_PostalAddress,
/// The text input pattern for a postal code
InputScope_PostalCode,
/// The text input pattern for a street address
InputScope_AddressStreet,
/// The text input pattern for a state or province
InputScope_AddressStateOrProvince,
/// The text input pattern for a city address
InputScope_AddressCity,
/// The text input pattern for the name of a country
InputScope_AddressCountryName,
/// The text input pattern for the abbreviated name of a country
InputScope_AddressCountryShortName,
/// The text input pattern for amount and symbol of currency
InputScope_CurrencyAmountAndSymbol,
/// The text input pattern for amount of currency
InputScope_CurrencyAmount,
/// The text input pattern for a calendar date
InputScope_Date,
/// The text input pattern for the numeric month in a calendar date
InputScope_DateMonth,
/// The text input pattern for the numeric day in a calendar date
InputScope_DateDay,
/// The text input pattern for the year in a calendar date
InputScope_DateYear,
/// The text input pattern for the name of the month in a calendar date
InputScope_DateMonthName,
/// The text input pattern for the name of the day in a calendar date
InputScope_DateDayName,
/// The text input pattern for digits
InputScope_Digits,
/// The text input pattern for a number
InputScope_Number,
/// The text input pattern for one character
InputScope_OneChar,
/// The text input pattern for a password
InputScope_Password,
/// The text input pattern for a telephone number
InputScope_TelephoneNumber,
/// The text input pattern for a telephone country code
InputScope_TelephoneCountryCode,
/// The text input pattern for a telephone area code
InputScope_TelephoneAreaCode,
/// The text input pattern for a telephone local number
InputScope_TelephoneLocalNumber,
/// The text input pattern for the time
InputScope_Time,
/// The text input pattern for the hour of the time
InputScope_TimeHour,
/// The text input pattern for the minutes or seconds of time
InputScope_TimeMinorSec,
/// The text input pattern for a full-width number
InputScope_NumberFullWidth,
/// The text input pattern for alphanumeric half-width characters
InputScope_AlphanumericHalfWidth,
/// The text input pattern for alphanumeric full-width characters
InputScope_AlphanumericFullWidth,
/// The text input pattern for Chinese currency
InputScope_CurrencyChinese,
/// The text input pattern for the Bopomofo Mandarin Chinese phonetic transcription system
InputScope_Bopomofo,
/// The text input pattern for the Hiragana writing system
InputScope_Hiragana,
/// The text input pattern for half-width Katakana characters
InputScope_KatakanaHalfWidth,
/// The text input pattern for full-width Katakana characters
InputScope_KatakanaFullWidth,
/// The text input pattern for Hanja characters
InputScope_Hanja,
/// The text input pattern for a phrase list
InputScope_PhraseList = -1,
/// The text input pattern for a regular expression
InputScope_RegularExpression = -2,
/// The text input pattern for the Speech Recognition Grammar Specification (SRGS)
InputScope_Srgs = -3,
/// The text input pattern for XML
InputScope_Xml = -4
};
////////////////////////////////////////////////////////////////////////////////////////////////////
enum KeyboardNavigationMode: int32_t
{
/// Each element receives keyboard focus, as long as it is a navigation stop. Navigation leaves
/// the containing element when an edge is reached
KeyboardNavigationMode_Continue,
/// The container and all of its child elements as a whole receive focus only once. Either the
/// first tree child or the or the last focused element in the group receives focus
KeyboardNavigationMode_Once,
/// Depending on the direction of the navigation, the focus returns to the first or the last
/// item when the end or the beginning of the container is reached. Focus cannot leave the
/// container using logical navigation
KeyboardNavigationMode_Cycle,
/// No keyboard navigation is allowed inside this container
KeyboardNavigationMode_None,
/// Like cycle but does not move past the beginning or end of the container
KeyboardNavigationMode_Contained,
/// Tab Indexes are considered on local subtree only inside this container and behave like
/// Continue after that
KeyboardNavigationMode_Local
};
////////////////////////////////////////////////////////////////////////////////////////////////////
enum ListSortDirection: int32_t
{
ListSortDirection_Ascending,
ListSortDirection_Descending
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// MenuItemRole. Defines the different roles that a MenuItem can have
////////////////////////////////////////////////////////////////////////////////////////////////////
enum MenuItemRole: int32_t
{
/// Top-level menu item that can invoke commands
MenuItemRole_TopLevelItem,
/// Header for top-level menus
MenuItemRole_TopLevelHeader,
/// Menu item in a submenu that can invoke commands
MenuItemRole_SubmenuItem,
/// Header for a submenu
MenuItemRole_SubmenuHeader
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Defines the different orientations that a control or layout can have
////////////////////////////////////////////////////////////////////////////////////////////////////
enum Orientation: int32_t
{
/// Control or layout should be horizontally oriented
Orientation_Horizontal,
/// Control or layout should be vertically oriented
Orientation_Vertical
};
////////////////////////////////////////////////////////////////////////////////////////////////////
enum OverflowMode: int32_t
{
/// Item moves between the main panel and overflow panel, depending on the available space
OverflowMode_AsNeeded,
/// Item is permanently placed in the overflow panel
OverflowMode_Always,
/// Item is never allowed to overflow
OverflowMode_Never
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// PenLineCap. Describes the shape at the end of a line or segment
////////////////////////////////////////////////////////////////////////////////////////////////////
enum PenLineCap: int32_t
{
/// A cap that does not extend past the last point of the line. Comparable to no line cap
PenLineCap_Flat,
/// A rectangle that has a height equal to the line thickness and a length equal to half the
/// line thickness
PenLineCap_Square,
/// A semicircle that has a diameter equal to the line thickness
PenLineCap_Round,
/// An isosceles right triangle whose base length is equal to the thickness of the line
PenLineCap_Triangle
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// PenLineJoin. Describes the shape that joins two lines or segments
////////////////////////////////////////////////////////////////////////////////////////////////////
enum PenLineJoin: int32_t
{
/// Regular angular vertices
PenLineJoin_Miter,
/// Beveled vertices
PenLineJoin_Bevel,
/// Rounded vertices
PenLineJoin_Round
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// PlacementMode. Describes the placement of where a Popup control appears on the screen
////////////////////////////////////////////////////////////////////////////////////////////////////
enum PlacementMode: int32_t
{
/// A position of the Popup control relative to the upper-left corner of the screen and at an
/// offset that is defined by the HorizontalOffset and VerticalOffset property values. If the
/// screen edge obscures the Popup, the control then repositions itself to align with the edge
PlacementMode_Absolute,
/// A position of the Popup control relative to the upper-left corner of the PlacementTarget
/// and at an offset that is defined by the HorizontalOffset and VerticalOffset property values.
/// If the screen edge obscures the Popup, the control repositions itself to align with the
/// screen edge
PlacementMode_Relative,
/// A position of the Popup control where the control aligns its upper edge with the lower edge
/// of the PlacementTarget and aligns its left edge with the left edge of the PlacementTarget.
/// If the lower screen-edge obscures the Popup, the control repositions itself so that its
/// lower edge aligns with the upper edge of the PlacementTarget. If the upper screen-edge
/// obscures the Popup, the control then repositions itself so that its upper edge aligns with
/// the upper screen-edge
PlacementMode_Bottom,
/// A position of the Popup control where it is centered over the PlacementTarget. If a screen
/// edge obscures the Popup, the control repositions itself to align with the screen edge
PlacementMode_Center,
/// A position of the Popup control that aligns its left edge with the right edge of the
/// PlacementTarget and aligns its upper edge with the upper edge of the PlacementTarget. If
/// the right screen-edge obscures the Popup, the control repositions itself so that its left
/// edge aligns with the left edge of the PlacementTarget. If the left screen-edge obscures
/// the Popup, the control repositions itself so that its left edge aligns with the left
/// screen-edge. If the upper or lower screen-edge obscures the Popup, the control then
/// repositions itself to align with the obscuring screen edge
PlacementMode_Right,
/// A position of the Popup control relative to the upper-left corner of the screen and at an
/// offset that is defined by the HorizontalOffset and VerticalOffset property values. If the
/// screen edge obscures the Popup, the control extends in the opposite direction from the axis
/// defined by the HorizontalOffset or VerticalOffset
PlacementMode_AbsolutePoint,
/// A position of the Popup control relative to the upper-left corner of the PlacementTarget
/// and at an offset that is defined by the HorizontalOffset and VerticalOffset property values.
/// If a screen edge obscures the Popup, the Popup extends in the opposite direction from the
/// direction from the axis defined by the HorizontalOffset or VerticalOffset. If the opposite
/// screen edge also obscures the Popup, the control then aligns with this screen edge
PlacementMode_RelativePoint,
/// A postion of the Popup control that aligns its upper edge with the lower edge of the
/// bounding box of the mouse and aligns its left edge with the left edge of the bounding box
/// of the mouse. If the lower screen-edge obscures the Popup, it repositions itself to align
/// with the upper edge of the bounding box of the mouse. If the upper screen-edge obscures the
/// Popup, the control repositions itself to align with the upper screen-edge
PlacementMode_Mouse,
/// A position of the Popup control relative to the tip of the mouse cursor and at an offset
/// that is defined by the HorizontalOffset and VerticalOffset property values. If a horizontal
/// or vertical screen edge obscures the Popup, it opens in the opposite direction from the
/// obscuring edge. If the opposite screen edge also obscures the Popup, it then aligns with
/// the obscuring screen edge
PlacementMode_MousePoint,
/// A Popup control that aligns its right edge with the left edge of the PlacementTarget and
/// aligns its upper edge with the upper edge of the PlacementTarget. If the left screen-edge
/// obscures the Popup, the Popup repositions itself so that its left edge aligns with the
/// right edge of the PlacementTarget. If the right screen-edge obscures the Popup, the right
/// edge of the control aligns with the right screen-edge. If the upper or lower screen-edge
/// obscures the Popup, the control repositions itself to align with the obscuring screen edge
PlacementMode_Left,
/// A position of the Popup control that aligns its lower edge with the upper edge of the
/// PlacementTarget and aligns its left edge with the left edge of the PlacementTarget. If the
/// upper screen-edge obscures the Popup, the control repositions itself so that its upper edge
/// aligns with the lower edge of the PlacementTarget. If the lower screen-edge obscures the
/// Popup, the lower edge of the control aligns with the lower screen-edge. If the left or
/// right screen-edge obscures the Popup, it then repositions itself to align with the
/// obscuring screen
PlacementMode_Top,
/// A position and repositioning behavior for the Popup control that is defined by the
/// CustomPopupPlacementCallback delegate specified by the CustomPopupPlacementCallback property
PlacementMode_Custom
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// PopupAnimation. Represents a pop-up window that has content
////////////////////////////////////////////////////////////////////////////////////////////////////
enum PopupAnimation: int32_t
{
/// The Popup control appears without animation
PopupAnimation_None,
/// The Popup control gradually appears, or fades in. This effect is created by increasing the
/// opacity of the Popup window over time
PopupAnimation_Fade,
/// The Popup control slides down or up into place. By default, a Popup slides down. However, if
/// the screen does not provide enough room for the Popup to slide down, it slides up instead
PopupAnimation_Slide,
/// The Popup control scrolls from the upper-left corner of its parent. If the screen does not
/// provide enough room to allow the Popup default behavior, the Popup scrolls from the
/// lower-right corner instead
PopupAnimation_Scroll
};
////////////////////////////////////////////////////////////////////////////////////////////////////
enum RelativeSourceMode: int32_t
{
/// Allows you to bind the previous data item (not that control that contains the data item)
/// in the list of data items being displayed
RelativeSourceMode_PreviousData,
/// Refers to the element to which the template (in which the data-bound element exists) is
/// applied. This is similar to setting a TemplateBindingExtension and is only applicable if
/// the Binding is within a template
RelativeSourceMode_TemplatedParent,
/// Refers to the element on which you are setting the binding and allows you to bind one
/// property of that element to another property on the same element
RelativeSourceMode_Self,
/// Refers to the ancestor in the parent chain of the data-bound element. You can use this to
/// bind to an ancestor of a specific type or its subclasses. This is the mode you use if you
/// want to specify AncestorType and/or AncestorLevel
RelativeSourceMode_FindAncestor
};
////////////////////////////////////////////////////////////////////////////////////////////////////
enum SelectionMode: int32_t
{
/// The user can select only one item at a time. This is the default mode
SelectionMode_Single,
/// The user can select multiple items without holding down a modifier key
SelectionMode_Multiple,
/// The user can select multiple consecutive items while holding down the SHIFT key
SelectionMode_Extended
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies the visibility of a ScrollBar for scrollable content
////////////////////////////////////////////////////////////////////////////////////////////////////
enum ScrollBarVisibility: int32_t
{
/// A ScrollBar does not appear even when the viewport cannot display all of the content. The
/// dimension of the content is set to the corresponding dimension of the ScrollViewer parent.
/// For a horizontal ScrollBar, the width of the content is set to the ViewportWidth of the
/// ScrollViewer. For a vertical ScrollBar, the height of the content is set to the
/// ViewportHeight of the ScrollViewer
ScrollBarVisibility_Disabled,
/// A ScrollBar appears and the dimension of the ScrollViewer is applied to the content when
/// the viewport cannot display all of the content. For a horizontal ScrollBar, the width of
/// the content is set to the ViewportWidth of the ScrollViewer. For a vertical ScrollBar, the
/// height of the content is set to the ViewportHeight of the ScrollViewer
ScrollBarVisibility_Auto,
/// A ScrollBar does not appear even when the viewport cannot display all of the content. The
/// dimension of the ScrollViewer is not applied to the content
ScrollBarVisibility_Hidden,
/// A ScrollBar always appears. The dimension of the ScrollViewer is applied to the content.
/// For a horizontal ScrollBar, the width of the content is set to the ViewportWidth of the
/// ScrollViewer. For a vertical ScrollBar, the height of the content is set to the
/// ViewportHeight of the ScrollViewer
ScrollBarVisibility_Visible
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Describes how content is resized to fill its allocated space
////////////////////////////////////////////////////////////////////////////////////////////////////
enum Stretch: int32_t
{
/// The content preserves its original size
Stretch_None,
/// The content is resized to fill the destination dimensions. The aspect ratio is not preserved
Stretch_Fill,
/// The content is resized to fit in the destination dimensions while it preserves its native
/// aspect ratio
Stretch_Uniform,
/// The content is resized to fill the destination dimensions while it preserves its native
/// aspect ratio. If the aspect ratio of the destination rectangle differs from the source, the
/// source content is clipped to fit in the destination dimensions.
Stretch_UniformToFill
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Describes how scaling applies to content and restricts scaling to named axis types
////////////////////////////////////////////////////////////////////////////////////////////////////
enum StretchDirection: int32_t
{
/// The content scales upward only when it is smaller than the parent. If the content is
/// larger, no scaling downward is performed
StretchDirection_UpOnly,
/// The content scales downward only when it is larger than the parent. If the content is
/// smaller, no scaling upward is performed.
StretchDirection_DownOnly,
/// The content stretches to fit the parent according to the Stretch mode
StretchDirection_Both
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies the text decoration to apply to the text
////////////////////////////////////////////////////////////////////////////////////////////////////
enum TextDecorations: int32_t
{
/// Indicates no text
TextDecorations_None,
/// Specifies an overline text decoration
TextDecorations_OverLine,
/// Specifies an baseline text decoration
TextDecorations_Baseline,
/// Specifies an underline text decoration
TextDecorations_Underline,
/// Specifies a strike through text decoration
TextDecorations_Strikethrough
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies the placement of a TickBar with respect to the Track of a Slider
////////////////////////////////////////////////////////////////////////////////////////////////////
enum TickBarPlacement: int32_t
{
/// The tick bar is positioned to the left of the Track of the Slider
TickBarPlacement_Left,
/// The tick bar is positioned above the Track of the Slider
TickBarPlacement_Top,
/// The tick bar is positioned to the right of the Track of the Slider
TickBarPlacement_Right,
/// The tick bar is positioned below the Track of the Slider
TickBarPlacement_Bottom
};
////////////////////////////////////////////////////////////////////////////////////////////////////
enum TickPlacement: int32_t
{
/// No tick marks appear
TickPlacement_None,
/// Tick marks appear above the Track for a horizontal Slider, or to the left of the Track for
/// a vertical Slider
TickPlacement_TopLeft,
/// Tick marks appear below the Track for a horizontal Slider, or to the right of the Track for
/// a vertical Slider
TickPlacement_BottomRight,
/// Tick marks appear above and below the Track bar for a horizontal Slider, or to the left and
/// right of the Track for a vertical Slider
TickPlacement_Both
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Describes how a TileBrush paints tiles onto an output area
////////////////////////////////////////////////////////////////////////////////////////////////////
enum TileMode: int32_t
{
/// The base tile is drawn but not repeated. The remaining area is transparent
TileMode_None,
/// The base tile is drawn and the remaining area is filled by repeating the base tile. The
/// right edge of one tile meets the left edge of the next, and similarly for the bottom and
/// top edges
TileMode_Tile,
/// The same as Tile except that alternate columns of tiles are flipped horizontally. The base
/// tile itself is not flipped
TileMode_FlipX,
/// The same as Tile except that alternate rows of tiles are flipped vertically. The base tile
/// itself is not flipped
TileMode_FlipY,
/// The combination of FlipX and FlipY. The base tile itself is not flipped
TileMode_FlipXY
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Indicates where an element should be displayed on the vertical axis relative to the
/// allocated layout slot of the parent element
////////////////////////////////////////////////////////////////////////////////////////////////////
enum VerticalAlignment: int32_t
{
/// Element aligned to the top of the parent's layout slot
VerticalAlignment_Top,
/// Element aligned to the center of the parent's layout slot
VerticalAlignment_Center,
/// Element aligned to the bottom of the parent's layout slot
VerticalAlignment_Bottom,
/// Element stretches to fill the parent's layout slot
VerticalAlignment_Stretch
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies the display state of an element
////////////////////////////////////////////////////////////////////////////////////////////////////
enum Visibility: int32_t
{
/// Do not display the element, do not reserve space for it in layout
Visibility_Collapsed,
/// Do not display the element, but reserve space for it in layout
Visibility_Hidden,
/// Display the element
Visibility_Visible
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies the effects of a drag-and-drop operation.
/// This enumeration allows a bitwise combination of its member values
////////////////////////////////////////////////////////////////////////////////////////////////////
enum DragDropEffects: int32_t
{
/// A drop would not be allowed
DragDropEffects_None = 0,
/// A copy operation would be performed
DragDropEffects_Copy = 1,
/// A move operation would be performed
DragDropEffects_Move = 2,
/// A link from the dropped data to the original data would be established
DragDropEffects_Link = 4,
/// A drag scroll operation is about to occur or is occurring in the target
DragDropEffects_Scroll = (int)0x80000000,
/// All operation is about to occur data is copied or removed from the drag source, and
/// scrolled in the drop target
DragDropEffects_All = DragDropEffects_Copy | DragDropEffects_Move | DragDropEffects_Scroll
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies the current state of the modifier keys (SHIFT, CTRL, and ALT), as well as the state of
/// the mouse buttons.
/// This enumeration allows a bitwise combination of its member values.
////////////////////////////////////////////////////////////////////////////////////////////////////
enum DragDropKeyStates: int32_t
{
/// No state set
DragDropKeyStates_None = 0,
/// The left mouse button
DragDropKeyStates_LeftMouseButton = 1,
/// The right mouse button
DragDropKeyStates_RightMouseButton = 2,
/// The SHIFT key
DragDropKeyStates_ShiftKey = 4,
/// The CTRL key
DragDropKeyStates_ControlKey = 8,
/// The middle mouse button
DragDropKeyStates_MiddleMouseButton = 16,
/// The ALT key
DragDropKeyStates_AltKey = 32
};
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Specifies how and if a drag-and-drop operation should continue
////////////////////////////////////////////////////////////////////////////////////////////////////
enum DragAction: int32_t
{
/// The drag and drop can continue
DragAction_Continue = 0,
/// Drop operation should occur
DragAction_Drop = 1,
/// Drop operation is canceled
DragAction_Cancel = 2
};
}
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::AlignmentX)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::AlignmentY)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::AutoToolTipPlacement)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::BindingMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::BitmapScalingMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::BlendingMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::BrushMappingMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::CharacterCasing)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::ClickMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::ColorInterpolationMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::Dock)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::ExpandDirection)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::FillRule)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::GeometryCombineMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::GradientSpreadMethod)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::HorizontalAlignment)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::InputScope)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::KeyboardNavigationMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::ListSortDirection)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::MenuItemRole)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::Orientation)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::OverflowMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::PenLineCap)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::PenLineJoin)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::PlacementMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::PopupAnimation)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::RelativeSourceMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::SelectionMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::ScrollBarVisibility)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::Stretch)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::StretchDirection)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::TextDecorations)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::TickBarPlacement)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::TickPlacement)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::TileMode)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::VerticalAlignment)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::Visibility)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::DragDropEffects)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::DragDropKeyStates)
NS_DECLARE_REFLECTION_ENUM_EXPORT(NS_GUI_CORE_API, Noesis::DragAction)
#endif