123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646 |
- /****************************************************************************
- Copyright (c) 2008-2010 Ricardo Quesada
- Copyright (c) 2010-2012 cocos2d-x.org
- Copyright (c) 2011 Zynga Inc.
- Copyright (c) 2013-2016 Chukong Technologies Inc.
- Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
- http://www.cocos2d-x.org
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- ****************************************************************************/
- #ifndef __BASE_CCTYPES_H__
- #define __BASE_CCTYPES_H__
- #include <string>
- #include "math/CCGeometry.h"
- #include "math/CCMath.h"
- #include "base/CCRef.h"
- #include "platform/CCGL.h"
- /**
- * @addtogroup base
- * @{
- */
- NS_CC_BEGIN
- struct Color4B;
- struct Color4F;
- /**
- * RGB color composed of bytes 3 bytes.
- * @since v3.0
- */
- struct CC_DLL Color3B
- {
- Color3B();
- Color3B(GLubyte _r, GLubyte _g, GLubyte _b);
- explicit Color3B(const Color4B& color);
- explicit Color3B(const Color4F& color);
- bool operator==(const Color3B& right) const;
- bool operator==(const Color4B& right) const;
- bool operator==(const Color4F& right) const;
- bool operator!=(const Color3B& right) const;
- bool operator!=(const Color4B& right) const;
- bool operator!=(const Color4F& right) const;
- bool equals(const Color3B& other) const
- {
- return (*this == other);
- }
- GLubyte r;
- GLubyte g;
- GLubyte b;
- static const Color3B WHITE;
- static const Color3B YELLOW;
- static const Color3B BLUE;
- static const Color3B GREEN;
- static const Color3B RED;
- static const Color3B MAGENTA;
- static const Color3B BLACK;
- static const Color3B ORANGE;
- static const Color3B GRAY;
- };
- /**
- * RGBA color composed of 4 bytes.
- * @since v3.0
- */
- struct CC_DLL Color4B
- {
- Color4B();
- Color4B(GLubyte _r, GLubyte _g, GLubyte _b, GLubyte _a);
- explicit Color4B(const Color3B& color, GLubyte _a = 255);
- explicit Color4B(const Color4F& color);
-
- inline void set(GLubyte _r, GLubyte _g, GLubyte _b, GLubyte _a)
- {
- r = _r;
- g = _g;
- b = _b;
- a = _a;
- }
- bool operator==(const Color4B& right) const;
- bool operator==(const Color3B& right) const;
- bool operator==(const Color4F& right) const;
- bool operator!=(const Color4B& right) const;
- bool operator!=(const Color3B& right) const;
- bool operator!=(const Color4F& right) const;
- GLubyte r;
- GLubyte g;
- GLubyte b;
- GLubyte a;
- static const Color4B WHITE;
- static const Color4B YELLOW;
- static const Color4B BLUE;
- static const Color4B GREEN;
- static const Color4B RED;
- static const Color4B MAGENTA;
- static const Color4B BLACK;
- static const Color4B ORANGE;
- static const Color4B GRAY;
- };
- /**
- * RGBA color composed of 4 floats.
- * @since v3.0
- */
- struct CC_DLL Color4F
- {
- Color4F();
- Color4F(float _r, float _g, float _b, float _a);
- explicit Color4F(const Color3B& color, float _a = 1.0f);
- explicit Color4F(const Color4B& color);
- bool operator==(const Color4F& right) const;
- bool operator==(const Color3B& right) const;
- bool operator==(const Color4B& right) const;
- bool operator!=(const Color4F& right) const;
- bool operator!=(const Color3B& right) const;
- bool operator!=(const Color4B& right) const;
- bool equals(const Color4F &other) const
- {
- return (*this == other);
- }
- GLfloat r;
- GLfloat g;
- GLfloat b;
- GLfloat a;
- static const Color4F WHITE;
- static const Color4F YELLOW;
- static const Color4F BLUE;
- static const Color4F GREEN;
- static const Color4F RED;
- static const Color4F MAGENTA;
- static const Color4F BLACK;
- static const Color4F ORANGE;
- static const Color4F GRAY;
- };
- Color4F& operator+=(Color4F& lhs, const Color4F& rhs);
- Color4F operator+(Color4F lhs, const Color4F& rhs);
- Color4F& operator-=(Color4F& lhs, const Color4F& rhs);
- Color4F operator-(Color4F lhs, const Color4F& rhs);
- Color4F& operator*=(Color4F& lhs, const Color4F& rhs);
- Color4F operator*(Color4F lhs, const Color4F& rhs);
- Color4F& operator*=(Color4F& lhs, float rhs);
- Color4F operator*(Color4F lhs, float rhs);
- Color4F& operator/=(Color4F& lhs, const Color4F& rhs);
- Color4F operator/(Color4F lhs, const Color4F& rhs);
- Color4F& operator/=(Color4F& lhs, float rhs);
- Color4F operator/(Color4F lhs, float rhs);
- /** A vertex composed of 2 floats: x, y
- @since v3.0
- */
- // struct Vertex2F
- // {
- // Vertex2F(float _x, float _y) :x(_x), y(_y) {}
- // Vertex2F(): x(0.f), y(0.f) {}
- // GLfloat x;
- // GLfloat y;
- // };
- /** A vertex composed of 2 floats: x, y
- @since v3.0
- */
- // struct Vertex3F
- // {
- // Vertex3F(float _x, float _y, float _z)
- // : x(_x)
- // , y(_y)
- // , z(_z)
- // {}
- // Vertex3F(): x(0.f), y(0.f), z(0.f) {}
- // GLfloat x;
- // GLfloat y;
- // GLfloat z;
- // };
- /** @struct Tex2F
- * A TEXCOORD composed of 2 floats: u, y
- * @since v3.0
- */
- struct CC_DLL Tex2F {
- Tex2F(float _u, float _v): u(_u), v(_v) {}
- Tex2F(): u(0.f), v(0.f) {}
- GLfloat u;
- GLfloat v;
- };
- /** @struct PointSprite
- * Vec2 Sprite component.
- */
- struct CC_DLL PointSprite
- {
- Vec2 pos; // 8 bytes
- Color4B color; // 4 bytes
- GLfloat size; // 4 bytes
- };
- /** @struct Quad2
- * A 2D Quad. 4 * 2 floats.
- */
- struct CC_DLL Quad2
- {
- Vec2 tl;
- Vec2 tr;
- Vec2 bl;
- Vec2 br;
- };
- /** @struct Quad3
- * A 3D Quad. 4 * 3 floats.
- */
- struct CC_DLL Quad3 {
- Vec3 bl;
- Vec3 br;
- Vec3 tl;
- Vec3 tr;
- };
- /** @struct V2F_C4B_T2F
- * A Vec2 with a vertex point, a tex coord point and a color 4B.
- */
- struct V2F_C4B_T2F
- {
- /// vertices (2F)
- Vec2 vertices;
- /// colors (4B)
- Color4B colors;
- /// tex coords (2F)
- Tex2F texCoords;
- };
- /** @struct V2F_C4B_PF
- *
- */
- struct V2F_C4B_PF
- {
- /// vertices (2F)
- Vec2 vertices;
- /// colors (4B)
- Color4B colors;
- /// pointsize
- float pointSize;
- };
- /** @struct V2F_C4F_T2F
- * A Vec2 with a vertex point, a tex coord point and a color 4F.
- */
- struct CC_DLL V2F_C4F_T2F
- {
- /// vertices (2F)
- Vec2 vertices;
- /// colors (4F)
- Color4F colors;
- /// tex coords (2F)
- Tex2F texCoords;
- };
- /** @struct V3F_C4B_T2F
- * A Vec2 with a vertex point, a tex coord point and a color 4B.
- */
- struct CC_DLL V3F_C4B_T2F
- {
- /// vertices (3F)
- Vec3 vertices; // 12 bytes
- /// colors (4B)
- Color4B colors; // 4 bytes
- // tex coords (2F)
- Tex2F texCoords; // 8 bytes
- };
- /** @struct V3F_T2F
- * A Vec2 with a vertex point, a tex coord point.
- */
- struct CC_DLL V3F_T2F
- {
- /// vertices (2F)
- Vec3 vertices;
- /// tex coords (2F)
- Tex2F texCoords;
- };
- /** @struct V2F_C4B_T2F_Triangle
- * A Triangle of V2F_C4B_T2F.
- */
- struct CC_DLL V2F_C4B_T2F_Triangle
- {
- V2F_C4B_T2F a;
- V2F_C4B_T2F b;
- V2F_C4B_T2F c;
- };
- /** @struct V2F_C4B_T2F_Quad
- * A Quad of V2F_C4B_T2F.
- */
- struct CC_DLL V2F_C4B_T2F_Quad
- {
- /// bottom left
- V2F_C4B_T2F bl;
- /// bottom right
- V2F_C4B_T2F br;
- /// top left
- V2F_C4B_T2F tl;
- /// top right
- V2F_C4B_T2F tr;
- };
- /** @struct V3F_C4B_T2F_Quad
- * 4 Vertex3FTex2FColor4B.
- */
- struct CC_DLL V3F_C4B_T2F_Quad
- {
- /// top left
- V3F_C4B_T2F tl;
- /// bottom left
- V3F_C4B_T2F bl;
- /// top right
- V3F_C4B_T2F tr;
- /// bottom right
- V3F_C4B_T2F br;
- };
- /** @struct V2F_C4F_T2F_Quad
- * 4 Vertex2FTex2FColor4F Quad.
- */
- struct CC_DLL V2F_C4F_T2F_Quad
- {
- /// bottom left
- V2F_C4F_T2F bl;
- /// bottom right
- V2F_C4F_T2F br;
- /// top left
- V2F_C4F_T2F tl;
- /// top right
- V2F_C4F_T2F tr;
- };
- /** @struct V3F_T2F_Quad
- *
- */
- struct CC_DLL V3F_T2F_Quad
- {
- /// bottom left
- V3F_T2F bl;
- /// bottom right
- V3F_T2F br;
- /// top left
- V3F_T2F tl;
- /// top right
- V3F_T2F tr;
- };
- /** @struct BlendFunc
- * Blend Function used for textures.
- */
- struct CC_DLL BlendFunc
- {
- /** source blend function */
- GLenum src;
- /** destination blend function */
- GLenum dst;
- /** Blending disabled. Uses {GL_ONE, GL_ZERO} */
- static const BlendFunc DISABLE;
- /** Blending enabled for textures with Alpha premultiplied. Uses {GL_ONE, GL_ONE_MINUS_SRC_ALPHA} */
- static const BlendFunc ALPHA_PREMULTIPLIED;
- /** Blending enabled for textures with Alpha NON premultiplied. Uses {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA} */
- static const BlendFunc ALPHA_NON_PREMULTIPLIED;
- /** Enables Additive blending. Uses {GL_SRC_ALPHA, GL_ONE} */
- static const BlendFunc ADDITIVE;
- bool operator==(const BlendFunc &a) const
- {
- return src == a.src && dst == a.dst;
- }
- bool operator!=(const BlendFunc &a) const
- {
- return src != a.src || dst != a.dst;
- }
- bool operator<(const BlendFunc &a) const
- {
- return src < a.src || (src == a.src && dst < a.dst);
- }
- };
- /** @enum TextVAlignment
- * Vertical text alignment type.
- *
- * @note If any of these enums are edited and/or reordered, update Texture2D.m.
- */
- enum class CC_DLL TextVAlignment
- {
- TOP,
- CENTER,
- BOTTOM
- };
- /** @enum TextHAlignment
- * Horizontal text alignment type.
- *
- * @note If any of these enums are edited and/or reordered, update Texture2D.m.
- */
- enum class CC_DLL TextHAlignment
- {
- LEFT,
- CENTER,
- RIGHT
- };
- /**
- * @brief Possible GlyphCollection used by Label.
- *
- * Specify a collections of characters to be load when Label created.
- * Consider using DYNAMIC.
- */
- enum class GlyphCollection {
- DYNAMIC,
- NEHE,
- ASCII,
- CUSTOM
- };
- // Types for animation in particle systems
- /** @struct T2F_Quad
- * Texture coordinates for a quad.
- */
- struct CC_DLL T2F_Quad
- {
- /// bottom left
- Tex2F bl;
- /// bottom right
- Tex2F br;
- /// top left
- Tex2F tl;
- /// top right
- Tex2F tr;
- };
- /** @struct AnimationFrameData
- * Struct that holds the size in pixels, texture coordinates and delays for animated ParticleSystemQuad.
- */
- struct CC_DLL AnimationFrameData
- {
- T2F_Quad texCoords;
- float delay;
- Size size;
- };
- /**
- types used for defining fonts properties (i.e. font name, size, stroke or shadow)
- */
- /** @struct FontShadow
- * Shadow attributes.
- */
- struct CC_DLL FontShadow
- {
- public:
- // shadow is not enabled by default
- FontShadow()
- : _shadowEnabled(false)
- , _shadowBlur(0)
- , _shadowOpacity(0)
- {}
- /// true if shadow enabled
- bool _shadowEnabled;
- /// shadow x and y offset
- Size _shadowOffset;
- /// shadow blurriness
- float _shadowBlur;
- /// shadow opacity
- float _shadowOpacity;
- };
- /** @struct FontStroke
- * Stroke attributes.
- */
- struct CC_DLL FontStroke
- {
- public:
- // stroke is disabled by default
- FontStroke()
- : _strokeEnabled(false)
- , _strokeColor(Color3B::BLACK)
- , _strokeAlpha(255)
- , _strokeSize(0)
- {}
- /// true if stroke enabled
- bool _strokeEnabled;
- /// stroke color
- Color3B _strokeColor;
- /// stroke alpha
- GLubyte _strokeAlpha;
- /// stroke size
- float _strokeSize;
- };
- /** @struct FontDefinition
- * Font attributes.
- */
- struct CC_DLL FontDefinition
- {
- public:
- /**
- * @js NA
- * @lua NA
- */
- FontDefinition()
- : _fontSize(0)
- , _alignment(TextHAlignment::CENTER)
- , _vertAlignment(TextVAlignment::TOP)
- , _dimensions(Size::ZERO)
- , _fontFillColor(Color3B::WHITE)
- , _fontAlpha(255)
- , _enableWrap(true)
- , _overflow(0)
- {}
- /// font name
- std::string _fontName;
- /// font size
- int _fontSize;
- /// horizontal alignment
- TextHAlignment _alignment;
- /// vertical alignment
- TextVAlignment _vertAlignment;
- /// rendering box
- Size _dimensions;
- /// font color
- Color3B _fontFillColor;
- /// font alpha
- GLubyte _fontAlpha;
- /// font shadow
- FontShadow _shadow;
- /// font stroke
- FontStroke _stroke;
- /// enable text wrap
- bool _enableWrap;
- /** There are 4 overflows: none, clamp, shrink and resize_height.
- * The corresponding integer values are 0, 1, 2, 3 respectively
- * For more information, please refer to Label::Overflow enum class.
- */
- int _overflow;
- };
- /**
- * @brief Effects used by `Label`
- *
- */
- enum class LabelEffect {
- // FIXME: Covert them to bitwise. More than one effect should be supported
- NORMAL,
- OUTLINE,
- SHADOW,
- GLOW,
- ITALICS,
- BOLD,
- UNDERLINE,
- STRIKETHROUGH,
- ALL
- };
- /** @struct Acceleration
- * The device accelerometer reports values for each axis in units of g-force.
- */
- class CC_DLL Acceleration
- : public Ref
- {
- public:
- double x;
- double y;
- double z;
- double timestamp;
- Acceleration(): x(0), y(0), z(0), timestamp(0) {}
- };
- extern const std::string CC_DLL STD_STRING_EMPTY;
- extern const ssize_t CC_DLL CC_INVALID_INDEX;
- enum class SetIntervalReason : char
- {
- BY_GAME = 0,
- BY_ENGINE,
- BY_SYSTEM,
- BY_SCENE_CHANGE,
- BY_DIRECTOR_PAUSE
- };
- NS_CC_END
- // end group
- /// @}
- #endif //__BASE_CCTYPES_H__
|