- float sx = 100./w, sy = 100./h;
- float x1 = sx * obj_x1, y1 = sy * obj_y1;
- float x2 = sx * obj_x2, y2 = sy * obj_y2;
- float x3 = sx * obj_x3, y3 = sy * obj_y3;
- float x4 = sx * obj_x4, y4 = sy * obj_y4;
- affine->process(temp, replace, 0, AffineEngine::PERSPECTIVE,
- x1,y1, x2,y2, x3,y3, x4,y4, 1);
+ affine->set_in_viewport(replace_x, replace_y, replace_w, replace_h);
+ int x1 = obj_x1, x2 = obj_x2, x3 = obj_x3, x4 = obj_x4;
+ int y1 = obj_y1, y2 = obj_y2, y3 = obj_y3, y4 = obj_y4;
+ bclamp(x1, 0, w); bclamp(x2, 0, w); bclamp(x3, 0, w); bclamp(x4, 0, w);
+ bclamp(y1, 0, h); bclamp(y2, 0, h); bclamp(y3, 0, h); bclamp(y4, 0, h);
+ affine->set_matrix(
+ replace_x, replace_y, replace_x+replace_w, replace_y+replace_h,
+ x1,y1, x2,y2, x3,y3, x4,y4);
+ affine->process(temp, replace, 0,
+ AffineEngine::TRANSFORM, 0,0, 100,0, 100,100, 0,100, 1);