Example #1
0
//
// s is a spoke pointing OUT from x
//
void Subdivision::optimize(Vec2& x, Edge *s)
{
    Edge *start_spoke = s;
    Edge *spoke = s;

    do {

	Edge *e = spoke->Lnext();
	Edge *t = e->Oprev();

	if( isInterior(e) && shouldSwap(x, e) )
	    swap(e);
	else
	{
	    spoke = spoke->Onext();
	    if( spoke == start_spoke )
		break;
	}

    } while( true );

    //
    // Now, update all the triangles

    spoke = start_spoke;

    do {
	Edge *e = spoke->Lnext();
	Triangle *t = e->Lface();

	if( t ) t->update(*this);

	spoke = spoke->Onext();
    } while( spoke != start_spoke );
}
Example #2
0
void ofxDeepZoom::update() {
    for (list<tile>::iterator iter=tiles.begin(); iter!=tiles.end(); iter++) {
        
        if (iter->bSwap) {
            switch (iter->state) {
                case TILE_STATE_INACTIVE:
                    iter = tiles.erase(iter);
                    break;
                    
                case TILE_STATE_QUEUE:
                    iter->state = TILE_STATE_UNLOAD;
                    break;
                
                    
                case TILE_STATE_ACTIVE:
                    if (!iter->bInside || shouldSwap(*iter)) {
                        iter->image.getTextureReference().clear();
                        iter->image.setUseTexture(false); // for the clear of the pixels in threaded function
                        iter->state = TILE_STATE_UNLOAD;
                    }
                    break;
                    
        
                default:
                    break;
                    
            }
        } else {
            if (iter->state == TILE_STATE_QUEUE) {
                iter->image.setUseTexture(true);
                iter->image.reloadTexture();
                iter->state = TILE_STATE_ACTIVE;
                break;
            } else switch (iter->state) {
                case TILE_STATE_INACTIVE:
                    if (iter->bInside) {
                        iter->state = TILE_STATE_LOAD;
                    }
                    break;
                case TILE_STATE_ACTIVE:
                    if (!iter->bInside) {
                        iter->image.getTextureReference().clear();
                        iter->image.setUseTexture(false); // for the clear of the pixels in threaded function
                        iter->state = TILE_STATE_UNLOAD;
                    }
                    break;
                default:
                    break;
            }
            
        }
        
        
    }
}