GAL mode: Add small cross option to grid style (now: options are Dots, Grid, Small cross)
This commit is contained in:
parent
96b32861cd
commit
1cffcafe2d
|
@ -51,6 +51,7 @@ static const UTIL::CFG_MAP<KIGFX::GRID_STYLE> gridStyleConfigVals =
|
||||||
{
|
{
|
||||||
{ KIGFX::GRID_STYLE::DOTS, 0 },
|
{ KIGFX::GRID_STYLE::DOTS, 0 },
|
||||||
{ KIGFX::GRID_STYLE::LINES, 1 },
|
{ KIGFX::GRID_STYLE::LINES, 1 },
|
||||||
|
{ KIGFX::GRID_STYLE::SMALL_CROSS,2 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -267,6 +267,41 @@ void GAL::DrawGrid()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if( gridStyle == GRID_STYLE::SMALL_CROSS )
|
||||||
|
{
|
||||||
|
SetIsFill( false );
|
||||||
|
SetIsStroke( true );
|
||||||
|
SetStrokeColor( gridColor );
|
||||||
|
|
||||||
|
SetLineWidth( marker );
|
||||||
|
double lineLen = GetLineWidth() * 2;
|
||||||
|
|
||||||
|
// Vertical positions:
|
||||||
|
for( int j = gridStartY; j != gridEndY; j += dirY )
|
||||||
|
{
|
||||||
|
if( ( j % gridTick == 0 && gridScreenSizeCoarse > gridThreshold )
|
||||||
|
|| gridScreenSizeDense > gridThreshold )
|
||||||
|
{
|
||||||
|
int posY = j * gridSize.y + gridOrigin.y;
|
||||||
|
|
||||||
|
// Horizontal positions:
|
||||||
|
for( int i = gridStartX; i != gridEndX; i += dirX )
|
||||||
|
{
|
||||||
|
if( ( i % gridTick == 0 && gridScreenSizeCoarse > gridThreshold )
|
||||||
|
|| gridScreenSizeDense > gridThreshold )
|
||||||
|
{
|
||||||
|
int posX = i * gridSize.x + gridOrigin.x;
|
||||||
|
|
||||||
|
drawGridLine( VECTOR2D( posX - lineLen, posY ),
|
||||||
|
VECTOR2D( posX + lineLen, posY ) );
|
||||||
|
|
||||||
|
drawGridLine( VECTOR2D( posX, posY - lineLen ),
|
||||||
|
VECTOR2D( posX, posY + lineLen ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else // Dotted grid
|
else // Dotted grid
|
||||||
{
|
{
|
||||||
bool tickX, tickY;
|
bool tickX, tickY;
|
||||||
|
|
|
@ -906,50 +906,88 @@ void OPENGL_GAL::DrawGrid()
|
||||||
glColor4d( gridColor.r, gridColor.g, gridColor.b, 1.0 );
|
glColor4d( gridColor.r, gridColor.g, gridColor.b, 1.0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vertical lines
|
if( gridStyle == GRID_STYLE::SMALL_CROSS )
|
||||||
for( int j = gridStartY; j != gridEndY; j += dirY )
|
|
||||||
{
|
{
|
||||||
if( j % gridTick == 0 && gridScreenSizeDense > gridThreshold )
|
glLineWidth( minorLineWidth );
|
||||||
glLineWidth( majorLineWidth );
|
|
||||||
else
|
|
||||||
glLineWidth( minorLineWidth );
|
|
||||||
|
|
||||||
if( ( j % gridTick == 0 && gridScreenSizeCoarse > gridThreshold )
|
// calculate a line len = 2 minorLineWidth, in internal unit value
|
||||||
|| gridScreenSizeDense > gridThreshold )
|
// (in fact the size of cross is lineLen*2)
|
||||||
|
int lineLen = KiROUND( minorLineWidth / worldScale *2 );
|
||||||
|
|
||||||
|
// Vertical positions
|
||||||
|
for( int j = gridStartY; j != gridEndY; j += dirY )
|
||||||
{
|
{
|
||||||
glBegin( GL_LINES );
|
if( ( j % gridTick == 0 && gridScreenSizeCoarse > gridThreshold )
|
||||||
glVertex2d( gridStartX * gridSize.x, j * gridSize.y + gridOrigin.y );
|
|| gridScreenSizeDense > gridThreshold )
|
||||||
glVertex2d( gridEndX * gridSize.x, j * gridSize.y + gridOrigin.y );
|
{
|
||||||
glEnd();
|
int posY = j * gridSize.y + gridOrigin.y;
|
||||||
|
|
||||||
|
// Horizontal positions
|
||||||
|
for( int i = gridStartX; i != gridEndX; i += dirX )
|
||||||
|
{
|
||||||
|
if( ( i % gridTick == 0 && gridScreenSizeCoarse > gridThreshold )
|
||||||
|
|| gridScreenSizeDense > gridThreshold )
|
||||||
|
{
|
||||||
|
int posX = i * gridSize.x + gridOrigin.x;
|
||||||
|
|
||||||
|
glBegin( GL_LINES );
|
||||||
|
glVertex2d( posX -lineLen, posY );
|
||||||
|
glVertex2d( posX + lineLen, posY );
|
||||||
|
glVertex2d( posX, posY - lineLen );
|
||||||
|
glVertex2d( posX, posY + lineLen );
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if( gridStyle == GRID_STYLE::DOTS )
|
|
||||||
{
|
{
|
||||||
glStencilFunc( GL_NOTEQUAL, 0, 1 );
|
// Vertical lines
|
||||||
glColor4d( gridColor.r, gridColor.g, gridColor.b, 1.0 );
|
for( int j = gridStartY; j != gridEndY; j += dirY )
|
||||||
}
|
|
||||||
|
|
||||||
// Horizontal lines
|
|
||||||
for( int i = gridStartX; i != gridEndX; i += dirX )
|
|
||||||
{
|
|
||||||
if( i % gridTick == 0 && gridScreenSizeDense > gridThreshold )
|
|
||||||
glLineWidth( majorLineWidth );
|
|
||||||
else
|
|
||||||
glLineWidth( minorLineWidth );
|
|
||||||
|
|
||||||
if( ( i % gridTick == 0 && gridScreenSizeCoarse > gridThreshold )
|
|
||||||
|| gridScreenSizeDense > gridThreshold )
|
|
||||||
{
|
{
|
||||||
glBegin( GL_LINES );
|
if( j % gridTick == 0 && gridScreenSizeDense > gridThreshold )
|
||||||
glVertex2d( i * gridSize.x + gridOrigin.x, gridStartY * gridSize.y );
|
glLineWidth( majorLineWidth );
|
||||||
glVertex2d( i * gridSize.x + gridOrigin.x, gridEndY * gridSize.y );
|
else
|
||||||
glEnd();
|
glLineWidth( minorLineWidth );
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( gridStyle == GRID_STYLE::DOTS )
|
if( ( j % gridTick == 0 && gridScreenSizeCoarse > gridThreshold )
|
||||||
glDisable( GL_STENCIL_TEST );
|
|| gridScreenSizeDense > gridThreshold )
|
||||||
|
{
|
||||||
|
glBegin( GL_LINES );
|
||||||
|
glVertex2d( gridStartX * gridSize.x, j * gridSize.y + gridOrigin.y );
|
||||||
|
glVertex2d( gridEndX * gridSize.x, j * gridSize.y + gridOrigin.y );
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( gridStyle == GRID_STYLE::DOTS )
|
||||||
|
{
|
||||||
|
glStencilFunc( GL_NOTEQUAL, 0, 1 );
|
||||||
|
glColor4d( gridColor.r, gridColor.g, gridColor.b, 1.0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Horizontal lines
|
||||||
|
for( int i = gridStartX; i != gridEndX; i += dirX )
|
||||||
|
{
|
||||||
|
if( i % gridTick == 0 && gridScreenSizeDense > gridThreshold )
|
||||||
|
glLineWidth( majorLineWidth );
|
||||||
|
else
|
||||||
|
glLineWidth( minorLineWidth );
|
||||||
|
|
||||||
|
if( ( i % gridTick == 0 && gridScreenSizeCoarse > gridThreshold )
|
||||||
|
|| gridScreenSizeDense > gridThreshold )
|
||||||
|
{
|
||||||
|
glBegin( GL_LINES );
|
||||||
|
glVertex2d( i * gridSize.x + gridOrigin.x, gridStartY * gridSize.y );
|
||||||
|
glVertex2d( i * gridSize.x + gridOrigin.x, gridEndY * gridSize.y );
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( gridStyle == GRID_STYLE::DOTS )
|
||||||
|
glDisable( GL_STENCIL_TEST );
|
||||||
|
}
|
||||||
|
|
||||||
glEnable( GL_DEPTH_TEST );
|
glEnable( GL_DEPTH_TEST );
|
||||||
glEnable( GL_TEXTURE_2D );
|
glEnable( GL_TEXTURE_2D );
|
||||||
|
|
|
@ -36,8 +36,9 @@ namespace KIGFX
|
||||||
*/
|
*/
|
||||||
enum class GRID_STYLE
|
enum class GRID_STYLE
|
||||||
{
|
{
|
||||||
LINES, ///< Use lines for the grid
|
LINES, ///< Use lines for the grid
|
||||||
DOTS ///< Use dots for the grid
|
DOTS, ///< Use dots for the grid
|
||||||
|
SMALL_CROSS ///< Use small cross instead of dots for the grid
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class OPENGL_ANTIALIASING_MODE
|
enum class OPENGL_ANTIALIASING_MODE
|
||||||
|
|
|
@ -59,8 +59,9 @@ static const double gridMinSpacingStep = 5;
|
||||||
|
|
||||||
static const UTIL::CFG_MAP<KIGFX::GRID_STYLE> gridStyleSelectMap =
|
static const UTIL::CFG_MAP<KIGFX::GRID_STYLE> gridStyleSelectMap =
|
||||||
{
|
{
|
||||||
{ KIGFX::GRID_STYLE::DOTS, 0 }, // Default
|
{ KIGFX::GRID_STYLE::DOTS, 0 }, // Default
|
||||||
{ KIGFX::GRID_STYLE::LINES, 1 },
|
{ KIGFX::GRID_STYLE::LINES, 1 },
|
||||||
|
{ KIGFX::GRID_STYLE::SMALL_CROSS, 2 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ DIALOG_DISPLAY_OPTIONS_BASE::DIALOG_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWi
|
||||||
wxStaticBoxSizer* sGridSettings;
|
wxStaticBoxSizer* sGridSettings;
|
||||||
sGridSettings = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Grid Display (OpenGL && Cairo)") ), wxVERTICAL );
|
sGridSettings = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Grid Display (OpenGL && Cairo)") ), wxVERTICAL );
|
||||||
|
|
||||||
wxString m_gridStyleChoices[] = { _("Dots"), _("Lines") };
|
wxString m_gridStyleChoices[] = { _("Dots"), _("Lines"), _("Small crosses") };
|
||||||
int m_gridStyleNChoices = sizeof( m_gridStyleChoices ) / sizeof( wxString );
|
int m_gridStyleNChoices = sizeof( m_gridStyleChoices ) / sizeof( wxString );
|
||||||
m_gridStyle = new wxRadioBox( sGridSettings->GetStaticBox(), wxID_ANY, _("Grid Style"), wxDefaultPosition, wxDefaultSize, m_gridStyleNChoices, m_gridStyleChoices, 1, wxRA_SPECIFY_COLS );
|
m_gridStyle = new wxRadioBox( sGridSettings->GetStaticBox(), wxID_ANY, _("Grid Style"), wxDefaultPosition, wxDefaultSize, m_gridStyleNChoices, m_gridStyleChoices, 1, wxRA_SPECIFY_COLS );
|
||||||
m_gridStyle->SetSelection( 0 );
|
m_gridStyle->SetSelection( 0 );
|
||||||
|
|
|
@ -436,7 +436,7 @@
|
||||||
<property name="caption"></property>
|
<property name="caption"></property>
|
||||||
<property name="caption_visible">1</property>
|
<property name="caption_visible">1</property>
|
||||||
<property name="center_pane">0</property>
|
<property name="center_pane">0</property>
|
||||||
<property name="choices">"Dots" "Lines"</property>
|
<property name="choices">"Dots" "Lines" "Small crosses"</property>
|
||||||
<property name="close_button">1</property>
|
<property name="close_button">1</property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
<property name="context_menu">1</property>
|
<property name="context_menu">1</property>
|
||||||
|
|
Loading…
Reference in New Issue