X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fpixelstore.cpp;fp=source%2Fcore%2Fpixelstore.cpp;h=0000000000000000000000000000000000000000;hb=a92362ad19b65f66b98e0dc4d034da5e4eb5cf36;hp=409f0f9a862e3582c975a486188452a60544dfb6;hpb=94969468a611b0d968021479b60e3f039e348c85;p=libs%2Fgl.git diff --git a/source/core/pixelstore.cpp b/source/core/pixelstore.cpp deleted file mode 100644 index 409f0f9a..00000000 --- a/source/core/pixelstore.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include -#include -#include -#include "gl.h" -#include "pixelformat.h" -#include "pixelstore.h" - -using namespace std; - -namespace Msp { -namespace GL { - -PixelStore::PixelStore(): - row_length(0), - image_height(0), - skip_pixels(0), - skip_rows(0), - skip_images(0), - alignment(4) -{ } - -PixelStore PixelStore::from_image(const Graphics::Image &img) -{ - PixelStore pstore; - unsigned stride = img.get_stride(); - unsigned ncomp = get_component_count(pixelformat_from_image(img)); - pstore.set_canvas_size(img.get_stride()/ncomp, 0); - pstore.set_alignment(min(stride&~(stride-1), 8U)); - return pstore; -} - -void PixelStore::update_parameter(int mask) const -{ - if(cur_obj!=this) - return; - - if(mask&SIZE) - { - glPixelStorei(GL_UNPACK_ROW_LENGTH, row_length); - if(EXT_texture3D) - glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, image_height); - } - if(mask&ORIGIN) - { - glPixelStorei(GL_UNPACK_SKIP_PIXELS, skip_pixels); - glPixelStorei(GL_UNPACK_SKIP_ROWS, skip_rows); - if(EXT_texture3D) - glPixelStorei(GL_UNPACK_SKIP_IMAGES, skip_images); - } - if(mask&ALIGNMENT) - glPixelStorei(GL_UNPACK_ALIGNMENT, alignment); -} - -void PixelStore::set_canvas_size(unsigned w, unsigned h) -{ - static Require _req(EXT_unpack_subimage); - row_length = w; - image_height = h; - update_parameter(SIZE); -} - -void PixelStore::set_origin(unsigned x, unsigned y, unsigned z) -{ - static Require _req(EXT_unpack_subimage); - if(z>0) - static Require _req3d(EXT_texture3D); - skip_pixels = x; - skip_rows = y; - skip_images = z; - update_parameter(ORIGIN); -} - -void PixelStore::set_alignment(unsigned a) -{ - alignment = a; - update_parameter(ALIGNMENT); -} - -void PixelStore::bind() const -{ - if(set_current(this)) - update_parameter(-1); -} - -} // namespace GL -} // namespace Msp