mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-07-04 04:50:22 +00:00
Fix to _PRINTSTRING
bug fix so that printstring will work correctly when the optional imagehandle is used. _PRINTSTRING (x,y), text$, optional_imagehandle
This commit is contained in:
parent
b29a46d177
commit
9b0ff95b0d
|
@ -18748,27 +18748,31 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
|
||||||
|
|
||||||
void sub__printstring(float x,float y,qbs* text,int32 i,int32 passed){
|
void sub__printstring(float x,float y,qbs* text,int32 i,int32 passed){
|
||||||
if (new_error) return;
|
if (new_error) return;
|
||||||
|
|
||||||
|
int32 old_dest = func__dest();
|
||||||
|
|
||||||
if (passed&2){
|
if (passed&2){
|
||||||
|
sub__dest(i);
|
||||||
if (i>=0){//validate i
|
if (i>=0){//validate i
|
||||||
validatepage(i); i=page[i];
|
validatepage(i); i=page[i];
|
||||||
}else{
|
}else{
|
||||||
i=-i; if (i>=nextimg){error(258); return;} if (!img[i].valid){error(258); return;}
|
i=-i; if (i>=nextimg){error(258); goto printstring_exit;} if (!img[i].valid){error(258); goto printstring_exit;}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
i=write_page_index;
|
i=write_page_index;
|
||||||
}
|
}
|
||||||
static img_struct *im;
|
static img_struct *im;
|
||||||
im=&img[i];
|
im=&img[i];
|
||||||
if (!text->len) return;
|
if (!text->len) goto printstring_exit;
|
||||||
if (im->text){
|
if (im->text){
|
||||||
int oldx = func_pos(0), oldy = func_csrlin();
|
int oldx = func_pos(0), oldy = func_csrlin();
|
||||||
qbg_sub_locate(y, x, 0, 0, 0, 3);
|
qbg_sub_locate(y, x, 0, 0, 0, 3);
|
||||||
qbs_print(text, 0);
|
qbs_print(text, 0);
|
||||||
qbg_sub_locate(oldy, oldx, 0, 0, 0, 3);
|
qbg_sub_locate(oldy, oldx, 0, 0, 0, 3);
|
||||||
return;
|
goto printstring_exit;
|
||||||
}
|
}
|
||||||
//graphics modes only
|
//graphics modes only
|
||||||
if (!text->len) return;
|
if (!text->len) goto printstring_exit;
|
||||||
//Step?
|
//Step?
|
||||||
if (passed&1){im->x+=x; im->y+=y;}else{im->x=x; im->y=y;}
|
if (passed&1){im->x+=x; im->y+=y;}else{im->x=x; im->y=y;}
|
||||||
//Adjust co-ordinates for viewport?
|
//Adjust co-ordinates for viewport?
|
||||||
|
@ -18784,7 +18788,7 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
|
||||||
x2=qbr_float_to_long(im->x); y2=qbr_float_to_long(im->y);
|
x2=qbr_float_to_long(im->x); y2=qbr_float_to_long(im->y);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!text->len) return;
|
if (!text->len) goto printstring_exit;
|
||||||
|
|
||||||
|
|
||||||
static uint32 w,h,z,z2,z3,a,a2,a3,color,background_color,f;
|
static uint32 w,h,z,z2,z3,a,a2,a3,color,background_color,f;
|
||||||
|
@ -18810,7 +18814,7 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
|
||||||
// uint8**out_data,int32*out_x,int32 *out_y,int32*out_x_pre_increment,int32*out_x_post_increment){
|
// uint8**out_data,int32*out_x,int32 *out_y,int32*out_x_pre_increment,int32*out_x_post_increment){
|
||||||
ok=FontRenderTextASCII(font[f],(uint8*)text->chr,text->len,1,
|
ok=FontRenderTextASCII(font[f],(uint8*)text->chr,text->len,1,
|
||||||
&rt_data,&rt_w,&rt_h,&rt_pre_x,&rt_post_x);
|
&rt_data,&rt_w,&rt_h,&rt_pre_x,&rt_post_x);
|
||||||
if (!ok) return;
|
if (!ok) goto printstring_exit;
|
||||||
|
|
||||||
w=rt_w;
|
w=rt_w;
|
||||||
|
|
||||||
|
@ -18841,7 +18845,7 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
|
||||||
}
|
}
|
||||||
|
|
||||||
free(rt_data);
|
free(rt_data);
|
||||||
return;
|
goto printstring_exit;
|
||||||
}//1-8 bit
|
}//1-8 bit
|
||||||
//assume 32-bit blended
|
//assume 32-bit blended
|
||||||
|
|
||||||
|
@ -18857,7 +18861,7 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
|
||||||
ok=FontRenderTextASCII(font[f],(uint8*)text->chr,text->len,0,
|
ok=FontRenderTextASCII(font[f],(uint8*)text->chr,text->len,0,
|
||||||
&rt_data,&rt_w,&rt_h,&rt_pre_x,&rt_post_x);
|
&rt_data,&rt_w,&rt_h,&rt_pre_x,&rt_post_x);
|
||||||
|
|
||||||
if (!ok) return;
|
if (!ok) goto printstring_exit;
|
||||||
|
|
||||||
w=rt_w;
|
w=rt_w;
|
||||||
|
|
||||||
|
@ -18919,7 +18923,7 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
free(rt_data);
|
free(rt_data);
|
||||||
return;
|
goto printstring_exit;
|
||||||
}//custom font
|
}//custom font
|
||||||
|
|
||||||
//default fonts
|
//default fonts
|
||||||
|
@ -18950,6 +18954,7 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
|
||||||
}
|
}
|
||||||
x+=8;
|
x+=8;
|
||||||
}//z
|
}//z
|
||||||
|
if (passed&2) sub__dest(old_dest);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue