@@ -1020,7 +1020,7 @@ void QRCheck(vgui::CQRLoginPanel* panel, std::string& qrkey) {
1020
1020
}, panel, qrkey)->Start ();
1021
1021
}
1022
1022
void vgui::CQRLoginPanel::Login (){
1023
- GetTaskManager ()->Add <loginshare_obj*>([]() -> loginshare_obj*{
1023
+ GetTaskManager ()->Add <loginshare_obj*>([]() -> loginshare_obj* {
1024
1024
static loginshare_obj obj;
1025
1025
obj.qrkey = s_pNeteaseApi.load ()->GetUser ()->RequestQRKey ();
1026
1026
std::string url = " https://music.163.com/login?codekey=" + obj.qrkey ;
@@ -1029,31 +1029,40 @@ void vgui::CQRLoginPanel::Login(){
1029
1029
static int s_size;
1030
1030
1031
1031
int qrsize = qrcode.getSize ();
1032
- if (qrsize > s_size) {
1033
- s_size = qrsize;
1032
+ int newSize = qrsize + 4 ;
1033
+ if (newSize > s_size) {
1034
+ s_size = newSize;
1034
1035
delete[] s_qrbyte;
1035
1036
s_qrbyte = new byte[s_size * s_size * 4 ];
1036
1037
}
1037
1038
size_t c = 0 ;
1038
- for (int x = 0 ; x < qrsize; x++) {
1039
- for (int y = 0 ; y < qrsize; y++) {
1040
- bool p = qrcode.getModule (x, y);
1041
- s_qrbyte[c * 4 + 0 ] = p ? 0 : 255 ;
1042
- s_qrbyte[c * 4 + 1 ] = p ? 0 : 255 ;
1043
- s_qrbyte[c * 4 + 2 ] = p ? 0 : 255 ;
1044
- s_qrbyte[c * 4 + 3 ] = 255 ;
1039
+ for (int x = 0 ; x < newSize; x++) {
1040
+ for (int y = 0 ; y < newSize; y++) {
1041
+ if (x < 2 || x >= newSize - 2 || y < 2 || y >= newSize - 2 ) {
1042
+ s_qrbyte[c * 4 + 0 ] = 255 ;
1043
+ s_qrbyte[c * 4 + 1 ] = 255 ;
1044
+ s_qrbyte[c * 4 + 2 ] = 255 ;
1045
+ s_qrbyte[c * 4 + 3 ] = 255 ;
1046
+ }
1047
+ else {
1048
+ bool p = qrcode.getModule (x - 2 , y - 2 );
1049
+ s_qrbyte[c * 4 + 0 ] = p ? 0 : 255 ;
1050
+ s_qrbyte[c * 4 + 1 ] = p ? 0 : 255 ;
1051
+ s_qrbyte[c * 4 + 2 ] = p ? 0 : 255 ;
1052
+ s_qrbyte[c * 4 + 3 ] = 255 ;
1053
+ }
1045
1054
c++;
1046
1055
}
1047
1056
}
1048
1057
obj.qrimagebyte = s_qrbyte;
1049
- obj.size = qrsize ;
1058
+ obj.size = newSize ;
1050
1059
return &obj;
1051
- })->ContinueWith ([](loginshare_obj* obj, CQRLoginPanel* panel) {
1052
- s_pQRCodeImage->InitFromRGBA (obj->qrimagebyte , obj->size , obj->size );
1053
- panel->m_pQRImagePanel ->SetImage (s_pQRCodeImage);
1054
- panel->SetVisible (true );
1055
- QRCheck (panel, obj->qrkey );
1056
- }, this )->Start ();
1060
+ })->ContinueWith ([](loginshare_obj* obj, CQRLoginPanel* panel) {
1061
+ s_pQRCodeImage->InitFromRGBA (obj->qrimagebyte , obj->size , obj->size );
1062
+ panel->m_pQRImagePanel ->SetImage (s_pQRCodeImage);
1063
+ panel->SetVisible (true );
1064
+ QRCheck (panel, obj->qrkey );
1065
+ }, this )->Start ();
1057
1066
}
1058
1067
void vgui::CQRLoginPanel::ResetText (){
1059
1068
m_pNotice->SetText (" #Netease_QRNoticeText" );
0 commit comments