blob: 4b8c0ffe4656f60e3900aa23d2d9419239640a69 [file] [log] [blame]
#ifndef _RIVE_LAYOUT_COMPONENT_STYLE_HPP_
#define _RIVE_LAYOUT_COMPONENT_STYLE_HPP_
#include "rive/generated/layout/layout_component_style_base.hpp"
#include "rive/math/bit_field_loc.hpp"
#ifdef WITH_RIVE_LAYOUT
#include "yoga/Yoga.h"
#endif
#include <stdio.h>
namespace rive
{
// ---- Flags 0
extern BitFieldLoc DisplayBits;
extern BitFieldLoc PositionTypeBits;
extern BitFieldLoc FlexDirectionBits;
extern BitFieldLoc DirectionBits;
extern BitFieldLoc AlignContentBits;
extern BitFieldLoc AlignItemsBits;
extern BitFieldLoc AlignSelfBits;
extern BitFieldLoc JustifyContentBits;
extern BitFieldLoc FlexWrapBits;
extern BitFieldLoc OverflowBits;
extern BitFieldLoc IntrinsicallySizedBits;
extern BitFieldLoc WidthUnitsBits;
extern BitFieldLoc HeightUnitsBits;
// ---- Flags 1
extern BitFieldLoc BorderLeftUnitsBits;
extern BitFieldLoc BorderRightUnitsBits;
extern BitFieldLoc BorderTopUnitsBits;
extern BitFieldLoc BorderBottomUnitsBits;
extern BitFieldLoc MarginLeftUnitsBits;
extern BitFieldLoc MarginRightUnitsBits;
extern BitFieldLoc MarginTopUnitsBits;
extern BitFieldLoc MarginBottomUnitsBits;
extern BitFieldLoc PaddingLeftUnitsBits;
extern BitFieldLoc PaddingRightUnitsBits;
extern BitFieldLoc PaddingTopUnitsBits;
extern BitFieldLoc PaddingBottomUnitsBits;
extern BitFieldLoc PositionLeftUnitsBits;
extern BitFieldLoc PositionRightUnitsBits;
extern BitFieldLoc PositionTopUnitsBits;
extern BitFieldLoc PositionBottomUnitsBits;
// ---- Flags 2
extern BitFieldLoc GapHorizontalUnitsBits;
extern BitFieldLoc GapVerticalUnitsBits;
extern BitFieldLoc MinWidthUnitsBits;
extern BitFieldLoc MinHeightUnitsBits;
extern BitFieldLoc MaxWidthUnitsBits;
extern BitFieldLoc MaxHeightUnitsBits;
enum class LayoutAnimationStyle : uint8_t
{
none,
custom,
inherit
};
enum class LayoutStyleInterpolation : uint8_t
{
hold,
linear,
cubic,
elastic
};
class KeyFrameInterpolator;
class LayoutComponentStyle : public LayoutComponentStyleBase
{
private:
#ifdef WITH_RIVE_LAYOUT
KeyFrameInterpolator* m_interpolator;
#endif
public:
LayoutComponentStyle() {}
#ifdef WITH_RIVE_LAYOUT
StatusCode onAddedDirty(CoreContext* context) override;
KeyFrameInterpolator* interpolator();
LayoutStyleInterpolation interpolation();
LayoutAnimationStyle animationStyle();
YGDisplay display();
YGPositionType positionType();
YGFlexDirection flexDirection();
YGDirection direction();
YGWrap flexWrap();
YGOverflow overflow();
YGAlign alignItems();
YGAlign alignSelf();
YGAlign alignContent();
YGJustify justifyContent();
bool intrinsicallySized();
YGUnit widthUnits();
YGUnit heightUnits();
YGUnit borderLeftUnits();
YGUnit borderRightUnits();
YGUnit borderTopUnits();
YGUnit borderBottomUnits();
YGUnit marginLeftUnits();
YGUnit marginRightUnits();
YGUnit marginTopUnits();
YGUnit marginBottomUnits();
YGUnit paddingLeftUnits();
YGUnit paddingRightUnits();
YGUnit paddingTopUnits();
YGUnit paddingBottomUnits();
YGUnit positionLeftUnits();
YGUnit positionRightUnits();
YGUnit positionTopUnits();
YGUnit positionBottomUnits();
YGUnit gapHorizontalUnits();
YGUnit gapVerticalUnits();
YGUnit maxWidthUnits();
YGUnit maxHeightUnits();
YGUnit minWidthUnits();
YGUnit minHeightUnits();
#endif
void markLayoutNodeDirty();
void markLayoutStyleDirty();
void layoutFlags0Changed() override;
void layoutFlags1Changed() override;
void layoutFlags2Changed() override;
void flexChanged() override;
void flexGrowChanged() override;
void flexShrinkChanged() override;
void flexBasisChanged() override;
void aspectRatioChanged() override;
void gapHorizontalChanged() override;
void gapVerticalChanged() override;
void maxWidthChanged() override;
void maxHeightChanged() override;
void minWidthChanged() override;
void minHeightChanged() override;
void borderLeftChanged() override;
void borderRightChanged() override;
void borderTopChanged() override;
void borderBottomChanged() override;
void marginLeftChanged() override;
void marginRightChanged() override;
void marginTopChanged() override;
void marginBottomChanged() override;
void paddingLeftChanged() override;
void paddingRightChanged() override;
void paddingTopChanged() override;
void paddingBottomChanged() override;
void positionLeftChanged() override;
void positionRightChanged() override;
void positionTopChanged() override;
void positionBottomChanged() override;
};
} // namespace rive
#endif