Advertisement
gmlscripts

draw_rectangle_sprite

Apr 24th, 2015
524
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /// draw_rectangle_sprite(sprite,subimg,x1,y1,x2,y2,left,top,right,bottom)
  2. //
  3. //  Draws a rectangle using a sprite sliced into 9 sections.
  4. //  The 3x3 sections are used to draw the four corners, the
  5. //  four edges, and the center of the rectangle. The center
  6. //  and edge sections are stretched to fill the respective
  7. //  areas of the rectangle.
  8. //
  9. //      sprite  sprite index
  10. //      subimg  sprite subimage
  11. //      x1,y1   top-left corner of rectangle
  12. //      x2,y2   bottom-right corner of rectangle
  13. //      left    left edge width in pixels
  14. //      top     top edge width in pixels
  15. //      right   right edge width in pixels
  16. //      bottom  bottom edge width in pixels
  17. //
  18. /// GMLscripts.com/license
  19. {
  20.     var spr = argument0,
  21.         img = argument1,
  22.         x1  = argument2,
  23.         y1  = argument3,
  24.         x2  = argument4,
  25.         y2  = argument5,
  26.         l   = argument6,
  27.         t   = argument7,
  28.         r   = argument8,
  29.         b   = argument9;
  30.    
  31.     var x3 = x1 + l;
  32.     var y3 = y1 + t;
  33.     var x4 = x2 - r + 1;
  34.     var y4 = y2 - b + 1;
  35.     var x5 = sprite_get_width(spr) - r;
  36.     var y5 = sprite_get_height(spr) - b;
  37.     var w = x5 - l;
  38.     var h = y5 - t;
  39.     var xs = (x4 - x3) / w;
  40.     var ys = (y4 - y3) / h;
  41.    
  42.     draw_sprite_part_ext(spr, img, 0,  0,  l, t, x1, y1, 1.0, 1.0, c_white, 1.0);
  43.     draw_sprite_part_ext(spr, img, l,  0,  w, t, x3, y1, xs,  1.0, c_white, 1.0);
  44.     draw_sprite_part_ext(spr, img, x5, 0,  r, t, x4, y1, 1.0, 1.0, c_white, 1.0);
  45.     draw_sprite_part_ext(spr, img, 0,  t,  l, h, x1, y3, 1.0, ys,  c_white, 1.0);
  46.     draw_sprite_part_ext(spr, img, l,  t,  w, h, x3, y3, xs,  ys,  c_white, 1.0);
  47.     draw_sprite_part_ext(spr, img, x5, t,  r, h, x4, y3, 1.0, ys,  c_white, 1.0);
  48.     draw_sprite_part_ext(spr, img, 0,  y5, l, b, x1, y4, 1.0, 1.0, c_white, 1.0);
  49.     draw_sprite_part_ext(spr, img, l,  y5, w, b, x3, y4, xs,  1.0, c_white, 1.0);
  50.     draw_sprite_part_ext(spr, img, x5, y5, r, b, x4, y4, 1.0, 1.0, c_white, 1.0);
  51.    
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement