diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2018-04-06 07:45:08 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-06 07:45:08 +0200 | 
| commit | 5d4b9c080a25a9c9a410911a7f23b6feeda57044 (patch) | |
| tree | bf155b36fbbb7e716210743f469f790c90c055a0 | |
| parent | eaa5dfbdbd1217d62902f966496658770638c3d1 (diff) | |
| parent | dc57632d66215ecc08402d76e803d2d91a2e8f9c (diff) | |
Merge pull request #18002 from guilhermefelipecgs/remove_cursor_size_restriction
Remove size restriction for mouse cursor
| -rw-r--r-- | platform/osx/os_osx.mm | 4 | ||||
| -rw-r--r-- | platform/windows/os_windows.cpp | 13 | ||||
| -rw-r--r-- | platform/x11/os_x11.cpp | 10 | 
3 files changed, 12 insertions, 15 deletions
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 18e5fc1404..0c5524dd08 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -1507,9 +1507,7 @@ void OS_OSX::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, c  		Ref<Texture> texture = p_cursor;  		Ref<Image> image = texture->get_data(); -		int image_size = 32 * 32; - -		ERR_FAIL_COND(texture->get_width() != 32 || texture->get_height() != 32); +		ERR_FAIL_COND(texture->get_width() > 256 || texture->get_height() > 256);  		NSBitmapImageRep *imgrep = [[[NSBitmapImageRep alloc]  				initWithBitmapDataPlanes:NULL diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 13fe781ff3..f51d969c16 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -1896,26 +1896,25 @@ void OS_Windows::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shap  		Ref<Texture> texture = p_cursor;  		Ref<Image> image = texture->get_data(); -		UINT image_size = 32 * 32; +		UINT image_size = texture->get_width() * texture->get_height();  		UINT size = sizeof(UINT) * image_size; -		ERR_FAIL_COND(texture->get_width() != 32 || texture->get_height() != 32); +		ERR_FAIL_COND(texture->get_width() > 256 || texture->get_height() > 256);  		// Create the BITMAP with alpha channel  		COLORREF *buffer = (COLORREF *)malloc(sizeof(COLORREF) * image_size);  		image->lock();  		for (UINT index = 0; index < image_size; index++) { -			int column_index = floor(index / 32); -			int row_index = index % 32; +			int row_index = floor(index / texture->get_width()); +			int column_index = index % texture->get_width(); -			Color pcColor = image->get_pixel(row_index, column_index); -			*(buffer + index) = image->get_pixel(row_index, column_index).to_argb32(); +			*(buffer + index) = image->get_pixel(column_index, row_index).to_argb32();  		}  		image->unlock();  		// Using 4 channels, so 4 * 8 bits -		HBITMAP bitmap = CreateBitmap(32, 32, 1, 4 * 8, buffer); +		HBITMAP bitmap = CreateBitmap(texture->get_width(), texture->get_height(), 1, 4 * 8, buffer);  		COLORREF clrTransparent = -1;  		// Create the AND and XOR masks for the bitmap diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index c06c7516d0..338d13410f 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -2375,11 +2375,11 @@ void OS_X11::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, c  		Ref<Texture> texture = p_cursor;  		Ref<Image> image = texture->get_data(); -		ERR_FAIL_COND(texture->get_width() != 32 || texture->get_height() != 32); +		ERR_FAIL_COND(texture->get_width() > 256 || texture->get_height() > 256);  		// Create the cursor structure  		XcursorImage *cursor_image = XcursorImageCreate(texture->get_width(), texture->get_height()); -		XcursorUInt image_size = 32 * 32; +		XcursorUInt image_size = texture->get_width() * texture->get_height();  		XcursorDim size = sizeof(XcursorPixel) * image_size;  		cursor_image->version = 1; @@ -2393,10 +2393,10 @@ void OS_X11::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, c  		image->lock();  		for (XcursorPixel index = 0; index < image_size; index++) { -			int column_index = floor(index / 32); -			int row_index = index % 32; +			int row_index = floor(index / texture->get_width()); +			int column_index = index % texture->get_width(); -			*(cursor_image->pixels + index) = image->get_pixel(row_index, column_index).to_argb32(); +			*(cursor_image->pixels + index) = image->get_pixel(column_index, row_index).to_argb32();  		}  		image->unlock();  |