• Main Page
  • Classes
  • Files
  • File List

T:/Eigene Dateien/Visual Studio 2008/Projects/VisLuFramework/src/ColourPicker.cpp

00001 #include "ColourPicker.h"
00002 
00003 #include "TransferFunctionGUI.h"
00004 
00005 
00006 GLuint ColourPicker::colourPickerTextureID = -1;
00007 float ColourPicker::colourPickerSliderValue = 0.f;
00008 int ColourPicker::colourPickerOffsetX = 10;
00009 
00010 ColourPickerSliderMode ColourPicker::g_iColourPickerLabSwitchMode = ColourPickerSliderMode_L;
00011 
00012 int ColourPicker::colourPickerHeight = 180 + TransferFunctionGUI::g_iTransferFunctionTextureDisplayHeight + TransferFunctionGUI::g_iTransferFunctionTextureDisplayYOffset;
00013 int ColourPicker::colourPickerWidth = colourPickerHeight;
00014 
00015 RGBA_Colour* ColourPicker::colourPickerTextureData = new RGBA_Colour[colourPickerWidth * colourPickerHeight];
00016 
00017 
00018 
00019 Lab_Colour ColourPicker::getColourPickerPositionColour(float x, float y)
00020 {
00021         float L = 0.f;
00022         float a = 0.f;
00023         float b = 0.f;
00024 
00025         if(g_iColourPickerLabSwitchMode != ColourPickerSliderMode_L)
00026         {
00027                 L = 100.f * y / (float)colourPickerHeight;
00028                 if(g_iColourPickerLabSwitchMode != ColourPickerSliderMode_A)
00029                 {
00030                         b = colourPickerSliderValue;
00031                         a = 130.f - 260.f * x /(float)colourPickerHeight;
00032                 }
00033                 else
00034                 {
00035                         a = colourPickerSliderValue;
00036                         b = 130.f - 260.f * x /(float)colourPickerHeight;
00037                 }
00038         }
00039         else
00040         {
00041                 L = colourPickerSliderValue;
00042                 a = 130.f - 260.f * x /(float) colourPickerWidth;
00043                 b = 130.f - 260.f * y /(float)colourPickerHeight;
00044         }
00045 
00046         return Lab_Colour(L, a, b);
00047 }
00048 
00049 void ColourPicker::initColourPickerTexture()
00050 {
00051         glGenTextures(1, &colourPickerTextureID);
00052 
00053         get_errors();
00054 
00055         if(colourPickerTextureID != GLuint(-1))
00056         {
00057                 get_errors();
00058                 glBindTexture(GL_TEXTURE_2D, colourPickerTextureID);
00059 
00060                 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_CLAMP);
00061                 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_CLAMP);
00062 
00063                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
00064                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
00065 
00066                 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, colourPickerWidth, colourPickerHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
00067 
00068                 get_errors();
00069         }
00070 
00071         refreshColourPickerTexture(glutGetWindow());
00072 }
00073 
00074 
00075 
00076 void ColourPicker::refreshColourPickerTexture(int windowID)
00077 {
00078         glutSetWindow(windowID);
00079 
00080         for(int y = 0; y < colourPickerHeight; ++y)
00081         {
00082                 for(int x = 0; x < colourPickerWidth; ++x)
00083                 {
00084                         int i = colourPickerWidth * y + x;
00085 
00086                         Lab_Colour colour = getColourPickerPositionColour((float)x, (float)y);
00087 
00088                         colourPickerTextureData[i] = RGBA_Colour(toRGB(colour), GLubyte(255));
00089                 }
00090         }
00091         if(colourPickerTextureID != GLuint(-1))
00092         {
00093                 glBindTexture(GL_TEXTURE_2D, colourPickerTextureID);
00094                 glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, colourPickerWidth, colourPickerHeight, GL_RGBA, GL_UNSIGNED_BYTE, colourPickerTextureData);
00095                 get_errors();
00096         }
00097 
00098 }

Generated on Tue Dec 14 2010 03:52:55 for VolVis by  doxygen 1.7.2