Files
TeslaRel410/CODE/RP/MUNGA/COLOR.HPP
T
CydandClaude Fable 5 fdd9ac9d97 Initial import: Tesla Release 4.10 (Tesla:BattleTech & Tesla:Red Planet)
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>
2026-07-02 13:21:58 -05:00

195 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)
{
return False;
}
#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
//=============================================================================