1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2025-01-19 03:57:14 +01:00

Adjust the Color3 and COlor4 type functions to use the new method of receiving formatted strings.

This commit is contained in:
Sandu Liviu Catalin 2016-11-16 16:19:02 +02:00
parent 3ede9645e3
commit 3e35f7c916
5 changed files with 33 additions and 61 deletions

View File

@ -59,13 +59,6 @@ Color3 & Color3::operator = (Value s)
return *this; return *this;
} }
// ------------------------------------------------------------------------------------------------
Color3 & Color3::operator = (CSStr name)
{
SetColor3(GetColor(name));
return *this;
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
Color3 & Color3::operator = (const Color4 & c) Color3 & Color3::operator = (const Color4 & c)
{ {
@ -537,13 +530,13 @@ void Color3::SetColor4Ex(Value nr, Value ng, Value nb, Value /*na*/)
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void Color3::SetStr(CSStr str, SQChar delim) void Color3::SetStr(SQChar delim, const StackStrF & values)
{ {
SetColor3(Color3::Get(str, delim)); SetColor3(Color3::GetEx(delim, values));
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void Color3::SetName(CSStr name) void Color3::SetName(const StackStrF & name)
{ {
SetColor3(GetColor(name)); SetColor3(GetColor(name));
} }
@ -639,13 +632,13 @@ void Color3::Inverse()
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
const Color3 & Color3::Get(CSStr str) const Color3 & Color3::Get(const StackStrF & str)
{ {
return Color3::Get(str, Color3::Delim); return Color3::GetEx(Color3::Delim, str);
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
const Color3 & Color3::Get(CSStr str, SQChar delim) const Color3 & Color3::GetEx(SQChar delim, const StackStrF & str)
{ {
// The format specifications that will be used to scan the string // The format specifications that will be used to scan the string
static SQChar fs[] = _SC(" %u , %u , %u "); static SQChar fs[] = _SC(" %u , %u , %u ");
@ -656,7 +649,7 @@ const Color3 & Color3::Get(CSStr str, SQChar delim)
// Clear previous values, if any // Clear previous values, if any
col.Clear(); col.Clear();
// Is the specified string empty? // Is the specified string empty?
if (!str || *str == '\0') if (str.mLen <= 0)
{ {
return col; // Return the value as is! return col; // Return the value as is!
} }
@ -666,7 +659,7 @@ const Color3 & Color3::Get(CSStr str, SQChar delim)
// The sscanf function requires at least 32 bit integers // The sscanf function requires at least 32 bit integers
Uint32 r = 0, g = 0, b = 0; Uint32 r = 0, g = 0, b = 0;
// Attempt to extract the component values from the specified string // Attempt to extract the component values from the specified string
std::sscanf(str, fs, &r, &g, &b); std::sscanf(str.mPtr, fs, &r, &g, &b);
// Cast the extracted integers to the value used by the Color3 type // Cast the extracted integers to the value used by the Color3 type
col.r = static_cast< Color3::Value >(Clamp(r, min, max)); col.r = static_cast< Color3::Value >(Clamp(r, min, max));
col.g = static_cast< Color3::Value >(Clamp(g, min, max)); col.g = static_cast< Color3::Value >(Clamp(g, min, max));
@ -747,8 +740,8 @@ void Register_Color3(HSQUIRRELVM vm)
.Func(_SC("SetColor3Ex"), &Color3::SetColor3Ex) .Func(_SC("SetColor3Ex"), &Color3::SetColor3Ex)
.Func(_SC("SetColor4"), &Color3::SetColor4) .Func(_SC("SetColor4"), &Color3::SetColor4)
.Func(_SC("SetColor4Ex"), &Color3::SetColor4Ex) .Func(_SC("SetColor4Ex"), &Color3::SetColor4Ex)
.Func(_SC("SetStr"), &Color3::SetStr) .FmtFunc(_SC("SetStr"), &Color3::SetStr)
.Func(_SC("SetName"), &Color3::SetName) .FmtFunc(_SC("SetName"), &Color3::SetName)
.Func(_SC("Clear"), &Color3::Clear) .Func(_SC("Clear"), &Color3::Clear)
.Func(_SC("Random"), &Color3::Random) .Func(_SC("Random"), &Color3::Random)
.Func(_SC("Inverse"), &Color3::Inverse) .Func(_SC("Inverse"), &Color3::Inverse)
@ -756,12 +749,11 @@ void Register_Color3(HSQUIRRELVM vm)
.Overload< void (Color3::*)(void) >(_SC("Generate"), &Color3::Generate) .Overload< void (Color3::*)(void) >(_SC("Generate"), &Color3::Generate)
.Overload< void (Color3::*)(Val, Val) >(_SC("Generate"), &Color3::Generate) .Overload< void (Color3::*)(Val, Val) >(_SC("Generate"), &Color3::Generate)
.Overload< void (Color3::*)(Val, Val, Val, Val, Val, Val) >(_SC("Generate"), &Color3::Generate) .Overload< void (Color3::*)(Val, Val, Val, Val, Val, Val) >(_SC("Generate"), &Color3::Generate)
// Static Overloads
.StaticOverload< const Color3 & (*)(CSStr) >(_SC("FromStr"), &Color3::Get)
.StaticOverload< const Color3 & (*)(CSStr, SQChar) >(_SC("FromStr"), &Color3::Get)
// Static Functions // Static Functions
.StaticFunc(_SC("GetDelimiter"), &SqGetDelimiter< Color3 >) .StaticFunc(_SC("GetDelimiter"), &SqGetDelimiter< Color3 >)
.StaticFunc(_SC("SetDelimiter"), &SqSetDelimiter< Color3 >) .StaticFunc(_SC("SetDelimiter"), &SqSetDelimiter< Color3 >)
.StaticFmtFunc(_SC("FromStr"), &Color3::Get)
.StaticFmtFunc(_SC("FromStrEx"), &Color3::GetEx)
// Operator Exposure // Operator Exposure
.Func< Color3 & (Color3::*)(const Color3 &) >(_SC("opAddAssign"), &Color3::operator +=) .Func< Color3 & (Color3::*)(const Color3 &) >(_SC("opAddAssign"), &Color3::operator +=)
.Func< Color3 & (Color3::*)(const Color3 &) >(_SC("opSubAssign"), &Color3::operator -=) .Func< Color3 & (Color3::*)(const Color3 &) >(_SC("opSubAssign"), &Color3::operator -=)

View File

@ -84,11 +84,6 @@ struct Color3
*/ */
Color3 & operator = (Value s); Color3 & operator = (Value s);
/* --------------------------------------------------------------------------------------------
* Named color assignment operator.
*/
Color3 & operator = (CSStr name);
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Transparent color assignment operator. * Transparent color assignment operator.
*/ */
@ -434,12 +429,12 @@ struct Color3
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Set the values extracted from the specified string using the specified delimiter. * Set the values extracted from the specified string using the specified delimiter.
*/ */
void SetStr(CSStr str, SQChar delim); void SetStr(SQChar delim, const StackStrF & str);
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Set the values from the identified color. * Set the values from the identified color.
*/ */
void SetName(CSStr name); void SetName(const StackStrF & name);
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Get the component values packed inside an integer value. * Get the component values packed inside an integer value.
@ -507,13 +502,12 @@ struct Color3
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Extract the values for components of the Color3 type from a string. * Extract the values for components of the Color3 type from a string.
*/ */
static const Color3 & Get(CSStr str); static const Color3 & Get(const StackStrF & str);
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Extract the values for components of the Color3 type from a string. * Extract the values for components of the Color3 type from a string.
*/ */
static const Color3 & Get(CSStr str, SQChar delim); static const Color3 & GetEx( SQChar delim, const StackStrF & str);
}; };
} // Namespace:: SqMod } // Namespace:: SqMod

View File

@ -60,13 +60,6 @@ Color4 & Color4::operator = (Value s)
return *this; return *this;
} }
// ------------------------------------------------------------------------------------------------
Color4 & Color4::operator = (CSStr name)
{
SetColor3(GetColor(name));
return *this;
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
Color4 & Color4::operator = (const Color3 & c) Color4 & Color4::operator = (const Color3 & c)
{ {
@ -566,13 +559,13 @@ void Color4::SetColor4Ex(Value nr, Value ng, Value nb, Value na)
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void Color4::SetStr(CSStr str, SQChar delim) void Color4::SetStr(SQChar delim, const StackStrF & values)
{ {
SetColor4(Color4::Get(str, delim)); SetColor4(Color4::GetEx(delim, values));
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void Color4::SetName(CSStr name) void Color4::SetName(const StackStrF & name)
{ {
SetColor3(GetColor(name)); SetColor3(GetColor(name));
} }
@ -674,13 +667,13 @@ void Color4::Inverse()
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
const Color4 & Color4::Get(CSStr str) const Color4 & Color4::Get(const StackStrF & str)
{ {
return Color4::Get(str, Color4::Delim); return Color4::GetEx(Color4::Delim, str);
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
const Color4 & Color4::Get(CSStr str, SQChar delim) const Color4 & Color4::GetEx(SQChar delim, const StackStrF & str)
{ {
// The format specifications that will be used to scan the string // The format specifications that will be used to scan the string
static SQChar fs[] = _SC(" %u , %u , %u , %u "); static SQChar fs[] = _SC(" %u , %u , %u , %u ");
@ -691,7 +684,7 @@ const Color4 & Color4::Get(CSStr str, SQChar delim)
// Clear previous values, if any // Clear previous values, if any
col.Clear(); col.Clear();
// Is the specified string empty? // Is the specified string empty?
if (!str || *str == '\0') if (str.mLen <= 0)
{ {
return col; // Return the value as is! return col; // Return the value as is!
} }
@ -702,7 +695,7 @@ const Color4 & Color4::Get(CSStr str, SQChar delim)
// The sscanf function requires at least 32 bit integers // The sscanf function requires at least 32 bit integers
Uint32 r = 0, g = 0, b = 0, a = 0; Uint32 r = 0, g = 0, b = 0, a = 0;
// Attempt to extract the component values from the specified string // Attempt to extract the component values from the specified string
std::sscanf(str, fs, &r, &g, &b, &a); std::sscanf(str.mPtr, fs, &r, &g, &b, &a);
// Cast the extracted integers to the value used by the Color4 type // Cast the extracted integers to the value used by the Color4 type
col.r = static_cast< Color4::Value >(Clamp(r, min, max)); col.r = static_cast< Color4::Value >(Clamp(r, min, max));
col.g = static_cast< Color4::Value >(Clamp(g, min, max)); col.g = static_cast< Color4::Value >(Clamp(g, min, max));
@ -794,8 +787,8 @@ void Register_Color4(HSQUIRRELVM vm)
.Func(_SC("SetColor3Ex"), &Color4::SetColor3Ex) .Func(_SC("SetColor3Ex"), &Color4::SetColor3Ex)
.Func(_SC("SetColor4"), &Color4::SetColor4) .Func(_SC("SetColor4"), &Color4::SetColor4)
.Func(_SC("SetColor4Ex"), &Color4::SetColor4Ex) .Func(_SC("SetColor4Ex"), &Color4::SetColor4Ex)
.Func(_SC("SetStr"), &Color4::SetStr) .FmtFunc(_SC("SetStr"), &Color4::SetStr)
.Func(_SC("SetName"), &Color4::SetName) .FmtFunc(_SC("SetName"), &Color4::SetName)
.Func(_SC("Clear"), &Color4::Clear) .Func(_SC("Clear"), &Color4::Clear)
.Func(_SC("Random"), &Color4::Random) .Func(_SC("Random"), &Color4::Random)
.Func(_SC("Inverse"), &Color4::Inverse) .Func(_SC("Inverse"), &Color4::Inverse)
@ -803,12 +796,11 @@ void Register_Color4(HSQUIRRELVM vm)
.Overload< void (Color4::*)(void) >(_SC("Generate"), &Color4::Generate) .Overload< void (Color4::*)(void) >(_SC("Generate"), &Color4::Generate)
.Overload< void (Color4::*)(Val, Val) >(_SC("Generate"), &Color4::Generate) .Overload< void (Color4::*)(Val, Val) >(_SC("Generate"), &Color4::Generate)
.Overload< void (Color4::*)(Val, Val, Val, Val, Val, Val, Val, Val) >(_SC("Generate"), &Color4::Generate) .Overload< void (Color4::*)(Val, Val, Val, Val, Val, Val, Val, Val) >(_SC("Generate"), &Color4::Generate)
// Static Overloads
.StaticOverload< const Color4 & (*)(CSStr) >(_SC("FromStr"), &Color4::Get)
.StaticOverload< const Color4 & (*)(CSStr, SQChar) >(_SC("FromStr"), &Color4::Get)
// Static Functions // Static Functions
.StaticFunc(_SC("GetDelimiter"), &SqGetDelimiter< Color4 >) .StaticFunc(_SC("GetDelimiter"), &SqGetDelimiter< Color4 >)
.StaticFunc(_SC("SetDelimiter"), &SqSetDelimiter< Color4 >) .StaticFunc(_SC("SetDelimiter"), &SqSetDelimiter< Color4 >)
.StaticFmtFunc(_SC("FromStr"), &Color4::Get)
.StaticFmtFunc(_SC("FromStrEx"), &Color4::GetEx)
// Operator Exposure // Operator Exposure
.Func< Color4 & (Color4::*)(const Color4 &) >(_SC("opAddAssign"), &Color4::operator +=) .Func< Color4 & (Color4::*)(const Color4 &) >(_SC("opAddAssign"), &Color4::operator +=)
.Func< Color4 & (Color4::*)(const Color4 &) >(_SC("opSubAssign"), &Color4::operator -=) .Func< Color4 & (Color4::*)(const Color4 &) >(_SC("opSubAssign"), &Color4::operator -=)

View File

@ -84,11 +84,6 @@ struct Color4
*/ */
Color4 & operator = (Value s); Color4 & operator = (Value s);
/* --------------------------------------------------------------------------------------------
* Named color assignment operator.
*/
Color4 & operator = (CSStr name);
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Opaque color assignment operator. * Opaque color assignment operator.
*/ */
@ -434,12 +429,12 @@ struct Color4
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Set the values extracted from the specified string using the specified delimiter. * Set the values extracted from the specified string using the specified delimiter.
*/ */
void SetStr(CSStr name, SQChar delim); void SetStr(SQChar delim, const StackStrF & name);
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Set the values from the identified color. * Set the values from the identified color.
*/ */
void SetName(CSStr name); void SetName(const StackStrF & name);
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Get the component values packed inside an integer value. * Get the component values packed inside an integer value.
@ -507,13 +502,12 @@ struct Color4
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Extract the values for components of the Color4 type from a string. * Extract the values for components of the Color4 type from a string.
*/ */
static const Color4 & Get(CSStr str); static const Color4 & Get(const StackStrF & str);
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Extract the values for components of the Color4 type from a string. * Extract the values for components of the Color4 type from a string.
*/ */
static const Color4 & Get(CSStr str, SQChar delim); static const Color4 & GetEx(SQChar delim, const StackStrF & str);
}; };
} // Namespace:: SqMod } // Namespace:: SqMod

View File

@ -212,7 +212,7 @@ SQRESULT SqGrabPlayerMessageColor(HSQUIRRELVM vm, Int32 idx, Uint32 & color, Int
// Attempt to treat the value as a color name // Attempt to treat the value as a color name
try try
{ {
color = (::SqMod::GetColor(str).GetRGBA() | 0xFF); color = (::SqMod::GetColorStr(str).GetRGBA() | 0xFF);
} }
catch (...) catch (...)
{ {