rays 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|