RepositoryModule_host.mk | 1 chart2/source/view/inc/AbstractShapeFactory.hxx | 57 chart2/source/view/inc/OpenglShapeFactory.hxx | 10 chart2/source/view/inc/ShapeFactory.hxx | 10 chart2/source/view/main/OpenGLRender.cxx | 27 chart2/source/view/main/OpenGLRender.hxx | 18 chart2/source/view/main/OpenglShapeFactory.cxx | 17 chart2/source/view/main/ShapeFactory.cxx | 20 external/Module_external.mk | 1 external/glm/Makefile | 7 external/glm/Module_glm.mk | 20 external/glm/README | 3 external/glm/UnpackedTarball_glm.mk | 16 external/glm/Wshadow-unix.patch | 2659 ++++++++++++++++++++++++ external/glm/Wshadow-windows.patch | 2659 ++++++++++++++++++++++++ glm/Makefile | 7 glm/Module_glm.mk | 20 glm/README | 3 glm/UnpackedTarball_glm.mk | 16 glm/Wshadow-unix.patch | 2659 ------------------------ glm/Wshadow-windows.patch | 2659 ------------------------ 21 files changed, 5408 insertions(+), 5481 deletions(-)
New commits: commit 9570105dbc0655d89c1b868c2680b99a3ff01187 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Jan 5 13:14:50 2014 +0100 move glm to external Change-Id: Ifa9584ab86c2ca02b2b62fb95a2c029a278aea9a diff --git a/RepositoryModule_host.mk b/RepositoryModule_host.mk index 282be47..91141f1 100644 --- a/RepositoryModule_host.mk +++ b/RepositoryModule_host.mk @@ -73,7 +73,6 @@ $(eval $(call gb_Module_add_moduledirs,libreoffice,\ linguistic \ lotuswordpro \ $(call gb_Helper_optional,DESKTOP,l10ntools) \ - $(call gb_Helper_optional,GLM,glm) \ $(call gb_Helper_optional,MARIADBC,mysqlc) \ $(call gb_Helper_optional,NLPSOLVER,nlpsolver) \ o3tl \ diff --git a/external/Module_external.mk b/external/Module_external.mk index dcd5b08..d4a28cc 100644 --- a/external/Module_external.mk +++ b/external/Module_external.mk @@ -40,6 +40,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\ $(call gb_Helper_optional,FONTCONFIG,fontconfig) \ $(call gb_Helper_optional,FREEHAND,libfreehand) \ $(call gb_Helper_optional,FREETYPE,freetype) \ + $(call gb_Helper_optional,GLM,glm) \ $(call gb_Helper_optional,GRAPHITE,graphite) \ $(call gb_Helper_optional,HARFBUZZ,harfbuzz) \ $(call gb_Helper_optional,HSQLDB,hsqldb) \ diff --git a/glm/Makefile b/external/glm/Makefile similarity index 100% rename from glm/Makefile rename to external/glm/Makefile diff --git a/glm/Module_glm.mk b/external/glm/Module_glm.mk similarity index 100% rename from glm/Module_glm.mk rename to external/glm/Module_glm.mk diff --git a/glm/README b/external/glm/README similarity index 100% rename from glm/README rename to external/glm/README diff --git a/glm/UnpackedTarball_glm.mk b/external/glm/UnpackedTarball_glm.mk similarity index 100% rename from glm/UnpackedTarball_glm.mk rename to external/glm/UnpackedTarball_glm.mk diff --git a/glm/Wshadow-unix.patch b/external/glm/Wshadow-unix.patch similarity index 100% rename from glm/Wshadow-unix.patch rename to external/glm/Wshadow-unix.patch diff --git a/glm/Wshadow-windows.patch b/external/glm/Wshadow-windows.patch similarity index 100% rename from glm/Wshadow-windows.patch rename to external/glm/Wshadow-windows.patch commit 5278233d74e545ec29b54a1f82dd666d4f9549cd Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Jan 5 08:36:59 2014 +0100 remove methods for old stateful time based approach Change-Id: I0fe6090c055f3c6ab1e89930a7cdfb928924c04c diff --git a/chart2/source/view/inc/AbstractShapeFactory.hxx b/chart2/source/view/inc/AbstractShapeFactory.hxx index b0bf8f4..08c2a11 100644 --- a/chart2/source/view/inc/AbstractShapeFactory.hxx +++ b/chart2/source/view/inc/AbstractShapeFactory.hxx @@ -241,56 +241,45 @@ public: */ virtual void render(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > xRootShape) = 0; - - virtual void createSeries( const com::sun::star::uno::Reference< - com::sun::star::drawing::XShapes> & xTarget, - const DataSeriesState& rSeriesState ) = 0; - - virtual void renderSeries( const com::sun::star::uno::Reference< - com::sun::star::drawing::XShapes> & xTarget, - const DataSeriesState& rOldSeriesState, - const DataSeriesState& rNewSeriesState, - double nPercent ) = 0; - static ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > getChartRootShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage>& xPage ); //------ static void makeShapeInvisible( const ::com::sun::star::uno::Reference< - ::com::sun::star::drawing::XShape >& xShape ); + ::com::sun::star::drawing::XShape >& xShape ); - static void setShapeName( const ::com::sun::star::uno::Reference< - ::com::sun::star::drawing::XShape >& xShape - , const OUString& rName ); + static void setShapeName( const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::XShape >& xShape + , const OUString& rName ); - static OUString getShapeName( const ::com::sun::star::uno::Reference< - ::com::sun::star::drawing::XShape >& xShape ); + static OUString getShapeName( const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::XShape >& xShape ); - static ::com::sun::star::uno::Any makeTransformation( const ::com::sun::star::awt::Point& rScreenPosition2D, double fRotationAnglePi=0.0 ); + static ::com::sun::star::uno::Any makeTransformation( const ::com::sun::star::awt::Point& rScreenPosition2D, double fRotationAnglePi=0.0 ); - static OUString getStackedString( const OUString& rString, bool bStacked=true ); + static OUString getStackedString( const OUString& rString, bool bStacked=true ); - static bool hasPolygonAnyLines( ::com::sun::star::drawing::PolyPolygonShape3D& rPoly ); - static bool isPolygonEmptyOrSinglePoint( ::com::sun::star::drawing::PolyPolygonShape3D& rPoly ); - static void closePolygon( ::com::sun::star::drawing::PolyPolygonShape3D& rPoly ); + static bool hasPolygonAnyLines( ::com::sun::star::drawing::PolyPolygonShape3D& rPoly ); + static bool isPolygonEmptyOrSinglePoint( ::com::sun::star::drawing::PolyPolygonShape3D& rPoly ); + static void closePolygon( ::com::sun::star::drawing::PolyPolygonShape3D& rPoly ); - static ::com::sun::star::awt::Size calculateNewSizeRespectingAspectRatio( - const ::com::sun::star::awt::Size& rTargetSize - , const ::com::sun::star::awt::Size& rSourceSizeWithCorrectAspectRatio ); + static ::com::sun::star::awt::Size calculateNewSizeRespectingAspectRatio( + const ::com::sun::star::awt::Size& rTargetSize + , const ::com::sun::star::awt::Size& rSourceSizeWithCorrectAspectRatio ); - static ::com::sun::star::awt::Point calculateTopLeftPositionToCenterObject( - const ::com::sun::star::awt::Point& rTargetAreaPosition - , const ::com::sun::star::awt::Size& rTargetAreaSize - , const ::com::sun::star::awt::Size& rObjectSize ); + static ::com::sun::star::awt::Point calculateTopLeftPositionToCenterObject( + const ::com::sun::star::awt::Point& rTargetAreaPosition + , const ::com::sun::star::awt::Size& rTargetAreaSize + , const ::com::sun::star::awt::Size& rObjectSize ); - static ::basegfx::B2IRectangle getRectangleOfShape( - const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ); + static ::basegfx::B2IRectangle getRectangleOfShape( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ); - static ::com::sun::star::awt::Size getSizeAfterRotation( - const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape, double fRotationAngleDegree ); + static ::com::sun::star::awt::Size getSizeAfterRotation( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape, double fRotationAngleDegree ); - static void removeSubShapes( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xShapes ); + static void removeSubShapes( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xShapes ); }; diff --git a/chart2/source/view/inc/OpenglShapeFactory.hxx b/chart2/source/view/inc/OpenglShapeFactory.hxx index 313deef..4f7c624 100644 --- a/chart2/source/view/inc/OpenglShapeFactory.hxx +++ b/chart2/source/view/inc/OpenglShapeFactory.hxx @@ -177,16 +177,6 @@ public: const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget ); - virtual void createSeries( const com::sun::star::uno::Reference< - com::sun::star::drawing::XShapes> & xTarget, - const DataSeriesState& rSeriesState ); - - virtual void renderSeries( const com::sun::star::uno::Reference< - com::sun::star::drawing::XShapes> & xTarget, - const DataSeriesState& rOldSeriesState, - const DataSeriesState& rNewSeriesState, - double nPercent ); - virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > getOrCreateChartRootShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage>& xPage ); diff --git a/chart2/source/view/inc/ShapeFactory.hxx b/chart2/source/view/inc/ShapeFactory.hxx index 614b13f..5c5dc22 100644 --- a/chart2/source/view/inc/ShapeFactory.hxx +++ b/chart2/source/view/inc/ShapeFactory.hxx @@ -189,16 +189,6 @@ public: const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget ); - virtual void createSeries( const com::sun::star::uno::Reference< - com::sun::star::drawing::XShapes> & xTarget, - const DataSeriesState& rSeriesState ); - - virtual void renderSeries( const com::sun::star::uno::Reference< - com::sun::star::drawing::XShapes> & xTarget, - const DataSeriesState& rOldSeriesState, - const DataSeriesState& rNewSeriesState, - double nPercent ); - virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > getOrCreateChartRootShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage>& xPage ); diff --git a/chart2/source/view/main/OpenglShapeFactory.cxx b/chart2/source/view/main/OpenglShapeFactory.cxx index b5f2cb9..e5cd043 100644 --- a/chart2/source/view/main/OpenglShapeFactory.cxx +++ b/chart2/source/view/main/OpenglShapeFactory.cxx @@ -421,22 +421,6 @@ uno::Reference< drawing::XShape > return uno::Reference< drawing::XShape >(); } -void OpenglShapeFactory::createSeries( const uno::Reference< - drawing::XShapes> & , - const DataSeriesState& ) -{ - SAL_WARN("chart2.opengl", "OpenglShapeFactory::createSeries()-----test:"); -} - -void OpenglShapeFactory::renderSeries( const uno::Reference< - drawing::XShapes> & , - const DataSeriesState& , - const DataSeriesState&, - double ) -{ - SAL_WARN("chart2.opengl", "OpenglShapeFactory::renderSeries()-----test:"); -} - void OpenglShapeFactory::render(uno::Reference< drawing::XShapes > xRootShape) { dummy::DummyChart* pChart = dynamic_cast<dummy::DummyChart*>(xRootShape.get()); diff --git a/chart2/source/view/main/ShapeFactory.cxx b/chart2/source/view/main/ShapeFactory.cxx index 17a89cb..6a595e1 100644 --- a/chart2/source/view/main/ShapeFactory.cxx +++ b/chart2/source/view/main/ShapeFactory.cxx @@ -2123,26 +2123,6 @@ uno::Reference< drawing::XShape > return xShape; } -void ShapeFactory::createSeries( const uno::Reference< - drawing::XShapes> & , - const DataSeriesState& ) -{ - // unsupported for now - throw uno::RuntimeException(); -} - -void ShapeFactory::renderSeries( const uno::Reference< - drawing::XShapes> & , - const DataSeriesState& , - const DataSeriesState&, - double ) -{ - // unsupported for now - // do we actually want to support this in the normal - // rendering code? - throw uno::RuntimeException(); -} - uno::Reference< drawing::XShape > ShapeFactory::createText( const uno::Reference< drawing::XShapes >& xTarget, const awt::Size& rSize, commit 6c1159ef3e25740183792eeed7bb9818588e256f Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Jan 5 08:32:26 2014 +0100 remove more debug output Change-Id: Ibde24714f37854b8996d3a37d86f64cb987d8d95 diff --git a/chart2/source/view/main/OpenglShapeFactory.cxx b/chart2/source/view/main/OpenglShapeFactory.cxx index 7008777..b5f2cb9 100644 --- a/chart2/source/view/main/OpenglShapeFactory.cxx +++ b/chart2/source/view/main/OpenglShapeFactory.cxx @@ -348,7 +348,6 @@ uno::Reference< drawing::XShape > , const drawing::PointSequenceSequence& rPoints , const VLineProperties* pLineProperties ) { - SAL_WARN("chart2.opengl", "OpenglShapeFactory::createLine2D()-----test:"); dummy::DummyLine2D* pLine = new dummy::DummyLine2D(rPoints, pLineProperties); xTarget->add(pLine); commit 298c39d8d60ba0f582719ac0ecc49005f7d5116c Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Jan 5 08:17:06 2014 +0100 don't use these using statements in a header Change-Id: Iebf9af6996a2c07a20488404b0078b4a309223f4 diff --git a/chart2/source/view/main/OpenGLRender.hxx b/chart2/source/view/main/OpenGLRender.hxx index c78e2c8..b5a8f0e 100644 --- a/chart2/source/view/main/OpenGLRender.hxx +++ b/chart2/source/view/main/OpenGLRender.hxx @@ -54,10 +54,6 @@ namespace unx #define OPENGL_SCALE_VALUE 20 -using namespace std; -using namespace ::com::sun::star; -using ::com::sun::star::uno::Reference; - typedef struct PosVeci3 { int x; @@ -180,7 +176,8 @@ public: int RenderRectangleShape(); int RectangleShapePoint(float x, float y, float directionX, float directionY); - int CreateTextTexture(::rtl::OUString textValue, sal_uInt32 color, const Font& rFont, awt::Point aPos, awt::Size aSize, long rotation); + int CreateTextTexture(::rtl::OUString textValue, sal_uInt32 color, const Font& rFont, + com::sun::star::awt::Point aPos, com::sun::star::awt::Size aSize, long rotation); int RenderTextShape(); int SetArea2DShapePoint(float x, float y, int listLength); @@ -275,7 +272,7 @@ private: float m_fLineAlpha; - list <Line2DPointList> m_Line2DShapePointList; + std::list <Line2DPointList> m_Line2DShapePointList; com::sun::star::uno::Reference< com::sun::star::drawing::XShape > mxRenderTarget; int m_iArbMultisampleSupported; @@ -300,7 +297,7 @@ private: Bubble2DPointList m_Bubble2DPointList; - list <Bubble2DPointList> m_Bubble2DShapePointList; + std::list <Bubble2DPointList> m_Bubble2DShapePointList; GLint m_CommonProID; GLint m_2DVertexID; GLint m_2DColorID; @@ -312,10 +309,10 @@ private: RectanglePointList m_RectangleList; - list <RectanglePointList> m_RectangleShapePointList; + std::list <RectanglePointList> m_RectangleShapePointList; // add for text TextInfo m_TextInfo; - list <TextInfo> m_TextInfoList; + std::list <TextInfo> m_TextInfoList; GLint m_TextProID; GLint m_TextMatrixID; GLint m_TextVertexID; @@ -324,7 +321,7 @@ private: GLint m_TextTexID; Area2DPointList m_Area2DPointList; - list <Area2DPointList> m_Area2DShapePointList; + std::list <Area2DPointList> m_Area2DShapePointList; }; commit e74253e402aa51e0335ddbdbd7778424cf2cd154 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Jan 5 08:15:57 2014 +0100 remove BMP define from header file Change-Id: I5037971e1fa55d5c7bd17502639d09f7943c9327 diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx index e22b73e..439358c 100644 --- a/chart2/source/view/main/OpenGLRender.cxx +++ b/chart2/source/view/main/OpenGLRender.cxx @@ -47,6 +47,7 @@ using namespace com::sun::star; using namespace std; #define RENDER_TO_FILE 0 +#define BMP_HEADER_LEN 54 #define OPENGL_SHADER( ... )# __VA_ARGS__ diff --git a/chart2/source/view/main/OpenGLRender.hxx b/chart2/source/view/main/OpenGLRender.hxx index d7ebfe1..c78e2c8 100644 --- a/chart2/source/view/main/OpenGLRender.hxx +++ b/chart2/source/view/main/OpenGLRender.hxx @@ -52,7 +52,6 @@ namespace unx #include "glm/gtx/euler_angles.hpp" #include "glm/gtx/quaternion.hpp" -#define BMP_HEADER_LEN 54 #define OPENGL_SCALE_VALUE 20 using namespace std; commit efcb29ea86333dba3c74c082c2362d9118f4b1b0 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Jan 5 08:12:20 2014 +0100 make OpenGLRender.cxx cout free Change-Id: I7b6a349910119bbf525f4253a7d8d62fee37b80b diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx index 3b59037..e22b73e 100644 --- a/chart2/source/view/main/OpenGLRender.cxx +++ b/chart2/source/view/main/OpenGLRender.cxx @@ -291,10 +291,10 @@ GLint OpenGLRender::LoadShaders(const char *vertexShader,const char *fragmentSha std::vector<char> VertexShaderErrorMessage(InfoLogLength+1); glGetShaderInfoLog(VertexShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]); VertexShaderErrorMessage.push_back('\0'); - cout << "vertex shader compile fail : " << &VertexShaderErrorMessage[0] << endl; + SAL_INFO("chart2.opengl", "vertex shader compile fail : " << &VertexShaderErrorMessage[0]); } else - cout << "vertex shader compile failed without error log" << endl; + SAL_INFO("chart2.opengl", "vertex shader compile failed without error log"); } @@ -314,10 +314,10 @@ GLint OpenGLRender::LoadShaders(const char *vertexShader,const char *fragmentSha std::vector<char> FragmentShaderErrorMessage(InfoLogLength+1); glGetShaderInfoLog(FragmentShaderID, InfoLogLength, NULL, &FragmentShaderErrorMessage[0]); FragmentShaderErrorMessage.push_back('\0'); - cout << "fragment shader compile fail : " << &FragmentShaderErrorMessage[0] << endl; + SAL_INFO("chart2.opengl", "fragment shader compile fail : " << &FragmentShaderErrorMessage[0]); } else - cout << "fragment shader compile failed without error log" << endl; + SAL_INFO("chart2.opengl", "fragment shader compile failed without error log"); } // Link the program @@ -336,10 +336,10 @@ GLint OpenGLRender::LoadShaders(const char *vertexShader,const char *fragmentSha std::vector<char> ProgramErrorMessage(InfoLogLength+1); glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, &ProgramErrorMessage[0]); ProgramErrorMessage.push_back('\0'); - cout << "Shader Program fail : " << &ProgramErrorMessage[0] << endl; + SAL_INFO("chart2.opengl", "Shader Program fail : " << &ProgramErrorMessage[0]); } else - cout << "shader program link failed without error log" << endl; + SAL_INFO("chart2.opengl", "shader program link failed without error log"); } glDeleteShader(VertexShaderID); @@ -354,17 +354,16 @@ int OpenGLRender::InitOpenGL(GLWindow aWindow) glewExperimental = GL_TRUE; if (glewInit() != GLEW_OK) { - cout << "Failed to initialize GLEW" << endl; + SAL_WARN("chart2.opengl", "Failed to initialize GLEW"); return -1; } // These guys don't just check support but setup the vtables. if (glewIsSupported("framebuffer_object") != GLEW_OK) { - cout << "GL stack has no framebuffer support" << endl; + SAL_WARN("chart2.opengl", "GL stack has no framebuffer support"); return -1; } - cerr << "Initialized openGL successfully" << endl; glEnable(GL_TEXTURE_2D); glEnable(GL_CULL_FACE); @@ -586,13 +585,13 @@ void OpenGLRender::renderToBitmap() status = glCheckFramebufferStatus(GL_READ_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { - cout << "The frame buffer status is not complete!" << endl; + SAL_INFO("chart2.opengl", "The frame buffer status is not complete!"); } glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FboID[m_iFboIdx % 2]); status = glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { - cout << "The frame buffer status is not complete!" << endl; + SAL_INFO("chart2.opengl", "The frame buffer status is not complete!"); } glBlitFramebuffer(0, 0 ,m_iWidth, m_iHeight, 0, 0,m_iWidth ,m_iHeight, GL_COLOR_BUFFER_BIT, GL_LINEAR); glBindFramebuffer(GL_READ_FRAMEBUFFER,0); @@ -1555,7 +1554,6 @@ int OpenGLRender::RenderArea2DShape() { glDisable(GL_MULTISAMPLE); int listNum = m_Area2DShapePointList.size(); - cout << "listNum = " << listNum << endl; PosVecf3 trans = {0.0f, 0.0f, 0.0f}; PosVecf3 angle = {0.0f, 0.0f, 0.0f}; PosVecf3 scale = {1.0f, 1.0f, 1.0f}; commit 3cc6a797f29d6a14f1ff8c933a0ea1d9ba01016c Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Jan 5 08:07:33 2014 +0100 use SAL_WARN for error reporting and not cout Change-Id: If9d0def198b230ae4a8b3e335d8a5dac67133b51 diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx index fdc5a16..3b59037 100644 --- a/chart2/source/view/main/OpenGLRender.cxx +++ b/chart2/source/view/main/OpenGLRender.cxx @@ -245,9 +245,9 @@ int static checkGLError(const char *file, int line) const GLubyte* sError = gluErrorString(glErr); if (sError) - cout << "GL Error #" << glErr << "(" << gluErrorString(glErr) << ") " << " in File " << file << " at line: " << line << endl; + SAL_WARN("chart2.opengl", "GL Error #" << glErr << "(" << gluErrorString(glErr) << ") " << " in File " << file << " at line: " << line); else - cout << "GL Error #" << glErr << " (no message available)" << " in File " << file << " at line: " << line << endl; + SAL_WARN("chart2.opengl", "GL Error #" << glErr << " (no message available)" << " in File " << file << " at line: " << line); retCode = -1; return retCode; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits