Chicane

Component

Header
Includes/Chicane/Grid/Component.hpp
Namespace
Chicane::Grid::Component

Types

NameValueDescription
ClassList
std::set<String>
Directive
std::function<void(const String &)>
Directives
std::unordered_map<StringDirective>
Variables
std::unordered_map<StringReflectionFieldAccessor>
Imports
std::unordered_map<Stringconst  ReflectionTypeInfo*>

Constructors

NameDescription
Component(
const  XmlNode& inNode
)
Component(
const  String& inTag
)

Destructors

NameDescription
~Component()

Override Functions

AccessReturnModifierNameDescription
protected
bool
const
canPlayAnimation()
protected
const
findKeyframes(
const  String& inName
)
protected
const
makeAnimationClip(
const  StyleKeyframe::List& inKeyframes
)

Virtual Functions

AccessReturnModifierNameDescription
public
bool
const
isDrawable()
public
bool
const
isFocusable()
public
bool
const
escapesOverflow()
public
bool
onEvent(
const  WindowEvent& inEvent
)
public
void
tick(
float inDelta
)
public
void
refresh()
public
float
const
getDepth()
public
const
getDrawPosition()
public
const
getTransformPivot()
public
const
getScrollOffset()
public
const
getScrollBarGutter()
protected
void
inline
onTick(
float inDeltaTime
)
protected
void
inline
onRefresh()
protected
void
inline
onAdoption(
Component* inChild
)
protected
void
inline
onAdopted(
Component* inParent
)
protected
void
inline
onHover()
protected
void
inline
onLeave()
protected
void
inline
onClick()
protected
void
inline
onFocus()
protected
void
inline
onBlur()
protected
void
inline
onDrag()
protected
void
inline
onDragEnd()
protected
void
inline
refreshPrimitive()
protected
void
refreshStyleRuleset()
protected
void
refreshSize()
protected
void
refreshPosition()

Functions

