Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {$I MSSL.scar}
- type
- MSSL_TBoxCentralizationMethod = (bcm_Both, bcm_Heightwise, bcm_Widthwise);
- procedure MSSL_BoxDimensions(bx: TBox; var w, h: Integer);
- begin
- w := ((bx.X2 - bx.X1) + 1);
- h := ((bx.Y2 - bx.Y1) + 1);
- end;
- procedure MSSL_BoxCentralization(var inner_bx: TBox; outer_bx: TBox; method: MSSL_TBoxCentralizationMethod);
- var
- i_w, i_h, o_w, o_h: Integer;
- c_pt, d_pt: TPoint;
- begin
- MSSL_BoxDimensions(inner_bx, i_w, i_h);
- MSSL_BoxDimensions(outer_bx, o_w, o_h);
- c_pt := MSSL_BoxCenter(outer_bx);
- d_pt := Point((c_pt.X - (i_w div 2)), (c_pt.Y - (i_h div 2)));
- case method of
- bcm_Both: MSSL_OffsetBox(inner_bx, (d_pt.X - inner_bx.X1), (d_pt.Y - inner_bx.Y1));
- bcm_Widthwise: MSSL_OffsetBox(inner_bx, 0, (d_pt.Y - inner_bx.Y1));
- bcm_Heightwise: MSSL_OffsetBox(inner_bx, (d_pt.X - inner_bx.X1), 0);
- end;
- end;
- var
- bx1, bx2: TBox;
- begin
- MSSL_Setup;
- bx1 := Box(2, 2, 4, 4);
- WriteLn('bx1 BEFORE centralization: ' + BoxToStr(bx1));
- bx2 := Box(0, 0, 11, 11);
- WriteLn('bx2 [target box]: ' + BoxToStr(bx2));
- MSSL_BoxCentralization(bx1, bx2, bcm_Both);
- WriteLn('bx1 AFTER centralization: ' + BoxToStr(bx1));
- MSSL_Unsetup;
- end.
Advertisement
Add Comment
Please, Sign In to add comment