rays 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.doc/ext/rays/bitmap.cpp +318 -0
- data/.doc/ext/rays/font.cpp +124 -0
- data/.doc/ext/rays/image.cpp +163 -0
- data/.doc/ext/rays/native.cpp +28 -0
- data/.doc/ext/rays/painter.cpp +554 -0
- data/.doc/ext/rays/rays.cpp +52 -0
- data/.doc/ext/rays/texture.cpp +128 -0
- data/Rakefile +10 -34
- data/VERSION +1 -1
- data/ext/rays/bitmap.cpp +20 -16
- data/ext/rays/{rays.h → defs.h} +4 -13
- data/ext/rays/extconf.rb +28 -18
- data/ext/rays/font.cpp +15 -10
- data/ext/rays/image.cpp +19 -14
- data/ext/rays/native.cpp +5 -1
- data/ext/rays/painter.cpp +44 -39
- data/ext/rays/rays.cpp +8 -15
- data/ext/rays/texture.cpp +17 -12
- data/include/rays.h +2 -1
- data/include/rays/colorspace.h +1 -1
- data/include/rays/defs.h +4 -11
- data/include/rays/exception.h +41 -0
- data/include/rays/painter.h +3 -3
- data/lib/rays/module.rb +9 -1
- data/rays.gemspec +18 -8
- data/src/cocoa/bitmap.mm +3 -0
- data/src/colorspace.cpp +2 -2
- data/src/exception.cpp +49 -0
- data/src/painter.cpp +6 -6
- data/src/texture.cpp +5 -3
- metadata +35 -13
- data/support.rb +0 -54
- data/task/ext.rake +0 -41
- data/task/gem.rake +0 -33
- data/task/git.rake +0 -22
- data/task/lib.rake +0 -54
@@ -0,0 +1,52 @@
|
|
1
|
+
#include <rucy.h>
|
2
|
+
#include <rays/rays.h>
|
3
|
+
#include "defs.h"
|
4
|
+
|
5
|
+
|
6
|
+
using namespace Rucy;
|
7
|
+
|
8
|
+
|
9
|
+
namespace Rays
|
10
|
+
{
|
11
|
+
|
12
|
+
|
13
|
+
static Module mRays;
|
14
|
+
|
15
|
+
Module
|
16
|
+
rays_module ()
|
17
|
+
{
|
18
|
+
return mRays;
|
19
|
+
}
|
20
|
+
|
21
|
+
|
22
|
+
}// Rays
|
23
|
+
|
24
|
+
|
25
|
+
static
|
26
|
+
VALUE init(VALUE self)
|
27
|
+
{
|
28
|
+
if (!Rays::init())
|
29
|
+
error("Rays::init() failed.");
|
30
|
+
|
31
|
+
return self;
|
32
|
+
}
|
33
|
+
|
34
|
+
static
|
35
|
+
VALUE fin(VALUE self)
|
36
|
+
{
|
37
|
+
if (!Rays::fin())
|
38
|
+
error("Rays::fin() failed.");
|
39
|
+
|
40
|
+
return self;
|
41
|
+
}
|
42
|
+
|
43
|
+
|
44
|
+
void
|
45
|
+
Init_rays ()
|
46
|
+
{
|
47
|
+
Module m = rb_define_module("Rays");
|
48
|
+
Rays::mRays = m;
|
49
|
+
|
50
|
+
m.define_singleton_method("init!", init);
|
51
|
+
m.define_singleton_method("fin!", fin);
|
52
|
+
}
|
@@ -0,0 +1,128 @@
|
|
1
|
+
#include "rays/ruby/texture.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include <rucy.h>
|
5
|
+
#include <rays/ruby/bitmap.h>
|
6
|
+
#include "defs.h"
|
7
|
+
|
8
|
+
|
9
|
+
using namespace Rucy;
|
10
|
+
|
11
|
+
using Rays::coord;
|
12
|
+
|
13
|
+
|
14
|
+
namespace Rays
|
15
|
+
{
|
16
|
+
|
17
|
+
|
18
|
+
static Class cTexture;
|
19
|
+
|
20
|
+
Class
|
21
|
+
texture_class ()
|
22
|
+
{
|
23
|
+
return cTexture;
|
24
|
+
}
|
25
|
+
|
26
|
+
|
27
|
+
}// Rays
|
28
|
+
|
29
|
+
|
30
|
+
namespace Rucy
|
31
|
+
{
|
32
|
+
|
33
|
+
|
34
|
+
Value
|
35
|
+
value (const Rays::Texture& texture)
|
36
|
+
{
|
37
|
+
return new_type<Rays::Texture>(
|
38
|
+
Rays::texture_class(), new Rays::Texture(texture));
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
}// Rucy
|
43
|
+
|
44
|
+
|
45
|
+
#define this to<Rays::Texture*>(self)
|
46
|
+
|
47
|
+
#define CHECK CHECK_OBJECT(self, Rays::Texture, Rays::texture_class())
|
48
|
+
|
49
|
+
|
50
|
+
static
|
51
|
+
VALUE alloc(VALUE klass)
|
52
|
+
{
|
53
|
+
return new_type<Rays::Texture>(klass, new Rays::Texture);
|
54
|
+
}
|
55
|
+
|
56
|
+
static
|
57
|
+
VALUE initialize(VALUE self)
|
58
|
+
{
|
59
|
+
CHECK_OBJ(self, Rays::Texture, Rays::texture_class());
|
60
|
+
if (argc != 1 && argc != 2) arg_count_error("Texture#initialize", argc, 1, 2);
|
61
|
+
|
62
|
+
Rays::Bitmap* bitmap = to<Rays::Bitmap*>(argv[0]);
|
63
|
+
bool alphaonly = (argc == 2) ? to<bool>(argv[1]) : false;
|
64
|
+
|
65
|
+
if (!bitmap)
|
66
|
+
argument_error("%s is not a Bitmap object.", argv[0].inspect().c_str());
|
67
|
+
|
68
|
+
*this = Rays::Texture(*bitmap, alphaonly);
|
69
|
+
return self;
|
70
|
+
}
|
71
|
+
|
72
|
+
static
|
73
|
+
VALUE width(VALUE self)
|
74
|
+
{
|
75
|
+
CHECK;
|
76
|
+
|
77
|
+
return value(this->width());
|
78
|
+
}
|
79
|
+
|
80
|
+
static
|
81
|
+
VALUE height(VALUE self)
|
82
|
+
{
|
83
|
+
CHECK;
|
84
|
+
|
85
|
+
return value(this->height());
|
86
|
+
}
|
87
|
+
|
88
|
+
static
|
89
|
+
VALUE s_max(VALUE self)
|
90
|
+
{
|
91
|
+
CHECK;
|
92
|
+
|
93
|
+
return value(this->s_max());
|
94
|
+
}
|
95
|
+
|
96
|
+
static
|
97
|
+
VALUE t_max(VALUE self)
|
98
|
+
{
|
99
|
+
CHECK;
|
100
|
+
|
101
|
+
return value(this->t_max());
|
102
|
+
}
|
103
|
+
|
104
|
+
static
|
105
|
+
VALUE bitmap(VALUE self)
|
106
|
+
{
|
107
|
+
CHECK;
|
108
|
+
|
109
|
+
return value(this->bitmap());
|
110
|
+
}
|
111
|
+
|
112
|
+
|
113
|
+
void
|
114
|
+
Init_texture ()
|
115
|
+
{
|
116
|
+
Module m = rb_define_module("Rays");
|
117
|
+
|
118
|
+
Class c = rb_define_class_under(m, "Texture", rb_cObject);
|
119
|
+
Rays::cTexture = c;
|
120
|
+
|
121
|
+
rb_define_alloc_func(c, alloc);
|
122
|
+
rb_define_method(c, "initialize", RUBY_METHOD_FUNC(initialize), -1);
|
123
|
+
rb_define_method(c, "width", RUBY_METHOD_FUNC(width), 0);
|
124
|
+
rb_define_method(c, "height", RUBY_METHOD_FUNC(height), 0);
|
125
|
+
rb_define_method(c, "s_max", RUBY_METHOD_FUNC(s_max), 0);
|
126
|
+
rb_define_method(c, "t_max", RUBY_METHOD_FUNC(t_max), 0);
|
127
|
+
rb_define_method(c, "bitmap", RUBY_METHOD_FUNC(bitmap), 0);
|
128
|
+
}
|
data/Rakefile
CHANGED
@@ -1,47 +1,21 @@
|
|
1
1
|
# -*- mode: ruby; coding: utf-8 -*-
|
2
2
|
|
3
3
|
|
4
|
-
%w[.
|
4
|
+
%w[. ../xot ../rucy].map {|s| "#{s}/lib"}.each do |path|
|
5
5
|
$: << File.expand_path(File.join File.dirname(__FILE__), *path.split('/'))
|
6
6
|
end
|
7
7
|
|
8
8
|
require 'rubygems'
|
9
|
-
require '
|
10
|
-
require '
|
9
|
+
require 'xot/rake/helpers'
|
10
|
+
require 'xot/module'
|
11
|
+
require 'rucy/module'
|
11
12
|
require 'rays/module'
|
12
13
|
|
14
|
+
include Xot::Rake
|
13
15
|
|
14
|
-
MODULE = Rays
|
15
|
-
NAME = MODULE.name.downcase
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
LIBDIR = 'lib'
|
20
|
-
EXTDIR = 'ext'
|
21
|
-
TASKDIR = 'task'
|
22
|
-
|
23
|
-
EXTEXT = RbConfig::CONFIG['DLEXT'] || 'so'
|
24
|
-
|
25
|
-
DEFS = %w[]
|
26
|
-
DEFS << 'WIN32' if win32?
|
27
|
-
DEFS << 'COCOA' if cocoa?
|
28
|
-
|
29
|
-
incroot = RbConfig::CONFIG['rubyhdrdir']
|
30
|
-
INCDIRS = Rays.include_dirs + [
|
31
|
-
incroot,
|
32
|
-
"#{incroot}/#{RUBY_PLATFORM}",
|
33
|
-
'/opt/local/include',
|
34
|
-
'/opt/include'
|
35
|
-
]
|
36
|
-
|
37
|
-
RUBY = ENV['RUBY'] || 'ruby'
|
38
|
-
GEM = ENV['GEM'] || 'gem'
|
39
|
-
GIT = ENV['GIT'] || 'git'
|
40
|
-
MAKE = ENV['MAKE'] || 'make'
|
41
|
-
CC = RbConfig::CONFIG['CC'] || ENV['CC'] || 'g++'
|
42
|
-
CFLAGS = '-Wall -O' + DEFS.map{|s| " -D#{s}"}.join
|
43
|
-
AR = ENV['AR'] || 'ar'
|
44
|
-
ARFLAGS = 'crs'
|
17
|
+
MODULE = Rays
|
18
|
+
INCDIRS = [Rays, Rucy].map {|m| m.include_dirs}.flatten
|
45
19
|
|
46
20
|
|
47
21
|
task :default => :build
|
@@ -54,6 +28,8 @@ task :lib => 'lib:build'
|
|
54
28
|
|
55
29
|
task :ext => 'ext:build'
|
56
30
|
|
31
|
+
task :doc => 'ext:doc'
|
32
|
+
|
57
33
|
task :gem => 'gem:build'
|
58
34
|
|
59
35
|
task :install => 'gem:install'
|
@@ -69,4 +45,4 @@ task :test => :ext do
|
|
69
45
|
end
|
70
46
|
|
71
47
|
|
72
|
-
|
48
|
+
[Xot, Rucy, Rays].each {|m| m.load_tasks}
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/ext/rays/bitmap.cpp
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
#include <rucy.h>
|
5
|
-
#include "
|
5
|
+
#include "defs.h"
|
6
6
|
|
7
7
|
|
8
8
|
using namespace Rucy;
|
@@ -17,11 +17,12 @@ namespace Rays
|
|
17
17
|
{
|
18
18
|
|
19
19
|
|
20
|
+
static Class cBitmap;
|
21
|
+
|
20
22
|
Class
|
21
23
|
bitmap_class ()
|
22
24
|
{
|
23
|
-
|
24
|
-
return c;
|
25
|
+
return cBitmap;
|
25
26
|
}
|
26
27
|
|
27
28
|
|
@@ -306,17 +307,20 @@ RUBY_END
|
|
306
307
|
void
|
307
308
|
Init_bitmap ()
|
308
309
|
{
|
309
|
-
Rays
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
310
|
+
Module m = define_module("Rays");
|
311
|
+
|
312
|
+
m.define_const("RGB", Rays::RGB);
|
313
|
+
m.define_const("RGBA", Rays::RGBA);
|
314
|
+
|
315
|
+
Class c = m.define_class("Bitmap");
|
316
|
+
Rays::cBitmap = c;
|
317
|
+
|
318
|
+
c.define_alloc_func(alloc);
|
319
|
+
c.define_method("initialize", initialize);
|
320
|
+
c.define_method("width", width);
|
321
|
+
c.define_method("height", height);
|
322
|
+
c.define_method("color_space", color_space);
|
323
|
+
c.define_method("[]", at);
|
324
|
+
c.define_method("[]=", assign_at);
|
325
|
+
c.define_function("load", load);
|
322
326
|
}
|
data/ext/rays/{rays.h → defs.h}
RENAMED
@@ -1,22 +1,13 @@
|
|
1
1
|
// -*- c++ -*-
|
2
2
|
#pragma once
|
3
|
-
#ifndef
|
4
|
-
#define
|
3
|
+
#ifndef __RAYS_EXT_DEFS_H__
|
4
|
+
#define __RAYS_EXT_DEFS_H__
|
5
5
|
|
6
6
|
|
7
|
-
#include <
|
8
|
-
#include "rays/ruby/rays.h"
|
7
|
+
#include <rays/exception.h>
|
9
8
|
|
10
9
|
|
11
|
-
|
12
|
-
{
|
13
|
-
|
14
|
-
|
15
|
-
Rucy::Class rays_error_class ();
|
16
|
-
// class Rays::RaysError < Rucy::NativeError
|
17
|
-
|
18
|
-
|
19
|
-
}// Rays
|
10
|
+
using Rays::error;
|
20
11
|
|
21
12
|
|
22
13
|
#define CHECK_OBJ(obj, type, klass) \
|
data/ext/rays/extconf.rb
CHANGED
@@ -1,42 +1,51 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
|
4
|
-
%w[
|
4
|
+
%w[. xot rucy].map {|s| "../../#{s}/lib"}.each do |path|
|
5
5
|
$: << File.expand_path(File.join File.dirname(__FILE__), *path.split('/'))
|
6
6
|
end
|
7
7
|
|
8
8
|
require 'rubygems'
|
9
9
|
require 'mkmf'
|
10
|
+
require 'xot/rake/helpers'
|
11
|
+
require 'xot/module'
|
10
12
|
require 'rucy/module'
|
11
13
|
require 'rays/module'
|
12
14
|
|
15
|
+
include Xot::Rake
|
13
16
|
|
14
|
-
|
17
|
+
|
18
|
+
DEBUG = env :DEBUG, false
|
15
19
|
|
16
20
|
DEFS = []
|
17
|
-
INCDIRS = %w[
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
+
INCDIRS = %w[
|
22
|
+
/opt/local/include
|
23
|
+
/opt/include
|
24
|
+
]
|
25
|
+
LIBDIRS = []
|
21
26
|
|
22
|
-
HEADERS
|
23
|
-
boost/scoped_array.hpp
|
27
|
+
HEADERS = %w[
|
24
28
|
boost/shared_ptr.hpp
|
25
29
|
ruby.h
|
30
|
+
xot.h
|
26
31
|
rucy.h
|
27
32
|
rays.h
|
28
33
|
]
|
29
|
-
LIBS
|
30
|
-
|
34
|
+
LIBS = %w[
|
35
|
+
stdc++
|
36
|
+
xot
|
37
|
+
rucy
|
38
|
+
rays
|
39
|
+
]
|
40
|
+
FRAMEWORKS = []
|
31
41
|
|
32
42
|
|
33
43
|
DEFS << '_DEBUG' if DEBUG
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
DEFS << 'WINDOWS' << 'WIN32' << $~[0].upcase
|
44
|
+
DEFS << $~[0].upcase if RUBY_PLATFORM =~ /mswin|ming|cygwin|darwin/i
|
45
|
+
if win32?
|
46
|
+
DEFS << 'WINDOWS' << 'WIN32'
|
38
47
|
LIBS.unshift 'gdi32', 'opengl32'
|
39
|
-
|
48
|
+
elsif cocoa?
|
40
49
|
DEFS << 'COCOA'
|
41
50
|
FRAMEWORKS << 'AppKit' << 'OpenGL'
|
42
51
|
end
|
@@ -47,13 +56,14 @@ $LDFLAGS << LIBDIRS.map {|s| " -L#{s}"}.join
|
|
47
56
|
$LDFLAGS << FRAMEWORKS.map {|s| " -framework #{s}"}.join
|
48
57
|
$LOCAL_LIBS << ' -lrucy'
|
49
58
|
|
59
|
+
Config::CONFIG.each {|key, val| val.gsub!(/gcc/, 'g++')}
|
60
|
+
|
61
|
+
|
50
62
|
dir_config 'boost'
|
63
|
+
dir_config 'xot', Xot.root_dir
|
51
64
|
dir_config 'rucy', Rucy.root_dir
|
52
65
|
dir_config 'rays', Rays.root_dir
|
53
66
|
|
54
|
-
|
55
|
-
Config::CONFIG.each {|key, val| val.gsub!(/gcc/, 'g++')}
|
56
|
-
|
57
67
|
exit 1 unless HEADERS.all? {|s| have_header(s)}
|
58
68
|
exit 1 unless LIBS.all? {|s| have_library(s)}
|
59
69
|
|
data/ext/rays/font.cpp
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
#include <rucy.h>
|
5
|
-
#include "
|
5
|
+
#include "defs.h"
|
6
6
|
|
7
7
|
|
8
8
|
using namespace Rucy;
|
@@ -14,11 +14,12 @@ namespace Rays
|
|
14
14
|
{
|
15
15
|
|
16
16
|
|
17
|
+
static Class cFont;
|
18
|
+
|
17
19
|
Class
|
18
20
|
font_class ()
|
19
21
|
{
|
20
|
-
|
21
|
-
return c;
|
22
|
+
return cFont;
|
22
23
|
}
|
23
24
|
|
24
25
|
|
@@ -115,11 +116,15 @@ RUBY_END
|
|
115
116
|
void
|
116
117
|
Init_font ()
|
117
118
|
{
|
118
|
-
Rays
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
119
|
+
Module m = define_module("Rays");
|
120
|
+
|
121
|
+
Class c = m.define_class("Font");
|
122
|
+
Rays::cFont = c;
|
123
|
+
|
124
|
+
c.define_alloc_func(alloc);
|
125
|
+
c.define_method("initialize", initialize);
|
126
|
+
c.define_method("name", name);
|
127
|
+
c.define_method("size", size);
|
128
|
+
c.define_method("width", width);
|
129
|
+
c.define_method("height", height);
|
125
130
|
}
|