AccessReturnModifierNameDescription
public
static
create(
const  XmlNode& inNode
)
public
bool
static
isContentSlot(
const  XmlNode& inNode
)
public
bool
const
isRoot()
public
bool
const
isDisplayable()
public
bool
const
isVisible()
public
bool
const
isSolid()
public
bool
const
isHovered()
public
bool
const
isFocused()
public
bool
const
isDragging()
public
bool
const
isCulled()
public
const
getStatus()
public
bool
const
hasStatus(
ComponentStatus inStatus
)
public
bool
const
hasFlag()
public
void
setFlag(
ComponentDirty inFlag
bool inEnabled
)
public
bool
const
canAdopt(
Component* inComponent
)
public
void
hover()
public
void
leave()
public
void
click()
public
void
focus()
public
void
blur()
public
void
drag()
public
void
endDrag()
public
void
setHovered(
bool inValue
bool bShouldInvalidateSubtree
)
public
void
setFocused(
bool inValue
bool bShouldInvalidateSubtree
)
public
void
setDragging(
bool inValue
bool bShouldInvalidateSubtree
)
public
void
setCulled(
bool inValue
)
public
const  String&
const
getTag()
public
const
getId()
public
void
setId(
const  String& inValue
)
public
const
getClassList()
public
const  String&
const
getClassName()
public
void
setClassName(
const  String& inValue
)
public
void
inline
addClassName(
Args... inClasses
)
public
void
refreshDirectives()
public
void
runDirective(
const  String& inKey
const  String& inValue
)
public
void
setDirective(
const  String& inKey
const  Directive& inValue
)
public
bool
const
hasStyleFile()
public
const  StyleFile*
const
getStyleFile()
public
void
setStyleFile(
StyleFile* inSource
)
public
void
importStyleFile(
const  FileSystem::Path& inValue
)
public
void
addStyleRuleset(
const  StyleRuleset::List& inSources
)
public
void
addStyleProperties(
const  StyleRuleset::Properties& inSource
)
public
const  Style&
const
getStyle()
public
float
const
getOpacity()
public
float
const
getFilterBlur()
public
const  String&
const
getStyleVariable(
const  String& inName
)
public
void
refreshStyleSubtree()
public
bool
const
hasLocalSelector(
const  String& inValue
)
public
bool
const
hasSelector(
const  String& inValue
)
public
bool
const
matchesCompiledSelector(
const  StyleCompiledSelector& inSelector
)
public
bool
const
matchesCompiledPart(
const  StyleSelectorPart& inPart
)
public
const
getField(
const  String& inId
)
public
const
getMethod(
const  String& inId
)
public
bool
const
hasRoot()
public
const
getRoot()
public
void
setRoot(
Component* inComponent
)
public
bool
const
hasParent()
public
const
getParent()
public
void
setParent(
Component* inComponent
)
public
const  Component*
const
getContainingBlock()
public
bool
const
hasNeighbours()
public
const
getNeighbour(
int inJumps
)
public
bool
const
hasChildren()
public
const  std::vector<Component*>&
const
getChildren()
public
const  std::vector<Component*>&
const
getPaintChildren()
public
std::vector<Component*>
const
getChildrenFlat()
public
void
const
appendChildrenFlat(
std::vector<Component*>& outChildren
)
public
void
markStyleDirty()
public
void
markLayoutDirty()
public
void
markStyleDirtySubtree()
public
void
markLayoutDirtySubtree()
public
void
markPaintDirty()
public
void
markPaintDirtySubtree()
public
void
paint(
const  ComponentPaintContext& inContext
)
public
const
getHitAt(
const  Vec2& inLocation
)
public
bool
const
containsPoint(
const  Vec2& inLocation
)
public
bool
broadcastEvent(
const  WindowEvent& inEvent
)
public
bool
bubbleEvent(
const  WindowEvent& inEvent
const  Vec2& inLocation
)
public
void
addChildren(
const  XmlNode& inNode
)
public
void
addChild(
Component* inComponent
std::size_t inIndex
)
public
void
releaseChild(
Component* inComponent
)
public
void
removeChild(
Component* inComponent
)
public
const
getChildrenContentSizeBlock()
public
const
getChildrenContentSizeFlex()
public
const
getChildrenContentSizeFromOrigin(
float inOriginX
float inOriginY
)
public
const
getChildrenContentSize()
public
const
getChildIntrinsicSize(
const  Component* inChild
)
public
const  Vec2&
const
getSize()
public
const
getContentSize()
public
const
getInnerLayoutSize()
public
const
getBorderSize()
public
const
getRemainingContentSize()
public
const
getRemainingContentSize(
const  Component* inChild
)
public
void
addSize(
const  Vec2& inValue
)
public
void
addSize(
float inWidth
float inHeight
)
public
void
setSize(
const  Vec2& inValue
)
public
void
setSize(
float inWidth
float inHeight
)
public
const  Vec2&
const
getScale()
public
void
setScale(
const  Vec2& inValue
)
public
void
setScale(
float inX
float inY
)
public
const  Vec2&
const
getOffset()
public
void
setOffset(
const  Vec2& inValue
)
public
void
setOffset(
float inX
float inY
)
public
const
getVisualCenter()
public
const  Vec2&
const
getPosition()
public
void
addPosition(
const  Vec2& inValue
)
public
void
addPosition(
float inX
float inY
)
public
void
setPosition(
const  Vec2& inValue
)
public
void
setPosition(
float inX
float inY
)
public
const  Mat3&
const
getPaintMatrix()
public
const  Vec2&
const
getCursor()
public
void
addCursor(
const  Vec2& inValue
)
public
void
addCursor(
float inX
float inY
)
public
void
setCursor(
const  Vec2& inValue
)
public
void
setCursor(
float inX
float inY
)
public
const  Bounds2D&
const
getBounds()
public
const  Bounds2D&
const
getDrawBounds()
public
const  Bounds2D&
const
getOverflowClip()
public
void
const
getOverflowRoundClips(
Vec4& outFirst
Vec4& outFirstRadiusX
Vec4& outFirstRadiusY
Vec4& outSecond
Vec4& outSecondRadiusX
Vec4& outSecondRadiusY
)
public
void
const
getPaintRadius(
Vec4& outRadiusX
Vec4& outRadiusY
)
public
bool
const
hasPrimitive()
public
const  Primitive&
const
getPrimitive()
public
void
clearPrimitive()
public
void
setPrimitive(
const  Primitive& inPrimitive
)
public
const
parseText(
const  String& inValue
)
protected
void
setPeripherals(
const  std::vector<Component*>& inPeripherals
)
protected
void
inline
import()
protected
void
load(
const  FileSystem::Path& inTemplate
const  FileSystem::Path& inStyle
)
protected
void
addProjectedContent(
const  XmlNode& inSlot
)
protected
void
refreshClassName()
protected
void
refreshStyle()
protected
void
refreshBounds()
protected
void
resetFlowCursor()
protected
void
reflowChildPositions()
protected
bool
const
isReference(
const  String& inValue
)
protected
const
parseReference(
const  String& inValue
)
protected
const
parseMethod(
const  String& inValue
)
protected
void
addVariable(
const  String& inId
const  ReflectionFieldAccessor& inValue
)
protected
const
cloneTemplate()
protected
const
findImported(
const  String& inSelector
)
protected
void
syncForLoop(
const  String& inVariableId
const  ReflectionFieldAccessor& inAccessor
const  void* inInstance
)
protected
bool
const
isMethod(
const  String& inValue
)
protected
const
getMethod(
const  String& inId
const  Component* inParamContext
)
protected
void
const
populateMethodParams(
ReflectionTypeMethod& outMethod
const  String& inSignature
)
protected
std::vector<String>
const
splitMethodParams(
const  String& inValue
)
protected
bool
const
isCulledByAncestor()
protected
bool
adoptChild(
Component* inComponent
std::size_t inIndex
)
protected
void
rebuildPaintChildren()
protected
bool
hideIfDirective()
protected
const
computeLocalPaintMatrix(
const  StyleTransform& inTransform
)
protected
void
paintRadius(
const  std::vector<const  Component*>& inRoundedAncestors
)
protected
void
paintRoundClips(
const  std::vector<const  Component*>& inRoundedAncestors
)

