27 #include "../../../../geometry/Coord2D.h" 28 #include "../../common/Utils.h" 34 ::v8::Handle<::v8::Value>
Coord2D_XGetter(::v8::Local<::v8::String> , const ::v8::AccessorInfo& info)
38 if(info.Holder().IsEmpty())
39 return ::v8::ThrowException(::v8::String::New(
"Missing object in Coord2D x getter!"));
41 te::gm::Coord2D* c = te::v8::common::Unwrap<te::gm::Coord2D>(info.Holder());
43 return ::v8::Number::New(c->
x);
46 void Coord2D_XSetter(::v8::Local<::v8::String> , ::v8::Local<::v8::Value> value, const ::v8::AccessorInfo& info)
50 if(info.Holder().IsEmpty())
52 ::v8::ThrowException(::v8::String::New(
"Missing object in Coord2D x setter!"));
56 if(value.IsEmpty() || !value->IsNumber())
58 ::v8::ThrowException(::v8::String::New(
"Missing value or wrong type in Coord2D x setter!"));
62 te::gm::Coord2D* c = te::v8::common::Unwrap<te::gm::Coord2D>(info.Holder());
64 double x = value->ToNumber()->Value();
71 ::v8::Handle<::v8::Value>
Coord2D_YGetter(::v8::Local<::v8::String> , const ::v8::AccessorInfo& info)
75 if(info.Holder().IsEmpty())
76 return ::v8::ThrowException(::v8::String::New(
"Missing object in Coord2D y getter!"));
78 te::gm::Coord2D* c = te::v8::common::Unwrap<te::gm::Coord2D>(info.Holder());
80 return ::v8::Number::New(c->
y);
83 void Coord2D_YSetter(::v8::Local<::v8::String> , ::v8::Local<::v8::Value> value, const ::v8::AccessorInfo& info)
87 if(info.Holder().IsEmpty())
89 ::v8::ThrowException(::v8::String::New(
"Missing object in Coord2D y setter!"));
93 if(value.IsEmpty() || !value->IsNumber())
95 ::v8::ThrowException(::v8::String::New(
"Missing value or wrong type in Coord2D y setter!"));
99 te::gm::Coord2D* c = te::v8::common::Unwrap<te::gm::Coord2D>(info.Holder());
101 double y = value->ToNumber()->Value();
110 ::v8::HandleScope hs;
112 if(!args.IsConstructCall())
113 return ::v8::ThrowException(::v8::String::New(
"In order to create a coordinate you need call its constructor like: var c = new TeCoord2D(1.0, 2.0);"));
115 if(args.Holder().IsEmpty())
116 return ::v8::ThrowException(::v8::String::New(
"Coord2D constructor must use object notation!"));
118 if((args.Length() != 2) || !args[0]->IsNumber() || !args[1]->IsNumber())
119 return ::v8::ThrowException(::v8::String::New(
"Missing parameter in Coord2D constructor or wrong parameter type!"));
121 double x = args[0]->ToNumber()->Value();
122 double y = args[1]->ToNumber()->Value();
135 ::v8::HandleScope hs;
137 ::v8::Local<::v8::FunctionTemplate> jsc = ::v8::FunctionTemplate::New(
Coord2D_Constructor);
139 global->Set(::v8::String::New(
"TeCoord2D"), jsc->GetFunction());
148 ::v8::Local<::v8::FunctionTemplate> result = ::v8::FunctionTemplate::New();
150 ::v8::Handle<::v8::ObjectTemplate> prototype = result->PrototypeTemplate();
::v8::Local<::v8::Object > Make(T *obj, TF tfunc, const bool isOwner)
It creates a new JavaScript object from a C++ object (obj).
static::v8::Persistent<::v8::FunctionTemplate > sg_coord2d_template
::v8::Persistent<::v8::FunctionTemplate > & GetCoord2DTemplate()
It returns a reference to the persistent template of a Coord2D object.
::v8::Handle<::v8::Value > Coord2D_Constructor(const ::v8::Arguments &args)
An utility struct for representing 2D coordinates.
void RegisterCoord2D(::v8::Local<::v8::Object > &global)
It register the Coord2D class.
void Coord2D_YSetter(::v8::Local<::v8::String >,::v8::Local<::v8::Value > value, const ::v8::AccessorInfo &info)
::v8::Handle<::v8::Value > Coord2D_XGetter(::v8::Local<::v8::String >, const ::v8::AccessorInfo &info)
void Coord2D_XSetter(::v8::Local<::v8::String >,::v8::Local<::v8::Value > value, const ::v8::AccessorInfo &info)
::v8::Handle<::v8::Value > Coord2D_YGetter(::v8::Local<::v8::String >, const ::v8::AccessorInfo &info)