00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <GLW/GLWBitmap.h>
00022 #include <GLEXT/GLState.h>
00023 #include <common/Defines.h>
00024
00025 REGISTER_CLASS_SOURCE(GLWBitmap);
00026
00027 GLWBitmap::GLWBitmap(float x, float y, float w, float h, Image *bitmap) :
00028 GLWidget(x, y, w, h),
00029 bitmap_(bitmap)
00030 {
00031 }
00032
00033 GLWBitmap::~GLWBitmap()
00034 {
00035 }
00036
00037 void GLWBitmap::draw()
00038 {
00039 if (bitmap_)
00040 {
00041 GLState state(GLState::TEXTURE_OFF | GLState::BLEND_OFF);
00042
00043 int width = MIN(bitmap_->getWidth(), (int) w_);
00044 int height = MIN(bitmap_->getHeight(), (int) h_);
00045
00046 glPixelStorei(GL_PACK_ALIGNMENT, 4);
00047 glPixelStorei(GL_PACK_ROW_LENGTH, 0);
00048 glPixelStorei(GL_PACK_SKIP_ROWS, 0);
00049 glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
00050
00051 glRasterPos2f(x_, y_);
00052 glDrawPixels(
00053 width,
00054 height,
00055 GL_RGB,
00056 GL_UNSIGNED_BYTE,
00057 bitmap_->getBits());
00058
00059 glPixelStorei(GL_PACK_ALIGNMENT, 4);
00060 glPixelStorei(GL_PACK_ROW_LENGTH, 0);
00061 glPixelStorei(GL_PACK_SKIP_ROWS, 0);
00062 glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
00063 }
00064
00065 GLWidget::draw();
00066 }
00067
00068 bool GLWBitmap::initFromXML(XMLNode *node)
00069 {
00070 if (!GLWidget::initFromXML(node)) return false;
00071 return true;
00072 }
00073