Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
ColorRamp.cpp
Package: display_list.zip [view]
Upload User: hcfgz168
Upload Date: 2011-09-11
Package Size: 116k
Code Size: 3k
Category:
OpenGL program
Development Platform:
WINDOWS
- //********************************************
- // ColorRamp.cpp
- //********************************************
- // pierre.alliez@cnet.francetelecom.fr
- // Created : 19/05/98
- // Modified : 19/05/98
- //********************************************
- #include "stdafx.h"
- #include "ColorRamp.h"
- //********************************************
- // Constructor
- //********************************************
- CColorRamp::CColorRamp()
- {
- BuildDefault();
- }
- //********************************************
- // Destructor
- //********************************************
- CColorRamp::~CColorRamp()
- {
- }
- //********************************************
- // Build
- //********************************************
- int CColorRamp::Build()
- {
- int x1,y1,x2,y2;
- float a,b;
- ASSERT(m_NbNode >= 2);
- for(unsigned char k=0;k<3;k++)
- for(int i=0;i<m_NbNode-1;i++)
- {
- x1 = (int)m_Node[i];
- x2 = (int)m_Node[i+1];
- ASSERT(x1<x2);
- y1 = m_Color[k][x1];
- y2 = m_Color[k][x2];
- a = (float)(y2-y1) / (float)(x2-x1);
- b = (float)y1 - a*(float)x1;
- for(int j=x1;j<x2;j++)
- m_Color[k][j]=(unsigned char)(a*(float)j+b);
- }
- return 1;
- }
- //********************************************
- // Build
- //********************************************
- int CColorRamp::BuildNodes()
- {
- // Check first and last are set
- m_Color[3][0] = 1;
- m_Color[3][m_Size-1] = 1;
- // Count nodes
- m_NbNode = 0;
- for(int i=0;i<m_Size;i++)
- if(m_Color[3][i]==1)
- {
- m_Node[m_NbNode]=(unsigned char)i;
- m_NbNode++;
- }
- TRACE("NbNode : %dn",m_NbNode);
- ASSERT(m_NbNode>=2);
- return 1;
- }
- //********************************************
- // ResetNodes
- // Just first and last node
- //********************************************
- void CColorRamp::ResetNodes()
- {
- for(int i=0;i<m_Size;i++)
- m_Color[3][i] = 0;
- m_Color[3][0] = 1;
- m_Color[3][m_Size-1] = 1;
- BuildNodes();
- }
- //********************************************
- // BuildDefault
- // 256 grey levels
- //********************************************
- void CColorRamp::BuildDefault()
- {
- m_Size = 256;
- ResetNodes();
- // Grey scales
- for(unsigned char i=0;i<3;i++)
- {
- m_Color[i][0]=0;
- m_Color[i][255]=255;
- }
- Build();
- }
- //********************************************
- // BuildDefault
- // 256 grey levels
- //********************************************
- void CColorRamp::BuildRainbow()
- {
- m_Size = 256;
- ResetNodes();
- // Rainbow
- m_Color[3][0] = 1;m_Color[0][0] = 0;m_Color[1][0] = 0;m_Color[2][0] = 255;
- m_Color[3][48] = 1;m_Color[0][48] = 0;m_Color[1][48] = 254;m_Color[2][48] = 255;
- m_Color[3][96] = 1;m_Color[0][96] = 0;m_Color[1][96] = 254;m_Color[2][96] = 0;
- m_Color[3][144] = 1;m_Color[0][144] = 255;m_Color[1][144] = 255;m_Color[2][144] = 0;
- m_Color[3][192] = 1;m_Color[0][192] = 255;m_Color[1][192] = 126;m_Color[2][192] = 0;
- m_Color[3][240] = 1;m_Color[0][240] = 255;m_Color[1][240] = 0;m_Color[2][240] = 0;
- m_Color[3][255] = 1;m_Color[0][255] = 255;m_Color[1][255] = 255;m_Color[2][255] = 255;
- BuildNodes();
- Build();
- }
- //********************************************
- // Trace
- //********************************************
- void CColorRamp::Trace()
- {
- TRACE("Ramp (%d elts)n",m_Size);
- for(int i=0;i<m_Size;i++)
- {
- TRACE(" %3d %3d %3dn",m_Color[0][i],m_Color[1][i],m_Color[2][i]);
- }
- }
- //** EOF **