mirror of
https://github.com/FunKey-Project/FunKey-OS.git
synced 2026-03-25 13:23:01 +01:00
optimize SDK
Signed-off-by: Michel-FK <michel.stempin@funkey-project.com>
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
From b9c4b1c72b4ad6b24c37f402d3eec39ef393b0eb Mon Sep 17 00:00:00 2001
|
||||
From: Tom Hughes <tom@compton.nu>
|
||||
Date: Sun, 19 May 2013 14:17:43 +0100
|
||||
Subject: [PATCH 04/15] Make rasterizer_outline_aa ignore close_polygon when
|
||||
vertex count < 3
|
||||
|
||||
---
|
||||
include/agg_rasterizer_outline_aa.h | 107 ++++++++++++++++++------------------
|
||||
1 file changed, 52 insertions(+), 55 deletions(-)
|
||||
|
||||
diff --git a/include/agg_rasterizer_outline_aa.h b/include/agg_rasterizer_outline_aa.h
|
||||
index 4d6dd57..24301d5 100644
|
||||
--- a/include/agg_rasterizer_outline_aa.h
|
||||
+++ b/include/agg_rasterizer_outline_aa.h
|
||||
@@ -333,68 +333,65 @@ namespace agg
|
||||
int y2;
|
||||
int lprev;
|
||||
|
||||
- if(close_polygon)
|
||||
+ if(close_polygon && (m_src_vertices.size() >= 3))
|
||||
{
|
||||
- if(m_src_vertices.size() >= 3)
|
||||
+ dv.idx = 2;
|
||||
+
|
||||
+ v = &m_src_vertices[m_src_vertices.size() - 1];
|
||||
+ x1 = v->x;
|
||||
+ y1 = v->y;
|
||||
+ lprev = v->len;
|
||||
+
|
||||
+ v = &m_src_vertices[0];
|
||||
+ x2 = v->x;
|
||||
+ y2 = v->y;
|
||||
+ dv.lcurr = v->len;
|
||||
+ line_parameters prev(x1, y1, x2, y2, lprev);
|
||||
+
|
||||
+ v = &m_src_vertices[1];
|
||||
+ dv.x1 = v->x;
|
||||
+ dv.y1 = v->y;
|
||||
+ dv.lnext = v->len;
|
||||
+ dv.curr = line_parameters(x2, y2, dv.x1, dv.y1, dv.lcurr);
|
||||
+
|
||||
+ v = &m_src_vertices[dv.idx];
|
||||
+ dv.x2 = v->x;
|
||||
+ dv.y2 = v->y;
|
||||
+ dv.next = line_parameters(dv.x1, dv.y1, dv.x2, dv.y2, dv.lnext);
|
||||
+
|
||||
+ dv.xb1 = 0;
|
||||
+ dv.yb1 = 0;
|
||||
+ dv.xb2 = 0;
|
||||
+ dv.yb2 = 0;
|
||||
+
|
||||
+ switch(m_line_join)
|
||||
{
|
||||
- dv.idx = 2;
|
||||
-
|
||||
- v = &m_src_vertices[m_src_vertices.size() - 1];
|
||||
- x1 = v->x;
|
||||
- y1 = v->y;
|
||||
- lprev = v->len;
|
||||
-
|
||||
- v = &m_src_vertices[0];
|
||||
- x2 = v->x;
|
||||
- y2 = v->y;
|
||||
- dv.lcurr = v->len;
|
||||
- line_parameters prev(x1, y1, x2, y2, lprev);
|
||||
-
|
||||
- v = &m_src_vertices[1];
|
||||
- dv.x1 = v->x;
|
||||
- dv.y1 = v->y;
|
||||
- dv.lnext = v->len;
|
||||
- dv.curr = line_parameters(x2, y2, dv.x1, dv.y1, dv.lcurr);
|
||||
-
|
||||
- v = &m_src_vertices[dv.idx];
|
||||
- dv.x2 = v->x;
|
||||
- dv.y2 = v->y;
|
||||
- dv.next = line_parameters(dv.x1, dv.y1, dv.x2, dv.y2, dv.lnext);
|
||||
-
|
||||
- dv.xb1 = 0;
|
||||
- dv.yb1 = 0;
|
||||
- dv.xb2 = 0;
|
||||
- dv.yb2 = 0;
|
||||
-
|
||||
- switch(m_line_join)
|
||||
- {
|
||||
- case outline_no_join:
|
||||
- dv.flags = 3;
|
||||
- break;
|
||||
+ case outline_no_join:
|
||||
+ dv.flags = 3;
|
||||
+ break;
|
||||
|
||||
- case outline_miter_join:
|
||||
- case outline_round_join:
|
||||
- dv.flags =
|
||||
- (prev.diagonal_quadrant() == dv.curr.diagonal_quadrant()) |
|
||||
- ((dv.curr.diagonal_quadrant() == dv.next.diagonal_quadrant()) << 1);
|
||||
- break;
|
||||
+ case outline_miter_join:
|
||||
+ case outline_round_join:
|
||||
+ dv.flags =
|
||||
+ (prev.diagonal_quadrant() == dv.curr.diagonal_quadrant()) |
|
||||
+ ((dv.curr.diagonal_quadrant() == dv.next.diagonal_quadrant()) << 1);
|
||||
+ break;
|
||||
|
||||
- case outline_miter_accurate_join:
|
||||
- dv.flags = 0;
|
||||
- break;
|
||||
- }
|
||||
+ case outline_miter_accurate_join:
|
||||
+ dv.flags = 0;
|
||||
+ break;
|
||||
+ }
|
||||
|
||||
- if((dv.flags & 1) == 0 && m_line_join != outline_round_join)
|
||||
- {
|
||||
- bisectrix(prev, dv.curr, &dv.xb1, &dv.yb1);
|
||||
- }
|
||||
+ if((dv.flags & 1) == 0 && m_line_join != outline_round_join)
|
||||
+ {
|
||||
+ bisectrix(prev, dv.curr, &dv.xb1, &dv.yb1);
|
||||
+ }
|
||||
|
||||
- if((dv.flags & 2) == 0 && m_line_join != outline_round_join)
|
||||
- {
|
||||
- bisectrix(dv.curr, dv.next, &dv.xb2, &dv.yb2);
|
||||
- }
|
||||
- draw(dv, 0, m_src_vertices.size());
|
||||
+ if((dv.flags & 2) == 0 && m_line_join != outline_round_join)
|
||||
+ {
|
||||
+ bisectrix(dv.curr, dv.next, &dv.xb2, &dv.yb2);
|
||||
}
|
||||
+ draw(dv, 0, m_src_vertices.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
--
|
||||
1.8.1.4
|
||||
|
||||
Reference in New Issue
Block a user