diff --git a/src/raylib.h b/src/raylib.h index 286f33c28..866f2473f 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1267,7 +1267,7 @@ RLAPI void UpdateCameraPro(Camera *camera, Vector3 movement, Vector3 rotation, f // Set texture and rectangle to be used on shapes drawing // NOTE: It can be useful when using basic shapes and one single font, // defining a font char white rectangle would allow drawing everything in a single draw call -RLAPI void SetShapesTexture(Texture2D texture, Rectangle source); // Set texture and rectangle to be used on shapes drawing +RLAPI void SetShapesTexture(Texture2D texture, Rectangle rec); // Set texture and rectangle to be used on shapes drawing RLAPI Texture2D GetShapesTexture(void); // Get texture that is used for shapes drawing RLAPI Rectangle GetShapesTextureRectangle(void); // Get texture source rectangle that is used for shapes drawing @@ -1462,9 +1462,9 @@ RLAPI void SetTextureWrap(Texture2D texture, int wrap); RLAPI void DrawTexture(Texture2D texture, int posX, int posY, Color tint); // Draw a Texture2D RLAPI void DrawTextureV(Texture2D texture, Vector2 position, Color tint); // Draw a Texture2D with position defined as Vector2 RLAPI void DrawTextureEx(Texture2D texture, Vector2 position, float rotation, float scale, Color tint); // Draw a Texture2D with extended parameters -RLAPI void DrawTextureRec(Texture2D texture, Rectangle source, Vector2 position, Color tint); // Draw a part of a texture defined by a rectangle -RLAPI void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 origin, float rotation, Color tint); // Draw a part of a texture defined by a rectangle with 'pro' parameters -RLAPI void DrawTextureNPatch(Texture2D texture, NPatchInfo nPatchInfo, Rectangle dest, Vector2 origin, float rotation, Color tint); // Draw a texture (or part of it) that stretches or shrinks nicely +RLAPI void DrawTextureRec(Texture2D texture, Rectangle rec, Vector2 position, Color tint); // Draw a part of a texture defined by a rectangle +RLAPI void DrawTexturePro(Texture2D texture, Rectangle srcrec, Rectangle dstrec, Vector2 origin, float rotation, Color tint); // Draw a part of a texture defined by a source rectangle to destination rectangle, with scaling and rotation +RLAPI void DrawTextureNPatch(Texture2D texture, NPatchInfo nPatchInfo, Rectangle dstrec, Vector2 origin, float rotation, Color tint); // Draw a texture (or part of it) that stretches or shrinks nicely // Color/pixel related functions RLAPI bool ColorIsEqual(Color col1, Color col2); // Check if two colors are equal @@ -1605,8 +1605,8 @@ RLAPI void DrawModelWires(Model model, Vector3 position, float scale, Color tint RLAPI void DrawModelWiresEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model wires (with texture if set) with extended parameters RLAPI void DrawBoundingBox(BoundingBox box, Color color); // Draw bounding box (wires) RLAPI void DrawBillboard(Camera camera, Texture2D texture, Vector3 position, float scale, Color tint); // Draw a billboard texture -RLAPI void DrawBillboardRec(Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector2 size, Color tint); // Draw a billboard texture defined by source -RLAPI void DrawBillboardPro(Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector3 up, Vector2 size, Vector2 origin, float rotation, Color tint); // Draw a billboard texture defined by source and rotation +RLAPI void DrawBillboardRec(Camera camera, Texture2D texture, Rectangle rec, Vector3 position, Vector2 size, Color tint); // Draw a billboard texture defined by rectangle +RLAPI void DrawBillboardPro(Camera camera, Texture2D texture, Rectangle rec, Vector3 position, Vector3 up, Vector2 size, Vector2 origin, float rotation, Color tint); // Draw a billboard texture defined by source rectangle with scaling and rotation // Mesh management functions RLAPI void UploadMesh(Mesh *mesh, bool dynamic); // Upload mesh vertex data in GPU and provide VAO/VBO ids diff --git a/src/rmodels.c b/src/rmodels.c index eeebc3d2b..861680c00 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -3983,22 +3983,22 @@ void DrawModelWiresEx(Model model, Vector3 position, Vector3 rotationAxis, float // Draw a billboard void DrawBillboard(Camera camera, Texture2D texture, Vector3 position, float scale, Color tint) { - Rectangle source = { 0.0f, 0.0f, (float)texture.width, (float)texture.height }; + Rectangle rec = { 0.0f, 0.0f, (float)texture.width, (float)texture.height }; - DrawBillboardRec(camera, texture, source, position, (Vector2){ scale*fabsf((float)source.width/source.height), scale }, tint); + DrawBillboardRec(camera, texture, rec, position, (Vector2){ scale*fabsf((float)rec.width/rec.height), scale }, tint); } // Draw a billboard (part of a texture defined by a rectangle) -void DrawBillboardRec(Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector2 size, Color tint) +void DrawBillboardRec(Camera camera, Texture2D texture, Rectangle rec, Vector3 position, Vector2 size, Color tint) { // NOTE: Billboard locked on axis-Y Vector3 up = { 0.0f, 1.0f, 0.0f }; - DrawBillboardPro(camera, texture, source, position, up, size, Vector2Scale(size, 0.5), 0.0f, tint); + DrawBillboardPro(camera, texture, rec, position, up, size, Vector2Scale(size, 0.5), 0.0f, tint); } -// Draw a billboard with additional parameters -void DrawBillboardPro(Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector3 up, Vector2 size, Vector2 origin, float rotation, Color tint) +// Draw a billboard texture defined by source rectangle with scaling and rotation +void DrawBillboardPro(Camera camera, Texture2D texture, Rectangle rec, Vector3 position, Vector3 up, Vector2 size, Vector2 origin, float rotation, Color tint) { // Compute the up vector and the right vector Matrix matView = MatrixLookAt(camera.position, camera.target, camera.up); @@ -4009,20 +4009,20 @@ void DrawBillboardPro(Camera camera, Texture2D texture, Rectangle source, Vector // Flip the content of the billboard while maintaining the counterclockwise edge rendering order if (size.x < 0.0f) { - source.x -= size.x; - source.width *= -1.0; + rec.x -= size.x; + rec.width *= -1.0; right = Vector3Negate(right); origin.x *= -1.0f; } if (size.y < 0.0f) { - source.y -= size.y; - source.height *= -1.0; + rec.y -= size.y; + rec.height *= -1.0; up = Vector3Negate(up); origin.y *= -1.0f; } - // Draw the texture region described by source on the following rectangle in 3D space: + // Draw the texture region described by rec on the following rectangle in 3D space: // // size.x <--. // 3 ^---------------------------+ 2 \ rotation @@ -4054,10 +4054,10 @@ void DrawBillboardPro(Camera camera, Texture2D texture, Rectangle source, Vector } Vector2 texcoords[4]; - texcoords[0] = (Vector2){ (float)source.x/texture.width, (float)(source.y + source.height)/texture.height }; - texcoords[1] = (Vector2){ (float)(source.x + source.width)/texture.width, (float)(source.y + source.height)/texture.height }; - texcoords[2] = (Vector2){ (float)(source.x + source.width)/texture.width, (float)source.y/texture.height }; - texcoords[3] = (Vector2){ (float)source.x/texture.width, (float)source.y/texture.height }; + texcoords[0] = (Vector2){ (float)rec.x/texture.width, (float)(rec.y + rec.height)/texture.height }; + texcoords[1] = (Vector2){ (float)(rec.x + rec.width)/texture.width, (float)(rec.y + rec.height)/texture.height }; + texcoords[2] = (Vector2){ (float)(rec.x + rec.width)/texture.width, (float)rec.y/texture.height }; + texcoords[3] = (Vector2){ (float)rec.x/texture.width, (float)rec.y/texture.height }; rlSetTexture(texture.id); rlBegin(RL_QUADS); diff --git a/src/rshapes.c b/src/rshapes.c index 5ef988e38..38c8a1fbe 100644 --- a/src/rshapes.c +++ b/src/rshapes.c @@ -90,12 +90,12 @@ static float EaseCubicInOut(float t, float b, float c, float d); // Cubic eas // Set texture and rectangle to be used on shapes drawing // NOTE: It can be useful when using basic shapes and one single font, // defining a font char white rectangle would allow drawing everything in a single draw call -void SetShapesTexture(Texture2D texture, Rectangle source) +void SetShapesTexture(Texture2D texture, Rectangle rec) { // Reset texture to default pixel if required // WARNING: Shapes texture should be probably better validated, // it can break the rendering of all shapes if misused - if ((texture.id == 0) || (source.width == 0) || (source.height == 0)) + if ((texture.id == 0) || (rec.width == 0) || (rec.height == 0)) { texShapes = (Texture2D){ 1, 1, 1, 1, 7 }; texShapesRec = (Rectangle){ 0.0f, 0.0f, 1.0f, 1.0f }; @@ -103,7 +103,7 @@ void SetShapesTexture(Texture2D texture, Rectangle source) else { texShapes = texture; - texShapesRec = source; + texShapesRec = rec; } } diff --git a/src/rtext.c b/src/rtext.c index c0434db63..14a3e39c6 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -2672,8 +2672,8 @@ static Font LoadBMFont(const char *fileName) for (int i = 1; i < pageCount; i++) { Rectangle srcRec = { 0.0f, 0.0f, (float)imWidth, (float)imHeight }; - Rectangle destRec = { 0.0f, (float)imHeight*(float)i, (float)imWidth, (float)imHeight }; - ImageDraw(&fullFont, imFonts[i], srcRec, destRec, WHITE); + Rectangle dstRec = { 0.0f, (float)imHeight*(float)i, (float)imWidth, (float)imHeight }; + ImageDraw(&fullFont, imFonts[i], srcRec, dstRec, WHITE); } } diff --git a/src/rtextures.c b/src/rtextures.c index bedcdb6a4..d2cfb9f78 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -4491,25 +4491,25 @@ void DrawTextureV(Texture2D texture, Vector2 position, Color tint) // Draw a texture with extended parameters void DrawTextureEx(Texture2D texture, Vector2 position, float rotation, float scale, Color tint) { - Rectangle source = { 0.0f, 0.0f, (float)texture.width, (float)texture.height }; - Rectangle dest = { position.x, position.y, (float)texture.width*scale, (float)texture.height*scale }; + Rectangle srcrec = { 0.0f, 0.0f, (float)texture.width, (float)texture.height }; + Rectangle dstrec = { position.x, position.y, (float)texture.width*scale, (float)texture.height*scale }; Vector2 origin = { 0.0f, 0.0f }; - DrawTexturePro(texture, source, dest, origin, rotation, tint); + DrawTexturePro(texture, srcrec, dstrec, origin, rotation, tint); } // Draw a part of a texture (defined by a rectangle) -void DrawTextureRec(Texture2D texture, Rectangle source, Vector2 position, Color tint) +void DrawTextureRec(Texture2D texture, Rectangle rec, Vector2 position, Color tint) { - Rectangle dest = { position.x, position.y, fabsf(source.width), fabsf(source.height) }; + Rectangle dstrec = { position.x, position.y, fabsf(rec.width), fabsf(rec.height) }; Vector2 origin = { 0.0f, 0.0f }; - DrawTexturePro(texture, source, dest, origin, 0.0f, tint); + DrawTexturePro(texture, rec, dstrec, origin, 0.0f, tint); } // Draw a part of a texture (defined by a rectangle) with 'pro' parameters // NOTE: origin is relative to destination rectangle size -void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 origin, float rotation, Color tint) +void DrawTexturePro(Texture2D texture, Rectangle srcrec, Rectangle dstrec, Vector2 origin, float rotation, Color tint) { // Check if texture is valid if (texture.id > 0) @@ -4519,11 +4519,11 @@ void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 bool flipX = false; - if (source.width < 0) { flipX = true; source.width *= -1; } - if (source.height < 0) source.y -= source.height; + if (srcrec.width < 0) { flipX = true; srcrec.width *= -1; } + if (srcrec.height < 0) srcrec.y -= srcrec.height; - if (dest.width < 0) dest.width *= -1; - if (dest.height < 0) dest.height *= -1; + if (dstrec.width < 0) dstrec.width *= -1; + if (dstrec.height < 0) dstrec.height *= -1; Vector2 topLeft = { 0 }; Vector2 topRight = { 0 }; @@ -4533,33 +4533,33 @@ void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 // Only calculate rotation if needed if (rotation == 0.0f) { - float x = dest.x - origin.x; - float y = dest.y - origin.y; + float x = dstrec.x - origin.x; + float y = dstrec.y - origin.y; topLeft = (Vector2){ x, y }; - topRight = (Vector2){ x + dest.width, y }; - bottomLeft = (Vector2){ x, y + dest.height }; - bottomRight = (Vector2){ x + dest.width, y + dest.height }; + topRight = (Vector2){ x + dstrec.width, y }; + bottomLeft = (Vector2){ x, y + dstrec.height }; + bottomRight = (Vector2){ x + dstrec.width, y + dstrec.height }; } else { float sinRotation = sinf(rotation*DEG2RAD); float cosRotation = cosf(rotation*DEG2RAD); - float x = dest.x; - float y = dest.y; + float x = dstrec.x; + float y = dstrec.y; float dx = -origin.x; float dy = -origin.y; topLeft.x = x + dx*cosRotation - dy*sinRotation; topLeft.y = y + dx*sinRotation + dy*cosRotation; - topRight.x = x + (dx + dest.width)*cosRotation - dy*sinRotation; - topRight.y = y + (dx + dest.width)*sinRotation + dy*cosRotation; + topRight.x = x + (dx + dstrec.width)*cosRotation - dy*sinRotation; + topRight.y = y + (dx + dstrec.width)*sinRotation + dy*cosRotation; - bottomLeft.x = x + dx*cosRotation - (dy + dest.height)*sinRotation; - bottomLeft.y = y + dx*sinRotation + (dy + dest.height)*cosRotation; + bottomLeft.x = x + dx*cosRotation - (dy + dstrec.height)*sinRotation; + bottomLeft.y = y + dx*sinRotation + (dy + dstrec.height)*cosRotation; - bottomRight.x = x + (dx + dest.width)*cosRotation - (dy + dest.height)*sinRotation; - bottomRight.y = y + (dx + dest.width)*sinRotation + (dy + dest.height)*cosRotation; + bottomRight.x = x + (dx + dstrec.width)*cosRotation - (dy + dstrec.height)*sinRotation; + bottomRight.y = y + (dx + dstrec.width)*sinRotation + (dy + dstrec.height)*cosRotation; } rlSetTexture(texture.id); @@ -4569,23 +4569,23 @@ void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 rlNormal3f(0.0f, 0.0f, 1.0f); // Normal vector pointing towards viewer // Top-left corner for texture and quad - if (flipX) rlTexCoord2f((source.x + source.width)/width, source.y/height); - else rlTexCoord2f(source.x/width, source.y/height); + if (flipX) rlTexCoord2f((srcrec.x + srcrec.width)/width, srcrec.y/height); + else rlTexCoord2f(srcrec.x/width, srcrec.y/height); rlVertex2f(topLeft.x, topLeft.y); // Bottom-left corner for texture and quad - if (flipX) rlTexCoord2f((source.x + source.width)/width, (source.y + source.height)/height); - else rlTexCoord2f(source.x/width, (source.y + source.height)/height); + if (flipX) rlTexCoord2f((srcrec.x + srcrec.width)/width, (srcrec.y + srcrec.height)/height); + else rlTexCoord2f(srcrec.x/width, (srcrec.y + srcrec.height)/height); rlVertex2f(bottomLeft.x, bottomLeft.y); // Bottom-right corner for texture and quad - if (flipX) rlTexCoord2f(source.x/width, (source.y + source.height)/height); - else rlTexCoord2f((source.x + source.width)/width, (source.y + source.height)/height); + if (flipX) rlTexCoord2f(srcrec.x/width, (srcrec.y + srcrec.height)/height); + else rlTexCoord2f((srcrec.x + srcrec.width)/width, (srcrec.y + srcrec.height)/height); rlVertex2f(bottomRight.x, bottomRight.y); // Top-right corner for texture and quad - if (flipX) rlTexCoord2f(source.x/width, source.y/height); - else rlTexCoord2f((source.x + source.width)/width, source.y/height); + if (flipX) rlTexCoord2f(srcrec.x/width, srcrec.y/height); + else rlTexCoord2f((srcrec.x + srcrec.width)/width, srcrec.y/height); rlVertex2f(topRight.x, topRight.y); rlEnd(); @@ -4599,7 +4599,7 @@ void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 /* rlSetTexture(texture.id); rlPushMatrix(); - rlTranslatef(dest.x, dest.y, 0.0f); + rlTranslatef(dstrec.x, dstrec.y, 0.0f); if (rotation != 0.0f) rlRotatef(rotation, 0.0f, 0.0f, 1.0f); rlTranslatef(-origin.x, -origin.y, 0.0f); @@ -4608,24 +4608,24 @@ void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 rlNormal3f(0.0f, 0.0f, 1.0f); // Normal vector pointing towards viewer // Bottom-left corner for texture and quad - if (flipX) rlTexCoord2f((source.x + source.width)/width, source.y/height); - else rlTexCoord2f(source.x/width, source.y/height); + if (flipX) rlTexCoord2f((srcrec.x + srcrec.width)/width, srcrec.y/height); + else rlTexCoord2f(srcrec.x/width, srcrec.y/height); rlVertex2f(0.0f, 0.0f); // Bottom-right corner for texture and quad - if (flipX) rlTexCoord2f((source.x + source.width)/width, (source.y + source.height)/height); - else rlTexCoord2f(source.x/width, (source.y + source.height)/height); - rlVertex2f(0.0f, dest.height); + if (flipX) rlTexCoord2f((srcrec.x + srcrec.width)/width, (srcrec.y + srcrec.height)/height); + else rlTexCoord2f(srcrec.x/width, (srcrec.y + srcrec.height)/height); + rlVertex2f(0.0f, dstrec.height); // Top-right corner for texture and quad - if (flipX) rlTexCoord2f(source.x/width, (source.y + source.height)/height); - else rlTexCoord2f((source.x + source.width)/width, (source.y + source.height)/height); - rlVertex2f(dest.width, dest.height); + if (flipX) rlTexCoord2f(srcrec.x/width, (srcrec.y + srcrec.height)/height); + else rlTexCoord2f((srcrec.x + srcrec.width)/width, (srcrec.y + srcrec.height)/height); + rlVertex2f(dstrec.width, dstrec.height); // Top-left corner for texture and quad - if (flipX) rlTexCoord2f(source.x/width, source.y/height); - else rlTexCoord2f((source.x + source.width)/width, source.y/height); - rlVertex2f(dest.width, 0.0f); + if (flipX) rlTexCoord2f(srcrec.x/width, srcrec.y/height); + else rlTexCoord2f((srcrec.x + srcrec.width)/width, srcrec.y/height); + rlVertex2f(dstrec.width, 0.0f); rlEnd(); rlPopMatrix(); rlSetTexture(0); @@ -4634,15 +4634,15 @@ void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 } // Draw a texture (or part of it) that stretches or shrinks nicely using n-patch info -void DrawTextureNPatch(Texture2D texture, NPatchInfo nPatchInfo, Rectangle dest, Vector2 origin, float rotation, Color tint) +void DrawTextureNPatch(Texture2D texture, NPatchInfo nPatchInfo, Rectangle dstrec, Vector2 origin, float rotation, Color tint) { if (texture.id > 0) { float width = (float)texture.width; float height = (float)texture.height; - float patchWidth = ((int)dest.width <= 0)? 0.0f : dest.width; - float patchHeight = ((int)dest.height <= 0)? 0.0f : dest.height; + float patchWidth = ((int)dstrec.width <= 0)? 0.0f : dstrec.width; + float patchHeight = ((int)dstrec.height <= 0)? 0.0f : dstrec.height; if (nPatchInfo.source.width < 0) nPatchInfo.source.x -= nPatchInfo.source.width; if (nPatchInfo.source.height < 0) nPatchInfo.source.y -= nPatchInfo.source.height; @@ -4701,7 +4701,7 @@ void DrawTextureNPatch(Texture2D texture, NPatchInfo nPatchInfo, Rectangle dest, rlSetTexture(texture.id); rlPushMatrix(); - rlTranslatef(dest.x, dest.y, 0.0f); + rlTranslatef(dstrec.x, dstrec.y, 0.0f); rlRotatef(rotation, 0.0f, 0.0f, 1.0f); rlTranslatef(-origin.x, -origin.y, 0.0f);