.doc/ext/rays/image.cpp in rays-0.1.12 vs .doc/ext/rays/image.cpp in rays-0.1.13

- old
+ new

@@ -1,21 +1,14 @@ #include "rays/ruby/image.h" -#include <rucy.h> #include "rays/ruby/color_space.h" #include "rays/ruby/bitmap.h" -#include "rays/ruby/texture.h" #include "rays/ruby/painter.h" #include "defs.h" -using namespace Rucy; - -using Rays::coord; - - RUCY_DEFINE_VALUE_FROM_TO(Rays::Image) #define THIS to<Rays::Image*>(self) #define CHECK RUCY_CHECK_OBJECT(Rays::Image, self) @@ -29,52 +22,47 @@ static VALUE initialize(VALUE self) { RUCY_CHECK_OBJ(Rays::Image, self); - check_arg_count(__FILE__, __LINE__, "Image#initialize", argc, 1, 2, 3); + check_arg_count(__FILE__, __LINE__, "Image#initialize", argc, 1, 2, 3, 4); - if (argc == 0) return self; - if (argv[0].is_kind_of(Rays::bitmap_class())) { check_arg_count(__FILE__, __LINE__, "Image#initialize", argc, 1, 2); const Rays::Bitmap* bitmap = to<Rays::Bitmap*>(argv[0]); - if (!bitmap) argument_error(__FILE__, __LINE__); + if (!bitmap) + argument_error(__FILE__, __LINE__); - bool alpha_only = (argc == 2) ? to<bool>(argv[1]) : false; - *THIS = Rays::Image(*bitmap, alpha_only); + float pixel_density = (argc >= 2) ? to<float>(argv[1]) : 1; + *THIS = Rays::Image(*bitmap, pixel_density); } else { - int width = to<int>(argv[0]); - int height = to<int>(argv[1]); - uint colorspace = (argc == 3) ? to<uint>(argv[2]) : (uint) Rays::RGBA; - *THIS = Rays::Image(width, height, (Rays::ColorSpaceType) colorspace); + check_arg_count(__FILE__, __LINE__, "Image#initialize", argc, 2, 3, 4); + + int width = to<int>(argv[0]); + int height = to<int>(argv[1]); + Rays::ColorSpace cs = (argc >= 3) ? to<Rays::ColorSpace>(argv[2]) : Rays::RGBA; + float pixel_density = (argc >= 4) ? to<float>(argv[3]) : 1; + *THIS = Rays::Image(width, height, cs, pixel_density); } return self; } static VALUE initialize_copy(VALUE self, VALUE obj) { RUCY_CHECK_OBJ(Rays::Image, self); - *THIS = to<Rays::Image&>(obj).copy(); + *THIS = to<Rays::Image&>(obj).dup(); return self; } static -VALUE painter(VALUE self) -{ - CHECK; - return value(THIS->painter()); -} - -static VALUE width(VALUE self) { CHECK; return value(THIS->width()); } @@ -92,28 +80,28 @@ CHECK; return value(THIS->color_space()); } static -VALUE alpha_only(VALUE self) +VALUE pixel_density(VALUE self) { CHECK; - return value(THIS->alpha_only()); + return value(THIS->pixel_density()); } static -VALUE bitmap(VALUE self) +VALUE painter(VALUE self) { CHECK; - return value(THIS->bitmap()); + return value(THIS->painter()); } static -VALUE texture(VALUE self) +VALUE bitmap(VALUE self) { CHECK; - return value(THIS->texture()); + return value(THIS->bitmap()); } static VALUE save(VALUE self, VALUE path) { @@ -122,13 +110,15 @@ return self; } static -VALUE load(VALUE self, VALUE path, VALUE alpha_only) +VALUE load(VALUE self) { - return value(Rays::load_image(path.c_str(), to<bool>(alpha_only))); + check_arg_count(__FILE__, __LINE__, "Image.load", argc, 1); + + return value(Rays::load_image(argv[0].c_str())); } static Class cImage; @@ -139,18 +129,17 @@ cImage = rb_define_class_under(mRays, "Image", rb_cObject); rb_define_alloc_func(cImage, alloc); rb_define_private_method(cImage, "initialize", RUBY_METHOD_FUNC(initialize), -1); rb_define_private_method(cImage, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1); - rb_define_method(cImage, "painter", RUBY_METHOD_FUNC(painter), 0); rb_define_method(cImage, "width", RUBY_METHOD_FUNC(width), 0); rb_define_method(cImage, "height", RUBY_METHOD_FUNC(height), 0); rb_define_method(cImage, "color_space", RUBY_METHOD_FUNC(color_space), 0); - rb_define_method(cImage, "alpha_only", RUBY_METHOD_FUNC(alpha_only), 0); + rb_define_method(cImage, "pixel_density", RUBY_METHOD_FUNC(pixel_density), 0); + rb_define_method(cImage, "painter", RUBY_METHOD_FUNC(painter), 0); rb_define_method(cImage, "bitmap", RUBY_METHOD_FUNC(bitmap), 0); - rb_define_method(cImage, "texture", RUBY_METHOD_FUNC(texture), 0); rb_define_method(cImage, "save", RUBY_METHOD_FUNC(save), 1); - rb_define_function(cImage, "load_image", RUBY_METHOD_FUNC(load), 2); + rb_define_function(cImage, "load", RUBY_METHOD_FUNC(load), -1); } namespace Rays {