Skip to content

Commit

Permalink
EGE 库:使用 platform::MonoType 表示颜色分量;使用 platform::PixelType::IntegerTyp…
Browse files Browse the repository at this point in the history
…e 表示颜色对应的整数类型;移除不符合标准的保留名称 _RGBtoHSL 和 _HSLtoRGB 的使用;颜色转换函数加入命名空间 ege ;简化实现。

egeclock/egeclock.cpp: 使用 ege:: 限定颜色转换函数。

Signed-off-by: FrankHB <frankhb1989@gmail.com>
  • Loading branch information
FrankHB committed Jan 29, 2014
1 parent d79939e commit 47f33c7
Show file tree
Hide file tree
Showing 5 changed files with 274 additions and 296 deletions.
6 changes: 5 additions & 1 deletion Compatibility.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ Code::Blocks 。
移除函数 attachHWND 以避免潜在的死锁。
函数 setrendermode 无效,默认状态统一为 setrendermode(RENDER_MANUAL) ;仅为兼容性保留。
移除类型 LPCALLBACK_PROC 、LPMSG_KEY_PROC 、LPMSG_MOUSE_PROC 、MSG_KEY_PROC 和 MSG_MOUSE_PROC ,其中 LPCALLBACK_PROC 可用 CALLBACK_PROC* 代替,
typedef 类型名 color_t 从 unsigned int 改为 YCLib 提供的 platform::PixelType 。
使用 YCLib 提供的 platform::MonoType 表示颜色分量。
使用 platform::PixelType::Integer 表示颜色对应的整数类型。
宏 RGBTOBGR 、EGERGB 、EGERGBA 、EGEARGB 、EGEACOLOR 、EGECOLORA 、EGEGET_R 、EGEGET_G 、EGEGET_B 、EGEGET_A 、EGEGRAY 、EGEGRAYA 和 EGEAGRAY 变更为 ege 命名空间内的函数。

向后(源代码)兼容但不保证向前兼容原始实现的接口
----
Expand Down Expand Up @@ -76,7 +80,7 @@ Windows SDK 类型 CHAR 、WCHAR 、LPSTR 、LPCSTR 、LPWSTR 和 LPCWSTR 分别
类 IMAGE :修复复制构造;新增交换、转移构造和统一赋值操作;移除成员初始化检查;封装部分成员保证不可在外部修改;使用 YFramework 的 platform_ex::ScreenBuffer 代替 ::HBITMAP 实现。
CONVERT_IMAGE 和 CONVERT_IMAGE_CONST 宏改用内联函数实现,且当输入除空指针值外返回原值。
命名空间作用域静态函数和对象去除 static 并使用未命名命名空间代替。
typedef 类型名 color_t 从 unsigned int 改为 YCLib 提供的 platform::PixelType
移除不符合标准的保留名称 _RGBtoHSL 和 _HSLtoRGB 的使用

实现质量(QoI)
----
Expand Down
8 changes: 1 addition & 7 deletions EGE/include/ege/color.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,11 @@
#define Inc_ege_color_h_

#include "ege/def.h"
#include <ysbuild.h>
#include YFM_YCLib_Video

using PROPID = ::ULONG;
#include "ege/colorbase.h"

namespace ege
{

using color_t = platform::PixelType;


struct ege_colpoint
{
float x;
Expand Down
65 changes: 39 additions & 26 deletions EGE/include/ege/colorbase.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,78 +3,89 @@

#include "def.h"
#include <cstdint>
#include <ysbuild.h>
#include YFM_YCLib_Video

yconstfn std::uint32_t
RGBTOBGR(std::uint32_t color)
using PROPID = ::ULONG;

namespace ege
{

using color_t = platform::PixelType;

yconstfn color_t::Trait::IntegerType
RGBTOBGR(platform::MonoType color)
{
return ((color & 0xFF) << 16) | ((color & 0xFF0000) >> 16)
| (color & 0xFF00FF00);
}

yconstfn std::uint32_t
EGERGB(std::uint8_t r, std::uint8_t g, std::uint8_t b)
yconstfn color_t::Trait::IntegerType
EGERGB(platform::MonoType r, platform::MonoType g, platform::MonoType b)
{
return (r << 16) | (g << 8) | b;
}
yconstfn std::uint32_t
EGERGBA(std::uint8_t r, std::uint8_t g, std::uint8_t b, std::uint8_t a)
yconstfn color_t::Trait::IntegerType
EGERGBA(platform::MonoType r, platform::MonoType g, platform::MonoType b,
platform::MonoType a)
{
return EGERGB(r, g, b) | a << 24;
}
yconstfn std::uint32_t
EGEARGB(std::uint8_t a, std::uint8_t r, std::uint8_t g, std::uint8_t b)
yconstfn color_t::Trait::IntegerType
EGEARGB(platform::MonoType a, platform::MonoType r, platform::MonoType g,
platform::MonoType b)
{
return EGERGB(r, g, b) | a << 24;
}


yconstfn std::uint32_t
EGEACOLOR(std::uint8_t a, std::uint32_t color)
yconstfn color_t::Trait::IntegerType
EGEACOLOR(platform::MonoType a, color_t::Trait::IntegerType color)
{
return (color & 0xFFFFFF) | (a << 24);
}
yconstfn std::uint32_t
EGECOLORA(std::uint8_t a, std::uint32_t color)
yconstfn color_t::Trait::IntegerType
EGECOLORA(platform::MonoType a, color_t::Trait::IntegerType color)
{
return (color & 0xFFFFFF) | (a << 24);
}


yconstfn std::uint8_t
EGEGET_R(std::uint32_t c)
yconstfn platform::MonoType
EGEGET_R(color_t::Trait::IntegerType c)
{
return (c >> 16) & 0xFF;
}
yconstfn std::uint8_t
EGEGET_G(std::uint32_t c)
yconstfn platform::MonoType
EGEGET_G(color_t::Trait::IntegerType c)
{
return (c >> 8) & 0xFF;
}
yconstfn std::uint8_t
EGEGET_B(std::uint32_t c)
yconstfn platform::MonoType
EGEGET_B(color_t::Trait::IntegerType c)
{
return c & 0xFF;
}
yconstfn std::uint8_t
EGEGET_A(std::uint32_t c)
yconstfn platform::MonoType
EGEGET_A(color_t::Trait::IntegerType c)
{
return (c >> 24) & 0xFF;
}

yconstfn std::uint32_t
EGEGRAY(std::uint32_t gray)
yconstfn color_t::Trait::IntegerType
EGEGRAY(color_t::Trait::IntegerType gray)
{
return (gray << 16) | (gray << 8) | gray;
}

yconstfn std::uint32_t
EGEGRAYA(std::uint32_t gray, std::uint8_t a)
yconstfn color_t::Trait::IntegerType
EGEGRAYA(color_t::Trait::IntegerType gray, platform::MonoType a)
{
return EGEGRAY(gray) | (a << 24);
}

yconstfn std::uint32_t
EGEAGRAY(std::uint8_t a, std::uint32_t gray)
yconstfn color_t::Trait::IntegerType
EGEAGRAY(platform::MonoType a, color_t::Trait::IntegerType gray)
{
return EGEGRAY(gray) | (a << 24);
}
Expand All @@ -86,5 +97,7 @@ EGEAGRAY(std::uint8_t a, std::uint32_t gray)
#define HSLtoRGB hsl2rgb
#define HSVtoRGB hsv2rgb

} // namespace ege;

#endif

Loading

0 comments on commit 47f33c7

Please sign in to comment.