X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexture2d.cpp;h=94224147c70434b53bcb8ef9ea78328e9f81284b;hp=c1f6e0e9e7bd75f664cc682209b551746d3f4e48;hb=HEAD;hpb=927a1aa0a3a27e463ec0efc08bd08e7c4e969909 diff --git a/source/texture2d.cpp b/source/texture2d.cpp deleted file mode 100644 index c1f6e0e9..00000000 --- a/source/texture2d.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2007 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - -#include "except.h" -#include "texture2d.h" - -using namespace std; - -namespace Msp { -namespace GL { - -Texture2D::Texture2D(): - width(0), - height(0) -{ - target=GL_TEXTURE_2D; - bind(); -} - -void Texture2D::storage(PixelFormat fmt, sizei wd, sizei ht, int brd) -{ - if(width>0) - throw InvalidState("Texture storage may only be specified once"); - if(wd==0 || ht==0) - throw InvalidParameterValue("Invalid texture dimensions"); - - ifmt=fmt; - width=wd; - height=ht; - border=brd; -} - -void Texture2D::image(int level, PixelFormat fmt, DataType type, const void *data) -{ - if(width==0) - throw InvalidState("Texture storage has not been specified"); - - maybe_bind(); - - glTexImage2D(target, level, ifmt, width, height, border, fmt, type, data); -} - -void Texture2D::sub_image(int level, int x, int y, sizei wd, sizei ht, PixelFormat fmt, DataType type, const void *data) -{ - if(width==0) - throw InvalidState("Texture storage has not been specified"); - - maybe_bind(); - - glTexSubImage2D(target, level, x, y, wd, ht, fmt, type, data); -} - -void Texture2D::load_image(const string &fn) -{ - Graphics::Image img; - img.load_file(fn); - - image(img); -} - -void Texture2D::image(const Graphics::Image &img) -{ - unsigned w=img.get_width(); - unsigned h=img.get_height(); - PixelFormat fmt=pixelformat_from_graphics(img.get_format()); - if(width==0) - storage(fmt, w, h, 0); - else if(w!=width || h!=height) - throw IncompatibleData("Image does not match texture storage"); - - image(0, fmt, UNSIGNED_BYTE, img.get_data()); -} - - -Texture2D::Loader::Loader(Texture2D &t): - Texture::Loader(t) -{ - add("image_data", &Loader::image_data); - add("raw_data", &Loader::raw_data); - add("storage", &Loader::storage); -} - -void Texture2D::Loader::image_data(const string &data) -{ - Graphics::Image img; - img.load_memory(data.data(), data.size()); - - static_cast(obj).image(img); -} - -void Texture2D::Loader::raw_data(const string &data) -{ - Texture2D &t2d=static_cast(obj); - t2d.image(0, t2d.ifmt, UNSIGNED_BYTE, data.data()); -} - -void Texture2D::Loader::storage(PixelFormat fmt, unsigned w, unsigned h, unsigned b) -{ - static_cast(obj).storage(fmt, w, h, b); -} - -} // namespace GL -} // namespace Msp