Janilabo

Janilabo | MSSL_BoxCentralization()

Aug 17th, 2012
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.21 KB | None | 0 0
  1. {$I MSSL.scar}
  2.  
  3. type
  4.   MSSL_TBoxCentralizationMethod = (bcm_Both, bcm_Heightwise, bcm_Widthwise);
  5.          
  6. procedure MSSL_BoxDimensions(bx: TBox; var w, h: Integer);
  7. begin
  8.   w := ((bx.X2 - bx.X1) + 1);
  9.   h := ((bx.Y2 - bx.Y1) + 1);
  10. end;
  11.  
  12. procedure MSSL_BoxCentralization(var inner_bx: TBox; outer_bx: TBox; method: MSSL_TBoxCentralizationMethod);
  13. var
  14.   i_w, i_h, o_w, o_h: Integer;
  15.   c_pt, d_pt: TPoint;
  16. begin
  17.   MSSL_BoxDimensions(inner_bx, i_w, i_h);
  18.   MSSL_BoxDimensions(outer_bx, o_w, o_h);
  19.   c_pt := MSSL_BoxCenter(outer_bx);
  20.   d_pt := Point((c_pt.X - (i_w div 2)), (c_pt.Y - (i_h div 2)));
  21.   case method of
  22.     bcm_Both: MSSL_OffsetBox(inner_bx, (d_pt.X - inner_bx.X1), (d_pt.Y - inner_bx.Y1));
  23.     bcm_Widthwise: MSSL_OffsetBox(inner_bx, 0, (d_pt.Y - inner_bx.Y1));
  24.     bcm_Heightwise: MSSL_OffsetBox(inner_bx, (d_pt.X - inner_bx.X1), 0);
  25.   end;
  26. end;
  27.  
  28. var
  29.   bx1, bx2: TBox;
  30.  
  31. begin
  32.   MSSL_Setup;
  33.   bx1 := Box(2, 2, 4, 4);    
  34.   WriteLn('bx1 BEFORE centralization: ' + BoxToStr(bx1));
  35.   bx2 := Box(0, 0, 11, 11);    
  36.   WriteLn('bx2 [target box]: ' + BoxToStr(bx2));
  37.   MSSL_BoxCentralization(bx1, bx2, bcm_Both);
  38.   WriteLn('bx1 AFTER centralization: ' + BoxToStr(bx1));
  39.   MSSL_Unsetup;
  40. end.
Advertisement
Add Comment
Please, Sign In to add comment