rays 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +8 -0
- data/README +4 -0
- data/Rakefile +72 -0
- data/VERSION +1 -0
- data/ext/rays/bitmap.cpp +322 -0
- data/ext/rays/extconf.rb +61 -0
- data/ext/rays/font.cpp +125 -0
- data/ext/rays/image.cpp +166 -0
- data/ext/rays/native.cpp +24 -0
- data/ext/rays/painter.cpp +573 -0
- data/ext/rays/rays.cpp +61 -0
- data/ext/rays/rays.h +39 -0
- data/ext/rays/texture.cpp +130 -0
- data/include/rays.h +20 -0
- data/include/rays/bitmap.h +80 -0
- data/include/rays/colorspace.h +101 -0
- data/include/rays/defs.h +33 -0
- data/include/rays/font.h +49 -0
- data/include/rays/helpers.h +37 -0
- data/include/rays/image.h +68 -0
- data/include/rays/opengl.h +15 -0
- data/include/rays/painter.h +179 -0
- data/include/rays/rays.h +19 -0
- data/include/rays/ruby.h +15 -0
- data/include/rays/ruby/bitmap.h +39 -0
- data/include/rays/ruby/font.h +39 -0
- data/include/rays/ruby/image.h +39 -0
- data/include/rays/ruby/painter.h +39 -0
- data/include/rays/ruby/rays.h +21 -0
- data/include/rays/ruby/texture.h +39 -0
- data/include/rays/texture.h +56 -0
- data/include/rays/transform.h +35 -0
- data/lib/rays.rb +9 -0
- data/lib/rays/autoinit.rb +10 -0
- data/lib/rays/bitmap.rb +25 -0
- data/lib/rays/image.rb +15 -0
- data/lib/rays/module.rb +30 -0
- data/lib/rays/painter.rb +99 -0
- data/lib/rays/texture.rb +15 -0
- data/rays.gemspec +54 -0
- data/src/cocoa/bitmap.mm +286 -0
- data/src/cocoa/font.mm +193 -0
- data/src/cocoa/helpers.h +26 -0
- data/src/cocoa/helpers.mm +25 -0
- data/src/cocoa/rays.mm +40 -0
- data/src/colorspace.cpp +183 -0
- data/src/helpers.cpp +22 -0
- data/src/image.cpp +133 -0
- data/src/painter.cpp +769 -0
- data/src/texture.cpp +360 -0
- data/src/transform.cpp +88 -0
- data/src/win32/bitmap.cpp +212 -0
- data/src/win32/font.cpp +99 -0
- data/src/win32/gdi.cpp +771 -0
- data/src/win32/gdi.h +226 -0
- data/src/win32/rays.cpp +36 -0
- data/support.rb +58 -0
- data/task/ext.rake +41 -0
- data/task/gem.rake +33 -0
- data/task/git.rake +22 -0
- data/task/lib.rake +54 -0
- data/test/helpers.rb +15 -0
- data/test/test_painter.rb +11 -0
- data/test/test_rays.rb +19 -0
- data/test/test_texture.rb +11 -0
- metadata +153 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __RAYS_RUBY_IMAGE_H__
|
4
|
+
#define __RAYS_RUBY_IMAGE_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <rucy/rucy.h>
|
8
|
+
#include <rucy/class.h>
|
9
|
+
#include <rays/image.h>
|
10
|
+
|
11
|
+
|
12
|
+
namespace Rays
|
13
|
+
{
|
14
|
+
|
15
|
+
|
16
|
+
Rucy::Class image_class ();
|
17
|
+
// class Rays::Image
|
18
|
+
|
19
|
+
|
20
|
+
}// Rays
|
21
|
+
|
22
|
+
|
23
|
+
namespace Rucy
|
24
|
+
{
|
25
|
+
|
26
|
+
|
27
|
+
Value value (const Rays::Image& image);
|
28
|
+
|
29
|
+
template <> inline Rays::Image*
|
30
|
+
value_to<Rays::Image*> (Value obj, bool convert)
|
31
|
+
{
|
32
|
+
return get_type<Rays::Image>(obj, Rays::image_class());
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
}// Rucy
|
37
|
+
|
38
|
+
|
39
|
+
#endif//EOH
|
@@ -0,0 +1,39 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __RAYS_RUBY_PAINTER_H__
|
4
|
+
#define __RAYS_RUBY_PAINTER_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <rucy/rucy.h>
|
8
|
+
#include <rucy/class.h>
|
9
|
+
#include <rays/painter.h>
|
10
|
+
|
11
|
+
|
12
|
+
namespace Rays
|
13
|
+
{
|
14
|
+
|
15
|
+
|
16
|
+
Rucy::Class painter_class ();
|
17
|
+
// class Rays::Painter
|
18
|
+
|
19
|
+
|
20
|
+
}// Rays
|
21
|
+
|
22
|
+
|
23
|
+
namespace Rucy
|
24
|
+
{
|
25
|
+
|
26
|
+
|
27
|
+
Value value (const Rays::Painter& painter);
|
28
|
+
|
29
|
+
template <> inline Rays::Painter*
|
30
|
+
value_to<Rays::Painter*> (Value obj, bool convert)
|
31
|
+
{
|
32
|
+
return get_type<Rays::Painter>(obj, Rays::painter_class());
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
}// Rucy
|
37
|
+
|
38
|
+
|
39
|
+
#endif//EOH
|
@@ -0,0 +1,21 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __RAYS_RUBY_RAYS_H__
|
4
|
+
#define __RAYS_RUBY_RAYS_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <rucy/module.h>
|
8
|
+
|
9
|
+
|
10
|
+
namespace Rays
|
11
|
+
{
|
12
|
+
|
13
|
+
|
14
|
+
Rucy::Module rays_module ();
|
15
|
+
// module Rays
|
16
|
+
|
17
|
+
|
18
|
+
}// Rays
|
19
|
+
|
20
|
+
|
21
|
+
#endif//EOH
|
@@ -0,0 +1,39 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __RAYS_RUBY_TEXTURE_H__
|
4
|
+
#define __RAYS_RUBY_TEXTURE_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <rucy/rucy.h>
|
8
|
+
#include <rucy/class.h>
|
9
|
+
#include <rays/texture.h>
|
10
|
+
|
11
|
+
|
12
|
+
namespace Rays
|
13
|
+
{
|
14
|
+
|
15
|
+
|
16
|
+
Rucy::Class texture_class ();
|
17
|
+
// class Rays::Texture
|
18
|
+
|
19
|
+
|
20
|
+
}// Rays
|
21
|
+
|
22
|
+
|
23
|
+
namespace Rucy
|
24
|
+
{
|
25
|
+
|
26
|
+
|
27
|
+
Value value (const Rays::Texture& texture);
|
28
|
+
|
29
|
+
template <> inline Rays::Texture*
|
30
|
+
value_to<Rays::Texture*> (Value obj, bool convert)
|
31
|
+
{
|
32
|
+
return get_type<Rays::Texture>(obj, Rays::texture_class());
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
}// Rucy
|
37
|
+
|
38
|
+
|
39
|
+
#endif//EOH
|
@@ -0,0 +1,56 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __RAYS_TEXTURE_H__
|
4
|
+
#define __RAYS_TEXTURE_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <rays/defs.h>
|
8
|
+
#include <rays/opengl.h>
|
9
|
+
#include <rays/helpers.h>
|
10
|
+
|
11
|
+
|
12
|
+
namespace Rays
|
13
|
+
{
|
14
|
+
|
15
|
+
|
16
|
+
class Bitmap;
|
17
|
+
|
18
|
+
|
19
|
+
class Texture
|
20
|
+
{
|
21
|
+
|
22
|
+
public:
|
23
|
+
|
24
|
+
Texture ();
|
25
|
+
|
26
|
+
Texture (const Bitmap& bitmap, bool alphaonly = false);
|
27
|
+
|
28
|
+
~Texture ();
|
29
|
+
|
30
|
+
GLuint id () const;
|
31
|
+
|
32
|
+
int width () const;
|
33
|
+
|
34
|
+
int height () const;
|
35
|
+
|
36
|
+
float s_max () const;
|
37
|
+
|
38
|
+
float t_max () const;
|
39
|
+
|
40
|
+
const Bitmap& bitmap () const;
|
41
|
+
|
42
|
+
operator bool () const;
|
43
|
+
|
44
|
+
bool operator ! () const;
|
45
|
+
|
46
|
+
struct Data;
|
47
|
+
|
48
|
+
Impl<Data> self;
|
49
|
+
|
50
|
+
};// Texture
|
51
|
+
|
52
|
+
|
53
|
+
}// Rays
|
54
|
+
|
55
|
+
|
56
|
+
#endif//EOH
|
@@ -0,0 +1,35 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __RAYS_TRANSFORM_H__
|
4
|
+
#define __RAYS_TRANSFORM_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <rays/defs.h>
|
8
|
+
|
9
|
+
|
10
|
+
namespace Rays
|
11
|
+
{
|
12
|
+
|
13
|
+
|
14
|
+
bool translate (coord x, coord y, coord z = 0);
|
15
|
+
|
16
|
+
bool scale (coord x, coord y, coord z = 1);
|
17
|
+
|
18
|
+
bool rotate (coord angle, coord x = 0, coord y = 0, coord z = 1);
|
19
|
+
|
20
|
+
|
21
|
+
bool set_matrix (coord value = 1);
|
22
|
+
|
23
|
+
bool set_matrix (coord* elements, size_t size);
|
24
|
+
|
25
|
+
bool get_matrix (coord* elements, size_t size);
|
26
|
+
|
27
|
+
bool push_matrix ();
|
28
|
+
|
29
|
+
bool pop_matrix ();
|
30
|
+
|
31
|
+
|
32
|
+
}// Rays
|
33
|
+
|
34
|
+
|
35
|
+
#endif//EOH
|
data/lib/rays.rb
ADDED
data/lib/rays/bitmap.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
|
4
|
+
require 'rays/native'
|
5
|
+
|
6
|
+
|
7
|
+
module Rays
|
8
|
+
|
9
|
+
|
10
|
+
class Bitmap
|
11
|
+
|
12
|
+
include Enumerable
|
13
|
+
|
14
|
+
def each ()
|
15
|
+
height.times do |y|
|
16
|
+
width.times do |x|
|
17
|
+
yield x, y, at(x, y)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end# Bitmap
|
23
|
+
|
24
|
+
|
25
|
+
end# Rays
|
data/lib/rays/image.rb
ADDED
data/lib/rays/module.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
|
4
|
+
module Rays
|
5
|
+
|
6
|
+
|
7
|
+
extend module ClassMethods
|
8
|
+
|
9
|
+
def root_dir ()
|
10
|
+
File.expand_path(File.join File.dirname(__FILE__), '..', '..')
|
11
|
+
end
|
12
|
+
|
13
|
+
def include_dirs ()
|
14
|
+
[File.join(root_dir, 'include')]
|
15
|
+
end
|
16
|
+
|
17
|
+
def library_dirs ()
|
18
|
+
[File.join(root_dir, 'lib')]
|
19
|
+
end
|
20
|
+
|
21
|
+
def version ()
|
22
|
+
open(File.join root_dir, 'VERSION') {|f| f.readline.chomp}
|
23
|
+
end
|
24
|
+
|
25
|
+
self
|
26
|
+
|
27
|
+
end# ClassMethods
|
28
|
+
|
29
|
+
|
30
|
+
end# Rays
|
data/lib/rays/painter.rb
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
|
4
|
+
require 'rays/native'
|
5
|
+
|
6
|
+
|
7
|
+
module Rays
|
8
|
+
|
9
|
+
|
10
|
+
class Painter
|
11
|
+
|
12
|
+
attr_accessor :font
|
13
|
+
|
14
|
+
def initialize ()
|
15
|
+
@font = Rays::Font.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def line (*args)
|
19
|
+
args = args[0] if !args.empty? && args[0] === Array
|
20
|
+
draw_rect *args
|
21
|
+
end
|
22
|
+
|
23
|
+
def rect (*args)
|
24
|
+
args = args[0] if !args.empty? && args[0] === Array
|
25
|
+
draw_rect *args
|
26
|
+
end
|
27
|
+
|
28
|
+
def ellipse (*args)
|
29
|
+
args = args[0] if !args.empty? && args[0] === Array
|
30
|
+
draw_ellipse *args
|
31
|
+
end
|
32
|
+
|
33
|
+
def arc (*args)
|
34
|
+
args = args[0] if !args.empty? && args[0] === Array
|
35
|
+
draw_arc *args
|
36
|
+
end
|
37
|
+
|
38
|
+
alias image draw_image
|
39
|
+
|
40
|
+
def text (*args)
|
41
|
+
case args.size
|
42
|
+
when 1 then args << 0 << 0 << @font
|
43
|
+
when 2 then args << 0 << @font
|
44
|
+
when 3 then args << @font
|
45
|
+
end
|
46
|
+
draw_text *args
|
47
|
+
end
|
48
|
+
|
49
|
+
def clear (*args)
|
50
|
+
send :clear=, *args unless args.empty?
|
51
|
+
get_clear
|
52
|
+
end
|
53
|
+
|
54
|
+
def clear= (*args)
|
55
|
+
send_set :set_clear, :no_clear, args
|
56
|
+
end
|
57
|
+
|
58
|
+
def fill (*args)
|
59
|
+
send :fill=, *args unless args.empty?
|
60
|
+
get_fill
|
61
|
+
end
|
62
|
+
|
63
|
+
def fill= (*args)
|
64
|
+
send_set :set_fill, :no_fill, args
|
65
|
+
end
|
66
|
+
|
67
|
+
def stroke (*args)
|
68
|
+
send :stroke=, *args unless args.empty?
|
69
|
+
get_stroke
|
70
|
+
end
|
71
|
+
|
72
|
+
def stroke= (*args)
|
73
|
+
send_set :set_stroke, :no_stroke, args
|
74
|
+
end
|
75
|
+
|
76
|
+
def clip (*args)
|
77
|
+
send :clip=, *args unless args.empty?
|
78
|
+
get_clip
|
79
|
+
end
|
80
|
+
|
81
|
+
def clip= (*args)
|
82
|
+
send_set :set_clip, :no_clip, args
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
def send_set (set, no, args)
|
88
|
+
args = args[0] if args[0].kind_of?(Array)
|
89
|
+
if args.size == 1 && [nil, :no, :none].include?(args[0])
|
90
|
+
send no
|
91
|
+
else
|
92
|
+
send set, *args
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end# Painter
|
97
|
+
|
98
|
+
|
99
|
+
end# Rays
|