Add a 'capped' boolean parameter to all drawline/drawLine functions/methods. The idea is that this will produce better joining between lines

This commit is contained in:
Gregory Nutt 2015-04-05 08:50:01 -06:00
parent d488dd11ee
commit a7ebc37b03
11 changed files with 63 additions and 36 deletions

View File

@ -1,7 +1,7 @@
/****************************************************************************
* NxWidgets/libnxwidgets/include/cbgwindow.hxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -285,13 +285,15 @@ namespace NXWidgets
* @param vector - Describes the line to be drawn
* @param width - The width of the line
* @param color - The color to use to fill the line
* @param capped - Draw a circular cap both ends of the line to support
* better line joins
*
* @return True on success; false on failure.
*/
bool drawLine(FAR struct nxgl_vector_s *vector,
nxgl_coord_t width,
nxgl_mxpixel_t color);
nxgl_coord_t width, nxgl_mxpixel_t color,
bool capped);
/**
* Draw a filled circle at the specified position, size, and color.

View File

@ -1,7 +1,7 @@
/****************************************************************************
* NxWidgets/libnxwidgets/include/cgraphicsport.hxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -242,11 +242,13 @@ namespace NXWidgets
* @param x2 The x coordinate of the end point of the line.
* @param y2 The y coordinate of the end point of the line.
* @param color The color of the line.
* @param capped Draw a circular cap both ends of the line to support
* better line joins
*/
void drawLine(nxgl_coord_t x1, nxgl_coord_t y1,
nxgl_coord_t x2, nxgl_coord_t y2,
nxgl_mxpixel_t color);
nxgl_mxpixel_t color, bool capped);
/**
* Draw a filled rectangle of the specified start position, end position,

View File

@ -1,7 +1,7 @@
/****************************************************************************
* NxWidgets/libnxwidgets/include/cnxtkwindow.hxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -306,13 +306,15 @@ namespace NXWidgets
* @param vector - Describes the line to be drawn
* @param width - The width of the line
* @param color - The color to use to fill the line
* @param capped - Draw a circular cap both ends of the line to support
* better line joins
*
* @return True on success; false on failure.
*/
bool drawLine(FAR struct nxgl_vector_s *vector,
nxgl_coord_t width,
nxgl_mxpixel_t color);
nxgl_coord_t width, nxgl_mxpixel_t color,
bool capped);
/**
* Draw a filled circle at the specified position, size, and color.

View File

@ -1,7 +1,7 @@
/****************************************************************************
* NxWidgets/libnxwidgets/include/cnxtoolbar.hxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -275,13 +275,15 @@ namespace NXWidgets
* @param vector - Describes the line to be drawn
* @param width - The width of the line
* @param color - The color to use to fill the line
* @param capped - Draw a circular cap both ends of the line to suppor
* better line joins
*
* @return True on success; false on failure.
*/
bool drawLine(FAR struct nxgl_vector_s *vector,
nxgl_coord_t width,
nxgl_mxpixel_t color);
nxgl_coord_t width, nxgl_mxpixel_t color,
bool capped);
/**
* Draw a filled circle at the specified position, size, and color.

View File

@ -1,7 +1,7 @@
/****************************************************************************
* NxWidgets/libnxwidgets/include/cnxwindow.hxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -279,12 +279,15 @@ namespace NXWidgets
* @param vector - Describes the line to be drawn
* @param width - The width of the line
* @param color - The color to use to fill the line
* @param capped - Draw a circular cap both ends of the line to support
* better line joins
*
* @return True on success; false on failure.
*/
bool drawLine(FAR struct nxgl_vector_s *vector,
nxgl_coord_t width, nxgl_mxpixel_t color);
nxgl_coord_t width, nxgl_mxpixel_t color,
bool capped);
/**
* Draw a filled circle at the specified position, size, and color.

View File

@ -1,7 +1,7 @@
/****************************************************************************
* NxWidgets/libnxwidgets/include/inxwindow.hxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -249,13 +249,15 @@ namespace NXWidgets
* @param vector - Describes the line to be drawn
* @param width - The width of the line
* @param color - The color to use to fill the line
* @param capped - Draw a circular cap both ends of the line to support
* better line joins
*
* @return True on success; false on failure.
*/
virtual bool drawLine(FAR struct nxgl_vector_s *vector,
nxgl_coord_t width,
nxgl_mxpixel_t color) = 0;
nxgl_coord_t width, nxgl_mxpixel_t color,
bool capped) = 0;
/**
* Draw a filled circle at the specified position, size, and color.

View File

@ -1,7 +1,7 @@
/****************************************************************************
* NxWidgets/libnxwidgets/src/cbgwindow.cxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -308,16 +308,19 @@ bool CBgWindow::fillTrapezoid(FAR const struct nxgl_rect_s *pClip,
* @param vector - Describes the line to be drawn
* @param width - The width of the line
* @param color - The color to use to fill the line
* @param capped - Draw a circular cap both ends of the line to support
* better line joins
*
* @return True on success; false on failure.
*/
bool CBgWindow::drawLine(FAR struct nxgl_vector_s *vector,
nxgl_coord_t width, nxgl_mxpixel_t color)
nxgl_coord_t width, nxgl_mxpixel_t color,
bool capped)
{
// Draw a line with the specified color
return nx_drawline(m_hWindow, vector, width, &color) == OK;
return nx_drawline(m_hWindow, vector, width, &color, capped) == OK;
}
/**

View File

@ -1,7 +1,7 @@
/****************************************************************************
* NxWidgets/libnxwidgets/src/cgraphicsport.cxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -241,16 +241,18 @@ void CGraphicsPort::drawVertLine(nxgl_coord_t x, nxgl_coord_t y,
/**
* Draw a line of a fixed color in the window.
*
* @param x1 The x coordinate of the start point of the line.
* @param y1 The y coordinate of the start point of the line.
* @param x2 The x coordinate of the end point of the line.
* @param y2 The y coordinate of the end point of the line.
* @param color The color of the line.
* @param x1 - The x coordinate of the start point of the line.
* @param y1 - The y coordinate of the start point of the line.
* @param x2 - The x coordinate of the end point of the line.
* @param y2 - The y coordinate of the end point of the line.
* @param color - The color of the line.
* @param capped - Draw a circular cap both ends of the line to support
* - better line joins
*/
void CGraphicsPort::drawLine(nxgl_coord_t x1, nxgl_coord_t y1,
nxgl_coord_t x2, nxgl_coord_t y2,
nxgl_mxpixel_t color)
nxgl_mxpixel_t color, bool capped)
{
struct nxgl_vector_s vector;
@ -259,7 +261,7 @@ void CGraphicsPort::drawLine(nxgl_coord_t x1, nxgl_coord_t y1,
vector.pt2.x = x2;
vector.pt2.y = y2;
if (!m_pNxWnd->drawLine(&vector, 1, color))
if (!m_pNxWnd->drawLine(&vector, 1, color, capped))
{
gdbg("INxWindow::drawLine failed\n");
}

View File

@ -1,7 +1,7 @@
/****************************************************************************
* NxWidgets/libnxwidgets/src/cnxtkwindow.cxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -442,16 +442,19 @@ bool CNxTkWindow::fillTrapezoid(FAR const struct nxgl_rect_s *pClip,
* @param vector - Describes the line to be drawn
* @param width - The width of the line
* @param color - The color to use to fill the line
* @param capped - Draw a circular cap both ends of the line to support
* better line joins
*
* @return True on success; false on failure.
*/
bool CNxTkWindow::drawLine(FAR struct nxgl_vector_s *vector,
nxgl_coord_t width, nxgl_mxpixel_t color)
nxgl_coord_t width, nxgl_mxpixel_t color,
bool capped)
{
// Draw a line with the specified color
return nxtk_drawlinewindow(m_hNxTkWindow, vector, width, &color) == OK;
return nxtk_drawlinewindow(m_hNxTkWindow, vector, width, &color, capped) == OK;
}
/**

View File

@ -1,7 +1,7 @@
/****************************************************************************
* NxWidgets/libnxwidgets/src/cnxtoolbar.cxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -313,16 +313,19 @@ bool CNxToolbar::fillTrapezoid(FAR const struct nxgl_rect_s *pClip,
* @param vector - Describes the line to be drawn
* @param width - The width of the line
* @param color - The color to use to fill the line
* @param capped - Draw a circular cap both ends of the line to support
* better line joins
*
* @return True on success; false on failure.
*/
bool CNxToolbar::drawLine(FAR struct nxgl_vector_s *vector,
nxgl_coord_t width, nxgl_mxpixel_t color)
nxgl_coord_t width, nxgl_mxpixel_t color,
bool capped)
{
// Draw a line with the specified color
return nxtk_drawlinetoolbar(m_hNxTkWindow, vector, width, &color) == OK;
return nxtk_drawlinetoolbar(m_hNxTkWindow, vector, width, &color, capped) == OK;
}
/**

View File

@ -1,7 +1,7 @@
/****************************************************************************
* NxWidgets/libnxwidgets/src/cnxwindow.cxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -286,16 +286,19 @@ bool CNxWindow::fillTrapezoid(FAR const struct nxgl_rect_s *pClip,
* @param vector - Describes the line to be drawn
* @param width - The width of the line
* @param color - The color to use to fill the line
* @param capped - Draw a circular cap both ends of the line to support
* better line joins
*
* @return True on success; false on failure.
*/
bool CNxWindow::drawLine(FAR struct nxgl_vector_s *vector,
nxgl_coord_t width, nxgl_mxpixel_t color)
nxgl_coord_t width, nxgl_mxpixel_t color,
bool capped)
{
// Draw a line with the specified color
return nx_drawline(m_hNxWindow, vector, width, &color) == OK;
return nx_drawline(m_hNxWindow, vector, width, &color, capped) == OK;
}
/**