123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- #ifdef __cplusplus
- #ifndef WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUMS_H
- #define WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUMS_H
- #include "flex_enum.h"
- #include <math.h>
- #include <cmath>
- namespace WeexCore {
-
- class WXCoreMargin {
- private:
- float mMarginTop;
- float mMarginBottom;
- float mMarginLeft;
- float mMarginRight;
- public:
- WXCoreMargin() : mMarginTop(0),
- mMarginBottom(0),
- mMarginLeft(0),
- mMarginRight(0) {}
- ~WXCoreMargin() {
- mMarginTop = 0;
- mMarginBottom = 0;
- mMarginLeft = 0;
- mMarginRight = 0;
- }
- bool setMargin(const WXCoreMarginEdge &edge, float margin);
- float getMargin(const WXCoreMarginEdge &edge)const;
- };
-
- class WXCorePadding {
- private:
- float mPaddingTop;
- float mPaddingBottom;
- float mPaddingLeft;
- float mPaddingRight;
- public:
- WXCorePadding() : mPaddingTop(0),
- mPaddingBottom(0),
- mPaddingLeft(0),
- mPaddingRight(0) {}
- ~WXCorePadding() {
- mPaddingTop = 0;
- mPaddingBottom = 0;
- mPaddingLeft = 0;
- mPaddingRight = 0;
- }
- bool setPadding(const WXCorePaddingEdge &edge, float padding);
- float getPadding(const WXCorePaddingEdge &edge)const;
- };
-
- class WXCoreBorderWidth {
- private:
- float mBorderWidthTop;
- float mBorderWidthBottom;
- float mBorderWidthLeft;
- float mBorderWidthRight;
- public:
- WXCoreBorderWidth() : mBorderWidthTop(0),
- mBorderWidthBottom(0),
- mBorderWidthLeft(0),
- mBorderWidthRight(0) {}
- ~WXCoreBorderWidth() {
- mBorderWidthTop = 0;
- mBorderWidthBottom = 0;
- mBorderWidthLeft = 0;
- mBorderWidthRight = 0;
- }
- bool setBorderWidth(const WXCoreBorderWidthEdge &edge, float borderWidth);
- float getBorderWidth(const WXCoreBorderWidthEdge &edge)const;
- };
-
- class WXCorePosition {
- private:
- float mTop;
- float mBottom;
- float mLeft;
- float mRight;
- public:
- WXCorePosition() : mTop(NAN),
- mBottom(NAN),
- mLeft(NAN),
- mRight(NAN) {}
- ~WXCorePosition() {
- reset();
- }
- inline bool isNAN() {
- return isnan(mTop) || isnan(mBottom) || isnan(mLeft) || isnan(mRight);
- }
- inline void reset() {
- mTop = 0;
- mBottom = 0;
- mLeft = 0;
- mRight = 0;
- }
- bool setPosition(const WXCorePositionEdge &edge, float position);
- float getPosition(const WXCorePositionEdge &edge);
- };
- enum DimensionLevel{
- CSS_STYLE = 1,
- INSTANCE_STYLE = 2,
- FALLBACK_STYLE = 3
- };
-
- class WXCoreCSSStyle {
- public:
-
- WXCoreFlexDirection mFlexDirection;
-
- WXCoreFlexWrap mFlexWrap;
-
- WXCoreJustifyContent mJustifyContent;
-
- WXCoreAlignItems mAlignItems;
-
- WXCoreAlignSelf mAlignSelf;
- WXCorePositionType mPositionType;
-
- WXCoreDirection mDirection;
- float mFlexGrow;
- float mMinWidth;
- float mMinHeight;
- float mMaxWidth;
- float mMaxHeight;
- float mStyleWidth;
- float mStyleHeight;
- DimensionLevel mStyleWidthLevel;
- DimensionLevel mStyleHeightLevel;
- WXCoreMargin mMargin;
- WXCorePadding mPadding;
- WXCoreBorderWidth mBorderWidth;
- WXCorePosition mStylePosition;
- constexpr static float kFlexGrowDefault = 0;
-
- constexpr static WXCoreDirection kDirectionDefault = kDirectionLTR;
- constexpr static WXCoreFlexDirection kFlexDirectionDefault= kFlexDirectionColumn;
- constexpr static WXCoreFlexWrap kFlexWrapDefault = kNoWrap;
- constexpr static WXCoreJustifyContent kFlexJustifyContentDefault = kJustifyFlexStart;
- constexpr static WXCoreAlignItems kFlexAlignItemsDefault = kAlignItemsStretch;
- constexpr static WXCoreAlignSelf kFlexAlignSelfDefault = kAlignSelfAuto;
- constexpr static WXCorePositionType kWXCorePositionTypeDefault = kRelative;
- WXCoreCSSStyle() : mDirection(kDirectionInherit),
- mFlexDirection(kFlexDirectionDefault),
- mFlexWrap(kFlexWrapDefault),
- mJustifyContent(kFlexJustifyContentDefault),
- mAlignItems(kFlexAlignItemsDefault),
- mAlignSelf(kFlexAlignSelfDefault),
- mFlexGrow(kFlexGrowDefault),
- mPositionType(kWXCorePositionTypeDefault),
- mStyleWidth(NAN), mStyleHeight(NAN),
- mStyleHeightLevel(FALLBACK_STYLE), mStyleWidthLevel(FALLBACK_STYLE),
- mMaxWidth(NAN), mMaxHeight(NAN),
- mMinWidth(NAN), mMinHeight(NAN) {
- }
- ~WXCoreCSSStyle() {
- mDirection = kDirectionInherit;
- mFlexDirection = kFlexDirectionDefault;
- mFlexWrap = kFlexWrapDefault;
- mJustifyContent = kFlexJustifyContentDefault;
- mAlignItems = kFlexAlignItemsDefault;
- mAlignSelf = kFlexAlignSelfDefault;
- mFlexGrow = kFlexGrowDefault;
- mStyleWidth = NAN;
- mStyleHeight = NAN;
- mStyleWidthLevel = FALLBACK_STYLE;
- mStyleHeightLevel = FALLBACK_STYLE;
- mMaxWidth = NAN;
- mMaxHeight = NAN;
- mMinWidth = NAN;
- mMinHeight = NAN;
- }
- inline float sumPaddingBorderOfEdge(const WXCoreEdge edge){
- switch (edge) {
- case kTop:
- return mPadding.getPadding(kPaddingTop)
- + mBorderWidth.getBorderWidth(kBorderWidthTop);
- case kRight:
- return mPadding.getPadding(kPaddingRight)
- + mBorderWidth.getBorderWidth(kBorderWidthRight);
- case kBottom:
- return mPadding.getPadding(kPaddingBottom)
- + mBorderWidth.getBorderWidth(kBorderWidthBottom);
- case kLeft:
- return mPadding.getPadding(kPaddingLeft)
- + mBorderWidth.getBorderWidth(kBorderWidthLeft);
- }
- }
- float sumMarginOfDirection(bool horizontal){
- if(horizontal){
- return mMargin.getMargin(kMarginLeft) + mMargin.getMargin(kMarginRight);
- }
- else{
- return mMargin.getMargin(kMarginTop) + mMargin.getMargin(kMarginBottom);
- }
- }
- };
- }
- #endif
- #endif
|