chart2/qa/extras/chart2import.cxx | 27 + chart2/qa/extras/data/ods/error_bar_properties.ods |binary chart2/source/controller/chartapiwrapper/TitleWrapper.cxx | 2 chart2/source/tools/ErrorBar.cxx | 2 chart2/source/view/inc/GL3DRenderer.hxx | 23 - chart2/source/view/main/GL3DRenderer.cxx | 183 +++++------- qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXDiagram.csv | 1 sc/qa/unit/data/contentCSV/new_cond_format_test_sheet2.csv | 3 sc/qa/unit/data/xlsx/new_cond_format_test.xlsx |binary sc/qa/unit/subsequent_export-test.cxx | 17 - sc/qa/unit/ucalc.cxx | 38 ++ sc/qa/unit/ucalc.hxx | 2 sc/source/filter/excel/xecontent.cxx | 4 sfx2/source/doc/SfxDocumentMetaData.cxx | 2 test/source/bootstrapfixture.cxx | 2 xmloff/source/chart/SchXMLPlotAreaContext.cxx | 15 16 files changed, 199 insertions(+), 122 deletions(-)
New commits: commit 37555c895319cef08e652dfe259ec50696def779 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Thu May 1 00:26:03 2014 +0200 remove unused code actually I don't want to see the BMP code ever again!! Change-Id: Ia5be607399238e7e71399d109b2cfbfa889e29d1 diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index b25f4a3..e89ff49 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -1314,22 +1314,7 @@ int OpenGL3DRenderer::ProcessExtrude3DPickingBox() //read pixel to get the index Point select = Point(m_aMPos.X(), m_aMPos.Y()); sal_uInt8 selectColor[4] = {0}; -#if 0 - int picWidth = m_iWidth - select.X(); - int picHeight = m_iHeight - select.Y(); - picWidth = (picWidth - 1) & ~3; - picHeight = (picHeight - 1) & ~3; - sal_uInt8 *outBuf = (sal_uInt8 *)malloc(picWidth * picHeight * 3 + BMP_HEADER_LEN); - CreateBMPHeader(outBuf, picWidth, picHeight); - cout << "picWidth = " << picWidth << ", picHeight = " << picHeight << endl; - glReadPixels(select.X(), select.Y(), picWidth, picHeight, GL_RGB, GL_UNSIGNED_BYTE, outBuf + BMP_HEADER_LEN); - char fileName[256] = {0}; - sprintf(fileName, "D:\\boundbox.bmp"); - FILE *pfile = fopen(fileName,"wb"); - fwrite(outBuf, picWidth * picHeight * 3 + BMP_HEADER_LEN, 1, pfile); - fclose(pfile); - cout << "select.x = " << select.X() << ", select.y = " << select.Y() << ", width = " << m_iWidth << ", height = " << m_iHeight << endl; -#endif + glReadPixels(select.X(), select.Y(), 1, 1, GL_RGB, GL_UNSIGNED_BYTE, selectColor); int selectID = GetIndexByColor(selectColor[0], selectColor[1], selectColor[2]); // printf("selectColor[0] = %d, selectColor[1] = %d, selectColor[2] = %d, selectID = %d\n", selectColor[0], selectColor[1], selectColor[2], selectID); commit 1e1c793ab4db7221d4c7591ddba8b998fdeade7c Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Thu May 1 00:24:26 2014 +0200 some small clean-up in new OGL 3D renderer Change-Id: I0415aac374fa9c09c0556147cf07b31d13af46e1 diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index e3a1c10..b25f4a3 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -89,7 +89,6 @@ OpenGL3DRenderer::OpenGL3DRenderer(): } m_uiSelectFrameCounter = 0; - } void OpenGL3DRenderer::LoadShaders() @@ -134,7 +133,6 @@ void OpenGL3DRenderer::init() m_3DProjection = glm::perspective(30.0f, (float)m_iWidth / (float)m_iHeight, 0.01f, 2000.0f); - } int OpenGL3DRenderer::AddVertexData(GLuint vertexBuf) @@ -167,14 +165,18 @@ int OpenGL3DRenderer::AddIndexData(GLuint indexBuf) bool OpenGL3DRenderer::GetSimilarVertexIndex(PackedVertex & packed, std::map<PackedVertex,unsigned short> & VertexToOutIndex, unsigned short & result - ){ - std::map<PackedVertex,unsigned short>::iterator it = VertexToOutIndex.find(packed); - if ( it == VertexToOutIndex.end() ){ - return false; - }else{ - result = it->second; - return true; - } + ) +{ + std::map<PackedVertex,unsigned short>::iterator it = VertexToOutIndex.find(packed); + if ( it == VertexToOutIndex.end() ) + { + return false; + } + else + { + result = it->second; + return true; + } } void OpenGL3DRenderer::SetVertex(PackedVertex &packed, @@ -783,16 +785,16 @@ void OpenGL3DRenderer::EndAddShapePolygon3DObject() } void OpenGL3DRenderer::AddPolygon3DObjectNormalPoint(float x, float y, float z) - { +{ if (m_Polygon3DInfo.fillStyle) { if (!m_Polygon3DInfo.normals) { m_Polygon3DInfo.normals = new Normals3D; } - m_Polygon3DInfo.normals->push_back(glm::vec3(x, -y, z)); + m_Polygon3DInfo.normals->push_back(glm::vec3(x, -y, z)); } - } +} void OpenGL3DRenderer::EndAddPolygon3DObjectNormalPoint() { @@ -866,14 +868,12 @@ void OpenGL3DRenderer::EndAddPolygon3DObjectPoint() #endif m_bCameraUpdated = true; } - } m_Polygon3DInfo.vertices = NULL; } void OpenGL3DRenderer::AddShape3DExtrudeObject(sal_Int32 color,sal_Int32 specular,float xTransform,float yTransform,float zTransform) { - //color m_Extrude3DInfo.extrudeColor = glm::vec4((float)(((color) & 0x00FF0000) >> 16) / 255.0f, (float)(((color) & 0x0000FF00) >> 8) / 255.0f, @@ -1047,6 +1047,7 @@ int OpenGL3DRenderer::RenderExtrudeMiddleSurface(const Extrude3DInfo& extrude3D) m_TranslationMatrix = glm::translate(glm::vec3(trans.x, trans.y, trans.z)); m_Model = m_TranslationMatrix * scale; } + if (extrude3D.reverse) { glm::mat4 reverseMatrix = glm::translate(glm::vec3(0.0, -1.0, 0.0)); @@ -1068,6 +1069,7 @@ int OpenGL3DRenderer::RenderExtrudeTopSurface(const Extrude3DInfo& extrude3D) PosVecf3 trans = {extrude3D.xTransform,//m_Extrude3DInfo.xTransform + 140, -extrude3D.yTransform, extrude3D.zTransform}; + if (actualYTrans < 0.0f) { // the height of rounded corner is higher than the cube than use the org scale matrix commit 7f28c821fec267bea33f34bf423b22d8fb6e010e Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Thu May 1 00:20:50 2014 +0200 more type correctness in new code Change-Id: If6ba00dd10ef0c565c63d559e63ea4135ab4eea4 diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index 39d55bc..e3a1c10 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -193,8 +193,8 @@ void OpenGL3DRenderer::SetVertex(PackedVertex &packed, { // If not, it needs to be added in the output data. vertex.push_back(packed.position); normal.push_back(packed.normal); - unsigned short newindex = (unsigned short)vertex.size() - 1; - indeices .push_back( newindex ); + size_t newindex = vertex.size() - 1; + indeices.push_back( newindex ); VertexToOutIndex[ packed ] = newindex; } } @@ -224,7 +224,7 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int { m_RoundBarMesh.iElementStartIndices[k] = indeices[k].size(); } - for (unsigned int i = 0; i < vertices.size(); i += 3) + for (size_t i = 0; i < vertices.size(); i += 3) { for (int k = 0; k < 3; k++) { @@ -538,7 +538,6 @@ int OpenGL3DRenderer::GenerateRoundCornerBar(std::vector<glm::vec3> &vertices, s return iFacesAdded; } - void OpenGL3DRenderer::GetFreq() { #if 0 @@ -560,10 +559,9 @@ double OpenGL3DRenderer::GetTime() int OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon) { - int listNum; - listNum = polygon.verticesList.size(); + size_t listNum = polygon.verticesList.size(); glUseProgram(m_CommonProID); - for (int i = 0; i < listNum; i++) + for (size_t i = 0; i < listNum; i++) { //move the circle to the pos, and scale using the xScale and Y scale Vertices3D *pointList = polygon.verticesList.front(); @@ -607,9 +605,8 @@ int OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon) int OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo &polygon) { - int verticesNum, normalsNum; - verticesNum = polygon.verticesList.size(); - normalsNum = polygon.normalsList.size(); + size_t verticesNum = polygon.verticesList.size(); + size_t normalsNum = polygon.normalsList.size(); //check whether the number of vertices and normals are equal if (verticesNum != normalsNum) { @@ -624,7 +621,7 @@ int OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo &polygon) glUseProgram(m_3DProID); glUniformMatrix4fv(m_3DViewID, 1, GL_FALSE, &m_3DView[0][0]); glUniformMatrix4fv(m_3DProjectionID, 1, GL_FALSE, &m_3DProjection[0][0]); - for (int i = 0; i < verticesNum; i++) + for (size_t i = 0; i < verticesNum; i++) { //move the circle to the pos, and scale using the xScale and Y scale Vertices3D *pointList = polygon.verticesList.front(); @@ -689,8 +686,8 @@ int OpenGL3DRenderer::RenderPolygon3DObject() return 0; } glDepthMask(GL_FALSE); - int polygonNum = m_Polygon3DInfoList.size(); - for (int i = 0; i < polygonNum; i++) + size_t polygonNum = m_Polygon3DInfoList.size(); + for (size_t i = 0; i < polygonNum; i++) { Polygon3DInfo &polygon = m_Polygon3DInfoList.front(); if (polygon.lineOnly || (!polygon.fillStyle)) @@ -737,7 +734,6 @@ void OpenGL3DRenderer::SetLightInfo(bool lightOn, sal_Int32 color, const glm::ve m_LightsInfo.light[m_LightsInfo.lightNum].lightPower = 1.0; m_LightsInfo.lightNum++; } - } void OpenGL3DRenderer::AddShapePolygon3DObject(sal_Int32 color,bool lineOnly,sal_Int32 lineColor,long fillStyle,sal_Int32 specular) @@ -822,7 +818,7 @@ void OpenGL3DRenderer::EndAddPolygon3DObjectPoint() { m_Polygon3DInfo.verticesList.push_back(m_Polygon3DInfo.vertices); //get the buttom surface to calc the camera org, just for the demo - if ((m_Polygon3DInfo.vertices->size()) && (!m_bCameraUpdated)) + if (m_Polygon3DInfo.vertices->size() && !m_bCameraUpdated) { float minX = m_Polygon3DInfo.vertices->at(0).x; float maxX = m_Polygon3DInfo.vertices->at(0).x; @@ -830,7 +826,7 @@ void OpenGL3DRenderer::EndAddPolygon3DObjectPoint() float maxZ = m_Polygon3DInfo.vertices->at(0).z; float maxY = m_Polygon3DInfo.vertices->at(0).y; float minY = m_Polygon3DInfo.vertices->at(0).y; - for (unsigned int i = 1; i < m_Polygon3DInfo.vertices->size(); i++) + for (size_t i = 1; i < m_Polygon3DInfo.vertices->size(); i++) { minX = std::min(minX, m_Polygon3DInfo.vertices->at(i).x); maxX = std::max(maxX, m_Polygon3DInfo.vertices->at(i).x); @@ -1150,8 +1146,8 @@ int OpenGL3DRenderer::RenderExtrude3DObject() (void*)0 // array buffer offset ); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_CubeElementBuf); - int extrude3DNum = m_Extrude3DList.size(); - for (int i = 0; i < extrude3DNum; i++) + size_t extrude3DNum = m_Extrude3DList.size(); + for (size_t i = 0; i < extrude3DNum; i++) { Extrude3DInfo extrude3DInfo = m_Extrude3DList[i]; glBindBuffer(GL_UNIFORM_BUFFER, m_3DUBOBuffer); @@ -1244,9 +1240,9 @@ int OpenGL3DRenderer::ProcessUnrenderedShape() glm::vec4 OpenGL3DRenderer::GetColorByIndex(int index) { - int r = index & 0xFF; - int g = (index >> 8) & 0xFF; - int b = (index >> 16) & 0xFF; + sal_uInt8 r = index & 0xFF; + sal_uInt8 g = (index >> 8) & 0xFF; + sal_uInt8 b = (index >> 16) & 0xFF; return glm::vec4(((float)r) / 255.0, ((float)g) / 255.0, ((float)b) / 255.0, 1.0); } commit f49f5e160ee0fc5cad527ef76b1e399c39a31051 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Thu May 1 00:13:41 2014 +0200 use sal_ types for variables with fixed width Change-Id: I3a6be24b839633c3864a8961ade06fa59717335a diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index 81e780c..39d55bc 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -979,6 +979,7 @@ int OpenGL3DRenderer::Update3DUniformBlock() glBindBuffer(GL_UNIFORM_BUFFER, 0); return 0; } + int OpenGL3DRenderer::RenderExtrudeFlatSurface(const Extrude3DInfo& extrude3D, int surIndex) { float xzScale = extrude3D.xRange[1] - extrude3D.xRange[0]; @@ -1249,7 +1250,7 @@ glm::vec4 OpenGL3DRenderer::GetColorByIndex(int index) return glm::vec4(((float)r) / 255.0, ((float)g) / 255.0, ((float)b) / 255.0, 1.0); } -int OpenGL3DRenderer::GetIndexByColor(int r, int g, int b) +sal_uInt32 OpenGL3DRenderer::GetIndexByColor(sal_uInt32 r, sal_uInt32 g, sal_uInt32 b) { return r | (g << 8) | (b << 16); } commit 9c5dd8be10560a10f1abd85e869d9989be162b48 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Thu May 1 00:04:23 2014 +0200 remove the need for using namespace std; Change-Id: Ibb0d3031fc8ec986d6d2d9c7b178418b4dd37811 diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index 9d4cda1..81e780c 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -23,7 +23,6 @@ #define GL_PI 3.14159f #define RGB_WHITE (0xFF | (0xFF << 8) | (0xFF << 16)) -using namespace std; using namespace com::sun::star; namespace chart { @@ -180,9 +179,9 @@ bool OpenGL3DRenderer::GetSimilarVertexIndex(PackedVertex & packed, void OpenGL3DRenderer::SetVertex(PackedVertex &packed, std::map<PackedVertex,unsigned short> &VertexToOutIndex, - vector<glm::vec3> &vertex, - vector<glm::vec3> &normal, - vector<unsigned short> &indeices) + std::vector<glm::vec3> &vertex, + std::vector<glm::vec3> &normal, + std::vector<unsigned short> &indeices) { unsigned short index; bool found = GetSimilarVertexIndex(packed, VertexToOutIndex, index); @@ -209,13 +208,13 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int float topThreshold = height - 2 * fRadius; float bottomThreshold = fRadius; - vector<glm::vec3> vertices; - vector<glm::vec3> normals; + std::vector<glm::vec3> vertices; + std::vector<glm::vec3> normals; GenerateRoundCornerBar(vertices, normals, fRadius, iSubDivY, iSubDivZ, width, height, depth); std::map<PackedVertex,unsigned short> VertexToOutIndex; glm::vec3 actualVerteices[3]; glm::vec3 actualNormals[3]; - vector<unsigned short> indeices[5]; + std::vector<unsigned short> indeices[5]; glm::vec3 externSurNormal; glm::mat4 corrctCoord = glm::translate(glm::vec3(width / 2.0f, height / 2.0f - fRadius, depth / 2.0f)); m_RoundBarMesh.topThreshold = topThreshold; @@ -232,8 +231,8 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int actualVerteices[k] = glm::vec3(corrctCoord * glm::vec4(vertices[i + k], 1.0)); actualNormals[k] = normals[i + k]; } - float maxY = max(max(actualVerteices[0].y, actualVerteices[1].y), actualVerteices[2].y); - float minY = min(min(actualVerteices[0].y, actualVerteices[1].y), actualVerteices[2].y); + float maxY = std::max(std::max(actualVerteices[0].y, actualVerteices[1].y), actualVerteices[2].y); + float minY = std::min(std::min(actualVerteices[0].y, actualVerteices[1].y), actualVerteices[2].y); int surfaceIndex = (minY >= topThreshold - 0.001) ? TOP_SURFACE : ((maxY <= bottomThreshold + 0.001) ? BOTTOM_SURFACE : MIDDLE_SURFACE); for (int k = 0; k < 3; k++) { @@ -269,7 +268,7 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int VertexToOutIndex.clear(); } -int OpenGL3DRenderer::GenerateRoundCornerBar(vector<glm::vec3> &vertices, vector<glm::vec3> &normals, float fRadius, int iSubDivY, int iSubDivZ, float width, float height, float depth) +int OpenGL3DRenderer::GenerateRoundCornerBar(std::vector<glm::vec3> &vertices, std::vector<glm::vec3> &normals, float fRadius, int iSubDivY, int iSubDivZ, float width, float height, float depth) { //float fAddAngleY = 360.0f/float(iSubDivY), fAddAngleZ = 180.0f/float(iSubDivZ); float fAddAngleY = 360.0f/float(iSubDivY), fAddAngleZ = 180.0f/float(iSubDivZ); @@ -814,8 +813,8 @@ void OpenGL3DRenderer::AddPolygon3DObjectPoint(float x, float y, float z) float actualX = x - (float)m_iWidth / 2; float actualY = y - (float)m_iHeight / 2; float actualZ = z; - float maxCoord = max(actualX, max(actualY, actualZ)); - m_fZmax = max(maxCoord, m_fZmax); + float maxCoord = std::max(actualX, std::max(actualY, actualZ)); + m_fZmax = std::max(maxCoord, m_fZmax); m_Polygon3DInfo.vertices->push_back(glm::vec3(actualX, -actualY, actualZ)); } @@ -833,12 +832,12 @@ void OpenGL3DRenderer::EndAddPolygon3DObjectPoint() float minY = m_Polygon3DInfo.vertices->at(0).y; for (unsigned int i = 1; i < m_Polygon3DInfo.vertices->size(); i++) { - minX = min(minX, m_Polygon3DInfo.vertices->at(i).x); - maxX = max(maxX, m_Polygon3DInfo.vertices->at(i).x); - minZ = min(minZ, m_Polygon3DInfo.vertices->at(i).z); - maxZ = max(maxZ, m_Polygon3DInfo.vertices->at(i).z); - minY = min(minY, m_Polygon3DInfo.vertices->at(i).y); - maxY = max(maxY, m_Polygon3DInfo.vertices->at(i).y); + minX = std::min(minX, m_Polygon3DInfo.vertices->at(i).x); + maxX = std::max(maxX, m_Polygon3DInfo.vertices->at(i).x); + minZ = std::min(minZ, m_Polygon3DInfo.vertices->at(i).z); + maxZ = std::max(maxZ, m_Polygon3DInfo.vertices->at(i).z); + minY = std::min(minY, m_Polygon3DInfo.vertices->at(i).y); + maxY = std::max(maxY, m_Polygon3DInfo.vertices->at(i).y); } if (maxY == minY) @@ -920,10 +919,10 @@ void OpenGL3DRenderer::AddExtrude3DObjectPoint(float x, float y, float z) m_Extrude3DInfo.yRange[0] = y; m_Extrude3DInfo.yRange[1] = y; } - m_Extrude3DInfo.xRange[0] = min(m_Extrude3DInfo.xRange[0], x); - m_Extrude3DInfo.xRange[1] = max(m_Extrude3DInfo.xRange[1], x); - m_Extrude3DInfo.yRange[0] = min(m_Extrude3DInfo.yRange[0], y); - m_Extrude3DInfo.yRange[1] = max(m_Extrude3DInfo.yRange[1], y); + m_Extrude3DInfo.xRange[0] = std::min(m_Extrude3DInfo.xRange[0], x); + m_Extrude3DInfo.xRange[1] = std::max(m_Extrude3DInfo.xRange[1], x); + m_Extrude3DInfo.yRange[0] = std::min(m_Extrude3DInfo.yRange[0], y); + m_Extrude3DInfo.yRange[1] = std::max(m_Extrude3DInfo.yRange[1], y); m_iPointNum++; } @@ -950,7 +949,7 @@ int OpenGL3DRenderer::Init3DUniformBlock() glGenBuffers(1, &m_3DUBOBuffer); glBindBuffer(GL_UNIFORM_BUFFER, m_3DUBOBuffer); CHECK_GL_ERROR(); - m_3DActualSizeLight = ((nBlockDataSizeLight / nUniformBufferAlignSize) + min(nBlockDataSizeLight % nUniformBufferAlignSize, 1)) * nUniformBufferAlignSize; + m_3DActualSizeLight = ((nBlockDataSizeLight / nUniformBufferAlignSize) + std::min(nBlockDataSizeLight % nUniformBufferAlignSize, 1)) * nUniformBufferAlignSize; // cout << "nBlockDataSizeMertrial = " << nBlockDataSizeMertrial << ", nBlockDataSizeLight = " << nBlockDataSizeLight << ", m_3DActualSizeLight = " << m_3DActualSizeLight << endl; int dataSize = m_3DActualSizeLight + nBlockDataSizeMertrial; glBufferData(GL_UNIFORM_BUFFER, dataSize, NULL, GL_DYNAMIC_DRAW); @@ -958,7 +957,7 @@ int OpenGL3DRenderer::Init3DUniformBlock() CHECK_GL_ERROR(); glUniformBlockBinding(m_3DProID, a3DLightBlockIndex, 0); - glBindBufferRange(GL_UNIFORM_BUFFER, 1, m_3DUBOBuffer, ((nBlockDataSizeLight / nUniformBufferAlignSize) + min(nBlockDataSizeLight % nUniformBufferAlignSize, 1)) * nUniformBufferAlignSize, nBlockDataSizeMertrial); + glBindBufferRange(GL_UNIFORM_BUFFER, 1, m_3DUBOBuffer, ((nBlockDataSizeLight / nUniformBufferAlignSize) + std::min(nBlockDataSizeLight % nUniformBufferAlignSize, 1)) * nUniformBufferAlignSize, nBlockDataSizeMertrial); glUniformBlockBinding(m_3DProID, a3DMaterialBlockIndex, 1); //for the light source uniform, we must calc the offset of each element CHECK_GL_ERROR(); commit c23c32f1bf6bccce49473fd713782c885985581f Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Thu May 1 00:02:27 2014 +0200 remove OPENGL_SCALE_VALUE that makes no sense without XShape Change-Id: I1f8874d4d9fd5323fac9c31b9b5334b3d193cd63 diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index 508ea796..9d4cda1 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -21,7 +21,6 @@ #include "glm/gtc/matrix_inverse.hpp" #define GL_PI 3.14159f -#define OPENGL_SCALE_VALUE 20 #define RGB_WHITE (0xFF | (0xFF << 8) | (0xFF << 16)) using namespace std; @@ -812,9 +811,9 @@ void OpenGL3DRenderer::AddPolygon3DObjectPoint(float x, float y, float z) { m_Polygon3DInfo.vertices = new Vertices3D; } - float actualX = (x / OPENGL_SCALE_VALUE) - ((float)m_iWidth / 2); - float actualY = (y / OPENGL_SCALE_VALUE) - ((float)m_iHeight / 2); - float actualZ = z / OPENGL_SCALE_VALUE; + float actualX = x - (float)m_iWidth / 2; + float actualY = y - (float)m_iHeight / 2; + float actualZ = z; float maxCoord = max(actualX, max(actualY, actualZ)); m_fZmax = max(maxCoord, m_fZmax); m_Polygon3DInfo.vertices->push_back(glm::vec3(actualX, -actualY, actualZ)); @@ -899,9 +898,9 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(sal_Int32 color,sal_Int32 specula m_Extrude3DInfo.material.shininess = 1.0f; - m_Extrude3DInfo.xTransform = xTransform / OPENGL_SCALE_VALUE - ((float)m_iWidth / 2); - m_Extrude3DInfo.yTransform = yTransform / OPENGL_SCALE_VALUE - ((float)m_iHeight / 2); - m_Extrude3DInfo.zTransform = zTransform / OPENGL_SCALE_VALUE; + m_Extrude3DInfo.xTransform = xTransform - ((float)m_iWidth / 2); + m_Extrude3DInfo.yTransform = yTransform - ((float)m_iHeight / 2); + m_Extrude3DInfo.zTransform = zTransform; } void OpenGL3DRenderer::EndAddShape3DExtrudeObject() @@ -912,22 +911,19 @@ void OpenGL3DRenderer::EndAddShape3DExtrudeObject() void OpenGL3DRenderer::AddExtrude3DObjectPoint(float x, float y, float z) { - float actualX = (x / OPENGL_SCALE_VALUE); - float actualY = (y / OPENGL_SCALE_VALUE); - float actualZ = z / OPENGL_SCALE_VALUE; - float maxCoord = max(actualX, max(actualY, actualZ)); - m_fZmax = max(maxCoord, m_fZmax); + float maxCoord = std::max(x, std::max(y, z)); + m_fZmax = std::max(maxCoord, m_fZmax); if (m_iPointNum == 0) { - m_Extrude3DInfo.xRange[0] = actualX; - m_Extrude3DInfo.xRange[1] = actualX; - m_Extrude3DInfo.yRange[0] = actualY; - m_Extrude3DInfo.yRange[1] = actualY; + m_Extrude3DInfo.xRange[0] = x; + m_Extrude3DInfo.xRange[1] = x; + m_Extrude3DInfo.yRange[0] = y; + m_Extrude3DInfo.yRange[1] = y; } - m_Extrude3DInfo.xRange[0] = min(m_Extrude3DInfo.xRange[0], actualX); - m_Extrude3DInfo.xRange[1] = max(m_Extrude3DInfo.xRange[1], actualX); - m_Extrude3DInfo.yRange[0] = min(m_Extrude3DInfo.yRange[0], actualY); - m_Extrude3DInfo.yRange[1] = max(m_Extrude3DInfo.yRange[1], actualY); + m_Extrude3DInfo.xRange[0] = min(m_Extrude3DInfo.xRange[0], x); + m_Extrude3DInfo.xRange[1] = max(m_Extrude3DInfo.xRange[1], x); + m_Extrude3DInfo.yRange[0] = min(m_Extrude3DInfo.yRange[0], y); + m_Extrude3DInfo.yRange[1] = max(m_Extrude3DInfo.yRange[1], y); m_iPointNum++; } @@ -1318,7 +1314,7 @@ int OpenGL3DRenderer::ProcessExtrude3DPickingBox() glDisableVertexAttribArray(m_2DVertexID); glUseProgram(0); //read pixel to get the index - Point select = Point(m_aMPos.X() / OPENGL_SCALE_VALUE, m_aMPos.Y() / OPENGL_SCALE_VALUE); + Point select = Point(m_aMPos.X(), m_aMPos.Y()); sal_uInt8 selectColor[4] = {0}; #if 0 int picWidth = m_iWidth - select.X(); commit 83c4db6dd6dc153d35dcf15186444e9e9a171074 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Apr 30 23:54:57 2014 +0200 pass large objects by const reference and not by value Change-Id: I43cfb31ffb268313940a92e80275d70fa8a2333a diff --git a/chart2/source/view/inc/GL3DRenderer.hxx b/chart2/source/view/inc/GL3DRenderer.hxx index 3ed67a9..7af602f 100644 --- a/chart2/source/view/inc/GL3DRenderer.hxx +++ b/chart2/source/view/inc/GL3DRenderer.hxx @@ -149,15 +149,18 @@ public: void LoadShaders(); void init(); - void Set3DSenceInfo(glm::vec3 cameraUp,glm::mat4 D3DTrasform,bool twoSidesLighting,sal_Int32 color); - void SetLightInfo(bool lightOn,sal_Int32 color,glm::vec4 direction); - void AddShapePolygon3DObject(sal_Int32 color,bool lineOnly,sal_Int32 lineColor,long fillStyle,sal_Int32 specular); + void Set3DSenceInfo(const glm::vec3& cameraUp, const glm::mat4& D3DTrasform, + bool twoSidesLighting, sal_Int32 color); + void SetLightInfo(bool lightOn, sal_Int32 color, const glm::vec4& direction); + void AddShapePolygon3DObject(sal_Int32 color, bool lineOnly, sal_Int32 lineColor, + long fillStyle, sal_Int32 specular); void EndAddShapePolygon3DObject(); void AddPolygon3DObjectNormalPoint(float x, float y, float z); void EndAddPolygon3DObjectNormalPoint(); void AddPolygon3DObjectPoint(float x, float y, float z); void EndAddPolygon3DObjectPoint(); - void AddShape3DExtrudeObject(sal_Int32 color,sal_Int32 specular,float xTransform,float yTransform,float zTransform); + void AddShape3DExtrudeObject(sal_Int32 color, sal_Int32 specular, float xTransform, + float yTransform, float zTransform); void EndAddShape3DExtrudeObject(); void AddExtrude3DObjectPoint(float x, float y, float z); void EndAddExtrude3DObjectPoint(); @@ -177,12 +180,12 @@ private: int Update3DUniformBlock(); int RenderExtrude3DObject(); int RenderFPS(float fps); - int RenderText(::rtl::OUString &string, com::sun::star::awt::Point aPos); - int RenderExtrudeSurface(Extrude3DInfo extrude3D); - int RenderExtrudeTopSurface(Extrude3DInfo extrude3D); - int RenderExtrudeMiddleSurface(Extrude3DInfo extrude3D); - int RenderExtrudeBottomSurface(Extrude3DInfo extrude3D); - int RenderExtrudeFlatSurface(Extrude3DInfo extrude3D, int surIndex); + int RenderText(const ::rtl::OUString& string, com::sun::star::awt::Point aPos); + int RenderExtrudeSurface(const Extrude3DInfo& extrude3D); + int RenderExtrudeTopSurface(const Extrude3DInfo& extrude3D); + int RenderExtrudeMiddleSurface(const Extrude3DInfo& extrude3D); + int RenderExtrudeBottomSurface(const Extrude3DInfo& extrude3D); + int RenderExtrudeFlatSurface(const Extrude3DInfo& extrude3D, int surIndex); int ProcessUnrenderedShape(); glm::vec4 GetColorByIndex(int index); int GetIndexByColor(int r, int g, int b); diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index 03a2161..508ea796 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -710,7 +710,7 @@ int OpenGL3DRenderer::RenderPolygon3DObject() return 0; } -void OpenGL3DRenderer::Set3DSenceInfo(glm::vec3 cameraUp,glm::mat4 D3DTrasform,bool twoSidesLighting,sal_Int32 color) +void OpenGL3DRenderer::Set3DSenceInfo(const glm::vec3& cameraUp, const glm::mat4& D3DTrasform, bool twoSidesLighting, sal_Int32 color) { m_CameraInfo.cameraUp = cameraUp; @@ -727,7 +727,7 @@ void OpenGL3DRenderer::Set3DSenceInfo(glm::vec3 cameraUp,glm::mat4 D3DTrasform,b m_LightsInfo.lightNum = 0; } -void OpenGL3DRenderer::SetLightInfo(bool lightOn,sal_Int32 color,glm::vec4 direction) +void OpenGL3DRenderer::SetLightInfo(bool lightOn, sal_Int32 color, const glm::vec4& direction) { if (lightOn) { @@ -984,7 +984,7 @@ int OpenGL3DRenderer::Update3DUniformBlock() glBindBuffer(GL_UNIFORM_BUFFER, 0); return 0; } -int OpenGL3DRenderer::RenderExtrudeFlatSurface(Extrude3DInfo extrude3D, int surIndex) +int OpenGL3DRenderer::RenderExtrudeFlatSurface(const Extrude3DInfo& extrude3D, int surIndex) { float xzScale = extrude3D.xRange[1] - extrude3D.xRange[0]; PosVecf3 trans = {extrude3D.xTransform,//m_Extrude3DInfo.xTransform + 140, @@ -1001,7 +1001,7 @@ int OpenGL3DRenderer::RenderExtrudeFlatSurface(Extrude3DInfo extrude3D, int surI return 0; } -int OpenGL3DRenderer::RenderExtrudeBottomSurface(Extrude3DInfo extrude3D) +int OpenGL3DRenderer::RenderExtrudeBottomSurface(const Extrude3DInfo& extrude3D) { float xzScale = extrude3D.xRange[1] - extrude3D.xRange[0]; float yScale = extrude3D.yRange[1] - extrude3D.yRange[0]; @@ -1033,7 +1033,7 @@ int OpenGL3DRenderer::RenderExtrudeBottomSurface(Extrude3DInfo extrude3D) return 0; } -int OpenGL3DRenderer::RenderExtrudeMiddleSurface(Extrude3DInfo extrude3D) +int OpenGL3DRenderer::RenderExtrudeMiddleSurface(const Extrude3DInfo& extrude3D) { float xzScale = extrude3D.xRange[1] - extrude3D.xRange[0]; float yScale = extrude3D.yRange[1] - extrude3D.yRange[0]; @@ -1068,7 +1068,7 @@ int OpenGL3DRenderer::RenderExtrudeMiddleSurface(Extrude3DInfo extrude3D) return 0; } -int OpenGL3DRenderer::RenderExtrudeTopSurface(Extrude3DInfo extrude3D) +int OpenGL3DRenderer::RenderExtrudeTopSurface(const Extrude3DInfo& extrude3D) { float xzScale = extrude3D.xRange[1] - extrude3D.xRange[0]; float yScale = extrude3D.yRange[1] - extrude3D.yRange[0]; @@ -1105,7 +1105,7 @@ int OpenGL3DRenderer::RenderExtrudeTopSurface(Extrude3DInfo extrude3D) return 0; } -int OpenGL3DRenderer::RenderExtrudeSurface(Extrude3DInfo extrude3D) +int OpenGL3DRenderer::RenderExtrudeSurface(const Extrude3DInfo& extrude3D) { glUniformMatrix4fv(m_3DViewID, 1, GL_FALSE, &m_3DView[0][0]); glUniformMatrix4fv(m_3DProjectionID, 1, GL_FALSE, &m_3DProjection[0][0]); @@ -1184,7 +1184,7 @@ void OpenGL3DRenderer::SetClickPos(Point aMPos) m_aMPos = aMPos; } -int OpenGL3DRenderer::RenderText(::rtl::OUString &, awt::Point ) +int OpenGL3DRenderer::RenderText(const ::rtl::OUString& , awt::Point ) { //TODO: moggi: disabled for now /* commit 9b8c33ecc561bf8685614ec61d709c8001901fb6 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Apr 30 23:19:32 2014 +0200 Revert "temporarily disable failing chart2 ChXDiagram RegressionCurves test" This reverts commit 6be6700edb3b704d62d8b331ba95f227617c57d3. diff --git a/qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXDiagram.csv b/qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXDiagram.csv index 8976f4a..6fa7833 100644 --- a/qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXDiagram.csv +++ b/qadevOOo/objdsc/sch/com.sun.star.comp.office.ChXDiagram.csv @@ -73,6 +73,7 @@ "ChXDiagram";"com::sun::star::chart::ChartStatistics";"PercentageError" "ChXDiagram";"com::sun::star::chart::ChartStatistics";"ErrorMargin" "ChXDiagram";"com::sun::star::chart::ChartStatistics";"ErrorIndicator" +"ChXDiagram";"com::sun::star::chart::ChartStatistics";"RegressionCurves" "ChXDiagram";"com::sun::star::chart::X3DDisplay";"getWall()" "ChXDiagram";"com::sun::star::chart::X3DDisplay";"getFloor()" "ChXDiagram";"com::sun::star::chart::StackableDiagram";"Percent" commit e0dcb2260e75935fcebd0774ea51568666874e95 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Apr 30 02:33:02 2014 +0200 be explicit about text rotations, fdo#70670 Change-Id: I5090a49c2383e6a30165a8eca22b527972c0f507 diff --git a/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx b/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx index 0599503..bed0350 100644 --- a/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx @@ -502,7 +502,7 @@ const std::vector< WrappedProperty* > TitleWrapper::createWrappedProperties() ::std::vector< ::chart::WrappedProperty* > aWrappedProperties; aWrappedProperties.push_back( new WrappedTitleStringProperty( m_spChart2ModelContact->m_xContext ) ); - aWrappedProperties.push_back( new WrappedTextRotationProperty( m_eTitleType==TitleHelper::Y_AXIS_TITLE || m_eTitleType==TitleHelper::X_AXIS_TITLE ) ); + aWrappedProperties.push_back( new WrappedTextRotationProperty( true ) ); aWrappedProperties.push_back( new WrappedStackedTextProperty() ); WrappedCharacterHeightProperty::addWrappedProperties( aWrappedProperties, this ); WrappedAutomaticPositionProperties::addWrappedProperties( aWrappedProperties ); commit 046f71a2151b247181685471a20f8e90d95085f1 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Apr 30 01:53:50 2014 +0200 it should not be a warning Change-Id: I1cb1413a1ebae4fbb3d43acf5fe15d6ad81db5bb diff --git a/sfx2/source/doc/SfxDocumentMetaData.cxx b/sfx2/source/doc/SfxDocumentMetaData.cxx index 2256481..d21a85c 100644 --- a/sfx2/source/doc/SfxDocumentMetaData.cxx +++ b/sfx2/source/doc/SfxDocumentMetaData.cxx @@ -537,7 +537,7 @@ textToDateTime(css::util::DateTime & io_rdt, const OUString& i_text) throw () if (::sax::Converter::parseDateTime(io_rdt, 0, i_text)) { return true; } else { - SAL_WARN("sfx.doc", "Invalid date: " << i_text); + SAL_INFO("sfx.doc", "Invalid date: " << i_text); return false; } } commit 5d185dc3b443a99dad0b192319c22dca615ce51d Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Apr 30 01:38:44 2014 +0200 add test for fdo#78041 Change-Id: I08d30102b2218584af2fb800a657728bec42ec18 diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx index 4d7f4b0..c30f201 100644 --- a/chart2/qa/extras/chart2import.cxx +++ b/chart2/qa/extras/chart2import.cxx @@ -18,12 +18,15 @@ #include <com/sun/star/chart2/XInternalDataProvider.hpp> #include <com/sun/star/chart/XChartDataArray.hpp> +#include <com/sun/star/util/Color.hpp> + class Chart2ImportTest : public ChartTest { public: void Fdo60083(); void testSteppedLines(); void testErrorBarRange(); + void testErrorBarFormatting(); void testODSChartSeries(); void testXLSXChartSeries(); void testXLSChartSeries(); @@ -41,6 +44,7 @@ public: CPPUNIT_TEST(Fdo60083); CPPUNIT_TEST(testSteppedLines); CPPUNIT_TEST(testErrorBarRange); + CPPUNIT_TEST(testErrorBarFormatting); CPPUNIT_TEST(testODSChartSeries); CPPUNIT_TEST(testXLSXChartSeries); CPPUNIT_TEST(testXLSChartSeries); @@ -147,6 +151,29 @@ void Chart2ImportTest::testErrorBarRange() CPPUNIT_ASSERT_EQUAL(aRangePos, OUString("$Sheet1.$C$2:$C$4")); } +void Chart2ImportTest::testErrorBarFormatting() +{ + load("/chart2/qa/extras/data/ods/", "error_bar_properties.ods"); + uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent ); + CPPUNIT_ASSERT(xChartDoc.is()); + + Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 ); + CPPUNIT_ASSERT( xDataSeries.is() ); + + Reference< beans::XPropertySet > xPropSet( xDataSeries, UNO_QUERY_THROW ); + CPPUNIT_ASSERT( xPropSet.is() ); + + // test that y error bars are there + Reference< beans::XPropertySet > xErrorBarYProps; + xPropSet->getPropertyValue("ErrorBarY") >>= xErrorBarYProps; + CPPUNIT_ASSERT(xErrorBarYProps.is()); + + util::Color aColor; + xErrorBarYProps->getPropertyValue("LineColor") >>= aColor; + sal_uInt32 nColorValue = aColor; + CPPUNIT_ASSERT_EQUAL(sal_uInt32(0xff3333), nColorValue); +} + // stepped line interpolation void Chart2ImportTest::testSteppedLines() { diff --git a/chart2/qa/extras/data/ods/error_bar_properties.ods b/chart2/qa/extras/data/ods/error_bar_properties.ods new file mode 100644 index 0000000..056be88 Binary files /dev/null and b/chart2/qa/extras/data/ods/error_bar_properties.ods differ commit 200963d3019b7d296f4e22c5e6874eef8b84012b Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Apr 30 01:20:36 2014 +0200 set graphic properties for error bars during import, fdo#78041 Change-Id: I43138745b074dcacdafa090d97eeb9aa2ccecf78 diff --git a/chart2/source/tools/ErrorBar.cxx b/chart2/source/tools/ErrorBar.cxx index c500ddd..c751886 100644 --- a/chart2/source/tools/ErrorBar.cxx +++ b/chart2/source/tools/ErrorBar.cxx @@ -167,7 +167,7 @@ void ErrorBar::setPropertyValue( const OUString& rPropName, const uno::Any& rAny else if(rPropName == "ShowNegativeError") rAny >>= mbShowNegativeError; else if(rPropName == "ErrorBarRangePositive" || rPropName == "ErrorBarRangeNegative") - throw uno::RuntimeException("read-only property", static_cast< uno::XWeak*>(this)); + throw beans::UnknownPropertyException("read-only property", static_cast< uno::XWeak*>(this)); else LineProperties::setPropertyValue(rPropName, rAny); diff --git a/xmloff/source/chart/SchXMLPlotAreaContext.cxx b/xmloff/source/chart/SchXMLPlotAreaContext.cxx index ef6ef13..c1045a9 100644 --- a/xmloff/source/chart/SchXMLPlotAreaContext.cxx +++ b/xmloff/source/chart/SchXMLPlotAreaContext.cxx @@ -1011,6 +1011,19 @@ SchXMLStatisticsObjectContext::~SchXMLStatisticsObjectContext() namespace { +void SetErrorBarStyleProperties( const OUString& rStyleName, uno::Reference< beans::XPropertySet > xBarProp, + SchXMLImportHelper& rImportHelper ) +{ + const SvXMLStylesContext* pStylesCtxt = rImportHelper.GetAutoStylesContext(); + const SvXMLStyleContext* pStyle = pStylesCtxt->FindStyleChildContext(rImportHelper.GetChartFamilyID(), + rStyleName); + + XMLPropStyleContext * pSeriesStyleContext = + const_cast< XMLPropStyleContext * >( dynamic_cast< const XMLPropStyleContext * >( pStyle )); + + pSeriesStyleContext->FillPropertySet( xBarProp ); +} + void SetErrorBarPropertiesFromStyleName( const OUString& aStyleName, uno::Reference< beans::XPropertySet> xBarProp, SchXMLImportHelper& rImportHelper, OUString& aPosRange, OUString& aNegRange) { @@ -1177,6 +1190,8 @@ void SchXMLStatisticsObjectContext::StartElement( const uno::Reference< xml::sax xBarProp->setPropertyValue("ShowNegativeError",uno::makeAny(sal_True)); // first import defaults from parent style + SetErrorBarStyleProperties( maSeriesStyleName, xBarProp, mrImportHelper ); + SetErrorBarStyleProperties( sAutoStyleName, xBarProp, mrImportHelper ); SetErrorBarPropertiesFromStyleName( maSeriesStyleName, xBarProp, mrImportHelper, aPosRange, aNegRange ); SetErrorBarPropertiesFromStyleName( sAutoStyleName, xBarProp, mrImportHelper, aPosRange, aNegRange ); commit 90511600040cdaafb4ceb1cfb7d31752b56185ca Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Apr 29 21:13:15 2014 +0200 fix spelling error Change-Id: If6c318f1a1f74a39083bf83eed2f80aca1e27bc5 diff --git a/test/source/bootstrapfixture.cxx b/test/source/bootstrapfixture.cxx index aacfa8e..5473c2d 100644 --- a/test/source/bootstrapfixture.cxx +++ b/test/source/bootstrapfixture.cxx @@ -175,7 +175,7 @@ void test::BootstrapFixture::validate(const OUString& rPath, test::ValidationFor sal_Int32 nIndex = aContentOUString.lastIndexOf("Grand total of errors in submitted package: "); if(nIndex == -1) { - SAL_WARN("test", "no summery line"); + SAL_WARN("test", "no summary line"); } else { commit 3cca2dca62b19242a5b421f938443eabcd24b671 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Apr 29 21:12:16 2014 +0200 add test for fdo#75168 Change-Id: Iffb07d98333667837a7a2bba00e2d667d49bb709 diff --git a/sc/qa/unit/data/contentCSV/new_cond_format_test_sheet2.csv b/sc/qa/unit/data/contentCSV/new_cond_format_test_sheet2.csv new file mode 100644 index 0000000..b35f4e5 --- /dev/null +++ b/sc/qa/unit/data/contentCSV/new_cond_format_test_sheet2.csv @@ -0,0 +1,3 @@ +2.00,2 +1,1.00 +4.00,3 diff --git a/sc/qa/unit/data/xlsx/new_cond_format_test.xlsx b/sc/qa/unit/data/xlsx/new_cond_format_test.xlsx index f5a6977..0750188 100644 Binary files a/sc/qa/unit/data/xlsx/new_cond_format_test.xlsx and b/sc/qa/unit/data/xlsx/new_cond_format_test.xlsx differ diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 82edb80..cf1233b 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -265,10 +265,19 @@ void ScExportTest::testConditionalFormatExportXLSX() ScDocShellRef xDocSh = saveAndReload(&(*xShell), XLSX); CPPUNIT_ASSERT(xDocSh.Is()); ScDocument* pDoc = xDocSh->GetDocument(); - OUString aCSVFile("new_cond_format_test."); - OUString aCSVPath; - createCSVPath( aCSVFile, aCSVPath ); - testCondFile(aCSVPath, pDoc, 0); + { + OUString aCSVFile("new_cond_format_test."); + OUString aCSVPath; + createCSVPath( aCSVFile, aCSVPath ); + testCondFile(aCSVPath, pDoc, 0); + } + { + OUString aCSVFile("new_cond_format_test_sheet2."); + OUString aCSVPath; + createCSVPath( aCSVFile, aCSVPath ); + testCondFile(aCSVPath, pDoc, 1); + } + xDocSh->DoClose(); } commit 3629fac93ee96a3778bb9a7a63150b35c5d9bc3c Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Apr 29 20:37:36 2014 +0200 escape conditional formatting formulas during xlsx export, fdo#75168 Change-Id: I9ebdb2315b51c2b53d8cfa0486b3ec22a8e0d88d diff --git a/sc/source/filter/excel/xecontent.cxx b/sc/source/filter/excel/xecontent.cxx index 290f79f..af726b2 100644 --- a/sc/source/filter/excel/xecontent.cxx +++ b/sc/source/filter/excel/xecontent.cxx @@ -937,13 +937,13 @@ void XclExpCFImpl::SaveXml( XclExpXmlStream& rStrm ) if(!IsTextRule(eOperation) && !IsTopBottomRule(eOperation)) { rWorksheet->startElement( XML_formula, FSEND ); - rWorksheet->write(XclXmlUtils::ToOUString( GetRoot().GetDoc(), mrFormatEntry.GetValidSrcPos(), + rWorksheet->writeEscaped(XclXmlUtils::ToOUString( GetRoot().GetDoc(), mrFormatEntry.GetValidSrcPos(), mrFormatEntry.CreateTokenArry(0))); rWorksheet->endElement( XML_formula ); if (bFmla2) { rWorksheet->startElement( XML_formula, FSEND ); - rWorksheet->write(XclXmlUtils::ToOUString( GetRoot().GetDoc(), mrFormatEntry.GetValidSrcPos(), + rWorksheet->writeEscaped(XclXmlUtils::ToOUString( GetRoot().GetDoc(), mrFormatEntry.GetValidSrcPos(), mrFormatEntry.CreateTokenArry(1))); rWorksheet->endElement( XML_formula ); } commit e9a9adf0bdc05bf2d80632a56db794c7fa12209e Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Apr 29 12:30:04 2014 +0200 add unit test for fdo#77984 Change-Id: Iab081d779a959c9ebe8a2721b146ebe0b3e97099 diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 48e25b6..70e7f7b 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -46,6 +46,8 @@ #include "columniterator.hxx" #include "types.hxx" #include "conditio.hxx" +#include "colorscale.hxx" +#include "fillinfo.hxx" #include "globstr.hrc" #include "tokenarray.hxx" #include "scopetools.hxx" @@ -5728,6 +5730,42 @@ void Test::testCondCopyPaste() m_pDoc->DeleteTab(0); } +void Test::testIconSet() +{ + m_pDoc->InsertTab(0, "Test"); + ScConditionalFormatList* pList = m_pDoc->GetCondFormList(0); + + ScConditionalFormat* pFormat = new ScConditionalFormat(1, m_pDoc); + ScRangeList aRangeList(ScRange(0,0,0,0,0,0)); + pFormat->AddRange(aRangeList); + + ScIconSetFormat* pEntry = new ScIconSetFormat(m_pDoc); + ScIconSetFormatData* pData = new ScIconSetFormatData; + pData->maEntries.push_back(new ScColorScaleEntry(0, COL_BLUE)); + pData->maEntries.push_back(new ScColorScaleEntry(1, COL_GREEN)); + pData->maEntries.push_back(new ScColorScaleEntry(2, COL_RED)); + pEntry->SetIconSetData(pData); + + m_pDoc->AddCondFormatData(pFormat->GetRange(), 0, 1); + pList->InsertNew(pFormat); + + struct { + double nVal; sal_Int32 nIndex; + } aTests[] = { + { -1.0, 0 }, + { 0.0, 0 }, + { 1.0, 1 }, + { 2.0, 2 }, + { 3.0, 2 } + }; + for(size_t i = 0; i < SAL_N_ELEMENTS(aTests); ++i) + { + m_pDoc->SetValue(0,0,0,aTests[i].nVal); + ScIconSetInfo* pInfo = pEntry->GetIconSetInfo(ScAddress(0,0,0)); + CPPUNIT_ASSERT_EQUAL(aTests[i].nIndex, pInfo->nIconIndex); + } +} + void Test::testImportStream() { sc::AutoCalcSwitch aAC(*m_pDoc, true); // turn on auto calc. diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx index 06bab38..c26a433 100644 --- a/sc/qa/unit/ucalc.hxx +++ b/sc/qa/unit/ucalc.hxx @@ -341,6 +341,7 @@ public: void testCondFormatInsertRow(); void testCondFormatInsertCol(); void testCondCopyPaste(); + void testIconSet(); void testImportStream(); void testDeleteContents(); @@ -494,6 +495,7 @@ public: CPPUNIT_TEST(testCondFormatInsertRow); CPPUNIT_TEST(testCondFormatInsertCol); CPPUNIT_TEST(testCondCopyPaste); + CPPUNIT_TEST(testIconSet); CPPUNIT_TEST(testImportStream); CPPUNIT_TEST(testDeleteContents); CPPUNIT_TEST(testTransliterateText); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits