mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-06-21 14:14:22 +00:00
- Fix integer division bug in scene map lookups (was truncating to 0) - Fix indentation throughout Raw.cpp, DEVGMCommands.cpp - Add missing <algorithm> and <set> includes in dZoneManager.cpp - Add missing width/height/scaleFactor guards in SpawnAllScenePoints - Fix %llu -> %zu for size_t format specifiers - Simplify no-op worldY calculation (y / scale * scale -> y) - Remove redundant ternary guards in GetSceneIDFromPosition - Fix misleading "Spawned LOT" feedback message - Update info.settings to use LwoNameValue::Insert API (post-merge fix) - Refactor SceneColor to static constexpr std::array (no heap alloc) - Make NiColor constructors constexpr - Remove duplicate CDZoneTableTable.h include Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
35 lines
1012 B
C++
35 lines
1012 B
C++
#ifndef NICOLOR_H
|
|
#define NICOLOR_H
|
|
|
|
struct NiColor {
|
|
float m_Red;
|
|
float m_Green;
|
|
float m_Blue;
|
|
|
|
constexpr NiColor(float red, float green, float blue) : m_Red(red), m_Green(green), m_Blue(blue) {}
|
|
constexpr NiColor() : NiColor(0.0f, 0.0f, 0.0f) {}
|
|
|
|
/* reduce RGB files to grayscale, with or without alpha
|
|
* using the equation given in Poynton's ColorFAQ at
|
|
* <http://www.inforamp.net/~poynton/> // dead link
|
|
* Copyright (c) 1998-01-04 Charles Poynton poynton at inforamp.net
|
|
*
|
|
* Y = 0.212671 * R + 0.715160 * G + 0.072169 * B
|
|
*
|
|
* We approximate this with
|
|
*
|
|
* Y = 0.21268 * R + 0.7151 * G + 0.07217 * B
|
|
*
|
|
* which can be expressed with integers as
|
|
*
|
|
* Y = (6969 * R + 23434 * G + 2365 * B)/32768
|
|
*
|
|
* The calculation is to be done in a linear colorspace.
|
|
*
|
|
* Other integer coefficents can be used via png_set_rgb_to_gray().
|
|
*/
|
|
float ToXYZ() const { return (m_Red * 0.212671f) + (m_Green * 0.71516f) + (m_Blue * 0.072169f); };
|
|
};
|
|
|
|
#endif // NICOLOR_H
|