From ec5a365174a513b6c83addfaaa4b7490ead6fb47 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Sun, 24 Aug 2014 15:56:47 +0200 Subject: [PATCH] Draw_DrawImgPart y Draw_DrawImgPartHoriz --- GameLib/Anim.c | 2 +- GameLib/Draw.c | 39 ++++++++++++++++++++++++++++++++++++--- GameLib/Draw.h | 9 ++++++++- 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/GameLib/Anim.c b/GameLib/Anim.c index f0a73e8..0901012 100644 --- a/GameLib/Anim.c +++ b/GameLib/Anim.c @@ -102,7 +102,7 @@ void Anim_Draw(Anim a,int time_ms,int x,int y){ int frame; frame=(time_ms/anim->ftime)%anim->frames; - Draw_DrawImgPart(anim->img,x,y,anim->w,frame); + Draw_DrawImgPartHoriz(anim->img,x,y,anim->w,frame); } diff --git a/GameLib/Draw.c b/GameLib/Draw.c index f1c9fb9..4e72078 100644 --- a/GameLib/Draw.c +++ b/GameLib/Draw.c @@ -739,12 +739,45 @@ void Draw_DrawImgResized(DrawImg img,int x,int y,float w,float h){ } - ///////////////////////////// // Draw_DrawImgPart // // Draws an image part. -void Draw_DrawImgPart(DrawImg img,int x,int y,int w,int i){ +void Draw_DrawImgPart(DrawImg img,int x,int y,int w,int h,int i,int j){ + DrawImage image=img; + int x1,x2,y1,y2; + float us,u1,u2; + float vs,v1,v2; + + // Prepare + x1=x+image->x; + y1=_height-(y+image->y); + x2=(x+image->x)+w; + y2=_height-((y+image->y)+h); + us=1.0f/image->w; + u1=us*i*w; + u2=u1+(us*w); + vs=1.0f/image->h; + v1=vs*j*h; + v2=v1+(vs*h); + + // Draw a quad + if(_currentImg!=image){ + Draw_Flush(); + _currentImg=image; + } + QuadArray2D_AddQuad(_quadArray, + x1,y1,u1,v1, + x2,y2,u2,v2, + _color); +} + + +///////////////////////////// +// Draw_DrawImgPartHoriz +// +// Draws an image part horizontally. +void Draw_DrawImgPartHoriz(DrawImg img,int x,int y,int w,int i){ DrawImage image=img; int x1,x2,y1,y2; float us,u1,u2; @@ -885,7 +918,7 @@ void Draw_DrawText(DrawFnt f,char *text,int x,int y){ ptr=text; while(*ptr){ if((*ptr)max){ - Draw_DrawImgPart(font->img,x,y,font->w,(*ptr)-font->min); + Draw_DrawImgPartHoriz(font->img,x,y,font->w,(*ptr)-font->min); } x+=font->w; ptr++; diff --git a/GameLib/Draw.h b/GameLib/Draw.h index 03ab494..95bcc78 100644 --- a/GameLib/Draw.h +++ b/GameLib/Draw.h @@ -106,7 +106,14 @@ void Draw_DrawImgResized(DrawImg img,int x,int y,float w,float h); // Draw_DrawImgPart // // Draws an image part. -void Draw_DrawImgPart(DrawImg img,int x,int y,int w,int i); +void Draw_DrawImgPart(DrawImg img,int x,int y,int w,int h,int i,int j); + + +///////////////////////////// +// Draw_DrawImgPartHoriz +// +// Draws an image part horizontally. +void Draw_DrawImgPartHoriz(DrawImg img,int x,int y,int w,int i); /////////////////////////////