Skip to content

Commit 6b9866f

Browse files
committed
Fixed Wrong Rendering When Input-Sprite Is Non-Square + Added Support For Separate Border Width/Height
1 parent 0031566 commit 6b9866f

File tree

6 files changed

+32
-20
lines changed

6 files changed

+32
-20
lines changed

objects/o_example/Draw_0.gml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// NiceSlice Examples
2-
draw_niceslice(s_example,0,100,100,140,100,6,internal_scale);
3-
draw_niceslice(s_example,0,260,100,300,300,6,internal_scale);
4-
draw_niceslice(s_example,0,100,220,80,300,6,internal_scale);
2+
draw_niceslice(s_example,0,100,100,140,100,6,6,internal_scale);
3+
draw_niceslice(s_example,0,260,100,300,300,6,6,internal_scale);
4+
draw_niceslice(s_example,0,100,220,80,300,6,6,internal_scale);
55

66
// Text
77
draw_set_halign(fa_right);

options/windows/options_windows.yy

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/niceslice/niceslice.gml

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,50 @@
11
// Draw Sprite Nine Sliced
2-
function draw_niceslice(sprite,subimg,x,y,width,height,border,internal_scale,color=c_white,alpha=1)
2+
/// @arg {Asset.GMSprite} sprite
3+
/// @arg {Real} subimg
4+
/// @arg {Real} x
5+
/// @arg {Real} y
6+
/// @arg {Real} width
7+
/// @arg {Real} height
8+
/// @arg {Real} border_width
9+
/// @arg {Real} border_height
10+
/// @arg {Real} internal_scale
11+
/// @arg {Asset.GMColor} color
12+
/// @arg {Real} alpha
13+
/// @pure
14+
function draw_niceslice(sprite,subimg,x,y,width,height,border_width,border_height,internal_scale,color=c_white,alpha=1)
315
{
416
var scale = internal_scale;
517
var sprite_w = sprite_get_width(sprite);
618
var sprite_h = sprite_get_height(sprite);
7-
var side_length_raw_w = sprite_h-(border*2);
8-
var side_length_raw_h = sprite_w-(border*2);
9-
var side_scale_factor_w = (1/side_length_raw_w)*(width-((border*scale)*2));
10-
var side_scale_factor_h = (1/side_length_raw_h)*(height-((border*scale)*2));
19+
var side_length_raw_w = sprite_w-(border_width*2);
20+
var side_length_raw_h = sprite_h-(border_height*2);
21+
var side_scale_factor_w = (1/side_length_raw_w)*(width-((border_width*scale)*2));
22+
var side_scale_factor_h = (1/side_length_raw_h)*(height-((border_height*scale)*2));
1123

1224
// Top Left
13-
draw_sprite_part_ext(sprite,subimg,0,0,border,border,x,y,scale,scale,color,alpha);
25+
draw_sprite_part_ext(sprite,subimg,0,0,border_width,border_height,x,y,scale,scale,color,alpha);
1426

1527
// Top Right
16-
draw_sprite_part_ext(sprite,subimg,sprite_w-border,0,border,border,x+width-(border*scale),y,scale,scale,color,alpha);
28+
draw_sprite_part_ext(sprite,subimg,sprite_w-border_width,0,border_width,border_height,x+width-(border_width*scale),y,scale,scale,color,alpha);
1729

1830
// Bottom Left
19-
draw_sprite_part_ext(sprite,subimg,0,sprite_h-border,border,border,x,y+height-(border*scale),scale,scale,color,alpha);
31+
draw_sprite_part_ext(sprite,subimg,0,sprite_h-border_height,border_width,border_height,x,y+height-(border_height*scale),scale,scale,color,alpha);
2032

2133
// Bottom Right
22-
draw_sprite_part_ext(sprite,subimg,sprite_w-border,sprite_h-border,border,border,x+width-(border*scale),y+height-(border*scale),scale,scale,color,alpha);
34+
draw_sprite_part_ext(sprite,subimg,sprite_w-border_width,sprite_h-border_height,border_width,border_height,x+width-(border_width*scale),y+height-(border_height*scale),scale,scale,color,alpha);
2335

2436
// Left
25-
draw_sprite_part_ext(sprite,subimg,0,border,border,side_length_raw_h,x,y+(border*scale),scale,side_scale_factor_h,color,alpha);
37+
draw_sprite_part_ext(sprite,subimg,0,border_height,border_width,side_length_raw_h,x,y+(border_height*scale),scale,side_scale_factor_h,color,alpha);
2638

2739
// Right
28-
draw_sprite_part_ext(sprite,subimg,sprite_w-border,border,border,side_length_raw_h,x+width-(border*scale),y+(border*scale),scale,side_scale_factor_h,color,alpha);
40+
draw_sprite_part_ext(sprite,subimg,sprite_w-border_width,border_height,border_width,side_length_raw_h,x+width-(border_width*scale),y+(border_height*scale),scale,side_scale_factor_h,color,alpha);
2941

3042
// Top
31-
draw_sprite_part_ext(sprite,subimg,border,0,side_length_raw_w,border,x+(border*scale),y,side_scale_factor_w,scale,color,alpha);
43+
draw_sprite_part_ext(sprite,subimg,border_width,0,side_length_raw_w,border_height,x+(border_width*scale),y,side_scale_factor_w,scale,color,alpha);
3244

3345
// Bottom
34-
draw_sprite_part_ext(sprite,subimg,border,sprite_h-border,side_length_raw_w,border,x+(border*scale),y+height-(border*scale),side_scale_factor_w,scale,color,alpha);
46+
draw_sprite_part_ext(sprite,subimg,border_width,sprite_h-border_height,side_length_raw_w,border_height,x+(border_width*scale),y+height-(border_height*scale),side_scale_factor_w,scale,color,alpha);
3547

3648
// Inside
37-
draw_sprite_part_ext(sprite,subimg,border,border,side_length_raw_w,side_length_raw_h,x+(border*scale),y+(border*scale),side_scale_factor_w,side_scale_factor_h,color,alpha);
49+
draw_sprite_part_ext(sprite,subimg,border_width,border_height,side_length_raw_w,side_length_raw_h,x+(border_width*scale),y+(border_height*scale),side_scale_factor_w,side_scale_factor_h,color,alpha);
3850
}
5 Bytes
Loading
5 Bytes
Loading

sprites/s_example/s_example.yy

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)