Change colors to constants

This commit is contained in:
Alex Clink 2022-03-29 22:54:31 -04:00
parent 329f57af0e
commit 6015a255d6
10 changed files with 196 additions and 43 deletions

View file

@ -72,7 +72,7 @@ module PF
fill_shape(Shape.translate(ball.frame, translation: ball.position).map(&.to_i32), ball.color)
# draw_circle(ball.position.to_i32, ball.radius.to_i32, Pixel.green)
end
draw_string("Balls: #{@balls.size}", 5, 5, Pixel.white)
draw_string("Balls: #{@balls.size}", 5, 5, Pixel::White)
end
end
end

View file

@ -39,7 +39,7 @@ module PF
0.upto(width) do |x|
y = mid + (@noise.get((x + @xpos) / @noise_zoom) * @noise_scale).to_i
draw_point(x, y, Pixel.yellow)
draw_point(x, y, Pixel::Yellow)
end
end
end

View file

@ -153,14 +153,14 @@ module PF
@white_keys.each do |key|
top_left, bottom_right, name = key
fill_rect(top_left, bottom_right, @keysdown[name]? ? @highlight : Pixel.white)
fill_rect(top_left, bottom_right, @keysdown[name]? ? @highlight : Pixel::White)
draw_rect(top_left, bottom_right, Pixel.new(127, 127, 127))
draw_string(name, top_left.x + 2, top_left.y + (@key_size * 2) - Sprite::CHAR_HEIGHT - 2, @keysdown[name]? ? @text_hl : @text_color)
end
@black_keys.each do |key|
top_left, bottom_right, name = key
fill_rect(top_left, bottom_right, @keysdown[name]? ? @highlight : Pixel.black)
fill_rect(top_left, bottom_right, @keysdown[name]? ? @highlight : Pixel::Black)
draw_rect(top_left, bottom_right, Pixel.new(127, 127, 127))
draw_string(name, top_left.x + 2, top_left.y + @key_size - Sprite::CHAR_HEIGHT - 2, @keysdown[name]? ? @text_hl : @text_color)
end

View file

@ -54,12 +54,12 @@ module PF
b = @random.rand(0u8..0xFFu8)
(@buffer + n).value = Pixel.new(b, b, b).to_u32
else
(@buffer + n).value = Pixel.black.to_u32
(@buffer + n).value = Pixel::Black.to_u32
end
end
end
time = elapsed_milliseconds - start
draw_string("frame: #{time.round(2)}ms", 5, 5, Pixel.white, bg: Pixel.black)
draw_string("frame: #{time.round(2)}ms", 5, 5, Pixel::White, bg: Pixel::Black)
end
end
end

View file

@ -97,7 +97,7 @@ class Snow < PF::Game
clear(0, 0, 15)
@flakes.each do |flake|
color = PF::Pixel.white * flake.z_pos
color = PF::Pixel::White * flake.z_pos
if flake.shape == 0
draw_point(flake.position.to_i32, color)
else

View file

@ -18,7 +18,7 @@ class Triangle < PF::Entity
def draw(engine)
_frame = PF::Shape.rotate(@frame, @rotation)
_frame = PF::Shape.translate(_frame, @position)
engine.fill_triangle(_frame.map(&.to_i32), PF::Pixel.yellow)
engine.fill_triangle(_frame.map(&.to_i32), PF::Pixel::Yellow)
end
end

View file

@ -16,10 +16,10 @@ module PF
setter normal : Vector3(Float64)?
def initialize(@p1 : Vector3(Float64), @p2 : Vector3(Float64), @p3 : Vector3(Float64), @color = PF::Pixel.white, @normal = nil)
def initialize(@p1 : Vector3(Float64), @p2 : Vector3(Float64), @p3 : Vector3(Float64), @color = PF::Pixel::White, @normal = nil)
end
def initialize(@p1, @p2, @p3, @t1, @t2, @t3, @color = PF::Pixel.white)
def initialize(@p1, @p2, @p3, @t1, @t2, @t3, @color = PF::Pixel::White)
end
# Return the normal assuming clockwise pointing winding

151
src/colors.cr Normal file
View file

