Archival snapshot of the Virtual World Entertainment Tesla cockpit software, 1994-1996: MUNGA engine and L4 pod layer source (Borland C++ 5.0), BT/RP game code, and game content (models, audio, maps, gauges, Division renderer data). Includes third-party libraries: Division dVS/DPL graphics, HMI SOS audio, WATTCP networking. Files are preserved byte-for-byte (.gitattributes disables all line-ending conversion). README.md documents the layout, target hardware, and toolchain. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
191 lines
4.8 KiB
C++
191 lines
4.8 KiB
C++
//===========================================================================//
|
|
// File: color.hh //
|
|
// Title: Declaration of Color classes. //
|
|
// Project: Tool Architecture II //
|
|
// Author: Jerry Edsall & Ken Olsen (based on work by J.M. Albertson) //
|
|
// Purpose: Stores color information. //
|
|
//---------------------------------------------------------------------------//
|
|
// Date Who Modification //
|
|
// -------- --- ---------------------------------------------------------- //
|
|
// 12/15/94 KEO Added RGBAColor class. //
|
|
// 11/12/95 GDU Added MUNGA signatures and stream IO, moved to MUNGA //
|
|
//---------------------------------------------------------------------------//
|
|
// Copyright (c) 1994 Virtual World Entertainment, Inc. //
|
|
// All rights reserved worldwide. //
|
|
// This unpublished source code is PROPRIETARY and CONFIDENTIAL. //
|
|
//===========================================================================//
|
|
|
|
#if !defined(COLOR_HPP)
|
|
#define COLOR_HPP
|
|
|
|
#if !defined(MEMSTRM_HPP)
|
|
#include <memstrm.hpp>
|
|
#endif
|
|
|
|
#if !defined(SCALAR_HPP)
|
|
#include <scalar.hpp>
|
|
#endif
|
|
|
|
//##########################################################################
|
|
//############## RGBColor ############################################
|
|
//##########################################################################
|
|
|
|
class RGBColor
|
|
{
|
|
friend class RGBAColor;
|
|
|
|
public:
|
|
Scalar
|
|
Red,
|
|
Green,
|
|
Blue;
|
|
|
|
#if defined(USE_SIGNATURE)
|
|
friend int
|
|
Is_Signature_Bad(const volatile RGBColor *p);
|
|
#endif
|
|
|
|
|
|
RGBColor()
|
|
{
|
|
Red = Green = Blue = -1.0f;
|
|
}
|
|
|
|
RGBColor(
|
|
Scalar r,
|
|
Scalar g,
|
|
Scalar b
|
|
)
|
|
{
|
|
Red = r;
|
|
Green = g;
|
|
Blue = b;
|
|
}
|
|
|
|
Logical
|
|
operator==(const RGBColor &a_RGBColor) const
|
|
{ return !memcmp(this, &a_RGBColor, sizeof(RGBColor)); }
|
|
Logical
|
|
operator!=(const RGBColor &a_RGBColor) const
|
|
{ return memcmp(this, &a_RGBColor, sizeof(RGBColor)); }
|
|
|
|
Logical
|
|
TestInstance() const;
|
|
|
|
RGBColor
|
|
operator+(const RGBColor &a_RGBColor) const
|
|
{
|
|
return RGBColor (
|
|
min(this->Red + a_RGBColor.Red, 1.0),
|
|
min(this->Green + a_RGBColor.Green, 1.0),
|
|
min(this->Blue + a_RGBColor.Blue, 1.0));
|
|
}
|
|
Scalar
|
|
Infrared() const
|
|
{ return 0.3 * this->Red + 0.5 * this->Green + 0.2 * this->Blue; }
|
|
|
|
//
|
|
// Support functions
|
|
//
|
|
friend ostream&
|
|
operator<<(
|
|
ostream& stream,
|
|
const RGBColor& C
|
|
);
|
|
|
|
|
|
private:
|
|
Scalar
|
|
min(Scalar x, Scalar y) const
|
|
{ return x < y ? x : y; }
|
|
|
|
|
|
};
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~ RGBColor functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
void
|
|
Convert_From_Ascii(
|
|
const char *str,
|
|
RGBColor *color
|
|
);
|
|
|
|
inline MemoryStream&
|
|
MemoryStream_Read(
|
|
MemoryStream* stream,
|
|
RGBColor *output
|
|
)
|
|
{return stream->ReadBytes(output, sizeof(*output));}
|
|
inline MemoryStream&
|
|
MemoryStream_Write(
|
|
MemoryStream* stream,
|
|
const RGBColor *input
|
|
)
|
|
{return stream->WriteBytes(input, sizeof(*input));}
|
|
|
|
//##########################################################################
|
|
//############## RGBAColor ###########################################
|
|
//##########################################################################
|
|
|
|
class RGBAColor:
|
|
public RGBColor
|
|
{
|
|
public:
|
|
Scalar
|
|
Alpha;
|
|
|
|
RGBAColor():
|
|
RGBColor()
|
|
{ Alpha = -1.0f; }
|
|
|
|
RGBAColor(
|
|
Scalar r,
|
|
Scalar g,
|
|
Scalar b,
|
|
Scalar a
|
|
):
|
|
RGBColor(r, g, b)
|
|
{ Alpha = a; }
|
|
|
|
Logical
|
|
operator==(const RGBAColor &a_RGBAColor) const
|
|
{ return !memcmp(this, &a_RGBAColor, sizeof(RGBAColor)); }
|
|
Logical
|
|
operator!=(const RGBAColor &a_RGBAColor) const
|
|
{ return memcmp(this, &a_RGBAColor, sizeof(RGBAColor)); }
|
|
|
|
//
|
|
// Support functions
|
|
//
|
|
friend ostream&
|
|
operator<<(
|
|
ostream& stream,
|
|
const RGBAColor& c
|
|
);
|
|
};
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~ RGBAColor functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
void
|
|
Convert_From_Ascii(
|
|
const char *str,
|
|
RGBAColor *color
|
|
);
|
|
|
|
inline MemoryStream&
|
|
MemoryStream_Read(
|
|
MemoryStream* stream,
|
|
RGBAColor *output
|
|
)
|
|
{return stream->ReadBytes(output, sizeof(*output));}
|
|
inline MemoryStream&
|
|
MemoryStream_Write(
|
|
MemoryStream* stream,
|
|
const RGBAColor *input
|
|
)
|
|
{return stream->WriteBytes(input, sizeof(*input));}
|
|
|
|
#endif
|
|
|
|
//=============================================================================
|