X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphic.cpp;h=5fc27ef3d153e5c2061ff5e891bab10a2eea5f0c;hb=1bc84ded58379ee24315db8784d9fb710a02e24e;hp=005d30fb4ef8f7929326093766d49ae62332dcbe;hpb=e5f9004b672b038e43cf2b20c3fc9327f2b55ffd;p=libs%2Fgltk.git diff --git a/source/graphic.cpp b/source/graphic.cpp index 005d30f..5fc27ef 100644 --- a/source/graphic.cpp +++ b/source/graphic.cpp @@ -1,4 +1,3 @@ -#include #include "graphic.h" #include "resources.h" @@ -12,7 +11,7 @@ Graphic::Graphic(): repeat(false) { } -void Graphic::render(unsigned wd, unsigned ht) const +void Graphic::build(unsigned wd, unsigned ht, GL::PrimitiveBuilder &bld) const { vector x, y; create_coords(0.0f-shadow.left, wd+shadow.right, border.left, border.right, slice.w-border.left-border.right, x); @@ -27,27 +26,25 @@ void Graphic::render(unsigned wd, unsigned ht) const unsigned ymin = border.bottom ? 0 : 1; unsigned ymax = y.size()-(border.top ? 2 : 3); - texture->bind(); - GL::Immediate imm((GL::COLOR4_UBYTE, GL::TEXCOORD2, GL::VERTEX2)); - imm.color(1.0f, 1.0f, 1.0f); - imm.begin(GL::QUADS); + bld.color(1.0f, 1.0f, 1.0f); + bld.begin(GL::QUADS); for(unsigned i=ymin; i<=ymax; ++i) { unsigned i2 = (i==0 ? 0 : i==y.size()-2 ? 2 : 1); for(unsigned j=xmin; j<=xmax; ++j) { unsigned j2 = (j==0 ? 0 : j==x.size()-2 ? 2 : 1); - imm.texcoord(u[j2], v[i2]); - imm.vertex(x[j], y[i]); - imm.texcoord(u[j2+1], v[i2]); - imm.vertex(x[j+1], y[i]); - imm.texcoord(u[j2+1], v[i2+1]); - imm.vertex(x[j+1], y[i+1]); - imm.texcoord(u[j2], v[i2+1]); - imm.vertex(x[j], y[i+1]); + bld.texcoord(u[j2], v[i2]); + bld.vertex(x[j], y[i]); + bld.texcoord(u[j2+1], v[i2]); + bld.vertex(x[j+1], y[i]); + bld.texcoord(u[j2+1], v[i2+1]); + bld.vertex(x[j+1], y[i+1]); + bld.texcoord(u[j2], v[i2+1]); + bld.vertex(x[j], y[i+1]); } } - imm.end(); + bld.end(); } void Graphic::create_coords(float low, float high, float brd1, float brd2, float block, vector &coords) const @@ -76,8 +73,7 @@ void Graphic::create_texcoords(float low, float high, float brd1, float brd2, fl Graphic::Loader::Loader(Graphic &g, Resources &r): - graph(g), - res(r) + DataFile::CollectionObjectLoader(g, &r) { add("texture", &Loader::texture); add("slice", &Loader::slice); @@ -88,23 +84,23 @@ Graphic::Loader::Loader(Graphic &g, Resources &r): void Graphic::Loader::texture(const string &n) { - graph.texture = &res.get(n); - graph.slice = Geometry(0, 0, graph.texture->get_width(), graph.texture->get_height()); + obj.texture = &get_collection().get(n); + obj.slice = Geometry(0, 0, obj.texture->get_width(), obj.texture->get_height()); } void Graphic::Loader::slice(unsigned x, unsigned y, unsigned w, unsigned h) { - graph.slice = Geometry(x, y, w, h); + obj.slice = Geometry(x, y, w, h); } void Graphic::Loader::border() { - load_sub(graph.border); + load_sub(obj.border); } void Graphic::Loader::shadow() { - load_sub(graph.shadow); + load_sub(obj.shadow); } } // namespace GLtk