Members

AccessTypeModifierNameDescription
public
const  char*
static, constexpr
IF_DIRECTIVE_KEYWORD
public
const  char*
static, constexpr
FOR_DIRECTIVE_KEYWORD
public
const  char*
static, constexpr
CONTENT_TAG_ID
public
const  char*
static, constexpr
CONTENT_SELECT_ATTRIBUTE_NAME
public
const  char*
static, constexpr
EVENT_KEYWORD
public
const  char*
static, constexpr
ON_HOVER_ATTRIBUTE_NAME
public
const  char*
static, constexpr
ON_LEAVE_ATTRIBUTE_NAME
public
const  char*
static, constexpr
ON_CLICK_ATTRIBUTE_NAME
public
const  char*
static, constexpr
ON_FOCUS_ATTRIBUTE_NAME
public
const  char*
static, constexpr
ON_BLUR_ATTRIBUTE_NAME
public
const  char*
static, constexpr
ON_DRAG_ATTRIBUTE_NAME
public
const  char*
static, constexpr
ON_DRAG_END_ATTRIBUTE_NAME
protected
m_tag
protected
m_id
protected
m_className
protected
m_status
protected
m_flags
protected
m_live
protected
std::uint64_t
m_liveHash
protected
m_directives
protected
m_variables
protected
m_style
protected
m_styleVariables
protected
m_styleFile
protected
std::unique_ptr<StyleFile>
m_styles
protected
bool
m_bHasOwnStyle
protected
m_imports
protected
m_importOwner
protected
m_root
protected
m_parent
protected
std::vector<Component*>
m_children
protected
std::vector<Component*>
m_peripherals
protected
std::vector<Component*>
m_paintChildren
protected
m_size
protected
m_scale
protected
m_offset
protected
m_cursor
protected
float
m_scratch
protected
m_layoutParentSize
protected
float
m_layoutParentFontSize
protected
m_primitive
protected
m_draw
protected
std::vector<Component*>
m_forInstances
protected
m_forVariable
protected
std::any
m_forSource