Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
2a9c217d
Kaydet (Commit)
2a9c217d
authored
Ock 12, 2014
tarafından
Markus Mohrhard
Kaydeden (comit)
Markus Mohrhard
Ock 29, 2014
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
fix the remaining projection issues
Change-Id: I3d6b7126b8c23e5cd1e60d49fa8cd6ebb0c9a6d1
üst
0ba6eec8
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
94 additions
and
16 deletions
+94
-16
DummyXShape.cxx
chart2/source/view/main/DummyXShape.cxx
+4
-0
OpenGLRender.cxx
chart2/source/view/main/OpenGLRender.cxx
+77
-14
OpenGLRender.hxx
chart2/source/view/main/OpenGLRender.hxx
+13
-2
No files found.
chart2/source/view/main/DummyXShape.cxx
Dosyayı görüntüle @
2a9c217d
...
...
@@ -1210,7 +1210,11 @@ void DummyChart::render()
{
SAL_WARN
(
"chart2.opengl"
,
"render chart"
);
m_GLRender
.
prepareToRender
();
#if 0
m_GLRender.renderDebug();
#else
DummyXShapes
::
render
();
#endif
m_GLRender
.
renderToBitmap
();
}
...
...
chart2/source/view/main/OpenGLRender.cxx
Dosyayı görüntüle @
2a9c217d
...
...
@@ -63,6 +63,34 @@ using namespace std;
//begin shaders
#if DEBUG_POSITIONING
const
char
*
DebugVertexShader
=
OPENGL_SHADER
(
attribute
vec3
vPosition
;
uniform
vec4
vColor
;
varying
vec4
fragmentColor
;
void
main
()
{
gl_Position
=
vec4
(
vPosition
,
1
);
}
);
const
char
*
DebugFragmentShader
=
OPENGL_SHADER
(
varying
vec4
fragmentColor
;
void
main
()
{
gl_FragColor
=
vec4
(
1.0
,
1.0
,
0.0
,
0.5
);
}
);
#endif
const
char
*
CommonFragmemtShader
=
OPENGL_SHADER
(
varying
vec4
fragmentColor
;
...
...
@@ -442,6 +470,13 @@ int OpenGLRender::InitOpenGL(GLWindow aWindow)
m_MatrixID
=
glGetUniformLocation
(
m_CommonProID
,
"MVP"
);
m_2DVertexID
=
glGetAttribLocation
(
m_CommonProID
,
"vPosition"
);
m_2DColorID
=
glGetUniformLocation
(
m_CommonProID
,
"vColor"
);
CHECK_GL_ERROR
();
#if DEBUG_POSITIONING
m_DebugProID
=
LoadShaders
(
DebugVertexShader
,
DebugFragmentShader
);
m_DebugVertexID
=
glGetAttribLocation
(
m_DebugProID
,
"vPosition"
);
#endif
CHECK_GL_ERROR
();
m_BackgroundProID
=
LoadShaders
(
BackgroundVertexShader
,
BackgroundFragmemtShader
);
m_BackgroundMatrixID
=
glGetUniformLocation
(
m_BackgroundProID
,
"MVP"
);
...
...
@@ -520,7 +555,7 @@ BitmapEx OpenGLRender::GetAsBitmap()
#if DEBUG_PNG // debug PNG writing
static
int
nIdx
=
0
;
OUString
aName
=
OUString
(
"file://
c/temp/image
"
)
+
OUString
::
number
(
nIdx
++
)
+
".png"
;
OUString
aName
=
OUString
(
"file://
/home/moggi/Documents/work/
"
)
+
OUString
::
number
(
nIdx
++
)
+
".png"
;
try
{
vcl
::
PNGWriter
aWriter
(
aBmp
);
SvFileStream
sOutput
(
aName
,
STREAM_WRITE
);
...
...
@@ -544,7 +579,7 @@ int OpenGLRender::SetLine2DShapePoint(float x, float y, int listLength)
float
actualY
=
(
y
/
OPENGL_SCALE_VALUE
);
m_Line2DPointList
.
push_back
(
actualX
);
m_Line2DPointList
.
push_back
(
actualY
);
m_Line2DPointList
.
push_back
(
m_fZStep
);
m_Line2DPointList
.
push_back
(
0
);
m_fPicLeft
=
std
::
min
(
m_fPicLeft
,
actualX
);
m_fPicRight
=
std
::
max
(
m_fPicRight
,
actualX
);
...
...
@@ -568,7 +603,6 @@ int OpenGLRender::RenderLine2FBO(int)
PosVecf3
angle
=
{
0.0
f
,
0.0
f
,
0.0
f
};
PosVecf3
scale
=
{
1.0
f
,
1.0
f
,
1.0
f
};
MoveModelf
(
trans
,
angle
,
scale
);
m_Projection
=
glm
::
ortho
(
0.
f
,
float
(
m_iWidth
),
0.
f
,
float
(
m_iHeight
),
-
1.
f
,
1.
f
);
m_MVP
=
m_Projection
*
m_View
*
m_Model
;
for
(
size_t
i
=
0
;
i
<
listNum
;
i
++
)
{
...
...
@@ -582,15 +616,13 @@ int OpenGLRender::RenderLine2FBO(int)
glUseProgram
(
m_CommonProID
);
CHECK_GL_ERROR
();
glUniform4fv
(
m_2DColorID
,
1
,
&
m_Line2DColor
[
0
]);
glm
::
vec4
aColor
(
1.0
,
0.5
,
0.5
,
0.5
);
glUniform4fv
(
m_2DColorID
,
1
,
&
aColor
[
0
]);
CHECK_GL_ERROR
();
glUniformMatrix4fv
(
m_MatrixID
,
1
,
GL_FALSE
,
&
m_MVP
[
0
][
0
]);
CHECK_GL_ERROR
();
//
CHECK_GL_ERROR();
// 1rst attribute buffer : vertices
glEnableVertexAttribArray
(
m_2DVertexID
);
CHECK_GL_ERROR
();
glBindBuffer
(
GL_ARRAY_BUFFER
,
m_VertexBuffer
);
CHECK_GL_ERROR
();
glVertexAttribPointer
(
m_2DVertexID
,
...
...
@@ -600,11 +632,11 @@ int OpenGLRender::RenderLine2FBO(int)
0
,
// stride
(
void
*
)
0
// array buffer offset
);
glEnableVertexAttribArray
(
m_2DVertexID
);
glDrawArrays
(
GL_LINE_STRIP
,
0
,
pointList
.
size
()
/
3
);
// 12*3 indices starting at 0 -> 12 triangles
CHECK_GL_ERROR
();
glDisableVertexAttribArray
(
m_2DVertexID
);
CHECK_GL_ERROR
();
glUseProgram
(
0
);
glDisableVertexAttribArray
(
m_2DVertexID
);
CHECK_GL_ERROR
();
m_Line2DShapePointList
.
pop_front
();
}
...
...
@@ -614,6 +646,35 @@ int OpenGLRender::RenderLine2FBO(int)
return
0
;
}
#if DEBUG_POSITIONING
void
OpenGLRender
::
renderDebug
()
{
CHECK_GL_ERROR
();
GLfloat
vertices
[
4
][
3
]
=
{
{
-
0.9
,
-
0.9
,
0
},
{
-
0.6
,
-
0.2
,
0
},
{
0.3
,
0.3
,
0
},
{
0.9
,
0.9
,
0
}
};
glBindBuffer
(
GL_ARRAY_BUFFER
,
m_VertexBuffer
);
CHECK_GL_ERROR
();
glBufferData
(
GL_ARRAY_BUFFER
,
sizeof
(
vertices
),
vertices
,
GL_STATIC_DRAW
);
CHECK_GL_ERROR
();
glUseProgram
(
m_DebugProID
);
CHECK_GL_ERROR
();
glVertexAttribPointer
(
m_DebugVertexID
,
3
,
GL_FLOAT
,
GL_FALSE
,
0
,
(
void
*
)
0
);
CHECK_GL_ERROR
();
glEnableVertexAttribArray
(
m_DebugVertexID
);
glDrawArrays
(
GL_LINE_STRIP
,
0
,
3
);
CHECK_GL_ERROR
();
glDisableVertexAttribArray
(
m_DebugVertexID
);
CHECK_GL_ERROR
();
}
#endif
void
OpenGLRender
::
prepareToRender
()
{
glViewport
(
0
,
0
,
m_iWidth
,
m_iHeight
);
...
...
@@ -913,11 +974,13 @@ OpenGLRender::~OpenGLRender()
void
OpenGLRender
::
SetWidth
(
int
width
)
{
m_iWidth
=
width
;
m_Projection
=
glm
::
ortho
(
0.
f
,
float
(
m_iWidth
),
0.
f
,
float
(
m_iHeight
),
-
4.
f
,
3.
f
);
}
void
OpenGLRender
::
SetHeight
(
int
height
)
{
m_iHeight
=
height
;
m_Projection
=
glm
::
ortho
(
0.
f
,
float
(
m_iWidth
),
0.
f
,
float
(
m_iHeight
),
-
4.
f
,
3.
f
);
}
int
OpenGLRender
::
GetWidth
()
...
...
@@ -1231,8 +1294,8 @@ int OpenGLRender::Bubble2DShapePoint(float x, float y, float directionX, float d
Create2DCircle
(
100
);
}
float
actualX
=
(
x
/
10.0
f
)
-
((
float
)
m_iWidth
/
2
)
;
float
actualY
=
(
y
/
10.0
f
)
-
((
float
)
m_iHeight
/
2
)
;
float
actualX
=
(
x
/
10.0
f
);
float
actualY
=
(
y
/
10.0
f
);
m_Bubble2DPointList
.
x
=
actualX
;
m_Bubble2DPointList
.
y
=
actualY
;
m_Bubble2DPointList
.
xScale
=
directionX
/
10.0
f
;
...
...
@@ -1434,8 +1497,8 @@ int OpenGLRender::CreateTextTexture(::rtl::OUString textValue, sal_uInt32 color,
}
}
aBitmap
.
ReleaseAccess
(
pRAcc
);
m_TextInfo
.
x
=
(
float
)(
aPos
.
X
+
aSize
.
Width
/
2
)
/
OPENGL_SCALE_VALUE
-
((
float
)
m_iWidth
/
2
)
;
m_TextInfo
.
y
=
(
float
)(
aPos
.
Y
+
aSize
.
Height
/
2
)
/
OPENGL_SCALE_VALUE
-
((
float
)
m_iHeight
/
2
)
;
m_TextInfo
.
x
=
(
float
)(
aPos
.
X
+
aSize
.
Width
/
2
)
/
OPENGL_SCALE_VALUE
;
m_TextInfo
.
y
=
(
float
)(
aPos
.
Y
+
aSize
.
Height
/
2
)
/
OPENGL_SCALE_VALUE
;
m_TextInfo
.
z
=
m_fZStep
;
m_TextInfo
.
rotation
=
-
(
double
)
rotation
*
GL_PI
/
18000.0
f
;
m_TextInfo
.
vertex
[
0
]
=
(
float
)(
-
aSize
.
Width
/
2
)
/
OPENGL_SCALE_VALUE
;
...
...
chart2/source/view/main/OpenGLRender.hxx
Dosyayı görüntüle @
2a9c217d
...
...
@@ -53,6 +53,7 @@ namespace unx
#include "glm/gtx/quaternion.hpp"
#define OPENGL_SCALE_VALUE 20
#define DEBUG_POSITIONING 1
typedef
struct
PosVeci3
{
...
...
@@ -67,7 +68,7 @@ typedef struct PosVecf3
float
z
;
}
PosVecf3
;
typedef
std
::
vector
<
float
>
Line2DPointList
;
typedef
std
::
vector
<
GL
float
>
Line2DPointList
;
typedef
struct
Bubble2DPointList
{
...
...
@@ -102,7 +103,7 @@ typedef struct TextInfo
float
vertex
[
8
];
}
TextInfo
;
typedef
std
::
vector
<
float
>
Area2DPointList
;
typedef
std
::
vector
<
GL
float
>
Area2DPointList
;
/// Holds the information of our new child window
struct
GLWindow
...
...
@@ -178,6 +179,10 @@ public:
int
RenderArea2DShape
();
void
SetChartTransparencyGradient
(
long
transparencyGradient
);
#if DEBUG_POSITIONING
void
renderDebug
();
#endif
private
:
GLint
LoadShaders
(
const
char
*
vertexShader
,
const
char
*
fragmentShader
);
int
CreateTextureObj
(
int
width
,
int
height
);
...
...
@@ -318,6 +323,12 @@ private:
float
m_BackgroundColor
[
16
];
glm
::
vec4
m_ClearColor
;
#if DEBUG_POSITIONING
GLuint
m_DebugProID
;
GLuint
m_DebugVertexID
;
GLuint
m_DebugColorID
;
#endif
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment