3dColor.cpp
上传用户:shxiangxiu
上传日期:2007-01-03
资源大小:1101k
文件大小:4k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // 3dColor.cpp : implementation file
  3. //
  4. // glOOP (OpenGL Object Oriented Programming library)
  5. // Copyright (c) Craig Fahrnbach 1997, 1998
  6. //
  7. // OpenGL is a registered trademark of Silicon Graphics
  8. //
  9. //
  10. // This program is provided for educational and personal use only and
  11. // is provided without guarantee or warrantee expressed or implied.
  12. //
  13. // Commercial use is strickly prohibited without written permission
  14. // from ImageWare Development.
  15. //
  16. // This program is -not- in the public domain.
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #include <windows.h>
  20. #include "stdafx.h"
  21. #include "glOOP.h"
  22. #ifdef _DEBUG
  23. #define new DEBUG_NEW
  24. #undef THIS_FILE
  25. static char THIS_FILE[] = __FILE__;
  26. #endif
  27. //////////////////////////////////////////////////////////////////
  28. // C3dColor
  29. IMPLEMENT_DYNAMIC(C3dColor, CObject)
  30. //IMPLEMENT_SERIAL(C3dColor, CObject, 0)
  31. /////////////////////////////////////////////////////////////////////////////
  32. // C3dColor construction
  33. C3dColor::C3dColor()
  34. {
  35. // Assign default values to member attributes..
  36. m_szName.GetBuffer(128); // allocate 128 bytes min.
  37.    m_szName = _T("");
  38. SetColor4f(1.0f, 1.0f, 1.0f, 1.0f); // White
  39. }
  40. /////////////////////////////////////////////////////////////////////////////
  41. // C3dColor Destructor
  42. C3dColor::~C3dColor()
  43. {
  44. }
  45. /////////////////////////////////////////////////////////////////////////////
  46. // C3dColor Implimentation
  47. C3dColor* C3dColor::Create()
  48. {
  49. C3dColor* pColor = new C3dColor;
  50. ASSERT(pColor);
  51. return pColor;
  52. }
  53. C3dColor* C3dColor::Create(CString szName,
  54.    GLfloat r,
  55.    GLfloat g,
  56.    GLfloat b,
  57.    GLfloat a)
  58. {
  59. C3dColor* pColor = new C3dColor;
  60. ASSERT(pColor);
  61. pColor->m_szName = szName;
  62. pColor->SetColor4f(r, g, b, a);
  63. return pColor;
  64. }
  65. void C3dColor::Delete(C3dColor* pColor)
  66. {
  67. if(pColor) {
  68. delete pColor;
  69. }
  70. }
  71. void C3dColor::GetColor4f(GLfloat *r, GLfloat *g, GLfloat *b, GLfloat *a)
  72. {
  73. // Get the Color RGBA component values
  74. *r = m_fColor[0];
  75. *g = m_fColor[1];
  76. *b = m_fColor[2];
  77. *a = m_fColor[3];
  78. }
  79. void C3dColor::SetColor4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a)
  80. {
  81. // Set the Color RGBA component values
  82. m_fColor[0] = r;
  83. m_fColor[1] = g;
  84. m_fColor[2] = b;
  85. m_fColor[3] = a;
  86. }
  87. void C3dColor::SetColor3fv(C3dColor* pColor)
  88. {
  89. // Set the Color RGB components only (No alpha)
  90. if(pColor)
  91. {
  92. // Set the Color RGBA component values
  93. m_fColor[0] = pColor->m_fColor[0];
  94. m_fColor[1] = pColor->m_fColor[1];
  95. m_fColor[2] = pColor->m_fColor[2];
  96. }
  97. }
  98. void C3dColor::SetColor4fv(C3dColor* pColor)
  99. {
  100. if(pColor)
  101. {
  102. // Set the Color RGBA component values
  103. m_fColor[0] = pColor->m_fColor[0];
  104. m_fColor[1] = pColor->m_fColor[1];
  105. m_fColor[2] = pColor->m_fColor[2];
  106. m_fColor[3] = pColor->m_fColor[3];
  107. }
  108. }
  109. BOOL C3dColor::Compare(C3dColor* pColor)
  110. {
  111. // Compare the color components
  112. if(pColor->m_fColor[0] != m_fColor[0])
  113. return FALSE;
  114. if(pColor->m_fColor[1] != m_fColor[1])
  115. return FALSE;
  116. if(pColor->m_fColor[2] != m_fColor[2])
  117. return FALSE;
  118. if(pColor->m_fColor[3] != m_fColor[3])
  119. return FALSE;
  120. return TRUE;
  121. }
  122. void C3dColor::Serialize(CArchive& ar, int iVersion)
  123. {
  124. CString szBuffer;
  125. if (ar.IsStoring())
  126. {
  127. // Save the Color header
  128. szBuffer.Format("%sC3dColor {n",  szIndent);
  129. ar.WriteString(szBuffer);
  130. // Save the Color Data...
  131. szBuffer.Format("%stName    < %s >n", szIndent, m_szName);
  132. ar.WriteString(szBuffer);
  133. szBuffer.Format("%stColor   < %f %f %f %f > // RGBAn",  szIndent, m_fColor[0], m_fColor[1], m_fColor[2], m_fColor[3]);
  134. ar.WriteString(szBuffer);
  135. szBuffer.Format("%s}n",  szIndent); // end of Color def
  136. ar.WriteString(szBuffer);
  137. }
  138. else
  139. {
  140. // Read the Color data...
  141. ar.ReadString(szBuffer);
  142. szBuffer.TrimLeft(); // Remove leading white spaces
  143. sscanf(szBuffer, "Name    < %s >n", m_szName);
  144. ar.ReadString(szBuffer);
  145. szBuffer.TrimLeft();
  146. sscanf(szBuffer, "Color   < %f %f %f %f >n", &m_fColor[0], &m_fColor[1], &m_fColor[2], &m_fColor[3]);
  147. ar.ReadString(szBuffer);
  148. szBuffer.TrimLeft();
  149. }
  150. }