123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
- #ifdef __cplusplus
- #ifndef WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUMS_H
- #define WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUMS_H
- #include "flex_enum.h"
- #include <math.h>
- #include <cmath>
- namespace WeexCore {
- /**
- * Margin: margin-left、margin-right、margin-top、margin-bottom
- */
- 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;
- };
- /**
- * Padding:padding-left、padding-right、padding-top、padding-bottom
- */
- 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;
- };
- /**
- * BorderWidth:borderwidth-left、borderwidth-right、borderwidth-top、borderwidth-bottom
- */
- 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;
- };
- /**
- * position:left、right、top、bottom
- */
- 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
- };
- /**
- * css-style
- */
- class WXCoreCSSStyle {
- public:
- /**
- * The direction children items are placed inside the Flexbox layout, it determines the
- * direction of the main axis (and the cross axis, perpendicular to the main axis).
- * The default value is {@link WXCoreFlexDirection #WXCore_Flex_Direction_Row}.
- */
- WXCoreFlexDirection mFlexDirection;
- /**
- * This attribute controls whether the flex container is single-line or multi-line, and the
- * direction of the cross axis.
- * <ul>
- * <li>{@link WXCoreFlexWrap}: The flex container is single-line.</li>
- * <li>{@link WXCoreFlexWrap}: The flex container is multi-line.</li>
- * <li>{@link WXCoreFlexWrap}: The flex container is multi-line. The direction of the
- * cross axis is opposed to the direction as the {@link WXCoreFlexWrap}</li>
- * </ul>
- * The default value is {@link WXCoreFlexWrap #WXCore_Wrap_NoWrap}.
- */
- WXCoreFlexWrap mFlexWrap;
- /**
- * This attribute controls the alignment along the main axis.
- * The default value is {@link WXCoreJustifyContent #WXCore_Justify_Flex_Start}.
- */
- WXCoreJustifyContent mJustifyContent;
- /**
- * This attribute controls the alignment along the cross axis.
- * The default value is {@link WXCoreAlignItems #WXCore_AlignItems_Stretch}.
- */
- WXCoreAlignItems mAlignItems;
- /**
- * This attribute controls the alignment along the cross axis.
- * The default value is {@link WXCoreAlignSelf #WXCore_AlignSelf_Auto}.
- */
- 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 //WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUMS_H
- #endif
|