@ -0,0 +1,151 @@
module PF
struct Pixel
AliceBlue = Pixel.new(0xF0_F8_FF_FF_u32)
AntiqueWhite = Pixel.new(0xFA_EB_D7_FF_u32)
Aqua = Pixel.new(0x00_FF_FF_FF_u32)
Aquamarine = Pixel.new(0x7F_FF_D4_FF_u32)
Azure = Pixel.new(0xF0_FF_FF_FF_u32)
Beige = Pixel.new(0xF5_F5_DC_FF_u32)
Bisque = Pixel.new(0xFF_E4_C4_FF_u32)
Black = Pixel.new(0x00_00_00_FF_u32)
BlanchedAlmond = Pixel.new(0xFF_EB_CD_FF_u32)
Blue = Pixel.new(0x00_00_FF_FF_u32)
BlueViolet = Pixel.new(0x8A_2B_E2_FF_u32)
Brown = Pixel.new(0xA5_2A_2A_FF_u32)
BurlyWood = Pixel.new(0xDE_B8_87_FF_u32)
CadetBlue = Pixel.new(0x5F_9E_A0_FF_u32)
Chartreuse = Pixel.new(0x7F_FF_00_FF_u32)
Chocolate = Pixel.new(0xD2_69_1E_FF_u32)
Coral = Pixel.new(0xFF_7F_50_FF_u32)
CornflowerBlue = Pixel.new(0x64_95_ED_FF_u32)
Cornsilk = Pixel.new(0xFF_F8_DC_FF_u32)
Crimson = Pixel.new(0xDC_14_3C_FF_u32)
Cyan = Pixel.new(0x00_FF_FF_FF_u32)
DarkBlue = Pixel.new(0x00_00_8B_FF_u32)
DarkCyan = Pixel.new(0x00_8B_8B_FF_u32)
DarkGoldenRod = Pixel.new(0xB8_86_0B_FF_u32)
DarkGray = Pixel.new(0xA9_A9_A9_FF_u32)
DarkGrey = Pixel.new(0xA9_A9_A9_FF_u32)
DarkGreen = Pixel.new(0x00_64_00_FF_u32)
DarkKhaki = Pixel.new(0xBD_B7_6B_FF_u32)
DarkMagenta = Pixel.new(0x8B_00_8B_FF_u32)
DarkOliveGreen = Pixel.new(0x55_6B_2F_FF_u32)
Darkorange = Pixel.new(0xFF_8C_00_FF_u32)
DarkOrchid = Pixel.new(0x99_32_CC_FF_u32)
DarkRed = Pixel.new(0x8B_00_00_FF_u32)
DarkSalmon = Pixel.new(0xE9_96_7A_FF_u32)
DarkSeaGreen = Pixel.new(0x8F_BC_8F_FF_u32)
DarkSlateBlue = Pixel.new(0x48_3D_8B_FF_u32)
DarkSlateGray = Pixel.new(0x2F_4F_4F_FF_u32)
DarkSlateGrey = Pixel.new(0x2F_4F_4F_FF_u32)
DarkTurquoise = Pixel.new(0x00_CE_D1_FF_u32)
DarkViolet = Pixel.new(0x94_00_D3_FF_u32)
DeepPink = Pixel.new(0xFF_14_93_FF_u32)
DeepSkyBlue = Pixel.new(0x00_BF_FF_FF_u32)
DimGray = Pixel.new(0x69_69_69_FF_u32)
DimGrey = Pixel.new(0x69_69_69_FF_u32)
DodgerBlue = Pixel.new(0x1E_90_FF_FF_u32)
FireBrick = Pixel.new(0xB2_22_22_FF_u32)
FloralWhite = Pixel.new(0xFF_FA_F0_FF_u32)
ForestGreen = Pixel.new(0x22_8B_22_FF_u32)
Fuchsia = Pixel.new(0xFF_00_FF_FF_u32)
Gainsboro = Pixel.new(0xDC_DC_DC_FF_u32)
GhostWhite = Pixel.new(0xF8_F8_FF_FF_u32)
Gold = Pixel.new(0xFF_D7_00_FF_u32)
GoldenRod = Pixel.new(0xDA_A5_20_FF_u32)
Gray = Pixel.new(0x80_80_80_FF_u32)
Grey = Pixel.new(0x80_80_80_FF_u32)
Green = Pixel.new(0x00_80_00_FF_u32)
GreenYellow = Pixel.new(0xAD_FF_2F_FF_u32)
HoneyDew = Pixel.new(0xF0_FF_F0_FF_u32)
HotPink = Pixel.new(0xFF_69_B4_FF_u32)
IndianRed = Pixel.new(0xCD_5C_5C_FF_u32)
Indigo = Pixel.new(0x4B_00_82_FF_u32)
Ivory = Pixel.new(0xFF_FF_F0_FF_u32)
Khaki = Pixel.new(0xF0_E6_8C_FF_u32)
Lavender = Pixel.new(0xE6_E6_FA_FF_u32)
LavenderBlush = Pixel.new(0xFF_F0_F5_FF_u32)
LawnGreen = Pixel.new(0x7C_FC_00_FF_u32)
LemonChiffon = Pixel.new(0xFF_FA_CD_FF_u32)
LightBlue = Pixel.new(0xAD_D8_E6_FF_u32)
LightCoral = Pixel.new(0xF0_80_80_FF_u32)
LightCyan = Pixel.new(0xE0_FF_FF_FF_u32)
LightGoldenRodYellow = Pixel.new(0xFA_FA_D2_FF_u32)
LightGray = Pixel.new(0xD3_D3_D3_FF_u32)
LightGrey = Pixel.new(0xD3_D3_D3_FF_u32)
LightGreen = Pixel.new(0x90_EE_90_FF_u32)
LightPink = Pixel.new(0xFF_B6_C1_FF_u32)
LightSalmon = Pixel.new(0xFF_A0_7A_FF_u32)
LightSeaGreen = Pixel.new(0x20_B2_AA_FF_u32)
LightSkyBlue = Pixel.new(0x87_CE_FA_FF_u32)
LightSlateGray = Pixel.new(0x77_88_99_FF_u32)
LightSlateGrey = Pixel.new(0x77_88_99_FF_u32)
LightSteelBlue = Pixel.new(0xB0_C4_DE_FF_u32)
LightYellow = Pixel.new(0xFF_FF_E0_FF_u32)
Lime = Pixel.new(0x00_FF_00_FF_u32)
LimeGreen = Pixel.new(0x32_CD_32_FF_u32)
Linen = Pixel.new(0xFA_F0_E6_FF_u32)
Magenta = Pixel.new(0xFF_00_FF_FF_u32)
Maroon = Pixel.new(0x80_00_00_FF_u32)
MediumAquaMarine = Pixel.new(0x66_CD_AA_FF_u32)
MediumBlue = Pixel.new(0x00_00_CD_FF_u32)
MediumOrchid = Pixel.new(0xBA_55_D3_FF_u32)
MediumPurple = Pixel.new(0x93_70_D8_FF_u32)
MediumSeaGreen = Pixel.new(0x3C_B3_71_FF_u32)
MediumSlateBlue = Pixel.new(0x7B_68_EE_FF_u32)
MediumSpringGreen = Pixel.new(0x00_FA_9A_FF_u32)
MediumTurquoise = Pixel.new(0x48_D1_CC_FF_u32)
MediumVioletRed = Pixel.new(0xC7_15_85_FF_u32)
MidnightBlue = Pixel.new(0x19_19_70_FF_u32)
MintCream = Pixel.new(0xF5_FF_FA_FF_u32)
MistyRose = Pixel.new(0xFF_E4_E1_FF_u32)
Moccasin = Pixel.new(0xFF_E4_B5_FF_u32)
NavajoWhite = Pixel.new(0xFF_DE_AD_FF_u32)
Navy = Pixel.new(0x00_00_80_FF_u32)
OldLace = Pixel.new(0xFD_F5_E6_FF_u32)
Olive = Pixel.new(0x80_80_00_FF_u32)
OliveDrab = Pixel.new(0x6B_8E_23_FF_u32)
Orange = Pixel.new(0xFF_A5_00_FF_u32)
OrangeRed = Pixel.new(0xFF_45_00_FF_u32)
Orchid = Pixel.new(0xDA_70_D6_FF_u32)
PaleGoldenRod = Pixel.new(0xEE_E8_AA_FF_u32)
PaleGreen = Pixel.new(0x98_FB_98_FF_u32)
PaleTurquoise = Pixel.new(0xAF_EE_EE_FF_u32)
PaleVioletRed = Pixel.new(0xD8_70_93_FF_u32)
PapayaWhip = Pixel.new(0xFF_EF_D5_FF_u32)
PeachPuff = Pixel.new(0xFF_DA_B9_FF_u32)
Peru = Pixel.new(0xCD_85_3F_FF_u32)
Pink = Pixel.new(0xFF_C0_CB_FF_u32)
Plum = Pixel.new(0xDD_A0_DD_FF_u32)
PowderBlue = Pixel.new(0xB0_E0_E6_FF_u32)
Purple = Pixel.new(0x80_00_80_FF_u32)
Red = Pixel.new(0xFF_00_00_FF_u32)
RosyBrown = Pixel.new(0xBC_8F_8F_FF_u32)
RoyalBlue = Pixel.new(0x41_69_E1_FF_u32)
SaddleBrown = Pixel.new(0x8B_45_13_FF_u32)
Salmon = Pixel.new(0xFA_80_72_FF_u32)
SandyBrown = Pixel.new(0xF4_A4_60_FF_u32)
SeaGreen = Pixel.new(0x2E_8B_57_FF_u32)
SeaShell = Pixel.new(0xFF_F5_EE_FF_u32)
Sienna = Pixel.new(0xA0_52_2D_FF_u32)
Silver = Pixel.new(0xC0_C0_C0_FF_u32)
SkyBlue = Pixel.new(0x87_CE_EB_FF_u32)
SlateBlue = Pixel.new(0x6A_5A_CD_FF_u32)
SlateGray = Pixel.new(0x70_80_90_FF_u32)
SlateGrey = Pixel.new(0x70_80_90_FF_u32)
Snow = Pixel.new(0xFF_FA_FA_FF_u32)
SpringGreen = Pixel.new(0x00_FF_7F_FF_u32)
SteelBlue = Pixel.new(0x46_82_B4_FF_u32)
Tan = Pixel.new(0xD2_B4_8C_FF_u32)
Teal = Pixel.new(0x00_80_80_FF_u32)
Thistle = Pixel.new(0xD8_BF_D8_FF_u32)
Tomato = Pixel.new(0xFF_63_47_FF_u32)
Turquoise = Pixel.new(0x40_E0_D0_FF_u32)
Violet = Pixel.new(0xEE_82_EE_FF_u32)
Wheat = Pixel.new(0xF5_DE_B3_FF_u32)
White = Pixel.new(0xFF_FF_FF_FF_u32)
WhiteSmoke = Pixel.new(0xF5_F5_F5_FF_u32)
Yellow = Pixel.new(0xFF_FF_00_FF_u32)
YellowGreen = Pixel.new(0x9A_CD_32_FF_u32)
end
end

