void ofCairoRenderer::viewport(float x, float y, float width, float height, bool invertY){ if(width == 0) width = ofGetWidth(); if(height == 0) height = ofGetHeight(); if (invertY){ y = ofGetHeight() - (y + height); } cairo_surface_flush(surface); viewportRect.set(x, y, width, height); if(page==0 || !multiPage){ page=1; }else{ page++; if(bClearBg()){ cairo_show_page(cr); }else{ cairo_copy_page(cr); } } cairo_reset_clip(cr); cairo_new_path(cr); cairo_move_to(cr,viewportRect.x,viewportRect.y); cairo_line_to(cr,viewportRect.x+viewportRect.width,viewportRect.y); cairo_line_to(cr,viewportRect.x+viewportRect.width,viewportRect.y+viewportRect.height); cairo_line_to(cr,viewportRect.x,viewportRect.y+viewportRect.height); cairo_clip(cr); };
//---------------------------------------------------------- void ofxCairoTexture::background(const ofColor & c){ bgColor = c; // if we are in auto mode, then clear with a bg call... if (bClearBg()){ clear(c.r,c.g,c.b,c.a); } }
void ofCairoRenderer::update(){ cairo_surface_flush(surface); if(page==0 || !multiPage){ page=1; }else{ page++; if(bClearBg()){ cairo_show_page(cr); }else{ cairo_copy_page(cr); } } ofSetStyle(ofGetStyle()); }