9 void Texture1D::storage(PixelFormat fmt, unsigned wd, unsigned lv)
13 if(fmt!=format || wd!=width || (lv && lv!=n_levels))
14 throw incompatible_data("Texture1D::storage");
18 throw invalid_argument("Texture1D::storage");
22 n_levels = count_levels(width);
24 n_levels = min(n_levels, lv);
29 void Texture1D::image(unsigned level, const void *data)
31 return sub_image(level, 0, get_level_size(level), data);
34 void Texture1D::sub_image(unsigned level, unsigned x, unsigned wd, const void *data)
37 throw invalid_operation("Texture1D::sub_image");
38 if(level>=n_levels || x>width || x+wd>width)
39 throw out_of_range("Texture1D::sub_image");
41 Texture1DBackend::sub_image(level, x, wd, data);
44 void Texture1D::image(const Graphics::Image &img, unsigned lv)
46 if(img.get_height()!=1)
47 throw incompatible_data("Texture1D::image");
49 storage(pixelformat_from_image(img, use_srgb_format), img.get_width(), lv);
50 image(0, img.get_pixels());
53 unsigned Texture1D::get_level_size(unsigned level) const
59 Texture1D::Loader::Loader(Texture1D &t):
60 DataFile::DerivedObjectLoader<Texture1D, Texture::Loader>(t)
65 Texture1D::Loader::Loader(Texture1D &t, Collection &c):
66 DataFile::DerivedObjectLoader<Texture1D, Texture::Loader>(t, c)
71 void Texture1D::Loader::init()
73 add("storage", &Loader::storage);
74 add("storage", &Loader::storage_levels);
77 void Texture1D::Loader::storage(PixelFormat fmt, unsigned w)
82 void Texture1D::Loader::storage_levels(PixelFormat fmt, unsigned w, unsigned l)
84 obj.storage(fmt, w, l);