View file

@ -1,41 +1,11 @@
require "./colors"
module PF
struct Pixel
def self.random
new(rand(0_u8..0xFF_u8), rand(0_u8..0xFF_u8), rand(0_u8..0xFF_u8), 0xFF_u8)
end
def self.white
new(255, 255, 255)
end
def self.black
new(0, 0, 0)
end
def self.red
new(255, 0, 0)
end
def self.green
new(0, 255, 0)
end
def self.blue
new(0, 0, 255)
end
def self.yellow
new(255, 255, 0)
end
def self.magenta
new(255, 0, 255)
end
def self.cyan
new(0, 255, 255)
end
property r : UInt8, g : UInt8, b : UInt8, a : UInt8
def initialize(rgba : UInt32)
@ -52,6 +22,38 @@ module PF
LibSDL.map_rgba(format, @r, @g, @b, @a)
end
def blend_value(v1 : UInt8, v2 : UInt8, t : Float64) : UInt8
f1 = v1 / UInt8::MAX
f2 = v2 / UInt8::MAX
v = Math.sqrt((1 - t) * f1 ** 2 + t * f2 ** 2)
(v * UInt8::MAX).to_u8
end
def blend(other : Pixel, t : Float64 = 0.5)
Pixel.new(
blend_value(@r, other.r, t),
blend_value(@g, other.g, t),
blend_value(@b, other.b, t),
@a
)
end
def add(other : Pixel)
Pixel.new(
((@r.to_u16 + other.r) // 2).to_u8,
((@g.to_u16 + other.g) // 2).to_u8,
((@b.to_u16 + other.b) // 2).to_u8
)
end
def darken(other : Pixel)
Pixel.new(
(@r * (other.r / 255)).to_u8,
(@g * (other.g / 255)).to_u8,
(@b * (other.b / 255)).to_u8
)
end
def *(n : Float64)
Pixel.new((@r * n).to_u8, (@g * n).to_u8, (@b * n).to_u8, @a)
end

View file

@ -124,7 +124,7 @@ module PF
end
end
def draw_string(msg : String, pos : Vector2(Int), color : Pixel = Pixel.black)
def draw_string(msg : String, pos : Vector2(Int), color : Pixel = Pixel::Black)
draw_string(msg, pos.x, pos.y, color)
end
end