Sha256: aa54a37cdbf42d8b976aab3e4d11ccfdcf08b1dc078ca71677f9efe1edc7d42b

Contents?: true

Size: 1.99 KB

Versions: 3

Compression:

Stored size: 1.99 KB

Contents

#include "rays/ruby/font.h"


#include "defs.h"


RUCY_DEFINE_VALUE_OR_ARRAY_FROM_TO(Rays::Font)

#define THIS  to<Rays::Font*>(self)

#define CHECK RUCY_CHECK_OBJECT(Rays::Font, self)


static
VALUE alloc(VALUE klass)
{
	return new_type<Rays::Font>(klass);
}

static
VALUE initialize(VALUE self)
{
	RUCY_CHECK_OBJ(Rays::Font, self);
	check_arg_count(__FILE__, __LINE__, "Font#initialize", argc, 0, 1, 2);

	*THIS = to<Rays::Font>(argc, argv);
	return self;
}

static
VALUE name(VALUE self)
{
	CHECK;
	return value(THIS->name().c_str());
}

static
VALUE size(VALUE self)
{
	CHECK;
	return value(THIS->size());
}

static
VALUE width(VALUE self, VALUE str)
{
	CHECK;
	return value(THIS->get_width(str.c_str()));
}

static
VALUE height(VALUE self)
{
	CHECK;
	return value(THIS->get_height());
}


static Class cFont;

void
Init_font ()
{
	Module mRays = rb_define_module("Rays");

	cFont = rb_define_class_under(mRays, "Font", rb_cObject);
	rb_define_alloc_func(cFont, alloc);
	rb_define_private_method(cFont, "initialize", RUBY_METHOD_FUNC(initialize), -1);
	rb_define_method(cFont, "name", RUBY_METHOD_FUNC(name), 0);
	rb_define_method(cFont, "size", RUBY_METHOD_FUNC(size), 0);
	rb_define_method(cFont, "width", RUBY_METHOD_FUNC(width), 1);
	rb_define_method(cFont, "height", RUBY_METHOD_FUNC(height), 0);
}


namespace Rucy
{


	template <> Rays::Font
	value_to<Rays::Font> (int argc, const Value* argv, bool convert)
	{
		if (argc == 1 && argv->is_array())
		{
			argc = argv->size();
			argv = argv->as_array();
		}

		assert(argc == 0 || (argc > 0 && argv));

		if (convert)
		{
			if (argc == 0)
				return Rays::default_font();

			coord size = argc >= 2 ? to<coord>(argv[1]) : 0;
			if (argv->is_nil())
				return Rays::Font(NULL, size);
			else if (argv->is_s() || argv->is_sym())
				return Rays::Font(argv[0].c_str(), size);
		}

		if (argc != 1)
			argument_error(__FILE__, __LINE__);

		return value_to<Rays::Font&>(*argv, convert);
	}


}// Rucy


namespace Rays
{


	Class
	font_class ()
	{
		return cFont;
	}


}// Rays

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rays-0.1.15 .doc/ext/rays/font.cpp
rays-0.1.14 .doc/ext/rays/font.cpp
rays-0.1.13 .doc/ext/rays/font.cpp