Skip to content

Commit 49e92ca

Browse files
committed
wx: Fixed the types of pixel values.
The GetRed, GetBlue, GetGreen in wxWidgets return `unsigned char`, But the code in wxe_wrapper_4.cpp is using `char` to receive the result and sign extending it into a int. As a result, a pixel whose red is `250`(`16#FA`) will be returned as `4294967290`(`16#FFFFFFFA`) by `wxImage:getRed/3`. This commit fixed this problem.
1 parent 43f53b9 commit 49e92ca

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

lib/wx/c_src/gen/wxe_wrapper_4.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1842,7 +1842,7 @@ void wxImage_GetAlpha_2(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
18421842
int y;
18431843
if(!enif_get_int(env, argv[2], &y)) Badarg("y"); // int
18441844
if(!This) throw wxe_badarg("This");
1845-
char Result = This->GetAlpha(x,y);
1845+
unsigned char Result = This->GetAlpha(x,y);
18461846
wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true);
18471847
rt.send( rt.make_uint(Result));
18481848

@@ -1860,7 +1860,7 @@ void wxImage_GetBlue(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
18601860
int y;
18611861
if(!enif_get_int(env, argv[2], &y)) Badarg("y"); // int
18621862
if(!This) throw wxe_badarg("This");
1863-
char Result = This->GetBlue(x,y);
1863+
unsigned char Result = This->GetBlue(x,y);
18641864
wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true);
18651865
rt.send( rt.make_uint(Result));
18661866

@@ -1892,7 +1892,7 @@ void wxImage_GetGreen(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
18921892
int y;
18931893
if(!enif_get_int(env, argv[2], &y)) Badarg("y"); // int
18941894
if(!This) throw wxe_badarg("This");
1895-
char Result = This->GetGreen(x,y);
1895+
unsigned char Result = This->GetGreen(x,y);
18961896
wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true);
18971897
rt.send( rt.make_uint(Result));
18981898

@@ -1948,7 +1948,7 @@ void wxImage_GetMaskBlue(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
19481948
wxImage *This;
19491949
This = (wxImage *) memenv->getPtr(env, argv[0], "This");
19501950
if(!This) throw wxe_badarg("This");
1951-
char Result = This->GetMaskBlue();
1951+
unsigned char Result = This->GetMaskBlue();
19521952
wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true);
19531953
rt.send( rt.make_uint(Result));
19541954

@@ -1962,7 +1962,7 @@ void wxImage_GetMaskGreen(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
19621962
wxImage *This;
19631963
This = (wxImage *) memenv->getPtr(env, argv[0], "This");
19641964
if(!This) throw wxe_badarg("This");
1965-
char Result = This->GetMaskGreen();
1965+
unsigned char Result = This->GetMaskGreen();
19661966
wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true);
19671967
rt.send( rt.make_uint(Result));
19681968

@@ -1976,7 +1976,7 @@ void wxImage_GetMaskRed(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
19761976
wxImage *This;
19771977
This = (wxImage *) memenv->getPtr(env, argv[0], "This");
19781978
if(!This) throw wxe_badarg("This");
1979-
char Result = This->GetMaskRed();
1979+
unsigned char Result = This->GetMaskRed();
19801980
wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true);
19811981
rt.send( rt.make_uint(Result));
19821982

@@ -2030,7 +2030,7 @@ void wxImage_GetRed(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
20302030
int y;
20312031
if(!enif_get_int(env, argv[2], &y)) Badarg("y"); // int
20322032
if(!This) throw wxe_badarg("This");
2033-
char Result = This->GetRed(x,y);
2033+
unsigned char Result = This->GetRed(x,y);
20342034
wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true);
20352035
rt.send( rt.make_uint(Result));
20362036

0 commit comments

Comments
 (0)