mirror of
https://github.com/apache/nuttx.git
synced 2026-06-05 07:12:54 +08:00
drawline/drawLine should not take a boolean to select non lines caps or capping at both ends. drawline/drawLine also needs to be able to put a line cap on one one end of a line
This commit is contained in:
@@ -113,7 +113,6 @@ int nx_drawcircle(NXWINDOW hwnd, FAR const struct nxgl_point_s *center,
|
||||
{
|
||||
struct nxgl_point_s pts[NCIRCLE_POINTS];
|
||||
FAR struct nxgl_vector_s vector;
|
||||
bool capped;
|
||||
int i;
|
||||
int ret;
|
||||
|
||||
@@ -123,7 +122,6 @@ int nx_drawcircle(NXWINDOW hwnd, FAR const struct nxgl_point_s *center,
|
||||
|
||||
/* Draw each pair of points as a vector */
|
||||
|
||||
capped = false;
|
||||
for (i = POINT_0p0; i < POINT_337p5; i++)
|
||||
{
|
||||
/* Draw one line segment */
|
||||
@@ -133,17 +131,11 @@ int nx_drawcircle(NXWINDOW hwnd, FAR const struct nxgl_point_s *center,
|
||||
vector.pt2.x = pts[i+1].x;
|
||||
vector.pt2.y = pts[i+1].y;
|
||||
|
||||
ret = nx_drawline(hwnd, &vector, width, color, capped);
|
||||
ret = nx_drawline(hwnd, &vector, width, color, NX_LINECAP_PT1);
|
||||
if (ret != OK)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Every other line segment needs to have a circular line caps to join
|
||||
* cleanly with the surround lines segments without line caps.
|
||||
*/
|
||||
|
||||
capped = !capped;
|
||||
}
|
||||
|
||||
/* The final, closing vector is a special case */
|
||||
@@ -152,5 +144,5 @@ int nx_drawcircle(NXWINDOW hwnd, FAR const struct nxgl_point_s *center,
|
||||
vector.pt1.y = pts[POINT_337p5].y;
|
||||
vector.pt2.x = pts[POINT_0p0].x;
|
||||
vector.pt2.y = pts[POINT_0p0].y;
|
||||
return nx_drawline(hwnd, &vector, width, color, capped);
|
||||
return nx_drawline(hwnd, &vector, width, color, NX_LINECAP_PT1);
|
||||
}
|
||||
|
||||
+11
-6
@@ -83,7 +83,7 @@
|
||||
* vector - Describes the line to be drawn
|
||||
* width - The width of the line
|
||||
* color - The color to use to fill the line
|
||||
* capped - Draw a circular cap both ends of the line to support better
|
||||
* caps - Draw a circular cap on the ends of the line to support better
|
||||
* line joins
|
||||
*
|
||||
* Return:
|
||||
@@ -93,7 +93,7 @@
|
||||
|
||||
int nx_drawline(NXWINDOW hwnd, FAR struct nxgl_vector_s *vector,
|
||||
nxgl_coord_t width, nxgl_mxpixel_t color[CONFIG_NX_NPLANES],
|
||||
bool capped)
|
||||
uint8_t caps)
|
||||
{
|
||||
struct nxgl_trapezoid_s trap[3];
|
||||
struct nxgl_rect_s rect;
|
||||
@@ -153,17 +153,22 @@ int nx_drawline(NXWINDOW hwnd, FAR struct nxgl_vector_s *vector,
|
||||
|
||||
/* Draw circular caps at each end of the line to support better line joins */
|
||||
|
||||
if (capped && width >= 3)
|
||||
if (caps != NX_LINECAP_NONE && width >= 3)
|
||||
{
|
||||
nxgl_coord_t radius = width >> 1;
|
||||
|
||||
/* Draw a circle at pt1 */
|
||||
|
||||
ret = nx_fillcircle(hwnd, &vector->pt1, radius, color);
|
||||
if (ret == OK)
|
||||
ret = OK;
|
||||
if ((caps & NX_LINECAP_PT1) != 0)
|
||||
{
|
||||
/* Draw a circle at pt2 */
|
||||
ret = nx_fillcircle(hwnd, &vector->pt1, radius, color);
|
||||
}
|
||||
|
||||
/* Draw a circle at pt2 */
|
||||
|
||||
if (ret == OK && (caps & NX_LINECAP_PT2) != 0)
|
||||
{
|
||||
ret = nx_fillcircle(hwnd, &vector->pt2, radius, color);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +113,6 @@ int nxtk_drawcircletoolbar(NXTKWINDOW hfwnd, FAR const struct nxgl_point_s *cent
|
||||
{
|
||||
struct nxgl_point_s pts[NCIRCLE_POINTS];
|
||||
FAR struct nxgl_vector_s vector;
|
||||
bool capped;
|
||||
int i;
|
||||
int ret;
|
||||
|
||||
@@ -132,17 +131,11 @@ int nxtk_drawcircletoolbar(NXTKWINDOW hfwnd, FAR const struct nxgl_point_s *cent
|
||||
vector.pt2.x = pts[i+1].x;
|
||||
vector.pt2.y = pts[i+1].y;
|
||||
|
||||
ret = nxtk_drawlinetoolbar(hfwnd, &vector, width, color, capped);
|
||||
ret = nxtk_drawlinetoolbar(hfwnd, &vector, width, color, NX_LINECAP_PT1);
|
||||
if (ret != OK)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Every other line segment needs to have a circular line caps to join
|
||||
* cleanly with the surround lines segments without line caps.
|
||||
*/
|
||||
|
||||
capped = !capped;
|
||||
}
|
||||
|
||||
/* The final, closing vector is a special case */
|
||||
@@ -151,5 +144,5 @@ int nxtk_drawcircletoolbar(NXTKWINDOW hfwnd, FAR const struct nxgl_point_s *cent
|
||||
vector.pt1.y = pts[POINT_337p5].y;
|
||||
vector.pt2.x = pts[POINT_0p0].x;
|
||||
vector.pt2.y = pts[POINT_0p0].y;
|
||||
return nxtk_drawlinetoolbar(hfwnd, &vector, width, color, capped);
|
||||
return nxtk_drawlinetoolbar(hfwnd, &vector, width, color, NX_LINECAP_PT1);
|
||||
}
|
||||
|
||||
@@ -113,7 +113,6 @@ int nxtk_drawcirclewindow(NXTKWINDOW hfwnd, FAR const struct nxgl_point_s *cente
|
||||
{
|
||||
struct nxgl_point_s pts[NCIRCLE_POINTS];
|
||||
FAR struct nxgl_vector_s vector;
|
||||
bool capped;
|
||||
int i;
|
||||
int ret;
|
||||
|
||||
@@ -132,17 +131,11 @@ int nxtk_drawcirclewindow(NXTKWINDOW hfwnd, FAR const struct nxgl_point_s *cente
|
||||
vector.pt2.x = pts[i+1].x;
|
||||
vector.pt2.y = pts[i+1].y;
|
||||
|
||||
ret = nxtk_drawlinewindow(hfwnd, &vector, width, color, capped);
|
||||
ret = nxtk_drawlinewindow(hfwnd, &vector, width, color, NX_LINECAP_PT1);
|
||||
if (ret != OK)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Every other line segment needs to have a circular line caps to join
|
||||
* cleanly with the surround lines segments without line caps.
|
||||
*/
|
||||
|
||||
capped = !capped;
|
||||
}
|
||||
|
||||
/* The final, closing vector is a special case */
|
||||
@@ -151,5 +144,5 @@ int nxtk_drawcirclewindow(NXTKWINDOW hfwnd, FAR const struct nxgl_point_s *cente
|
||||
vector.pt1.y = pts[POINT_337p5].y;
|
||||
vector.pt2.x = pts[POINT_0p0].x;
|
||||
vector.pt2.y = pts[POINT_0p0].y;
|
||||
return nxtk_drawlinewindow(hfwnd, &vector, width, color, capped);
|
||||
return nxtk_drawlinewindow(hfwnd, &vector, width, color, NX_LINECAP_PT1);
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
* vector - Describes the line to be drawn
|
||||
* width - The width of the line
|
||||
* color - The color to use to fill the line
|
||||
* capped - Draw a circular cap both ends of the line to support better
|
||||
* caps - Draw a circular cap on the ends of the line to support better
|
||||
* line joins
|
||||
*
|
||||
* Return:
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
int nxtk_drawlinetoolbar(NXTKWINDOW hfwnd, FAR struct nxgl_vector_s *vector,
|
||||
nxgl_coord_t width, nxgl_mxpixel_t color[CONFIG_NX_NPLANES],
|
||||
bool capped)
|
||||
uint8_t caps)
|
||||
|
||||
{
|
||||
struct nxgl_trapezoid_s trap[3];
|
||||
@@ -156,17 +156,22 @@ int nxtk_drawlinetoolbar(NXTKWINDOW hfwnd, FAR struct nxgl_vector_s *vector,
|
||||
|
||||
/* Draw circular caps at each end of the line to support better line joins */
|
||||
|
||||
if (capped && width >= 3)
|
||||
if (caps != NX_LINECAP_NONE && width >= 3)
|
||||
{
|
||||
nxgl_coord_t radius = width >> 1;
|
||||
|
||||
/* Draw a circle at pt1 */
|
||||
|
||||
ret = nxtk_fillcircletoolbar(hfwnd, &vector->pt1, radius, color);
|
||||
if (ret == OK)
|
||||
ret = OK;
|
||||
if ((caps & NX_LINECAP_PT1) != 0)
|
||||
{
|
||||
/* Draw a circle at pt2 */
|
||||
ret = nxtk_fillcircletoolbar(hfwnd, &vector->pt1, radius, color);
|
||||
}
|
||||
|
||||
/* Draw a circle at pt2 */
|
||||
|
||||
if (ret == OK && (caps & NX_LINECAP_PT2) != 0)
|
||||
{
|
||||
ret = nxtk_fillcircletoolbar(hfwnd, &vector->pt2, radius, color);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
* vector - Describes the line to be drawn
|
||||
* width - The width of the line
|
||||
* color - The color to use to fill the line
|
||||
* capped - Draw a circular cap both ends of the line to support better
|
||||
* caps - Draw a circular cap on the ends of the line to support better
|
||||
* line joins
|
||||
*
|
||||
* Return:
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
int nxtk_drawlinewindow(NXTKWINDOW hfwnd, FAR struct nxgl_vector_s *vector,
|
||||
nxgl_coord_t width, nxgl_mxpixel_t color[CONFIG_NX_NPLANES],
|
||||
bool capped)
|
||||
bool caps)
|
||||
|
||||
{
|
||||
struct nxgl_trapezoid_s trap[3];
|
||||
@@ -155,17 +155,22 @@ int nxtk_drawlinewindow(NXTKWINDOW hfwnd, FAR struct nxgl_vector_s *vector,
|
||||
|
||||
/* Draw circular caps at each end of the line to support better line joins */
|
||||
|
||||
if (capped && width >= 3)
|
||||
if (caps != NX_LINECAP_NONE && width >= 3)
|
||||
{
|
||||
nxgl_coord_t radius = width >> 1;
|
||||
|
||||
/* Draw a circle at pt1 */
|
||||
|
||||
ret = nxtk_fillcirclewindow(hfwnd, &vector->pt1, radius, color);
|
||||
if (ret == OK)
|
||||
ret = OK;
|
||||
if ((caps & NX_LINECAP_PT1) != 0)
|
||||
{
|
||||
/* Draw a circle at pt2 */
|
||||
ret = nxtk_fillcirclewindow(hfwnd, &vector->pt1, radius, color);
|
||||
}
|
||||
|
||||
/* Draw a circle at pt2 */
|
||||
|
||||
if (ret == OK && (caps & NX_LINECAP_PT2) != 0)
|
||||
{
|
||||
ret = nxtk_fillcirclewindow(hfwnd, &vector->pt2, radius, color);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user