Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYiming Wu <xp8110@outlook.com>2019-06-12 16:33:27 +0300
committerYiming Wu <xp8110@outlook.com>2019-06-12 16:33:27 +0300
commit6034edfb416bd02da8d082a5c012fde4d65c0d59 (patch)
tree39574d2ed193b54637de53340530d69de3726779
parentbc1b7a7af19e229812ff56e0825b56b977fbed43 (diff)
LANPR: Use root bounding area to allow longer chaining (need workarounds.)
-rw-r--r--source/blender/draw/engines/lanpr/lanpr_chain.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/source/blender/draw/engines/lanpr/lanpr_chain.c b/source/blender/draw/engines/lanpr/lanpr_chain.c
index 5df0b79fbc4..90eaad5be80 100644
--- a/source/blender/draw/engines/lanpr/lanpr_chain.c
+++ b/source/blender/draw/engines/lanpr/lanpr_chain.c
@@ -428,20 +428,20 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb, float dist_thre
LANPR_BoundingArea *lanpr_get_point_bounding_area(LANPR_RenderBuffer *rb, real x, real y);
LANPR_BoundingArea *lanpr_get_point_bounding_area_recursive(
LANPR_RenderBuffer *rb, LANPR_BoundingArea *root, LANPR_RenderLineChainItem* rlci){
- if (!root->child) {
+ //if (!root->child) {
return root;
- }
- else {
- LANPR_BoundingArea* ch = root->child;
- #define IN_BOUND(ba,rlci)\
- ba.l<=rlci->pos[0] && ba.r>=rlci->pos[0] && ba.b<=rlci->pos[1] && ba.u>=rlci->pos[1]
- if (IN_BOUND(ch[0],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[0],rlci);
- else if(IN_BOUND(ch[1],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[1],rlci);
- else if(IN_BOUND(ch[2],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[2],rlci);
- else if(IN_BOUND(ch[3],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[3],rlci);
- #undef IN_BOUND
- }
- return NULL;
+ //}
+ //else {
+ // LANPR_BoundingArea* ch = root->child;
+ // #define IN_BOUND(ba,rlci)\
+ // ba.l<=rlci->pos[0] && ba.r>=rlci->pos[0] && ba.b<=rlci->pos[1] && ba.u>=rlci->pos[1]
+ // if (IN_BOUND(ch[0],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[0],rlci);
+ // else if(IN_BOUND(ch[1],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[1],rlci);
+ // else if(IN_BOUND(ch[2],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[2],rlci);
+ // else if(IN_BOUND(ch[3],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[3],rlci);
+ // #undef IN_BOUND
+ //}
+ //return NULL;
}
LANPR_BoundingArea *lanpr_get_end_point_bounding_area(LANPR_RenderBuffer *rb, LANPR_RenderLineChainItem* rlci){
LANPR_BoundingArea* root = lanpr_get_point_bounding_area(rb,rlci->pos[0],rlci->pos[1]);
@@ -453,21 +453,21 @@ LANPR_BoundingArea *lanpr_get_end_point_bounding_area(LANPR_RenderBuffer *rb, LA
// 2) probably need to add it to root bounding area which has larger surface area then it will cover typical threshold values.
void lanpr_link_point_with_bounding_area_recursive(
LANPR_RenderBuffer *rb, LANPR_BoundingArea* root, LANPR_RenderLineChain* rlc, LANPR_RenderLineChainItem* rlci){
- if (!root->child) {
+ //if (!root->child) {
LANPR_ChainRegisterEntry* cre = list_append_pointer_static_sized(&root->linked_chains, &rb->render_data_pool, rlc, sizeof(LANPR_ChainRegisterEntry));
cre->rlci = rlci;
if(rlci==rlc->chain.first) cre->is_left = 1;
- }
- else {
- LANPR_BoundingArea* ch = root->child;
- #define IN_BOUND(ba,rlci)\
- ba.l<=rlci->pos[0] && ba.r>=rlci->pos[0] && ba.b<=rlci->pos[1] && ba.u>=rlci->pos[1]
- if (IN_BOUND(ch[0],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[0],rlc,rlci);
- else if(IN_BOUND(ch[1],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[1],rlc,rlci);
- else if(IN_BOUND(ch[2],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[2],rlc,rlci);
- else if(IN_BOUND(ch[3],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[3],rlc,rlci);
- #undef IN_BOUND
- }
+ //}
+ //else {
+ // LANPR_BoundingArea* ch = root->child;
+ // #define IN_BOUND(ba,rlci)\
+ // ba.l<=rlci->pos[0] && ba.r>=rlci->pos[0] && ba.b<=rlci->pos[1] && ba.u>=rlci->pos[1]
+ // if (IN_BOUND(ch[0],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[0],rlc,rlci);
+ // else if(IN_BOUND(ch[1],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[1],rlc,rlci);
+ // else if(IN_BOUND(ch[2],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[2],rlc,rlci);
+ // else if(IN_BOUND(ch[3],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[3],rlc,rlci);
+ // #undef IN_BOUND
+ //}
}
void lanpr_link_chain_with_bounding_areas(LANPR_RenderBuffer *rb, LANPR_RenderLineChain* rlc)