diff options
author | weigao <weigao@multicorewareinc.com> | 2014-08-26 23:43:11 +0800 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2014-08-27 11:45:42 +0200 |
commit | a670e1596f38572b877c68405b8fd07913c08a05 (patch) | |
tree | ad453101c7be7cd4ce40f2abeee02eea4fe09d0f /chart2 | |
parent | bbd07982002b504545d7e5f01db0f18c53e1a4bf (diff) |
add screen text color set interface
Change-Id: I2407166368b55b973c70a2edc377785b82d8481b
Diffstat (limited to 'chart2')
-rw-r--r-- | chart2/source/view/charttypes/GL3DBarChart.cxx | 12 | ||||
-rw-r--r-- | chart2/source/view/inc/3DChartObjects.hxx | 3 | ||||
-rw-r--r-- | chart2/source/view/inc/GL3DBarChart.hxx | 5 | ||||
-rw-r--r-- | chart2/source/view/inc/GL3DRenderer.hxx | 3 | ||||
-rw-r--r-- | chart2/source/view/main/3DChartObjects.cxx | 7 | ||||
-rw-r--r-- | chart2/source/view/main/GL3DRenderer.cxx | 6 |
6 files changed, 21 insertions, 15 deletions
diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index 38674678a38e..639354f996e3 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -861,7 +861,7 @@ void GL3DBarChart::clickedAt(const Point& rPos, sal_uInt16 nButtons) rBarInfo.maPos.y + BAR_SIZE_Y / 2.0f, rBarInfo.maPos.z); maShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, - OUString("Value: ") + OUString::number(rBarInfo.mnVal), CALC_POS_EVENT_ID)); + OUString("Value: ") + OUString::number(rBarInfo.mnVal), glm::vec4(0.0f, 0.0f, 1.0f, 1.0f), CALC_POS_EVENT_ID)); opengl3D::ScreenText* pScreenText = static_cast<opengl3D::ScreenText*>(&maShapes.back()); pScreenText->setPosition(glm::vec2(-0.9f, 0.9f), glm::vec2(-0.6f, 0.8f), aTextPos); pScreenText->render(); @@ -995,9 +995,9 @@ void GL3DBarChart::contextDestroyed() mbValidContext = false; } -void GL3DBarChart::addScreenTextShape(OUString &nStr, glm::vec2 rLeftTop, float nTextHeight, const glm::vec3& rPos, sal_uInt32 nEvent) +void GL3DBarChart::addScreenTextShape(OUString &nStr, glm::vec2 rLeftTop, float nTextHeight, const glm::vec3& rPos, const glm::vec4& rColor, sal_uInt32 nEvent) { - maScreenTextShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, nStr, nEvent)); + maScreenTextShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, nStr, rColor, nEvent)); const opengl3D::TextCacheItem& rTextCache = mpTextCache->getText(nStr); float nRectWidth = (float)rTextCache.maSize.Width() / (float)rTextCache.maSize.Height() * nTextHeight / 2.0f; opengl3D::ScreenText* pScreenText = static_cast<opengl3D::ScreenText*>(&maScreenTextShapes.back()); @@ -1017,7 +1017,7 @@ void GL3DBarChart::updateRenderFPS() osl_getSystemTime(&maFPSRenderStartTime); } osl_getSystemTime(&maFPSRenderEndTime); - addScreenTextShape(maFPS, glm::vec2(-0.99f, 0.99f), 0.06f); + addScreenTextShape(maFPS, glm::vec2(-0.99f, 0.99f), 0.06f, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec4(1.0f, 0.0f, 0.0f, 1.0f)); } int GL3DBarChart::calcTimeInterval(TimeValue &startTime, TimeValue &endTime) @@ -1085,7 +1085,7 @@ void GL3DBarChart::updateClickEvent() if (idex + 1 == aList.size()) { aBarValue = OUString("Value: ") + OUString::number(*it); - maScreenTextShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, aBarValue, CALC_POS_EVENT_ID)); + maScreenTextShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, aBarValue, glm::vec4(0.0f, 0.0f, 1.0f, 1.0f), CALC_POS_EVENT_ID)); const opengl3D::TextCacheItem& rTextCache = mpTextCache->getText(aBarValue); float nRectWidth = (float)rTextCache.maSize.Width() / (float)rTextCache.maSize.Height() * 0.03; std::map<sal_uInt32, const BarInformation>::const_iterator itr = maBarMap.find(nBarId); @@ -1226,7 +1226,7 @@ void GL3DBarChart::updateScroll() for(size_t i = 0; i < aBarInfoList.size(); i++) { OUString aBarValue = OUString("Value: ") + OUString::number(aBarInfoList[i].mnVal); - maScreenTextShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, aBarValue, CALC_POS_EVENT_ID)); + maScreenTextShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, aBarValue, glm::vec4(0.0f, 0.0f, 1.0f, 1.0f), CALC_POS_EVENT_ID)); const opengl3D::TextCacheItem& rTextCache = mpTextCache->getText(aBarValue); float nRectWidth = (float)rTextCache.maSize.Width() / (float)rTextCache.maSize.Height() * 0.03; glm::vec3 aTextPos = glm::vec3(aBarInfoList[i].maPos.x + BAR_SIZE_X / 2.0f, diff --git a/chart2/source/view/inc/3DChartObjects.hxx b/chart2/source/view/inc/3DChartObjects.hxx index 9c8bb503c1ca..d3ea915765fe 100644 --- a/chart2/source/view/inc/3DChartObjects.hxx +++ b/chart2/source/view/inc/3DChartObjects.hxx @@ -108,7 +108,7 @@ private: class ScreenText : public Renderable3DObject { public: - ScreenText(OpenGL3DRenderer* pRenderer, TextCache& rTextCache, const OUString& rStr, sal_uInt32 nId); + ScreenText(OpenGL3DRenderer* pRenderer, TextCache& rTextCache, const OUString& rStr, glm::vec4 rColor, sal_uInt32 nId); virtual void render() SAL_OVERRIDE; void setPosition(const glm::vec2& rTopLeft, const glm::vec2& rBottomRight, glm::vec3 r3DPos = glm::vec3(0.0, 0.0, 0.0)); @@ -118,6 +118,7 @@ private: glm::vec2 maTopLeft; glm::vec2 maBottomRight; glm::vec3 ma3DPos; + glm::vec4 maColor; }; class Rectangle : public Renderable3DObject diff --git a/chart2/source/view/inc/GL3DBarChart.hxx b/chart2/source/view/inc/GL3DBarChart.hxx index 0e242739b534..6978947443d7 100644 --- a/chart2/source/view/inc/GL3DBarChart.hxx +++ b/chart2/source/view/inc/GL3DBarChart.hxx @@ -91,7 +91,10 @@ private: void updateDataUpdateFPS(); DECL_LINK(updateTimer, void*); int calcTimeInterval(TimeValue &startTime, TimeValue &endTime); - void addScreenTextShape(OUString &nStr, glm::vec2 rLeftTop, float nTextHeight, const glm::vec3& rPos = glm::vec3(0.0f, 0.0f, 0.0f), sal_uInt32 nEvent = 0); + void addScreenTextShape(OUString &nStr, glm::vec2 rLeftTop, float nTextHeight, + const glm::vec3& rPos = glm::vec3(0.0f, 0.0f, 0.0f), + const glm::vec4& rColor = glm::vec4(0.0f, 0.0f, 1.0f, 1.0f), + sal_uInt32 nEvent = 0); void recordBarHistory(sal_uInt32 &nBarID, float &nVal); void updateClickEvent(); void calcDistance(std::vector<sal_uInt32> &vectorNearest); diff --git a/chart2/source/view/inc/GL3DRenderer.hxx b/chart2/source/view/inc/GL3DRenderer.hxx index 1993a1991901..3be3771803a6 100644 --- a/chart2/source/view/inc/GL3DRenderer.hxx +++ b/chart2/source/view/inc/GL3DRenderer.hxx @@ -142,6 +142,7 @@ struct TextInfo GLuint texture; float vertex[12]; glm::vec3 pos; + glm::vec4 textColor; }; struct TextureArrayInfo @@ -199,7 +200,7 @@ public: sal_uInt32 nUniqueId); void CreateScreenTextTexture(const boost::shared_array<sal_uInt8> &bitmapBuf, ::Size maSizePixels, const glm::vec2& vTopLeft, - const glm::vec2& vBottomRight, glm::vec3 vPos, sal_uInt32 nUniqueId); + const glm::vec2& vBottomRight, glm::vec3 vPos, glm::vec4 screenTextColor, sal_uInt32 nUniqueId); void ProcessUnrenderedShape(bool bNewScene); void SetPickingMode(bool bPickingMode); diff --git a/chart2/source/view/main/3DChartObjects.cxx b/chart2/source/view/main/3DChartObjects.cxx index a045b48d0a12..96763d02215a 100644 --- a/chart2/source/view/main/3DChartObjects.cxx +++ b/chart2/source/view/main/3DChartObjects.cxx @@ -128,9 +128,10 @@ void Text::setPosition(const glm::vec3& rTopLeft, const glm::vec3& rTopRight, co maBottomRight = rBottomRight; } -ScreenText::ScreenText(OpenGL3DRenderer* pRenderer, TextCache& rTextCache, const OUString& rStr, sal_uInt32 nId): +ScreenText::ScreenText(OpenGL3DRenderer* pRenderer, TextCache& rTextCache, const OUString& rStr, glm::vec4 rColor, sal_uInt32 nId): Renderable3DObject(pRenderer, nId), - maText(rTextCache.getText(rStr)) + maText(rTextCache.getText(rStr)), + maColor(rColor) { } @@ -144,7 +145,7 @@ void ScreenText::setPosition(const glm::vec2& rTopLeft, const glm::vec2& rBottom void ScreenText::render() { mpRenderer->CreateScreenTextTexture(maText.maPixels, maText.maSize, - maTopLeft, maBottomRight, ma3DPos, + maTopLeft, maBottomRight, ma3DPos, maColor, mnUniqueId); } diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index 7e823349e01e..9a2bbf22ec64 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -1670,7 +1670,7 @@ void OpenGL3DRenderer::RenderExtrude3DObject() void OpenGL3DRenderer::CreateScreenTextTexture( const boost::shared_array<sal_uInt8> &bitmapBuf, ::Size maSizePixels, const glm::vec2& vTopLeft, - const glm::vec2& vBottomRight, glm::vec3 vPos, sal_uInt32 nUniqueId) + const glm::vec2& vBottomRight, glm::vec3 vPos, glm::vec4 screenTextColor, sal_uInt32 nUniqueId) { long bmpWidth = maSizePixels.Width(); long bmpHeight = maSizePixels.Height(); @@ -1694,6 +1694,7 @@ void OpenGL3DRenderer::CreateScreenTextTexture( aTextInfo.vertex[10] = vBottomRight.y; aTextInfo.vertex[11] = 0; aTextInfo.pos = vPos; + aTextInfo.textColor = screenTextColor; CHECK_GL_ERROR(); glGenTextures(1, &aTextInfo.texture); @@ -1881,8 +1882,6 @@ void OpenGL3DRenderer::ReleaseScreenTextTexture() void OpenGL3DRenderer::RenderScreenTextShape() { glUseProgram(maResources.m_ScreenTextProID); - glm::vec4 textColor = glm::vec4(0.0, 0.0, 1.0, 1.0); - glUniform4fv(maResources.m_ScreenTextColorID, 1, &textColor[0]); CHECK_GL_ERROR(); for (size_t i = 0; i < m_ScreenTextInfoList.size(); i++) { @@ -1910,6 +1909,7 @@ void OpenGL3DRenderer::RenderScreenTextShape() } } } + glUniform4fv(maResources.m_ScreenTextColorID, 1, &textInfo.textColor[0]); glBindBuffer(GL_ARRAY_BUFFER, m_VertexBuffer); CHECK_GL_ERROR(); glBufferData(GL_ARRAY_BUFFER, sizeof(textInfo.vertex), textInfo.vertex, GL_STATIC_DRAW); |