diff --git a/src/quad.h b/src/quad.h index a26ac3a..f7a6a1c 100644 --- a/src/quad.h +++ b/src/quad.h @@ -36,7 +36,8 @@ struct Quad GLMeta::VAO vao; bool vboDirty; - static void setPosRect(CVertex *vert, const FloatRect &r) + template + static void setPosRect(V *vert, const FloatRect &r) { int i = 0; vert[i++].pos = r.topLeft(); @@ -45,64 +46,32 @@ struct Quad vert[i++].pos = r.bottomLeft(); } - static void setColor(CVertex *vert, const Vec4 &c) + template + static void setTexRect(V *vert, const FloatRect &r) + { + int i = 0; + vert[i++].texPos = r.topLeft(); + vert[i++].texPos = r.topRight(); + vert[i++].texPos = r.bottomRight(); + vert[i++].texPos = r.bottomLeft(); + } + + template + static int setTexPosRect(V *vert, const FloatRect &tex, const FloatRect &pos) + { + setPosRect(vert, pos); + setTexRect(vert, tex); + + return 1; + } + + template + static void setColor(V *vert, const Vec4 &c) { for (int i = 0; i < 4; ++i) vert[i].color = c; } - static void setPosRect(SVertex *vert, const FloatRect &r) - { - int i = 0; - vert[i++].pos = r.topLeft(); - vert[i++].pos = r.topRight(); - vert[i++].pos = r.bottomRight(); - vert[i++].pos = r.bottomLeft(); - } - - static void setTexRect(SVertex *vert, const FloatRect &r) - { - int i = 0; - vert[i++].texPos = r.topLeft(); - vert[i++].texPos = r.topRight(); - vert[i++].texPos = r.bottomRight(); - vert[i++].texPos = r.bottomLeft(); - } - - static void setPosRect(Vertex *vert, const FloatRect &r) - { - int i = 0; - vert[i++].pos = r.topLeft(); - vert[i++].pos = r.topRight(); - vert[i++].pos = r.bottomRight(); - vert[i++].pos = r.bottomLeft(); - } - - static void setTexRect(Vertex *vert, const FloatRect &r) - { - int i = 0; - vert[i++].texPos = r.topLeft(); - vert[i++].texPos = r.topRight(); - vert[i++].texPos = r.bottomRight(); - vert[i++].texPos = r.bottomLeft(); - } - - static int setTexPosRect(SVertex *vert, const FloatRect &tex, const FloatRect &pos) - { - setPosRect(vert, pos); - setTexRect(vert, tex); - - return 1; - } - - static int setTexPosRect(Vertex *vert, const FloatRect &tex, const FloatRect &pos) - { - setPosRect(vert, pos); - setTexRect(vert, tex); - - return 1; - } - Quad() : vbo(VBO::gen()), vboDirty(true)