rgss 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.clang-format +6 -0
- data/.gitignore +167 -0
- data/.yardopts +6 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/Rakefile +9 -0
- data/ext/rgss/cglm-v0.7.9.tar.gz +0 -0
- data/ext/rgss/color.c +599 -0
- data/ext/rgss/entity.c +373 -0
- data/ext/rgss/extconf.rb +53 -0
- data/ext/rgss/font.c +135 -0
- data/ext/rgss/game.c +469 -0
- data/ext/rgss/game.h +99 -0
- data/ext/rgss/gl.c +3217 -0
- data/ext/rgss/glad.c +1140 -0
- data/ext/rgss/glad.h +2129 -0
- data/ext/rgss/glfw.c +1453 -0
- data/ext/rgss/graphics.c +324 -0
- data/ext/rgss/image.c +274 -0
- data/ext/rgss/input.c +745 -0
- data/ext/rgss/khrplatform.h +290 -0
- data/ext/rgss/mat4.c +279 -0
- data/ext/rgss/pax_global_header +1 -0
- data/ext/rgss/point.c +253 -0
- data/ext/rgss/rect.c +449 -0
- data/ext/rgss/rgss.c +56 -0
- data/ext/rgss/rgss.h +241 -0
- data/ext/rgss/stb_image.h +7762 -0
- data/ext/rgss/stb_image_write.h +1690 -0
- data/ext/rgss/stb_rect_pack.h +628 -0
- data/ext/rgss/stb_truetype.h +5011 -0
- data/ext/rgss/utf8.h +1652 -0
- data/ext/rgss/uthash.h +1133 -0
- data/ext/rgss/vec.c +114 -0
- data/ext/rgss/vec.h +192 -0
- data/ext/rgss/vec2.c +489 -0
- data/ext/rgss/vec3.c +751 -0
- data/ext/rgss/vec4.c +681 -0
- data/lib/rgss.rb +140 -0
- data/lib/rgss/batch.rb +57 -0
- data/lib/rgss/blend.rb +47 -0
- data/lib/rgss/game_object.rb +28 -0
- data/lib/rgss/plane.rb +95 -0
- data/lib/rgss/renderable.rb +158 -0
- data/lib/rgss/rgss.so +0 -0
- data/lib/rgss/shader.rb +94 -0
- data/lib/rgss/shaders/sprite-frag.glsl +40 -0
- data/lib/rgss/shaders/sprite-vert.glsl +17 -0
- data/lib/rgss/sprite.rb +139 -0
- data/lib/rgss/stubs/color.rb +318 -0
- data/lib/rgss/stubs/gl.rb +1999 -0
- data/lib/rgss/stubs/glfw.rb +626 -0
- data/lib/rgss/stubs/rect.rb +324 -0
- data/lib/rgss/stubs/rpg.rb +267 -0
- data/lib/rgss/stubs/tone.rb +65 -0
- data/lib/rgss/texture.rb +132 -0
- data/lib/rgss/tilemap.rb +116 -0
- data/lib/rgss/version.rb +3 -0
- data/lib/rgss/viewport.rb +67 -0
- data/rgss.gemspec +44 -0
- data/test.png +0 -0
- metadata +178 -0
data/lib/rgss/rgss.so
ADDED
Binary file
|
data/lib/rgss/shader.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
|
2
|
+
module RGSS
|
3
|
+
|
4
|
+
class Shader < GameObject
|
5
|
+
|
6
|
+
PROJECTION_BINDING = 0
|
7
|
+
|
8
|
+
extend GL
|
9
|
+
include GL
|
10
|
+
|
11
|
+
def initialize(vertex, fragment, geometry = nil)
|
12
|
+
super(glCreateProgram)
|
13
|
+
|
14
|
+
raise(ArgumentError, 'vertex source cannot be nil') unless vertex
|
15
|
+
raise(ArgumentError, 'fragment source cannot be nil') unless fragment
|
16
|
+
|
17
|
+
v = compile(GL_VERTEX_SHADER, vertex)
|
18
|
+
f = compile(GL_FRAGMENT_SHADER, fragment)
|
19
|
+
g = geometry ? compile(GL_GEOMETRY_SHADER, geometry) : 0
|
20
|
+
|
21
|
+
glAttachShader(self.id, v)
|
22
|
+
glAttachShader(self.id, f)
|
23
|
+
glAttachShader(self.id, g) if g > 0
|
24
|
+
|
25
|
+
glLinkProgram(self.id)
|
26
|
+
|
27
|
+
[v, f, g].each do |shader|
|
28
|
+
next if shader.zero?
|
29
|
+
glDetachShader(self.id, shader)
|
30
|
+
glDeleteShader(shader)
|
31
|
+
end
|
32
|
+
|
33
|
+
buffer = "\0" * SIZEOF_INT
|
34
|
+
glGetProgramiv(self.id, GL_LINK_STATUS, buffer)
|
35
|
+
|
36
|
+
return if buffer.unpack1('i') == GL_TRUE
|
37
|
+
|
38
|
+
glGetProgramiv(self.id, GL_INFO_LOG_LENGTH, buffer)
|
39
|
+
length = buffer.unpack1('i')
|
40
|
+
message = "\0" * length
|
41
|
+
|
42
|
+
glGetProgramInfoLog(self.id, lengh, buffer, message)
|
43
|
+
raise(RuntimeError, "failed to link shader program: #{message}")
|
44
|
+
|
45
|
+
index = glGetUniformBlockIndex(self.id, 'ortho')
|
46
|
+
glUniformBlockBinding(@id, index, 0) if index >= 0
|
47
|
+
|
48
|
+
p index
|
49
|
+
|
50
|
+
if block_given?
|
51
|
+
yield self
|
52
|
+
dispose
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def dispose
|
57
|
+
glDeleteProgram(self.id) if self.id.nonzero?
|
58
|
+
super
|
59
|
+
end
|
60
|
+
|
61
|
+
def valid?
|
62
|
+
self.id.nonzero? && glIsProgram(self.id)
|
63
|
+
end
|
64
|
+
|
65
|
+
def locate(uniform)
|
66
|
+
return uniform ? glGetUniformLocation(self.id, uniform) : -1
|
67
|
+
end
|
68
|
+
|
69
|
+
def use
|
70
|
+
glUseProgram(@id)
|
71
|
+
end
|
72
|
+
|
73
|
+
protected
|
74
|
+
|
75
|
+
def compile(type, source)
|
76
|
+
|
77
|
+
id = glCreateShader(type)
|
78
|
+
glShaderSource(id, source)
|
79
|
+
glCompileShader(id)
|
80
|
+
|
81
|
+
buffer = "\0" * SIZEOF_INT
|
82
|
+
glGetShaderiv(id, GL_COMPILE_STATUS, buffer)
|
83
|
+
return id if buffer.unpack1('i') == GL_TRUE
|
84
|
+
|
85
|
+
glGetShaderiv(id, GL_INFO_LOG_LENGTH, buffer)
|
86
|
+
length = buffer.unpack1('i')
|
87
|
+
message = "\0" * length
|
88
|
+
|
89
|
+
glGetShaderInfoLog(id, length, buffer, message)
|
90
|
+
raise(SyntaxError, "failed to compile shader: #{message}")
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#version 330 core
|
2
|
+
|
3
|
+
in vec2 uv;
|
4
|
+
out vec4 result;
|
5
|
+
|
6
|
+
uniform sampler2D image;
|
7
|
+
uniform vec4 color;
|
8
|
+
uniform vec4 tone;
|
9
|
+
uniform vec4 flash;
|
10
|
+
uniform float opacity = 1.0;
|
11
|
+
uniform float hue;
|
12
|
+
|
13
|
+
const vec3 k = vec3(0.57735, 0.57735, 0.57735);
|
14
|
+
|
15
|
+
void main() {
|
16
|
+
|
17
|
+
// Get the fragment from bound texture
|
18
|
+
result = texture(image, uv);
|
19
|
+
|
20
|
+
// Applu hue shift
|
21
|
+
float angle = cos(radians(hue));
|
22
|
+
vec3 rgb = vec3(result.rgb * angle + cross(k, result.rgb) * sin(radians(hue)) + k * dot(k, result.rgb) * (1.0 - angle));
|
23
|
+
result = vec4(rgb, result.a);
|
24
|
+
|
25
|
+
// Apply color blending
|
26
|
+
result = vec4(mix(result.rgb, color.rgb, color.a), result.a);
|
27
|
+
|
28
|
+
// Apply tone blending
|
29
|
+
float avg = (result.r + result.g + result.b) / 3.0;
|
30
|
+
result.r = result.r - ((result.r - avg) * tone.a);
|
31
|
+
result.g = result.g - ((result.g - avg) * tone.a);
|
32
|
+
result.b = result.b - ((result.b - avg) * tone.a);
|
33
|
+
result = vec4(clamp(result.rgb + tone.rgb, 0.0, 1.0), result.a);
|
34
|
+
|
35
|
+
// Flash effect color blending
|
36
|
+
result = vec4(mix(result.rgb, flash.rgb, flash.a), result.a);
|
37
|
+
|
38
|
+
// Apply opacity
|
39
|
+
result *= opacity;
|
40
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#version 330 core
|
2
|
+
|
3
|
+
in layout(location = 0) vec4 vertex;
|
4
|
+
|
5
|
+
out vec2 uv;
|
6
|
+
|
7
|
+
layout (std140) uniform ortho
|
8
|
+
{
|
9
|
+
mat4 projection;
|
10
|
+
};
|
11
|
+
|
12
|
+
uniform mat4 model;
|
13
|
+
|
14
|
+
void main() {
|
15
|
+
uv = vertex.zw;
|
16
|
+
gl_Position = projection * model * vec4(vertex.xy, 0.0, 1.0);
|
17
|
+
}
|
data/lib/rgss/sprite.rb
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
|
2
|
+
module RGSS
|
3
|
+
|
4
|
+
class Sprite < Renderable
|
5
|
+
|
6
|
+
FLIP_NONE = 0x00
|
7
|
+
FLIP_X = 0x01
|
8
|
+
FLIP_Y = 0x02
|
9
|
+
FLIP_BOTH = FLIP_X | FLIP_Y
|
10
|
+
|
11
|
+
attr_reader :texture
|
12
|
+
attr_accessor :flip
|
13
|
+
|
14
|
+
def initialize(*args, **opts)
|
15
|
+
super(opts[:viewport]&.batch || Graphics.batch)
|
16
|
+
vertex_setup
|
17
|
+
@flip = FLIP_NONE
|
18
|
+
self.texture = nil
|
19
|
+
self.src_rect = Rect.empty
|
20
|
+
end
|
21
|
+
|
22
|
+
def texture=(value)
|
23
|
+
@texture = value
|
24
|
+
self.src_rect = @texture ? @texture.rect : Rect.empty
|
25
|
+
value
|
26
|
+
end
|
27
|
+
|
28
|
+
def flip=(value)
|
29
|
+
@flip = value || FLIP_NONE
|
30
|
+
update_vertices
|
31
|
+
value
|
32
|
+
end
|
33
|
+
|
34
|
+
def src_rect=(rect)
|
35
|
+
@src_rect = rect || Rect.empty
|
36
|
+
self.size = rect.size
|
37
|
+
update_vertices
|
38
|
+
rect
|
39
|
+
end
|
40
|
+
|
41
|
+
def render(alpha)
|
42
|
+
return unless @texture && @visible && @opacity > 0.0
|
43
|
+
super(alpha)
|
44
|
+
@texture.bind
|
45
|
+
glBindVertexArray(@vao)
|
46
|
+
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, nil)
|
47
|
+
glBindVertexArray(GL_NONE)
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
def update_vertices
|
52
|
+
return unless @texture
|
53
|
+
|
54
|
+
l = @src_rect.x / @texture.width.to_f
|
55
|
+
t = @src_rect.y / @texture.height.to_f
|
56
|
+
r = l + @src_rect.width / @texture.width.to_f
|
57
|
+
b = t + @src_rect.height / @texture.height.to_f
|
58
|
+
|
59
|
+
if (@flip & FLIP_X).nonzero?
|
60
|
+
l, r = r, l
|
61
|
+
end
|
62
|
+
if (@flip & FLIP_Y).nonzero?
|
63
|
+
t, b = b, t
|
64
|
+
end
|
65
|
+
vertices =
|
66
|
+
[
|
67
|
+
0.0, 1.0, l, b, # Bottom-Left
|
68
|
+
1.0, 0.0, r, t, # Top-Right
|
69
|
+
0.0, 0.0, l, t, # Top-Left
|
70
|
+
1.0, 1.0, r, b, # Bottom-Right
|
71
|
+
].pack('f*')
|
72
|
+
glBindBuffer(GL_ARRAY_BUFFER, @vbo)
|
73
|
+
glBufferSubData(GL_ARRAY_BUFFER, 0, vertices.size, vertices)
|
74
|
+
glBindBuffer(GL_ARRAY_BUFFER, 0)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
class SpriteAtlas < Sprite
|
80
|
+
|
81
|
+
attr_reader :region
|
82
|
+
attr_reader :columns
|
83
|
+
attr_reader :rows
|
84
|
+
|
85
|
+
attr_reader :cx
|
86
|
+
attr_reader :cy
|
87
|
+
|
88
|
+
def initialize(*args, **opts)
|
89
|
+
@region = opts[:region]
|
90
|
+
@columns = opts[:columns] || 0
|
91
|
+
@rows = opts[:rows] || 0
|
92
|
+
super
|
93
|
+
|
94
|
+
@cx = 0
|
95
|
+
@cy = 0
|
96
|
+
update_src_rect
|
97
|
+
end
|
98
|
+
|
99
|
+
def cx=(cell_x)
|
100
|
+
@cx = @columns.zero? ? 0 : cell_x % @columns
|
101
|
+
update_src_rect
|
102
|
+
cell_x
|
103
|
+
end
|
104
|
+
|
105
|
+
def cy=(cell_y)
|
106
|
+
@cy = @rows.zero? ? 0 : cell_y % @rows
|
107
|
+
update_src_rect
|
108
|
+
cell_y
|
109
|
+
end
|
110
|
+
|
111
|
+
def region=(value)
|
112
|
+
@region = value
|
113
|
+
update_src_rect
|
114
|
+
value
|
115
|
+
end
|
116
|
+
|
117
|
+
def select(cell_x, cell_y)
|
118
|
+
@cx = @columns.zero? ? 0 : cell_x % @columns
|
119
|
+
@cy = @rows.zero? ? 0 : cell_y % @rows
|
120
|
+
update_src_rect
|
121
|
+
end
|
122
|
+
|
123
|
+
private
|
124
|
+
|
125
|
+
def update_src_rect
|
126
|
+
return unless @texture
|
127
|
+
|
128
|
+
@region ||= @texture.rect
|
129
|
+
@cw = @columns.zero? ? 0 : @region.width / @columns
|
130
|
+
@ch = @rows.zero? ? 0 : @region.height / @rows
|
131
|
+
|
132
|
+
cell_x = (@cx * @cw) + @region.x
|
133
|
+
cell_y = (@cy * @ch) + @region.y
|
134
|
+
|
135
|
+
self.src_rect = Rect.new(cell_x, cell_y, @cw, @ch)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
@@ -0,0 +1,318 @@
|
|
1
|
+
module RGSS
|
2
|
+
##
|
3
|
+
# A structure for describing a color, in RGB, HSL, and HSV/HSB color-spaces, though RGBA is the internal format. All
|
4
|
+
# components are normalized floating point values in the range of `0.0` and `1.0`. Internally this class is
|
5
|
+
# represented as a typical 4 component vector, with 32-bit floating point values. Ruby uses a 64-bit `double` for
|
6
|
+
# floating point numbers, which have a higher precision (about 13 digits) compared to a 32-bit `float` (about 7
|
7
|
+
# digits), so bear this in mind and do not rely on any precision or accuracy of values beyond 6-7 digits, they should
|
8
|
+
# be ignored beyond that point.
|
9
|
+
#
|
10
|
+
# @note All out of range values are automatically clamped to their respective limits.
|
11
|
+
#
|
12
|
+
# @note All relevant methods implemented in `Object` (i.e. `#dup`, `#clone`, Marshalling, equality) have also been
|
13
|
+
# properly implemented/overridden, but have been omitted from the documentation for brevity.
|
14
|
+
class Color
|
15
|
+
|
16
|
+
##
|
17
|
+
# The value of the red color component.
|
18
|
+
# @return [Float] a normalized value between `0.0` amd `1.0`.
|
19
|
+
attr_reader :r
|
20
|
+
|
21
|
+
##
|
22
|
+
# The value of the green color component.
|
23
|
+
# @return [Float] a normalized value between `0.0` amd `1.0`.
|
24
|
+
attr_reader :g
|
25
|
+
|
26
|
+
##
|
27
|
+
# The value of the blue color component.
|
28
|
+
# @return [Float] a normalized value between `0.0` amd `1.0`.
|
29
|
+
attr_reader :b
|
30
|
+
|
31
|
+
##
|
32
|
+
# The value of the alpha color component.
|
33
|
+
# @return [Float] a normalized value between `0.0` amd `1.0`.
|
34
|
+
attr_reader :a
|
35
|
+
|
36
|
+
##
|
37
|
+
# Creates a new instance of the {Color} class.
|
38
|
+
# @param red [Float] the red component, a normalized value between `0.0` and `1.0`.
|
39
|
+
# @param green [Float] the green component, a normalized value between `0.0` and `1.0`.
|
40
|
+
# @param blue [Float] the blue component, a normalized value between `0.0` and `1.0`.
|
41
|
+
# @param alpha [Float] the alpha component, a normalized value between `0.0` and `1.0`.
|
42
|
+
def initialize(red, green, blue, alpha = 1.0)
|
43
|
+
end
|
44
|
+
|
45
|
+
##
|
46
|
+
# Creates an array instance that represents this object.
|
47
|
+
# @return [Array(Float, Float, Float, Float)] The newly created Array.
|
48
|
+
# @example
|
49
|
+
# Color::BLUE_VIOLET.to_a
|
50
|
+
# #=> []
|
51
|
+
def to_a
|
52
|
+
end
|
53
|
+
BLUE_VIOLET = Color.new(0.54118, 0.16863, 0.88627, 1.00000)
|
54
|
+
##
|
55
|
+
# Creates a hash instance that represents this object.
|
56
|
+
# @return [Hash{Symbol => Float}] The newly created Hash.
|
57
|
+
# @example
|
58
|
+
# Color::BLUE_VIOLET.to_h
|
59
|
+
# #=> { :red => 0.54118, :green => 0.16863, :blue => 0.88627, :alpha => 1.0 }
|
60
|
+
def to_h
|
61
|
+
end
|
62
|
+
|
63
|
+
##
|
64
|
+
# Creates a new {Color} by inverting the values of the this instance, producing the "negative" of the color.
|
65
|
+
# @param alpha [Boolean] `true` to invert the alpha component, otherwise `false` to maintain the same alpha.
|
66
|
+
# @return [Color] the resulting {Color} instance.
|
67
|
+
#
|
68
|
+
# @example
|
69
|
+
# magenta = Color.new(1.00000, 0.00000, 1.00000, 1.00000)
|
70
|
+
# #=> <1.0, 0.0, 1.0, 1.0>
|
71
|
+
# negative = magenta.inverse
|
72
|
+
# #> <0.0, 1.0, 0.0, 1.0>
|
73
|
+
def inverse(alpha = false)
|
74
|
+
end
|
75
|
+
|
76
|
+
##
|
77
|
+
# Creates a new {Color} by linearly scaling the components of this instance by the specified value.
|
78
|
+
# @param scalar [Float] A scalar value to alter this value by.
|
79
|
+
# @return [Color] the resulting {Color} instance.
|
80
|
+
#
|
81
|
+
# @example
|
82
|
+
# white = Color.new(1.0, 1.0, 1.0, 1.0)
|
83
|
+
# #=> <1.0, 1.0, 1.0, 1.0>
|
84
|
+
# mid_gray = white * 0.5
|
85
|
+
# #=> <0.5, 0.5, 0.5, 0.5>
|
86
|
+
def *(scalar)
|
87
|
+
end
|
88
|
+
|
89
|
+
##
|
90
|
+
# The hue component of the color from the HSL and HSB/HSV color-spaces.
|
91
|
+
# @return [Float] the hue of the color, in the range of `0.0` to `360.0`.
|
92
|
+
def hue
|
93
|
+
end
|
94
|
+
|
95
|
+
##
|
96
|
+
# The saturation component of the color from the HSL and HSB/HSV color-spaces.
|
97
|
+
# @return [Float] the hue of the color, in the range of `0.0` to `1.0`.
|
98
|
+
def saturation
|
99
|
+
end
|
100
|
+
|
101
|
+
##
|
102
|
+
# The lightness component of the color from the HSL color-space.
|
103
|
+
# @return [Float] the lightness of the color, in the range of `0.0` to `1.0`.
|
104
|
+
def lightness
|
105
|
+
end
|
106
|
+
|
107
|
+
##
|
108
|
+
# The brightness/value component of the color from the HSB/HSV color-space.
|
109
|
+
# @return [Float] the brightness of the color, in the range of `0.0` to `1.0`.
|
110
|
+
def brightness
|
111
|
+
end
|
112
|
+
|
113
|
+
##
|
114
|
+
# The values of the color in the HSL color-space.
|
115
|
+
# @return [Array(Float, Float, Float)] the HSL components.
|
116
|
+
# @note It is more efficient to retrieve all at values at once than each component individually.
|
117
|
+
def hsl
|
118
|
+
end
|
119
|
+
|
120
|
+
##
|
121
|
+
# The values of the color in the HSB/HSV color-space.
|
122
|
+
# @return [Array(Float, Float, Float)] the HSB/HSV components.
|
123
|
+
# @note It is more efficient to retrieve all at values at once than each component individually.
|
124
|
+
def hsv
|
125
|
+
end
|
126
|
+
|
127
|
+
alias_method :red, :r
|
128
|
+
alias_method :green, :g
|
129
|
+
alias_method :blue, :b
|
130
|
+
alias_method :alpha, :a
|
131
|
+
alias_method :multiply, :*
|
132
|
+
alias_method :value, :brightness
|
133
|
+
alias_method :hsb, :hsv
|
134
|
+
|
135
|
+
##
|
136
|
+
# Linearly interpolates two colors using the given the weight to produce a mixture of each.
|
137
|
+
# @param color1 [Color] the base color to mix from.
|
138
|
+
# @param color2 [Color] the target color to mix to.
|
139
|
+
# @param weight [Float] the scaling factor of the second color to apply, where `0.0` means none, and *color1* will
|
140
|
+
# be returned, `1.0` means fully *color2*, and values in between are a weighted mixture.
|
141
|
+
# @return [Color] the resulting {Color} instance.
|
142
|
+
def self.mix(color1, color2, weight)
|
143
|
+
end
|
144
|
+
|
145
|
+
##
|
146
|
+
# Creates a new {Color} using from the HSL color-space.
|
147
|
+
# @param hue [Float] the hue component in the range of `0.0` and `360.0`.
|
148
|
+
# @param saturation [Float] the saturation component in the range of `0.0` and `1.0`.
|
149
|
+
# @param lightness [Float] the lightness component in the range of `0.0` and `1.0`.
|
150
|
+
# @param alpha [Float] the alpha component of the color in the range of `0.0` and `1.0`.
|
151
|
+
# @return [Color] the newly created {Color}.
|
152
|
+
def self.from_hsl(hue, saturation, lightness, alpha = 1.0)
|
153
|
+
end
|
154
|
+
|
155
|
+
##
|
156
|
+
# Creates a new {Color} using from the HSB/HSL color-space.
|
157
|
+
# @param hue [Float] the hue component in the range of `0.0` and `360.0`.
|
158
|
+
# @param saturation [Float] the saturation component in the range of `0.0` and `1.0`.
|
159
|
+
# @param brightness [Float] the brightness/value component in the range of `0.0` and `1.0`.
|
160
|
+
# @param alpha [Float] the alpha component of the color in the range of `0.0` and `1.0`.
|
161
|
+
# @return [Color] the newly created {Color}.
|
162
|
+
def self.from_hsb(hue, saturation, brightness, alpha = 1.0)
|
163
|
+
end
|
164
|
+
|
165
|
+
##
|
166
|
+
# Creates a new {Color} using from the HSB/HSL color-space.
|
167
|
+
# @param hue [Float] the hue component in the range of `0.0` and `360.0`.
|
168
|
+
# @param saturation [Float] the saturation component in the range of `0.0` and `1.0`.
|
169
|
+
# @param value [Float] the brightness/value component in the range of `0.0` and `1.0`.
|
170
|
+
# @param alpha [Float] the alpha component of the color in the range of `0.0` and `1.0`.
|
171
|
+
# @return [Color] the newly created {Color}.
|
172
|
+
def self.from_hsv(hue, saturation, value, alpha = 1.0)
|
173
|
+
end
|
174
|
+
|
175
|
+
NONE = Color.new(0.00000, 0.00000, 0.00000, 0.00000)
|
176
|
+
TRANSPARENT = Color.new(1.00000, 1.00000, 1.00000, 0.00000)
|
177
|
+
ALICE_BLUE = Color.new(0.94118, 0.97255, 1.00000, 1.00000)
|
178
|
+
ANTIQUE_WHITE = Color.new(0.98039, 0.92157, 0.84314, 1.00000)
|
179
|
+
AQUA = Color.new(0.00000, 1.00000, 1.00000, 1.00000)
|
180
|
+
AQUAMARINE = Color.new(0.49804, 1.00000, 0.83137, 1.00000)
|
181
|
+
AZURE = Color.new(0.94118, 1.00000, 1.00000, 1.00000)
|
182
|
+
BEIGE = Color.new(0.96078, 0.96078, 0.86275, 1.00000)
|
183
|
+
BISQUE = Color.new(1.00000, 0.89412, 0.76863, 1.00000)
|
184
|
+
BLACK = Color.new(0.00000, 0.00000, 0.00000, 1.00000)
|
185
|
+
BLANCHED_ALMOND = Color.new(1.00000, 0.92157, 0.80392, 1.00000)
|
186
|
+
BLUE = Color.new(0.00000, 0.00000, 1.00000, 1.00000)
|
187
|
+
BLUE_VIOLET = Color.new(0.54118, 0.16863, 0.88627, 1.00000)
|
188
|
+
BROWN = Color.new(0.64706, 0.16471, 0.16471, 1.00000)
|
189
|
+
BURLY_WOOD = Color.new(0.87059, 0.72157, 0.52941, 1.00000)
|
190
|
+
CADET_BLUE = Color.new(0.37255, 0.61961, 0.62745, 1.00000)
|
191
|
+
CHARTREUSE = Color.new(0.49804, 1.00000, 0.00000, 1.00000)
|
192
|
+
CHOCOLATE = Color.new(0.82353, 0.41176, 0.11765, 1.00000)
|
193
|
+
CORAL = Color.new(1.00000, 0.49804, 0.31373, 1.00000)
|
194
|
+
CORNFLOWER_BLUE = Color.new(0.39216, 0.58431, 0.92941, 1.00000)
|
195
|
+
CORNSILK = Color.new(1.00000, 0.97255, 0.86275, 1.00000)
|
196
|
+
CRIMSON = Color.new(0.86275, 0.07843, 0.23529, 1.00000)
|
197
|
+
CYAN = Color.new(0.00000, 1.00000, 1.00000, 1.00000)
|
198
|
+
DARK_BLUE = Color.new(0.00000, 0.00000, 0.54510, 1.00000)
|
199
|
+
DARK_CYAN = Color.new(0.00000, 0.54510, 0.54510, 1.00000)
|
200
|
+
DARK_GOLDENROD = Color.new(0.72157, 0.52549, 0.04314, 1.00000)
|
201
|
+
DARK_GRAY = Color.new(0.66275, 0.66275, 0.66275, 1.00000)
|
202
|
+
DARK_GREEN = Color.new(0.00000, 0.39216, 0.00000, 1.00000)
|
203
|
+
DARK_KHAKI = Color.new(0.74118, 0.71765, 0.41961, 1.00000)
|
204
|
+
DARK_MAGENTA = Color.new(0.54510, 0.00000, 0.54510, 1.00000)
|
205
|
+
DARK_OLIVE_GREEN = Color.new(0.33333, 0.41961, 0.18431, 1.00000)
|
206
|
+
DARK_ORANGE = Color.new(1.00000, 0.54902, 0.00000, 1.00000)
|
207
|
+
DARK_ORCHID = Color.new(0.60000, 0.19608, 0.80000, 1.00000)
|
208
|
+
DARK_RED = Color.new(0.54510, 0.00000, 0.00000, 1.00000)
|
209
|
+
DARK_SALMON = Color.new(0.91373, 0.58824, 0.47843, 1.00000)
|
210
|
+
DARK_SEA_GREEN = Color.new(0.56078, 0.73725, 0.54510, 1.00000)
|
211
|
+
DARK_SLATE_BLUE = Color.new(0.28235, 0.23922, 0.54510, 1.00000)
|
212
|
+
DARK_SLATE_GRAY = Color.new(0.18431, 0.30980, 0.30980, 1.00000)
|
213
|
+
DARK_TURQUOISE = Color.new(0.00000, 0.80784, 0.81961, 1.00000)
|
214
|
+
DARK_VIOLET = Color.new(0.58039, 0.00000, 0.82745, 1.00000)
|
215
|
+
DEEP_PINK = Color.new(1.00000, 0.07843, 0.57647, 1.00000)
|
216
|
+
DEEP_SKY_BLUE = Color.new(0.00000, 0.74902, 1.00000, 1.00000)
|
217
|
+
DIM_GRAY = Color.new(0.41176, 0.41176, 0.41176, 1.00000)
|
218
|
+
DODGER_BLUE = Color.new(0.11765, 0.56471, 1.00000, 1.00000)
|
219
|
+
FIREBRICK = Color.new(0.69804, 0.13333, 0.13333, 1.00000)
|
220
|
+
FLORAL_WHITE = Color.new(1.00000, 0.98039, 0.94118, 1.00000)
|
221
|
+
FOREST_GREEN = Color.new(0.13333, 0.54510, 0.13333, 1.00000)
|
222
|
+
FUCHSIA = Color.new(1.00000, 0.00000, 1.00000, 1.00000)
|
223
|
+
GAINSBORO = Color.new(0.86275, 0.86275, 0.86275, 1.00000)
|
224
|
+
GHOST_WHITE = Color.new(0.97255, 0.97255, 1.00000, 1.00000)
|
225
|
+
GOLD = Color.new(1.00000, 0.84314, 0.00000, 1.00000)
|
226
|
+
GOLDENROD = Color.new(0.85490, 0.64706, 0.12549, 1.00000)
|
227
|
+
GRAY = Color.new(0.50196, 0.50196, 0.50196, 1.00000)
|
228
|
+
GREEN = Color.new(0.00000, 0.50196, 0.00000, 1.00000)
|
229
|
+
GREEN_YELLOW = Color.new(0.67843, 1.00000, 0.18431, 1.00000)
|
230
|
+
HONEYDEW = Color.new(0.94118, 1.00000, 0.94118, 1.00000)
|
231
|
+
HOT_PINK = Color.new(1.00000, 0.41176, 0.70588, 1.00000)
|
232
|
+
INDIAN_RED = Color.new(0.80392, 0.36078, 0.36078, 1.00000)
|
233
|
+
INDIGO = Color.new(0.29412, 0.00000, 0.50980, 1.00000)
|
234
|
+
IVORY = Color.new(1.00000, 1.00000, 0.94118, 1.00000)
|
235
|
+
KHAKI = Color.new(0.94118, 0.90196, 0.54902, 1.00000)
|
236
|
+
LAVENDER = Color.new(0.90196, 0.90196, 0.98039, 1.00000)
|
237
|
+
LAVENDER_BLUSH = Color.new(1.00000, 0.94118, 0.96078, 1.00000)
|
238
|
+
LAWN_GREEN = Color.new(0.48627, 0.98824, 0.00000, 1.00000)
|
239
|
+
LEMON_CHIFFON = Color.new(1.00000, 0.98039, 0.80392, 1.00000)
|
240
|
+
LIGHT_BLUE = Color.new(0.67843, 0.84706, 0.90196, 1.00000)
|
241
|
+
LIGHT_CORAL = Color.new(0.94118, 0.50196, 0.50196, 1.00000)
|
242
|
+
LIGHT_CYAN = Color.new(0.87843, 1.00000, 1.00000, 1.00000)
|
243
|
+
LIGHT_GOLDENROD_YELLOW = Color.new(0.98039, 0.98039, 0.82353, 1.00000)
|
244
|
+
LIGHT_GRAY = Color.new(0.82745, 0.82745, 0.82745, 1.00000)
|
245
|
+
LIGHT_GREEN = Color.new(0.56471, 0.93333, 0.56471, 1.00000)
|
246
|
+
LIGHT_PINK = Color.new(1.00000, 0.71373, 0.75686, 1.00000)
|
247
|
+
LIGHT_SALMON = Color.new(1.00000, 0.62745, 0.47843, 1.00000)
|
248
|
+
LIGHT_SEA_GREEN = Color.new(0.12549, 0.69804, 0.66667, 1.00000)
|
249
|
+
LIGHT_SKY_BLUE = Color.new(0.52941, 0.80784, 0.98039, 1.00000)
|
250
|
+
LIGHT_SLATE_GRAY = Color.new(0.46667, 0.53333, 0.60000, 1.00000)
|
251
|
+
LIGHT_STEEL_BLUE = Color.new(0.69020, 0.76863, 0.87059, 1.00000)
|
252
|
+
LIGHT_YELLOW = Color.new(1.00000, 1.00000, 0.87843, 1.00000)
|
253
|
+
LIME = Color.new(0.00000, 1.00000, 0.00000, 1.00000)
|
254
|
+
LIME_GREEN = Color.new(0.19608, 0.80392, 0.19608, 1.00000)
|
255
|
+
LINEN = Color.new(0.98039, 0.94118, 0.90196, 1.00000)
|
256
|
+
MAGENTA = Color.new(1.00000, 0.00000, 1.00000, 1.00000)
|
257
|
+
MAROON = Color.new(0.50196, 0.00000, 0.00000, 1.00000)
|
258
|
+
MEDIUM_AQUAMARINE = Color.new(0.40000, 0.80392, 0.66667, 1.00000)
|
259
|
+
MEDIUM_BLUE = Color.new(0.00000, 0.00000, 0.80392, 1.00000)
|
260
|
+
MEDIUM_ORCHID = Color.new(0.72941, 0.33333, 0.82745, 1.00000)
|
261
|
+
MEDIUM_PURPLE = Color.new(0.57647, 0.43922, 0.85882, 1.00000)
|
262
|
+
MEDIUM_SEA_GREEN = Color.new(0.23529, 0.70196, 0.44314, 1.00000)
|
263
|
+
MEDIUM_SLATE_BLUE = Color.new(0.48235, 0.40784, 0.93333, 1.00000)
|
264
|
+
MEDIUM_SPRING_GREEN = Color.new(0.00000, 0.98039, 0.60392, 1.00000)
|
265
|
+
MEDIUM_TURQUOISE = Color.new(0.28235, 0.81961, 0.80000, 1.00000)
|
266
|
+
MEDIUM_VIOLET_RED = Color.new(0.78039, 0.08235, 0.52157, 1.00000)
|
267
|
+
MIDNIGHT_BLUE = Color.new(0.09804, 0.09804, 0.43922, 1.00000)
|
268
|
+
MINT_CREAM = Color.new(0.96078, 1.00000, 0.98039, 1.00000)
|
269
|
+
MISTY_ROSE = Color.new(1.00000, 0.89412, 0.88235, 1.00000)
|
270
|
+
MOCCASIN = Color.new(1.00000, 0.89412, 0.70980, 1.00000)
|
271
|
+
NAVAJO_WHITE = Color.new(1.00000, 0.87059, 0.67843, 1.00000)
|
272
|
+
NAVY = Color.new(0.00000, 0.00000, 0.50196, 1.00000)
|
273
|
+
OLD_LACE = Color.new(0.99216, 0.96078, 0.90196, 1.00000)
|
274
|
+
OLIVE = Color.new(0.50196, 0.50196, 0.00000, 1.00000)
|
275
|
+
OLIVE_DRAB = Color.new(0.41961, 0.55686, 0.13725, 1.00000)
|
276
|
+
ORANGE = Color.new(1.00000, 0.64706, 0.00000, 1.00000)
|
277
|
+
ORANGE_RED = Color.new(1.00000, 0.27059, 0.00000, 1.00000)
|
278
|
+
ORCHID = Color.new(0.85490, 0.43922, 0.83922, 1.00000)
|
279
|
+
PALE_GOLDENROD = Color.new(0.93333, 0.90980, 0.66667, 1.00000)
|
280
|
+
PALE_GREEN = Color.new(0.59608, 0.98431, 0.59608, 1.00000)
|
281
|
+
PALE_TURQUOISE = Color.new(0.68627, 0.93333, 0.93333, 1.00000)
|
282
|
+
PALE_VIOLET_RED = Color.new(0.85882, 0.43922, 0.57647, 1.00000)
|
283
|
+
PAPAYA_WHIP = Color.new(1.00000, 0.93725, 0.83529, 1.00000)
|
284
|
+
PEACH_PUFF = Color.new(1.00000, 0.85490, 0.72549, 1.00000)
|
285
|
+
PERU = Color.new(0.80392, 0.52157, 0.24706, 1.00000)
|
286
|
+
PINK = Color.new(1.00000, 0.75294, 0.79608, 1.00000)
|
287
|
+
PLUM = Color.new(0.86667, 0.62745, 0.86667, 1.00000)
|
288
|
+
POWDER_BLUE = Color.new(0.69020, 0.87843, 0.90196, 1.00000)
|
289
|
+
PURPLE = Color.new(0.50196, 0.00000, 0.50196, 1.00000)
|
290
|
+
RED = Color.new(1.00000, 0.00000, 0.00000, 1.00000)
|
291
|
+
ROSY_BROWN = Color.new(0.73725, 0.56078, 0.56078, 1.00000)
|
292
|
+
ROYAL_BLUE = Color.new(0.25490, 0.41176, 0.88235, 1.00000)
|
293
|
+
SADDLE_BROWN = Color.new(0.54510, 0.27059, 0.07451, 1.00000)
|
294
|
+
SALMON = Color.new(0.98039, 0.50196, 0.44706, 1.00000)
|
295
|
+
SANDY_BROWN = Color.new(0.95686, 0.64314, 0.37647, 1.00000)
|
296
|
+
SEA_GREEN = Color.new(0.18039, 0.54510, 0.34118, 1.00000)
|
297
|
+
SEA_SHELL = Color.new(1.00000, 0.96078, 0.93333, 1.00000)
|
298
|
+
SIENNA = Color.new(0.62745, 0.32157, 0.17647, 1.00000)
|
299
|
+
SILVER = Color.new(0.75294, 0.75294, 0.75294, 1.00000)
|
300
|
+
SKY_BLUE = Color.new(0.52941, 0.80784, 0.92157, 1.00000)
|
301
|
+
SLATE_BLUE = Color.new(0.41569, 0.35294, 0.80392, 1.00000)
|
302
|
+
SLATE_GRAY = Color.new(0.43922, 0.50196, 0.56471, 1.00000)
|
303
|
+
SNOW = Color.new(1.00000, 0.98039, 0.98039, 1.00000)
|
304
|
+
SPRING_GREEN = Color.new(0.00000, 1.00000, 0.49804, 1.00000)
|
305
|
+
STEEL_BLUE = Color.new(0.27451, 0.50980, 0.70588, 1.00000)
|
306
|
+
TAN = Color.new(0.82353, 0.70588, 0.54902, 1.00000)
|
307
|
+
TEAL = Color.new(0.00000, 0.50196, 0.50196, 1.00000)
|
308
|
+
THISTLE = Color.new(0.84706, 0.74902, 0.84706, 1.00000)
|
309
|
+
TOMATO = Color.new(1.00000, 0.38824, 0.27843, 1.00000)
|
310
|
+
TURQUOISE = Color.new(0.25098, 0.87843, 0.81569, 1.00000)
|
311
|
+
VIOLET = Color.new(0.93333, 0.50980, 0.93333, 1.00000)
|
312
|
+
WHEAT = Color.new(0.96078, 0.87059, 0.70196, 1.00000)
|
313
|
+
WHITE = Color.new(1.00000, 1.00000, 1.00000, 1.00000)
|
314
|
+
WHITE_SMOKE = Color.new(0.96078, 0.96078, 0.96078, 1.00000)
|
315
|
+
YELLOW = Color.new(1.00000, 1.00000, 0.00000, 1.00000)
|
316
|
+
YELLOW_GREEN = Color.new(0.60392, 0.80392, 0.19608, 1.00000)
|
317
|
+
end
|
318
|
+
end
|