PBLOB *rotate_cblob( //rotate it C_BLOB *blob, //blob to search float xheight, //for poly approx FCOORD rotation //for landscape ) { PBLOB *copy; //copy of blob POLYPT *polypt; //current point OUTLINE_IT out_it; POLYPT_IT poly_it; //outline pts copy = new PBLOB (blob, xheight); out_it.set_to_list (copy->out_list ()); for (out_it.mark_cycle_pt (); !out_it.cycled_list (); out_it.forward ()) { //get points poly_it.set_to_list (out_it.data ()->polypts ()); for (poly_it.mark_cycle_pt (); !poly_it.cycled_list (); poly_it.forward ()) { polypt = poly_it.data (); //rotate it polypt->pos.rotate (rotation); polypt->vec.rotate (rotation); } out_it.data ()->compute_bb (); } return copy; }
PBLOB *rotate_blob( //get y limits PBLOB *blob, //blob to search FCOORD rotation //vector to rotate by ) { PBLOB *copy; //copy of blob POLYPT *polypt; //current point OUTLINE_IT out_it; POLYPT_IT poly_it; //outline pts copy = new PBLOB; *copy = *blob; //deep copy out_it.set_to_list (copy->out_list ()); for (out_it.mark_cycle_pt (); !out_it.cycled_list (); out_it.forward ()) { //get points poly_it.set_to_list (out_it.data ()->polypts ()); for (poly_it.mark_cycle_pt (); !poly_it.cycled_list (); poly_it.forward ()) { polypt = poly_it.data (); //rotate it polypt->pos.rotate (rotation); polypt->vec.rotate (rotation); } out_it.data ()->compute_bb (); } return copy; }