Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
190ed585
Commit
190ed585
authored
Jul 30, 2013
by
Maciej Suminski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code refactoring.
parent
790a1f85
Changes
16
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
886 additions
and
1089 deletions
+886
-1089
cairo_compositor.cpp
common/gal/cairo/cairo_compositor.cpp
+4
-1
cairo_gal.cpp
common/gal/cairo/cairo_gal.cpp
+271
-303
graphics_abstraction_layer.cpp
common/gal/graphics_abstraction_layer.cpp
+29
-2
gpu_manager.cpp
common/gal/opengl/gpu_manager.cpp
+1
-1
opengl_compositor.cpp
common/gal/opengl/opengl_compositor.cpp
+3
-1
opengl_gal.cpp
common/gal/opengl/opengl_gal.cpp
+429
-542
shader.cpp
common/gal/opengl/shader.cpp
+9
-8
vertex_manager.cpp
common/gal/opengl/vertex_manager.cpp
+7
-4
wx_view_controls.cpp
common/view/wx_view_controls.cpp
+0
-1
cairo_compositor.h
include/gal/cairo/cairo_compositor.h
+8
-10
cairo_gal.h
include/gal/cairo/cairo_gal.h
+29
-72
graphics_abstraction_layer.h
include/gal/graphics_abstraction_layer.h
+6
-4
cached_container.h
include/gal/opengl/cached_container.h
+6
-6
opengl_compositor.h
include/gal/opengl/opengl_compositor.h
+0
-2
opengl_gal.h
include/gal/opengl/opengl_gal.h
+81
-128
vertex_common.h
include/gal/opengl/vertex_common.h
+3
-4
No files found.
common/gal/cairo/cairo_compositor.cpp
View file @
190ed585
...
@@ -69,6 +69,7 @@ unsigned int CAIRO_COMPOSITOR::GetBuffer()
...
@@ -69,6 +69,7 @@ unsigned int CAIRO_COMPOSITOR::GetBuffer()
{
{
// Pixel storage
// Pixel storage
BitmapPtr
bitmap
(
new
unsigned
int
[
m_bufferSize
]
);
BitmapPtr
bitmap
(
new
unsigned
int
[
m_bufferSize
]
);
memset
(
bitmap
.
get
(),
0x00
,
m_bufferSize
*
sizeof
(
int
)
);
memset
(
bitmap
.
get
(),
0x00
,
m_bufferSize
*
sizeof
(
int
)
);
// Create the Cairo surface
// Create the Cairo surface
...
@@ -105,6 +106,7 @@ void CAIRO_COMPOSITOR::SetBuffer( unsigned int aBufferHandle )
...
@@ -105,6 +106,7 @@ void CAIRO_COMPOSITOR::SetBuffer( unsigned int aBufferHandle )
m_current
=
aBufferHandle
-
1
;
m_current
=
aBufferHandle
-
1
;
*
m_currentContext
=
m_buffers
[
m_current
].
context
;
*
m_currentContext
=
m_buffers
[
m_current
].
context
;
}
}
#ifdef __WXDEBUG__
#ifdef __WXDEBUG__
else
else
wxLogDebug
(
wxT
(
"Tried to use a not existing buffer"
)
);
wxLogDebug
(
wxT
(
"Tried to use a not existing buffer"
)
);
...
@@ -141,6 +143,7 @@ void CAIRO_COMPOSITOR::DrawBuffer( unsigned int aBufferHandle )
...
@@ -141,6 +143,7 @@ void CAIRO_COMPOSITOR::DrawBuffer( unsigned int aBufferHandle )
// Restore the transformation matrix
// Restore the transformation matrix
cairo_set_matrix
(
m_mainContext
,
&
m_matrix
);
cairo_set_matrix
(
m_mainContext
,
&
m_matrix
);
}
}
#ifdef __WXDEBUG__
#ifdef __WXDEBUG__
else
else
wxLogDebug
(
wxT
(
"Tried to use a not existing buffer"
)
);
wxLogDebug
(
wxT
(
"Tried to use a not existing buffer"
)
);
...
...
common/gal/cairo/cairo_gal.cpp
View file @
190ed585
This diff is collapsed.
Click to expand it.
common/gal/graphics_abstraction_layer.cpp
View file @
190ed585
...
@@ -63,6 +63,33 @@ GAL::~GAL()
...
@@ -63,6 +63,33 @@ GAL::~GAL()
}
}
void
GAL
::
ComputeWorldScreenMatrix
()
{
ComputeWorldScale
();
worldScreenMatrix
.
SetIdentity
();
MATRIX3x3D
translation
;
translation
.
SetIdentity
();
translation
.
SetTranslation
(
0.5
*
screenSize
);
MATRIX3x3D
scale
;
scale
.
SetIdentity
();
scale
.
SetScale
(
VECTOR2D
(
worldScale
,
worldScale
)
);
MATRIX3x3D
flip
;
flip
.
SetIdentity
();
flip
.
SetScale
(
VECTOR2D
(
1.0
,
1.0
)
);
MATRIX3x3D
lookat
;
lookat
.
SetIdentity
();
lookat
.
SetTranslation
(
-
lookAtPoint
);
worldScreenMatrix
=
translation
*
flip
*
scale
*
lookat
*
worldScreenMatrix
;
}
void
GAL
::
DrawGrid
()
void
GAL
::
DrawGrid
()
{
{
if
(
!
gridVisibility
)
if
(
!
gridVisibility
)
...
@@ -136,7 +163,7 @@ void GAL::DrawGrid()
...
@@ -136,7 +163,7 @@ void GAL::DrawGrid()
if
(
(
j
%
gridTick
==
0
&&
gridScreenSizeCoarse
>
gridDrawThreshold
)
if
(
(
j
%
gridTick
==
0
&&
gridScreenSizeCoarse
>
gridDrawThreshold
)
||
gridScreenSizeDense
>
gridDrawThreshold
)
||
gridScreenSizeDense
>
gridDrawThreshold
)
{
{
D
rawGridLine
(
VECTOR2D
(
gridStartX
*
gridSize
.
x
,
j
*
gridSize
.
y
),
d
rawGridLine
(
VECTOR2D
(
gridStartX
*
gridSize
.
x
,
j
*
gridSize
.
y
),
VECTOR2D
(
gridEndX
*
gridSize
.
x
,
j
*
gridSize
.
y
)
);
VECTOR2D
(
gridEndX
*
gridSize
.
x
,
j
*
gridSize
.
y
)
);
}
}
}
}
...
@@ -155,7 +182,7 @@ void GAL::DrawGrid()
...
@@ -155,7 +182,7 @@ void GAL::DrawGrid()
if
(
(
i
%
gridTick
==
0
&&
gridScreenSizeCoarse
>
gridDrawThreshold
)
if
(
(
i
%
gridTick
==
0
&&
gridScreenSizeCoarse
>
gridDrawThreshold
)
||
gridScreenSizeDense
>
gridDrawThreshold
)
||
gridScreenSizeDense
>
gridDrawThreshold
)
{
{
D
rawGridLine
(
VECTOR2D
(
i
*
gridSize
.
x
,
gridStartY
*
gridSize
.
y
),
d
rawGridLine
(
VECTOR2D
(
i
*
gridSize
.
x
,
gridStartY
*
gridSize
.
y
),
VECTOR2D
(
i
*
gridSize
.
x
,
gridEndY
*
gridSize
.
y
)
);
VECTOR2D
(
i
*
gridSize
.
x
,
gridEndY
*
gridSize
.
y
)
);
}
}
}
}
...
...
common/gal/opengl/gpu_manager.cpp
View file @
190ed585
common/gal/opengl/opengl_compositor.cpp
View file @
190ed585
...
@@ -229,9 +229,11 @@ void OPENGL_COMPOSITOR::clean()
...
@@ -229,9 +229,11 @@ void OPENGL_COMPOSITOR::clean()
{
{
glDeleteTextures
(
1
,
&
it
->
textureTarget
);
glDeleteTextures
(
1
,
&
it
->
textureTarget
);
}
}
m_buffers
.
clear
();
m_buffers
.
clear
();
m_initialized
=
false
;
m_initialized
=
false
;
}
}
GLuint
OPENGL_COMPOSITOR
::
m_currentFbo
=
0
;
GLuint
OPENGL_COMPOSITOR
::
m_currentFbo
=
0
;
common/gal/opengl/opengl_gal.cpp
View file @
190ed585
This diff is collapsed.
Click to expand it.
common/gal/opengl/shader.cpp
View file @
190ed585
...
@@ -97,7 +97,8 @@ bool SHADER::Link()
...
@@ -97,7 +97,8 @@ bool SHADER::Link()
programInfo
(
programNumber
);
programInfo
(
programNumber
);
// Check the Link state
// Check the Link state
glGetObjectParameterivARB
(
programNumber
,
GL_OBJECT_LINK_STATUS_ARB
,
(
GLint
*
)
&
isShaderLinked
);
glGetObjectParameterivARB
(
programNumber
,
GL_OBJECT_LINK_STATUS_ARB
,
(
GLint
*
)
&
isShaderLinked
);
#ifdef __WXDEBUG__
#ifdef __WXDEBUG__
if
(
!
isShaderLinked
)
if
(
!
isShaderLinked
)
...
@@ -253,6 +254,7 @@ bool SHADER::addSource( const std::string& aShaderSource, ShaderType aShaderType
...
@@ -253,6 +254,7 @@ bool SHADER::addSource( const std::string& aShaderSource, ShaderType aShaderType
glCompileShader
(
shaderNumber
);
glCompileShader
(
shaderNumber
);
GLint
status
;
GLint
status
;
glGetShaderiv
(
shaderNumber
,
GL_COMPILE_STATUS
,
&
status
);
glGetShaderiv
(
shaderNumber
,
GL_COMPILE_STATUS
,
&
status
);
if
(
status
!=
GL_TRUE
)
if
(
status
!=
GL_TRUE
)
{
{
wxLogError
(
wxT
(
"Shader compilation error"
)
);
wxLogError
(
wxT
(
"Shader compilation error"
)
);
...
@@ -275,4 +277,3 @@ bool SHADER::addSource( const std::string& aShaderSource, ShaderType aShaderType
...
@@ -275,4 +277,3 @@ bool SHADER::addSource( const std::string& aShaderSource, ShaderType aShaderType
return
true
;
return
true
;
}
}
common/gal/opengl/vertex_manager.cpp
View file @
190ed585
...
@@ -52,6 +52,7 @@ void VERTEX_MANAGER::Vertex( GLfloat aX, GLfloat aY, GLfloat aZ ) const
...
@@ -52,6 +52,7 @@ void VERTEX_MANAGER::Vertex( GLfloat aX, GLfloat aY, GLfloat aZ ) const
{
{
// Obtain the pointer to the vertex in the currently used container
// Obtain the pointer to the vertex in the currently used container
VERTEX
*
newVertex
=
m_container
->
Allocate
(
1
);
VERTEX
*
newVertex
=
m_container
->
Allocate
(
1
);
if
(
newVertex
==
NULL
)
if
(
newVertex
==
NULL
)
{
{
wxLogError
(
wxT
(
"Vertex allocation error"
)
);
wxLogError
(
wxT
(
"Vertex allocation error"
)
);
...
@@ -66,6 +67,7 @@ void VERTEX_MANAGER::Vertices( const VERTEX aVertices[], unsigned int aSize ) co
...
@@ -66,6 +67,7 @@ void VERTEX_MANAGER::Vertices( const VERTEX aVertices[], unsigned int aSize ) co
{
{
// Obtain pointer to the vertex in currently used container
// Obtain pointer to the vertex in currently used container
VERTEX
*
newVertex
=
m_container
->
Allocate
(
aSize
);
VERTEX
*
newVertex
=
m_container
->
Allocate
(
aSize
);
if
(
newVertex
==
NULL
)
if
(
newVertex
==
NULL
)
{
{
wxLogError
(
wxT
(
"Vertex allocation error"
)
);
wxLogError
(
wxT
(
"Vertex allocation error"
)
);
...
@@ -158,6 +160,7 @@ void VERTEX_MANAGER::BeginDrawing() const
...
@@ -158,6 +160,7 @@ void VERTEX_MANAGER::BeginDrawing() const
void
VERTEX_MANAGER
::
DrawItem
(
const
VERTEX_ITEM
&
aItem
)
const
void
VERTEX_MANAGER
::
DrawItem
(
const
VERTEX_ITEM
&
aItem
)
const
{
{
int
size
=
aItem
.
GetSize
();
int
size
=
aItem
.
GetSize
();
if
(
size
>
0
)
if
(
size
>
0
)
{
{
int
offset
=
aItem
.
GetOffset
();
int
offset
=
aItem
.
GetOffset
();
...
...
common/view/wx_view_controls.cpp
View file @
190ed585
...
@@ -85,7 +85,6 @@ void WX_VIEW_CONTROLS::onWheel( wxMouseEvent& event )
...
@@ -85,7 +85,6 @@ void WX_VIEW_CONTROLS::onWheel( wxMouseEvent& event )
else
else
scrollSpeed
=
scrollVec
.
y
;
scrollSpeed
=
scrollVec
.
y
;
VECTOR2D
t
=
m_view
->
GetScreenPixelSize
();
VECTOR2D
delta
(
event
.
ControlDown
()
?
-
scrollSpeed
:
0.0
,
VECTOR2D
delta
(
event
.
ControlDown
()
?
-
scrollSpeed
:
0.0
,
event
.
ShiftDown
()
?
-
scrollSpeed
:
0.0
);
event
.
ShiftDown
()
?
-
scrollSpeed
:
0.0
);
...
...
include/gal/cairo/cairo_compositor.h
View file @
190ed585
...
@@ -38,7 +38,6 @@
...
@@ -38,7 +38,6 @@
namespace
KiGfx
namespace
KiGfx
{
{
class
CAIRO_COMPOSITOR
:
public
COMPOSITOR
class
CAIRO_COMPOSITOR
:
public
COMPOSITOR
{
{
public
:
public
:
...
@@ -102,7 +101,6 @@ protected:
...
@@ -102,7 +101,6 @@ protected:
return
m_buffers
.
size
();
return
m_buffers
.
size
();
}
}
};
};
}
// namespace KiGfx
}
// namespace KiGfx
#endif
/* COMPOSITOR_H_ */
#endif
/* COMPOSITOR_H_ */
include/gal/cairo/cairo_gal.h
View file @
190ed585
...
@@ -45,9 +45,6 @@
...
@@ -45,9 +45,6 @@
#endif
#endif
#endif
#endif
#define EXCEPTION_ZERO_CLIENT_RECTANGLE 0
#define EXCEPTION_ZERO_CONTEXT 1
/**
/**
* @brief Class CAIRO_GAL is the cairo implementation of the graphics abstraction layer.
* @brief Class CAIRO_GAL is the cairo implementation of the graphics abstraction layer.
*
*
...
@@ -92,7 +89,7 @@ public:
...
@@ -92,7 +89,7 @@ public:
// ---------------
// ---------------
/// @copydoc GAL::BeginDrawing()
/// @copydoc GAL::BeginDrawing()
virtual
void
BeginDrawing
()
throw
(
int
)
;
virtual
void
BeginDrawing
();
/// @copydoc GAL::EndDrawing()
/// @copydoc GAL::EndDrawing()
virtual
void
EndDrawing
();
virtual
void
EndDrawing
();
...
@@ -103,19 +100,19 @@ public:
...
@@ -103,19 +100,19 @@ public:
/// @copydoc GAL::DrawSegment()
/// @copydoc GAL::DrawSegment()
virtual
void
DrawSegment
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
,
double
aWidth
);
virtual
void
DrawSegment
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
,
double
aWidth
);
/// @copydoc GAL::DrawPolyline()
virtual
void
DrawPolyline
(
std
::
deque
<
VECTOR2D
>&
aPointList
);
/// @copydoc GAL::DrawCircle()
/// @copydoc GAL::DrawCircle()
virtual
void
DrawCircle
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
);
virtual
void
DrawCircle
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
);
/// @copydoc GAL::DrawArc()
/// @copydoc GAL::DrawArc()
virtual
void
virtual
void
DrawArc
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
,
DrawArc
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
,
double
aStartAngle
,
double
aEndAngle
);
double
aStartAngle
,
double
aEndAngle
);
/// @copydoc GAL::DrawRectangle()
/// @copydoc GAL::DrawRectangle()
virtual
void
DrawRectangle
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
);
virtual
void
DrawRectangle
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
);
/// @copydoc GAL::DrawPolyline()
virtual
void
DrawPolyline
(
std
::
deque
<
VECTOR2D
>&
aPointList
);
/// @copydoc GAL::DrawPolygon()
/// @copydoc GAL::DrawPolygon()
virtual
void
DrawPolygon
(
const
std
::
deque
<
VECTOR2D
>&
aPointList
);
virtual
void
DrawPolygon
(
const
std
::
deque
<
VECTOR2D
>&
aPointList
);
...
@@ -149,24 +146,15 @@ public:
...
@@ -149,24 +146,15 @@ public:
/// @copydoc GAL::SetIsStroke()
/// @copydoc GAL::SetIsStroke()
virtual
void
SetIsStroke
(
bool
aIsStrokeEnabled
);
virtual
void
SetIsStroke
(
bool
aIsStrokeEnabled
);
/// @copydoc GAL::SetFillColor()
virtual
void
SetFillColor
(
const
COLOR4D
&
aColor
);
/// @copydoc GAL::SetStrokeColor()
/// @copydoc GAL::SetStrokeColor()
virtual
void
SetStrokeColor
(
const
COLOR4D
&
aColor
);
virtual
void
SetStrokeColor
(
const
COLOR4D
&
aColor
);
/// @copydoc GAL::GetStrokeColor()
/// @copydoc GAL::SetFillColor()
COLOR4D
GetStrokeColor
();
virtual
void
SetFillColor
(
const
COLOR4D
&
aColor
);
/// @copydoc GAL::SetBackgroundColor()
virtual
void
SetBackgroundColor
(
const
COLOR4D
&
aColor
);
/// @copydoc GAL::SetLineWidth()
/// @copydoc GAL::SetLineWidth()
virtual
void
SetLineWidth
(
double
aLineWidth
);
virtual
void
SetLineWidth
(
double
aLineWidth
);
/// @copydoc GAL::GetLineWidth()
double
GetLineWidth
();
/// @copydoc GAL::SetLayerDepth()
/// @copydoc GAL::SetLayerDepth()
virtual
void
SetLayerDepth
(
double
aLayerDepth
);
virtual
void
SetLayerDepth
(
double
aLayerDepth
);
...
@@ -221,33 +209,6 @@ public:
...
@@ -221,33 +209,6 @@ public:
// Handling the world <-> screen transformation
// Handling the world <-> screen transformation
// --------------------------------------------------------
// --------------------------------------------------------
/// @copydoc GAL::ComputeWorldScreenMatrix()
virtual
void
ComputeWorldScreenMatrix
();
/// @copydoc GAL::GetWorldScreenMatrix()
MATRIX3x3D
GetWorldScreenMatrix
();
/// @copydoc GAL::SetWorldScreenMatrix()
void
SetWorldScreenMatrix
(
MATRIX3x3D
aMatrix
);
/// @copydoc GAL::SetWorldUnitLength()
void
SetWorldUnitLength
(
double
aWorldUnitLength
);
/// @copydoc GAL::SetScreenDPI()
void
SetScreenDPI
(
double
aScreenDPI
);
/// @copydoc GAL::SetLookAtPoint()
void
SetLookAtPoint
(
const
VECTOR2D
&
aPoint
);
/// @copydoc GAL::GetLookAtPoint()
VECTOR2D
GetLookAtPoint
();
/// @copydoc GAL::SetZoomFactor()
void
SetZoomFactor
(
double
aZoomFactor
);
/// @copydoc GAL::GetZoomFactor()
double
GetZoomFactor
();
/// @copydoc GAL::SaveScreen()
/// @copydoc GAL::SaveScreen()
virtual
void
SaveScreen
();
virtual
void
SaveScreen
();
...
@@ -264,9 +225,6 @@ public:
...
@@ -264,9 +225,6 @@ public:
/// @copydoc GAL::ComputeCursorToWorld()
/// @copydoc GAL::ComputeCursorToWorld()
virtual
VECTOR2D
ComputeCursorToWorld
(
const
VECTOR2D
&
aCursorPosition
);
virtual
VECTOR2D
ComputeCursorToWorld
(
const
VECTOR2D
&
aCursorPosition
);
/// @copydoc GAL::SetIsCursorEnabled()
void
SetIsCursorEnabled
(
bool
aIsCursorEnabled
);
/// @copydoc GAL::DrawCursor()
/// @copydoc GAL::DrawCursor()
virtual
void
DrawCursor
(
VECTOR2D
aCursorPosition
);
virtual
void
DrawCursor
(
VECTOR2D
aCursorPosition
);
...
@@ -295,7 +253,7 @@ public:
...
@@ -295,7 +253,7 @@ public:
}
}
protected
:
protected
:
virtual
void
D
rawGridLine
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
);
virtual
void
d
rawGridLine
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
);
private
:
private
:
/// Super class definition
/// Super class definition
...
@@ -325,8 +283,7 @@ private:
...
@@ -325,8 +283,7 @@ private:
static
const
int
MAX_CAIRO_ARGUMENTS
=
6
;
static
const
int
MAX_CAIRO_ARGUMENTS
=
6
;
/// Definitions for the command recorder
/// Definitions for the command recorder
enum
GraphicsCommand
enum
GraphicsCommand
{
{
CMD_SET_FILL
,
///< Enable/disable filling
CMD_SET_FILL
,
///< Enable/disable filling
CMD_SET_STROKE
,
///< Enable/disable stroking
CMD_SET_STROKE
,
///< Enable/disable stroking
CMD_SET_FILLCOLOR
,
///< Set the fill color
CMD_SET_FILLCOLOR
,
///< Set the fill color
...
@@ -392,18 +349,18 @@ private:
...
@@ -392,18 +349,18 @@ private:
/// @copydoc GAL::initCursor()
/// @copydoc GAL::initCursor()
virtual
void
initCursor
(
int
aCursorSize
);
virtual
void
initCursor
(
int
aCursorSize
);
/// Allocate the bitmaps for drawing
void
allocateBitmaps
();
/// Allocate the bitmaps for drawing
void
deleteBitmaps
();
/// Prepare Cairo surfaces for drawing
/// Prepare Cairo surfaces for drawing
void
initSurface
();
void
initSurface
();
/// Destroy Cairo surfaces when are not needed anymore
/// Destroy Cairo surfaces when are not needed anymore
void
deinitSurface
();
void
deinitSurface
();
/// Allocate the bitmaps for drawing
void
allocateBitmaps
();
/// Allocate the bitmaps for drawing
void
deleteBitmaps
();
/// Prepare the compositor
/// Prepare the compositor
void
setCompositor
();
void
setCompositor
();
...
...
include/gal/graphics_abstraction_layer.h
View file @
190ed585
...
@@ -231,7 +231,10 @@ public:
...
@@ -231,7 +231,10 @@ public:
*
*
* @param aColor is the color for background filling.
* @param aColor is the color for background filling.
*/
*/
virtual
void
SetBackgroundColor
(
const
COLOR4D
&
aColor
)
=
0
;
inline
virtual
void
SetBackgroundColor
(
const
COLOR4D
&
aColor
)
{
backgroundColor
=
aColor
;
}
/**
/**
* @brief Set the line width.
* @brief Set the line width.
...
@@ -417,7 +420,7 @@ public:
...
@@ -417,7 +420,7 @@ public:
// --------------------------------------------------------
// --------------------------------------------------------
/// @brief Compute the world <-> screen transformation matrix
/// @brief Compute the world <-> screen transformation matrix
virtual
void
ComputeWorldScreenMatrix
()
=
0
;
virtual
void
ComputeWorldScreenMatrix
();
/**
/**
* @brief Get the world <-> screen transformation matrix.
* @brief Get the world <-> screen transformation matrix.
...
@@ -745,7 +748,6 @@ protected:
...
@@ -745,7 +748,6 @@ protected:
bool
isFillEnabled
;
///< Is filling of graphic objects enabled ?
bool
isFillEnabled
;
///< Is filling of graphic objects enabled ?
bool
isStrokeEnabled
;
///< Are the outlines stroked ?
bool
isStrokeEnabled
;
///< Are the outlines stroked ?
bool
isSetAttributes
;
///< True, if the attributes have been set
COLOR4D
backgroundColor
;
///< The background color
COLOR4D
backgroundColor
;
///< The background color
COLOR4D
fillColor
;
///< The fill color
COLOR4D
fillColor
;
///< The fill color
...
@@ -784,7 +786,7 @@ protected:
...
@@ -784,7 +786,7 @@ protected:
* @param aStartPoint is the start point of the line.
* @param aStartPoint is the start point of the line.
* @param aEndPoint is the end point of the line.
* @param aEndPoint is the end point of the line.
*/
*/
virtual
void
D
rawGridLine
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
)
=
0
;
virtual
void
d
rawGridLine
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
)
=
0
;
/**
/**
* @brief Initialize the cursor.
* @brief Initialize the cursor.
...
...
include/gal/opengl/cached_container.h
View file @
190ed585
include/gal/opengl/opengl_compositor.h
View file @
190ed585
...
@@ -37,7 +37,6 @@
...
@@ -37,7 +37,6 @@
namespace
KiGfx
namespace
KiGfx
{
{
class
OPENGL_COMPOSITOR
:
public
COMPOSITOR
class
OPENGL_COMPOSITOR
:
public
COMPOSITOR
{
{
public
:
public
:
...
@@ -94,7 +93,6 @@ protected:
...
@@ -94,7 +93,6 @@ protected:
return
m_buffers
.
size
();
return
m_buffers
.
size
();
}
}
};
};
}
// namespace KiGfx
}
// namespace KiGfx
#endif
/* COMPOSITOR_H_ */
#endif
/* COMPOSITOR_H_ */
include/gal/opengl/opengl_gal.h
View file @
190ed585
...
@@ -104,19 +104,19 @@ public:
...
@@ -104,19 +104,19 @@ public:
/// @copydoc GAL::DrawSegment()
/// @copydoc GAL::DrawSegment()
virtual
void
DrawSegment
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
,
double
aWidth
);
virtual
void
DrawSegment
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
,
double
aWidth
);
/// @copydoc GAL::DrawPolyline()
virtual
void
DrawPolyline
(
std
::
deque
<
VECTOR2D
>&
aPointList
);
/// @copydoc GAL::DrawCircle()
/// @copydoc GAL::DrawCircle()
virtual
void
DrawCircle
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
);
virtual
void
DrawCircle
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
);
/// @copydoc GAL::DrawArc()
/// @copydoc GAL::DrawArc()
virtual
void
virtual
void
DrawArc
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
,
DrawArc
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
,
double
aStartAngle
,
double
aEndAngle
);
double
aStartAngle
,
double
aEndAngle
);
/// @copydoc GAL::DrawRectangle()
/// @copydoc GAL::DrawRectangle()
virtual
void
DrawRectangle
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
);
virtual
void
DrawRectangle
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
);
/// @copydoc GAL::DrawPolyline()
virtual
void
DrawPolyline
(
std
::
deque
<
VECTOR2D
>&
aPointList
);
/// @copydoc GAL::DrawPolygon()
/// @copydoc GAL::DrawPolygon()
virtual
void
DrawPolygon
(
const
std
::
deque
<
VECTOR2D
>&
aPointList
);
virtual
void
DrawPolygon
(
const
std
::
deque
<
VECTOR2D
>&
aPointList
);
...
@@ -129,7 +129,7 @@ public:
...
@@ -129,7 +129,7 @@ public:
// --------------
// --------------
/// @brief Resizes the canvas.
/// @brief Resizes the canvas.
virtual
void
ResizeScreen
(
int
aWidth
,
int
aHeight
);
virtual
void
ResizeScreen
(
int
aWidth
,
int
aHeight
);
/// @brief Shows/hides the GAL canvas
/// @brief Shows/hides the GAL canvas
virtual
bool
Show
(
bool
aShow
);
virtual
bool
Show
(
bool
aShow
);
...
@@ -144,42 +144,9 @@ public:
...
@@ -144,42 +144,9 @@ public:
// Attribute setting
// Attribute setting
// -----------------
// -----------------
/// @copydoc GAL::SetIsFill()
virtual
void
SetIsFill
(
bool
aIsFillEnabled
)
{
isFillEnabled
=
aIsFillEnabled
;
}
/// @copydoc GAL::SetIsStroke()
virtual
void
SetIsStroke
(
bool
aIsStrokeEnabled
)
{
isStrokeEnabled
=
aIsStrokeEnabled
;
}
/// @copydoc GAL::SetFillColor()
virtual
void
SetFillColor
(
const
COLOR4D
&
aColor
);
/// @copydoc GAL::SetStrokeColor()
/// @copydoc GAL::SetStrokeColor()
virtual
void
SetStrokeColor
(
const
COLOR4D
&
aColor
);
virtual
void
SetStrokeColor
(
const
COLOR4D
&
aColor
);
/// @copydoc GAL::GetStrokeColor()
COLOR4D
GetStrokeColor
();
/// @copydoc GAL::SetBackgroundColor()
virtual
void
SetBackgroundColor
(
const
COLOR4D
&
aColor
);
/// @copydoc GAL::SetLineWidth()
virtual
void
SetLineWidth
(
double
aLineWidth
);
/// @copydoc GAL::GetLineWidth()
double
GetLineWidth
();
/// @copydoc GAL::SetLayerDepth()
virtual
void
SetLayerDepth
(
double
aLayerDepth
)
{
super
::
SetLayerDepth
(
aLayerDepth
);
}
// --------------
// --------------
// Transformation
// Transformation
// --------------
// --------------
...
@@ -231,33 +198,6 @@ public:
...
@@ -231,33 +198,6 @@ public:
// Handling the world <-> screen transformation
// Handling the world <-> screen transformation
// --------------------------------------------------------
// --------------------------------------------------------
/// @copydoc GAL::ComputeWorldScreenMatrix()
virtual
void
ComputeWorldScreenMatrix
();
/// @copydoc GAL::GetWorldScreenMatrix()
MATRIX3x3D
GetWorldScreenMatrix
();
/// @copydoc GAL::SetWorldScreenMatrix()
void
SetWorldScreenMatrix
(
MATRIX3x3D
aMatrix
);
/// @copydoc GAL::SetWorldUnitLength()
void
SetWorldUnitLength
(
double
aWorldUnitLength
);
/// @copydoc GAL::SetScreenDPI()
void
SetScreenDPI
(
double
aScreenDPI
);
/// @copydoc GAL::SetLookAtPoint()
void
SetLookAtPoint
(
const
VECTOR2D
&
aPoint
);
/// @copydoc GAL::GetLookAtPoint()
VECTOR2D
GetLookAtPoint
();
/// @copydoc GAL::SetZoomFactor()
void
SetZoomFactor
(
double
aZoomFactor
);
/// @copydoc GAL::GetZoomFactor()
double
GetZoomFactor
();
/// @copydoc GAL::SaveScreen()
/// @copydoc GAL::SaveScreen()
virtual
void
SaveScreen
();
virtual
void
SaveScreen
();
...
@@ -274,9 +214,6 @@ public:
...
@@ -274,9 +214,6 @@ public:
/// @copydoc GAL::ComputeCursorToWorld()
/// @copydoc GAL::ComputeCursorToWorld()
virtual
VECTOR2D
ComputeCursorToWorld
(
const
VECTOR2D
&
aCursorPosition
);
virtual
VECTOR2D
ComputeCursorToWorld
(
const
VECTOR2D
&
aCursorPosition
);
/// @copydoc GAL::SetIsCursorEnabled()
void
SetIsCursorEnabled
(
bool
aIsCursorEnabled
);
/// @copydoc GAL::DrawCursor()
/// @copydoc GAL::DrawCursor()
virtual
void
DrawCursor
(
VECTOR2D
aCursorPosition
);
virtual
void
DrawCursor
(
VECTOR2D
aCursorPosition
);
...
@@ -312,7 +249,7 @@ public:
...
@@ -312,7 +249,7 @@ public:
}
TessParams
;
}
TessParams
;
protected
:
protected
:
virtual
void
D
rawGridLine
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
);
virtual
void
d
rawGridLine
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
);
private
:
private
:
/// Super class definition
/// Super class definition
...
@@ -327,9 +264,6 @@ private:
...
@@ -327,9 +264,6 @@ private:
wxEvtHandler
*
mouseListener
;
wxEvtHandler
*
mouseListener
;
wxEvtHandler
*
paintListener
;
wxEvtHandler
*
paintListener
;
// Precomputed vertices for faster circle & semicircle drawing
NONCACHED_CONTAINER
circleContainer
;
///< Container for storing circle vertices
// Vertex buffer objects related fields
// Vertex buffer objects related fields
typedef
std
::
map
<
unsigned
int
,
boost
::
shared_ptr
<
VERTEX_ITEM
>
>
GroupsMap
;
typedef
std
::
map
<
unsigned
int
,
boost
::
shared_ptr
<
VERTEX_ITEM
>
>
GroupsMap
;
GroupsMap
groups
;
///< Stores informations about VBO objects (groups)
GroupsMap
groups
;
///< Stores informations about VBO objects (groups)
...
@@ -344,10 +278,6 @@ private:
...
@@ -344,10 +278,6 @@ private:
unsigned
int
mainBuffer
;
///< Main rendering target
unsigned
int
mainBuffer
;
///< Main rendering target
unsigned
int
overlayBuffer
;
///< Auxiliary rendering target (for menus etc.)
unsigned
int
overlayBuffer
;
///< Auxiliary rendering target (for menus etc.)
// Polygon tesselation
GLUtesselator
*
tesselator
;
///< Pointer to the tesselator
std
::
vector
<
GLdouble
*>
tessIntersects
;
///< Storage of intersecting points
// Shader
// Shader
SHADER
shader
;
///< There is only one shader used for different objects
SHADER
shader
;
///< There is only one shader used for different objects
...
@@ -363,48 +293,79 @@ private:
...
@@ -363,48 +293,79 @@ private:
bool
isShaderInitialized
;
///< Was the shader initialized?
bool
isShaderInitialized
;
///< Was the shader initialized?
bool
isGrouping
;
///< Was a group started?
bool
isGrouping
;
///< Was a group started?
// Polygon tesselation
GLUtesselator
*
tesselator
;
///< Pointer to the tesselator
std
::
vector
<
GLdouble
*>
tessIntersects
;
///< Storage of intersecting points
// Structure used for tesselation of polygons
struct
OGLPOINT
{
OGLPOINT
()
:
x
(
0
.
0
),
y
(
0
.
0
),
z
(
0
.
0
)
{}
OGLPOINT
(
const
char
*
fastest
)
{
// do nothing for fastest speed, and keep inline
}
OGLPOINT
(
const
VECTOR2D
&
aPoint
)
:
x
(
aPoint
.
x
),
y
(
aPoint
.
y
),
z
(
0
.
0
)
{}
OGLPOINT
&
operator
=
(
const
VECTOR2D
&
aPoint
)
{
x
=
aPoint
.
x
;
y
=
aPoint
.
y
;
z
=
0
.
0
;
return
*
this
;
}
GLdouble
x
;
GLdouble
y
;
GLdouble
z
;
};
/**
/**
* @brief Draw a semi circle. Depending on settings (isStrokeEnabled & isFilledEnabled) it runs
* @brief Draw a quad for the line.
*
* @param aStartPoint is the start point of the line.
* @param aEndPoint is the end point of the line.
*/
inline
void
drawLineQuad
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
);
/**
* @brief Draw a semicircle. Depending on settings (isStrokeEnabled & isFilledEnabled) it runs
* the proper function (drawStrokedSemiCircle or drawFilledSemiCircle).
* the proper function (drawStrokedSemiCircle or drawFilledSemiCircle).
*
*
* @param aCenterPoint is the center point.
* @param aCenterPoint is the center point.
* @param aRadius is the radius of the semi
-
circle.
* @param aRadius is the radius of the semicircle.
* @param aAngle is the angle of the semi
-
circle.
* @param aAngle is the angle of the semicircle.
*
*
*/
*/
void
drawSemiCircle
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
,
double
aAngle
);
void
drawSemiCircle
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
,
double
aAngle
);
/**
/**
* @brief Draw a filled semi
circle.
* @brief Draw a filled semicircle.
*
*
* @param aCenterPoint is the center point.
* @param aCenterPoint is the center point.
* @param aRadius is the radius of the semi
-
circle.
* @param aRadius is the radius of the semicircle.
* @param aAngle is the angle of the semi
-
circle.
* @param aAngle is the angle of the semicircle.
*
*
*/
*/
void
drawFilledSemiCircle
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
,
double
aAngle
);
void
drawFilledSemiCircle
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
,
double
aAngle
);
/**
/**
* @brief Draw a stroked semi
circle.
* @brief Draw a stroked semicircle.
*
*
* @param aCenterPoint is the center point.
* @param aCenterPoint is the center point.
* @param aRadius is the radius of the semi
-
circle.
* @param aRadius is the radius of the semicircle.
* @param aAngle is the angle of the semi
-
circle.
* @param aAngle is the angle of the semicircle.
*
*
*/
*/
void
drawStrokedSemiCircle
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
,
double
aAngle
);
void
drawStrokedSemiCircle
(
const
VECTOR2D
&
aCenterPoint
,
double
aRadius
,
double
aAngle
);
/// Compute the points of the unit circle and store them in VBO.
void
computeCircle
();
// Event handling
// Event handling
/**
* @brief This is the window creation event handler.
*
* @param aEvent is the window creation event.
*/
void
onCreate
(
wxWindowCreateEvent
&
aEvent
);
/**
/**
* @brief This is the OnPaint event handler.
* @brief This is the OnPaint event handler.
*
*
...
@@ -419,20 +380,12 @@ private:
...
@@ -419,20 +380,12 @@ private:
*/
*/
void
skipMouseEvent
(
wxMouseEvent
&
aEvent
);
void
skipMouseEvent
(
wxMouseEvent
&
aEvent
);
/// Initialize GLEW
.
/// Initialize GLEW
void
initGlew
();
void
initGlew
();
/// @copydoc GAL::initCursor()
/// @copydoc GAL::initCursor()
virtual
void
initCursor
(
int
aCursorSize
);
virtual
void
initCursor
(
int
aCursorSize
);
/**
* @brief Draw a quad for the line.
*
* @param aStartPoint is the start point of the line.
* @param aEndPoint is the end point of the line.
*/
inline
void
drawLineQuad
(
const
VECTOR2D
&
aStartPoint
,
const
VECTOR2D
&
aEndPoint
);
/**
/**
* @brief Returns a valid key that can be used as a new group number.
* @brief Returns a valid key that can be used as a new group number.
*
*
...
...
include/gal/opengl/vertex_common.h
View file @
190ed585
...
@@ -35,8 +35,7 @@
...
@@ -35,8 +35,7 @@
namespace
KiGfx
namespace
KiGfx
{
{
// Possible types of shaders
// Possible types of shaders
enum
SHADER_TYPE
enum
SHADER_TYPE
{
{
SHADER_NONE
=
0
,
SHADER_NONE
=
0
,
SHADER_LINE
,
SHADER_LINE
,
SHADER_FILLED_CIRCLE
,
SHADER_FILLED_CIRCLE
,
...
...
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